DIR : /home/kozerus/public_html/ko/ko.htm

/home/kozerus/public_html/ko

<html>
<head>
	<title>index.html 20200806_2100   -= jgg_edit.html =-</title>

<!--
	<title>index.html 20200806_2100   -= grid noj =-</title>
	<title>index.html 20200806_1700   -= grid keyhole_us/key_happiness  =-</title>
	<title>index.html 20200806_1500   -= grid keyhole_us/key_happiness  =-</title>
	<title>index.html 20200806_1500   -= grid_k98  =-</title>
	<title>index.html 20200805_2400   -= grid head-tail tests =-</title>
	<title>index.html 20200805_1540   -= blob text calibration =-</title>
	<title>index.html 20200805_1430   -= /law /cpa /trial6 trial7 /kou/ =-</title>
	<title>index.html 20200805_1230   -= img_grid_toggle img_grid_keys   =-</title>
	<title>index.html 20200805_1230   -= img_grid_toggle img_grid_keys   =-</title>
	<title>index.html 20200805_1100   -= gridkeyhole/key btns   =-</title>
	<title>index.html 20200805_0130   -= grid() keyhole/key btns   =-</title>
	-->

	<script id="script_title">
var kolists = '';



kolists['blob_img_default'] = '/imgs/links/gazibo.png';

kolists['blob_imgs'] = 
`/fb/jtfdc/imgs/tn_jtfdc_sawhorse.png
/imgs/links/gazibo.png
/fb/jtfdc/imgs/tn_jtfdc_sawhorse_300.png
/imgs/links/gazibo.png
/fb/jtfdc/imgs/tn_jtfdc_sawhorse_200.png
/imgs/links/gazibo.png
/fb/jtfdc/imgs/tn_jtfdc_sawhorse_100.png
/imgs/links/gazibo.png
/imgs/links/gazibo.png`;

//	alert( "BUGS_11 kolists_blob_imgs="+kolists['blob_img_default']):
//	blob_imgs=kolists['blob_imgs'].split("\n");
//	alert( "BUGS_11 blob_imgs="+blob_imgs );
//	blob_imgs_len = blob_imgs.length;
//	blob_imgs_num = random_int(blob_imgs_len,0);
//	blob_img=blob_imgs[blob_img_num];

//	var ctx = document.getElementById('canvas_blob').getContext('2d');
//	var canvas = document.getElementById('canvas_blob');
//	if(canvas.getContext == null) {return; }
//	var ctx = canvas.getContext('2d');





	img_fan = new Image();
	img_fan.src="/imgs/btn/btn_fan01.png";
	img_gazibo = new Image();
	img_gazibo.src="/imgs/links/gazibo.png";
	img_sawhorse = new Image();
	img_sawhorse.src ="/fb/jtfdc/imgs/tn_jtfdc_sawhorse.png";
//	img_sawhorse.src = blob_img;

//	var img = new Image();
////	imgsrc="/imgs/btn/kob.png";
//	img.src = imgsrc;
//	canvas_id="canvas_table_top";
//	if( document.getElementById(canvas_id)) {
//		ctx=document.getElementById(canvas_id).getContext('2d');
//		ctx.fillStyle = my_gradient;
//		ctx.fillStyle="wheat";
//		ctx.drawImage(img, 0, 0);
//		ctx.font = '18px yokkmokkOT';
//		ctx.fillStyle="wheat";
//		ctx.fillRect(0,0,200,100);
//		ctx.fillStyle="black";
//		ctx.fillText(canvas_id,10,10);
//					}

kolists['titles']=`
	<title>index.html 20200804_1630   -= blob_jtfdc_img  =-</title>
	<title>index.html 20200804_1300   -=  /fb/jtfdc/imgs/jtfdc_sawhorse.png =-</title>
	<title>index.html 20200804_1145   -=  link k9.html =-</title>
	<title>index.html 20200803_2400   -=  links index_vu_*.html =-</title>
	<title>index.html 20200803_1500   -=  links holiday mothersday fatherday anniversary reindependenceday =-</title>
	<title>index.html 20200803_1400   -=  kurrent_j kurrent_s=-</title>
	<title>index.html 20200803_0900   -=  links busey bank =-</title>
	<title>index.html 20200803_0800   -=  links index_zpid index_jtfdc_stalkarounds =-</title>
	<title>index.html 20200803_0330   -=  warning1.gif warnign2.gif =-</title>
	<title>index.html 20200802_0030   -=  mailchat,fionas,CT8V4G =-</title>
	<title>index.html 20200801_0330   -=  toggle_buttons =-</title>
	<title>index.html 20200801_0230   -=  20170731_mailbox_not_blocked_hardy_email =-</title>
	<title>index.html 20200731_2300   -= div_random_letters_j s =-</title>
	<title>index.html 20200731_1330   -= img_random_letters_j1, s1 =-</title>
	<title>index.html 20200731_1330   -= jtfdc_stalkarounds_20200731 =-</title>
	<title>index.html 20200731_0830   -= koslists_letters j s =-</title>
	<title>index.html 20200731_0515   -= koslists_letters =-</title>
	<title>index.html 20200731_0515   -= blob_eyepatch_n_key_alighnment =-</title>
	<title>index.html 20200730_1645   -= jtfdc_stalkarounds_20200730_1515_stalkaround_speedy_usmail =-</title>
	<title>index.html 20200730_1230   -= jtfdc_stalkarounds_20200730_1140_shyltllite_wagon =-</title>
	<title>index.html 20200730_1130   -= jtfdc_stalkarounds_shyred2drpickup_again =-</title>
	<title>index.html 20200729_2300   -= pdfs regexp =-</title>
	<title>index.html 20200729_1645   -= jtfdc_stalkarounds_20200729  =-</title>
	<title>index.html 20200729_1100   -= thanks_med_dr_lele  =-</title>
	<title>index.html 20200729_0600   -= pdfs dev  =-</title>
	<title>index.html 20200729_0530   -= pdfs dev  =-</title>
	<title>index.html 20200728_2300   -= pdfs(regexp)  =-</title>
	<title>index.html 20200728_2130   -= 20200728_1645_stalkaroundsup_tagteam  =-</title>
	<title>index.html 20200728_1800   -= /fb/cards/pages/thanks_med_dr_lele   =-</title>
	<title>index.html 20200728_1630   -= /imgs/links/gazibo.png   =-</title>
	<title>index.html 20200728_1330   -= pdfs(match)   =-</title>
	<title>index.html 20200728_1300   -= pdfs(match)   =-</title>
	<title>index.html 20200728_1230   -= pdfs(match)  =-</title>
	<title>index.html 20200726_1930   -= reposition pdfs() btn_pdf  =-</title>
	<title>index.html 20200726_1900   -= pdfs() btn_pdf  =-</title>
	<title>index.html 20200726_1430   -= find_chalkmail.txt pagelists_pages kolists_pdfs =-</title>
	<title>index.html 20200726_1110   -= kolists_btn_pdf kolists_pdfs =-</title>
	<title>index.html 20200726_0745   -= links cohen_alan-protect_jtf32_joann_donovan_law=-</title>
	<title>index.html 20200726_0745   -= iperms.com focus che konet.org  =-</title>
	<title>index.html 20200726_0730   -= police_A132_jkwii_outreach  =-</title>
	<title>index.html 20200726_0640   -= jtfdc_20200725_1214_stalkaround_n_lurk_silverhonda_TDIM8F_IMG_0058.jpg  =-</title>
	<title>index.html 20200726_0640   -= 20200725_1116_stalkarounds_police_A132_jkwii_outreach =-</title>
	<title>index.html 20200725_2130   -= pdf/web/viewer.html?file= =-</title>
	<title>index.html 20200724_1930   -= 20200818_1800_trial7_judge_concannon_byrdbell_v_jkwii=-</title>
	<title>index.html 20200724_1600   -= walyankovic amish_paridise white_n_nerdy =-</title>
	<title>index.html 20200724_1300   -= zillow jtfdc jtfinc jtf2930 =-</title>
	<title>index.html 20200724_0600   -= jtf32_direction =-</title>
	<title>index.html 20200724_0300   -= jtfdc_20200723_0814_stalkaroundup_orange_motorcycle_byrdlike_guy =-</title>
	<title>index.html 20200723_1130   -= jtfdc_keepout_notresspassing_covid_signs =-</title>
	<title>index.html 20200723_1100   -= new_monster_garbagetruck =-</title>
	<title>index.html 20200723_1000   -= realtor_northridgeville =-</title>
	<title>index.html 20200723_1000   -= realtor_northridgeville =-</title>
	<title>index.html 20200722_2400   -= /kb/jtfdcr/vid/jtfdc_stalkarounds/20200721 =-</title>
	<title>index.html 20200721_1545   -= hats hatclass_*.png hatreflect_*.png =-</title>
	<title>index.html 20200721_1330   -= links law_korner law_jenaltrieker wiki_castle =-</title>
	<title>index.html 20200721_1235   -= links fritzlaw bellonlawgroup lawgroupstl =-</title>
	<title>index.html 20200721_1845   -= links bh_thanks bluehost_home =-</title>
	<title>index.html 20200721_1845   -= links bh_thanks bluehost_home =-</title>
	<title>index.html 20200721_1445   -= rand_key =-</title>
	<title>index.html 20200721_1436   -= fb/operation fb/med =-</title>
	<title>index.html 20200721_1336   -= cataract_surgery-savannah_guthrie =-</title>
	<title>index.html 20200720_2200   -= img_eyepatch img_key =-</title>
	<title>index.html 20200720_1200   -= img_random_eyepatch =-</title>
	<title>index.html 20200720_1200   -= kolists ['keys'] ['eyepatchs'] =-</title>
	<title>index.html 20200720_1130   -= memorium-john_lewis-20200717 =-</title>
	<title>index.html 20200720_1130   -= keyhole =-</title>
	<title>index.html 20200717_1900   -= memorium-john_lewis-20200717 =-</title>
	<title>index.html 20200717_1900   -= memorium-john_lewis-20200717 jesse_colter-mercyme =-</title>
	<title>index.html 20200717_1630   -= memorium-john_lewis-20200717 =-</title>
	<title>index.html 20200719_1600   -= /imgs/gif/cpa/try_again.gif =-</title>
	<title>index.html 20200717_0345   -= /fb/jtfdcr/animalcontrol =-</title>
	<title>index.html 20200717_0130   -= fb/jtfdcr/animalcontrol/animal_control_booklet =-</title>
	<title>index.html 20200717_0100   -= /holidays.html?id=jtfdc_20170529_memorialday =-</title>
	<title>index.html 20200717_0030   -= jtfdc_stalkarounds_bigdogs =-</title>
	<title>index.html 20200716_2300   -= jtfdc_hero_brother6_sister =-</title>
	<title>index.html 20200716_2230   -= jtfdc_hero_brother6_sister notthem nothere =-</title>
	<title>index.html 20200716_1800   -= /fb/jtfdcr/imgs/lawerup4hoa_.jpg =-</title>
	<title>index.html 20200716_1800   -= /fb/jtfdcr/imgs/lawerup4hoa_.jpg =-</title>
	<title>index.html 20200716_1700   -= link law_riezmanberger_connor_tyler =-</title>
	<title>index.html 20200716_1300   -= link dailymail_herobrother_dogmaul_savesister =-</title>
	<title>index.html 20200716_0000   -= link bdo_stl-kraner_richard =-</title>
	<title>index.html 20200715_1400   -= link bdo_stl-kraner_richard =-</title>
	<title>index.html 20200715_1350   -= link bdo_cle-trouten_floyd =-</title>
	<title>index.html 20200715_1133   -= link oklahhoma4indians yt dailmail thehill =-</title>
	<title>index.html 20200715_1033   -= link morep_smith_neil =-</title>
	<title>index.html 20200715_1033   -= refresh repeat if needed =-</title>
	<title>index.html 20200714_2330   -= link missioncontinues =-</title>
	<title>index.html 20200714_2121   -= jtfdc_stalkarunds_20200714_transcripts;  =-</title>
	<title>index.html 20200714_2121   -= jtfdc_stalkarunds_20200714;  =-</title>
	<title>index.html 20200714_0930   -= jtfdc_20200714_0757_stalkaround_gophers;  =-</title>
	<title>index.html 20200714_0930   -= jtfdc_20200714_0757_gophers3  =-</title>
	<title>index.html 20200714_0900   -= jtfdc_20200714_0817_stalkaround_clothestruck_636-282-0000;  =-</title>
	<title>index.html 20200714_0500   -= jtfdc_20200714_0633_fox;  =-</title>
	<title>index.html 20200714_0600   -= us() rename divlist();  =-</title>
	<title>index.html 20200714_0500   -= us(){kolists};  =-</title>
	<title>index.html 20200714_0400   -= us(args);  =-</title>
	<title>index.html 20200714_0400   -= notyet div_edu,hoa,law  =-</title>
	<title>index.html 20200714_0200   -= index_pn.html =-</title>
	<title>index.html 20200713_1500   -= sailboat shoo to cards =-</title>
	<title>index.html 20200713_0330   -= donutvanlaw takines all took  =-</title>
	<title>index.html 20200713_0230   -= thanks_med_team_bluehost_team =-</title>
	<title>index.html 20200713_0230   -= jtfdc_stalkarounds_20200712_deer =-</title>
	<title>index.html 20200713_0212   -= jtfdc_stalkarounds_20200712 =-</title>
	<title>index.html 20200712_1914   -= birthday_20200821_iponema =-</title>
	<title>index.html 20200712_1230   -= micheals_bootleg_reunion_session =-</title>
	<title>index.html 20200712_1200   -= micheals_bootleg_reunion_session =-</title>
	<title>index.html 20200712_1030   -= stltoday_portlandplace_cpl_history_notbackingdown =-</title>
	<title>index.html 20200712_1030   -= stltoday_portlandplace_cpl_history_notbackingdown =-</title>
	<title>index.html 20200712_0730   -= jtfdcr_vid_jtfdc_stalkarounds_20200711 =-</title>
	<title>index.html 20200711_2100   -= fb2top =-</title>
	<title>index.html 20200711_2100   -= fb2top =-</title>
	<title>index.html 20200711_1900   -= tourdefrance_steephill.tv =-</title>
	<title>index.html 20200711_1830   -= ganpati_bappa_moriya =-</title>
	<title>index.html 20200711_1730   -= ganpati_bappa_moriya =-</title>
	<title>index.html 20200711_1700   -= ganpati_bappa_moriya =-</title>
	<title>index.html 20200710_2346   -= jtfdc_stalkarounds_20200710 =-</title>
	<title>index.html 20200710_2330   -= /fb/cards/ invite n thanks =-</title>
	<title>index.html 20200710_1830   -= pages+/fb/cards/pages =-</title>
	<title>index.html 20200710_1730   -= pages+/fb/cards/pages =-</title>
	<title>index.html 20200710_1600   -= blobhead imgs/btn/ko_*.png =-</title>
	<title>index.html 20200710_1300   -= links_blobhead_jitsi_zoom =-</title>
	<title>index.html 20200710_0630   -= thanks_med =-</title>
	<title>index.html 20200710_0601   -= invite_vip =-</title>
	<title>index.html 20200710_0602   -= invite_anniversary =-</title>
	<title>index.html 20200710_0603   -= invite_reindependence =-</title>
	<title>index.html 20200710_0604   -= birthday_20200820 =-</title>
	<title>index.html 20200710_0605   -= thanks_med =-</title>
	<title>index.html 20200710_0606   -= thanks_bluehost =-</title>
	<title>index.html 20200710_0607   -= invite_vip_deutsch =-</title>
	<title>index.html 20200709_1030   -= mp3_jkwii =-</title>
	<title>index.html 20200709_0630   -= blobhead_wait =-</title>
	<title>index.html 20200709_0630   -= blobhead_wait(args) canvas2slow =-</title>
	<title>index.html 20200709_0030   -= mp3_jkwii =-</title>
	<title>index.html 20200709_0100   -= jtfdc_stalkarounds_20200703 =-</title>
	<title>index.html 20200708_2300   -= /kb/mp3/jkwii =-</title>
	<title>index.html 20200708_1600   -= blobhead_done2canvas =-</title>
	<title>index.html 20200708_1600   -= blobhead_done2canvas =-</title>
	<title>index.html 20200708_1530   -= blobclock =-</title>
	<title>index.html 20200708_1330   -= tokens test =-</title>
	<title>index.html 20200708_0330   -= byrdstaking =-</title>
	<title>index.html 20200708_0230   -= links law_lawson_terry =-</title>
	<title>index.html 20200708_0145   -= links tour_de_france =-</title>
	<title>index.html 20200708_0130   -= links webb_awanbeforemidnight =-</title>
	<title>index.html 20200708_0100   -= links /fb/gofunwii =-</title>
	<title>index.html 20200707_23245   -= links /fb/bh =-</title>
	<title>index.html 20200706_1930   -= links2blobhead woodsoncenter.org jordonperterson_sell =-</title>
	<title>index.html 20200706_1140   -= links woodsoncenter.org jordonperterson_sell =-</title>
	<title>index.html 20200704_0200   -= july4_work =-</title>
	<title>index.html 20200704_0130   -= anniversary_july4_work =-</title>
	<title>index.html 20200704_0040   -= pre_anniversary_july4_stalkarounds =-</title>
	<title>index.html 20200703_2300   -= pre_anniversary_july4_stalkarounds 2000_jtf31_fionas_stalkarounds2 =-</title>
	<title>index.html 20200703_2245   -= pre_anniversary_july4_stalkarounds 803_IL2337663_bump mp4 =-</title>
	<title>index.html 20200703_1600   -= tazerdeath_neighborsetup =-</title>
	<title>index.html 20200703_1100   -= jtfdc_stalkaroundsup_three_2drk_1lit_wagons =-</title>
	<title>index.html 20200708_0900   -= jtfdc_stalkaroundup_drtywhtvan_bump =-</title>
	<title>index.html 20200702_2300   -= links helfers_pastry_delicafe =-</title>
	<title>index.html 20200702_2130   -= links florissantoldtown =-</title>
	<title>index.html 20200702_1400   -= links zillow =-</title>
	<title>index.html 20200702_1300   -= links eckerts.com =-</title>
	<title>index.html 20200701_2230   -= rep_green_alan =-</title>
	<title>index.html 20200701_2222   -= link rep_jordon_jim_oh_elyria =-</title>
	<title>index.html 20200701_1945   -= link cfx =-</title>
	<title>index.html 20200701_0330   -= nwm jhfl konabus =-</title>
	<title>index.html 20200701_0300   -= rand_paul_sen_ky =-</title>
	<title>index.html 20200701_0200   -= jkwii_is_me =-</title>
	<title>index.html 20200701_0130   -= jkwii_is_me =-</title>
	<title>index.html 20200630_2200   -= dutch_jackson*.mp4 =-</title>
	<title>index.html 20200630_2200   -= law_kodner_watkins =-</title>
	<title>index.html 20200630_1800   -= div_media =-</title>
	<title>index.html 20200630_1200   -= img3=/imgs/btn/btn_fan01 fan01b fan2.png =-</title>
	<title>index.html 20200620_0500   -= link fb/patrico_heating_n_cooling =-</title>
	<title>index.html 20200629_1900   -= link patrico_heating_n_cooling =-</title>
	<title>index.html 20200629_1830   -= link florissant_garage =-</title>
	<title>index.html 20200629_1500   -= ein_hundes_leben.html =-</title>
	<title>index.html 20200629_1400   -= gateway_mortgage =-</title>
	<title>index.html 20200629_0700   -= kb/jtfdcr/vid/jtfdc_stalkarounds/alex_salvi_twitter_private_street=-</title>
	<title>index.html 20200629_0600   -= tourdedonut bebikeclub =-</title>
	<title>index.html 20200629_0530   -= topos_survey coldwell_miesner_ken =-</title>
	<title>index.html 20200629_0500   -= who2jail =-</title>
	<title>index.html 20200629_0430   -= donutvanlaw_cheatsheat_tweet =-</title>
	<title>index.html 20200629_0404   -= donutvanlaw_cheatsheat =-</title>
	<title>index.html 20200629_0330   -= private_court_jtfdc =-</title>
	<title>index.html 20200629_0230   -= neuz private_street_mccloskey =-</title>
	<title>index.html 20200629_0230   -= neuz law_mccloskey stl_lawyers_keepmoving =-</title>
	<title>index.html 20200629_0130   -= kitiworks pastryroad =-</title>
	<title>index.html 20200629_0030   -= edrmedia =-</title>
	<title>index.html 20200628_2330   -= links sen_hawley_josh =-</title>
	<title>index.html 20200628_1800   -= links kassil.at habegger germanconsulate_stl=-</title>
	<title>index.html 20200628_1647   -= eingelandene Herren Damian =-</title>
	<title>index.html 20200627_1200   -= memes tar_n_flynneather =-</title>
	<title>index.html 20200625_1300   -= /pages/*automoosezone =-</title>
	<title>index.html 20200625_0600   -= jkwii2jtf30 july4 anniversary/reindependence day maybe jtfinc road dues returned =-</title>
	<title>index.html 20200625_0430   -= byrd contractor ashphoolgirl_stalk_n_bump_n_threat =-</title>
	<title>index.html 20200625_0030   -= ashphoolgirl_stalkaround_threat =-</title>
	<title>index.html 20200622_0530   -= jtfdcr.jpg fb/law/pages/zn_10.jpg =-</title>
	<title>index.html 20200622_0500   -= turtle flood links =-</title>
	<title>index.html 20200620_1200   -= links meet.jit.si neuze/pages/1.jpg =-</title>
	<title>index.html 20200619_1430   -= links meet.jit.si/ko2us =-</title>
	<title>index.html 20200619_1415   -= links zoom jitsi =-</title>
	<title>index.html 20200619_0645   -= jtfdc_stalkarounds_20200618 =-</title>
	<title>index.html 20200619_0500   -= toplinks_msg div_toplinks =-</title>
	<title>index.html 20200619_0500   -= div_toplinks =-</title>
	<title>index.html 20200618_2330   -= reindependenceday =-</title>
	<title>index.html 20200618_2315   -= reindependenceday =-</title>
	<title>index.html 20200618_2325   -= anniversary =-</title>
	<title>index.html 20200618_2145   -= fathersday =-</title>
	<title>index.html 20200618_2139   -= div_toplinks jkwii  =-</title>
	<title>index.html 20200618_2130   -= div_toplinks =-</title>
	<title>index.html 20200617_1400   -= fb/law/jkwiiv_byrdbel fb/who2jail =-</title>
	<title>index.html 20200617_1400   -= todo fb_pagelinks odd_even  =-</title>
	<title>index.html 20200617_1330   -= jtfdc_stalkarounds_20200616  =-</title>
	<title>index.html 20200615_1200   -= jtfdc_stalkarounds byrdbell.mp4 =-</title>
	<title>index.html 20200611_1200   -= jtfdc_stalkarounds_jtf31_fionas_trespass_signthrow =-</title>
	<title>index.html 20200611_0533   -= jtfdc_stalkarounds_quickref_links =-</title>
	<title>index.html 20200611_0533   -= isOdd(num) =-</title>
	<title>index.html 20200610_0800   -= jtfdc_stalkarounds_pagelinks =-</title>
	<title>index.html 20200610_0640   -= jtfdc_stalkarounds href_mp4_gif =-</title>
	<title>index.html 20200610_0440   -= jtfdc_stalkarounds filecheck(mp4) =-</title>
	<title>index.html 20200610_0430   -= jtfdc_stalkarounds_headers =-</title>
	<title>index.html 20200610_0400   -= jtf31_trespass_privatepropertysing_thief =-</title>
	<title>index.html 20200610_0315   -= jtfdc_stalkarounds_20200608 =-</title>
	<title>index.html 20200610_0300   -= jtfdc_stalkarounds_20200609 =-</title>
	<title>index.html 20200609_1115   -= jtfdc_stalkaround_header_imgs =-</title>
	<title>index.html 20200609_0809   -= wait_for_the_plopdrop =-</title>
	<title>index.html 20200609_0700   -= jtfdc_stalkarounds_20200608 =-</title>
	<title>index.html 20200527_0430   -= btn_jtfdc_stalkarounds =-</title>
	<title>index.html 20200526_1730   -= btn_jtfdc_stalkarounds =-</title>
	<title>index.html 20200526_1730   -= btn_jtfdc_stalkarounds =-</title>
	<title>index.html 20200526_1430   -= btn_jtfdc_stalkarounds =-</title>
	<title>index.html 20200522_1500   -= btn_fb_law =-</title>
	<title>index.html 20200522_1440   -= fb_law hidden =-</title>
	<title>index.html 20200522_1400   -= fb_law hidden =-</title>
	<title>index.html 20200522_0730   -= fb_law() togglebug =-</title>
	<title>index.html 20200522_0400   -= btn_fb_law =-</title>
	<title>index.html 20200520_1900   -= show_fb_links() =-</title>
	<title>index.html 20200520_1300   -= kolists['fb_law'] =-</title>
	<title>index.html 20200518_1730   -= kolists['fb_law'] =-</title>
	<title>index.html 20200518_1730   -= mothersday2memorialday_07.png =-</title>
	<title>index.html 20200516_0800   -= jh_freight_llc =-</title>
	<title>index.html 20200514_1845   -= jtfdc_20200514_1830_stalkaroundup_shydrkltlcar =-</title>
	<title>index.html 20200514_1800   -= jtfdc_20200514_1748_stalkaroundup_gemini_truckntrailer_househunting =-</title>
	<title>index.html 20200514_1500   -= jtfdcr/vid/jtfdc_stalkarounds/deer =-</title>
	<title>index.html 20200514_1445   -= jtfdcr/vid/jtfdc_stalkarounds =-</title>
	<title>index.html 20200514_0630   -= fb/law/tc/db =-</title>
	<title>index.html 20200512_1130   -= jtfdc_20200512_1130_stalkaroundup_slowlurk_shnywhtsuv_marked =-</title>
	<title>index.html 20200510_0639   -= happy mothers day 2020 123=-</title>
	<title>index.html 20200510_0639   -= happy mothers day 2020 =-</title>
	<title>index.html 20200510_0530   happy mothers day</title>
	<title>index.html 20200508_1800   tests index_sailboat.html index_shoo.html </title>
	<title>index.html 20200508_0200   barrxmas</title>
	<title>index.html 20200507_0830   filecheck(index_name.html)</title>
	<title>index.html 20200507_0830   jsdoit neave_im</title>
	<title>index.html 20200507_0645   imgs/mp4gifs2localmp4dir</title>
	<title>index.html 20200507_0630   links jsdoit_clock,sailboat</title>
	<title>index.html 20200506_1400   jtfdc_stalkarounds_shyredpickup_crunch </title>
	<title>index.html 20200506_1000   jtfdc_stalkarounds.html </title>
	<title>index.html 20200505_1330   upd jtf32_donutvanlaw_stalkaround_team</title>
	<title>index.html 20200505_1330   link floop fb/law/pages/zn/zn_10.jpg</title>
	<title>index.html 20200505_1330   link jtfdc_stalkarounds.html</title>
	<title>index.html 20200505_0845   link jtfdc_stalkarounds.html</title>
	<title>index.html 20200505_0845   link jsdoit.html</title>
	<title>index.html 20200505_0845   jtfdc_stalkarounds police_jkwiigoin_terror</title>
	<title>index.html 20200505_0830   jtfdc_stalkarounds police_jkwiigoin_terror</title>
	<title>index.html 20200505_0800   links postturtle monkeytrap flood </title>
	<title>index.html 20200503_2400   kolists_blobs skwii </title>
	<title>index.html 20200503_2300   jsdoit.html  </title>
	<title>index.html 20200503_2200   jtfdcr_stalkarounds_20200503.txt </title>
	<title>index.html 20200502_1800   blobid ?id=iperms id=konet</title>
	<title>index.html 20200502_1200  random_jukebox kolists_imgs_jukebox </title>
	<title>index.html 20200502_1200  jtfdc_stalkarounds_fedex_gigglegirls </title>
	<title>index.html 20200502_1200  imgs/imgs_jukebos/radio_02.jpg </title>
	<title>index.html 20200502_0200  jtfdc_stalkarounds() disable filecheck </title>
	<title>index.html 20200502_0200  jtfdc_stalkarounds() </title>
	<title>index.html 20200501_2300  bloglists </title>
	<title>index.html 20200501_1111  slotlever skwiibugs </title>
	<title>index.html 20200501_1111  slotlever skwiibugs </title>
	<title>index.html 20200501_0444  color_selected=blue/red </title>
	<title>index.html 20200501_0200  blob_sound reorg </title>
	<title>index.html 20200501_0200  giphy_us replace giphy_us_news_focus/ </title>
	<title>index.html 20200430_1216  blob_ani,arrows kob/kow </title>
	<title>index.html 20200430_1200  shock-n-awe</title>
	<title>index.html 20200429_1933  jax(jtfdc_mp4) </title>
	<title>index.html 20200429_1933  jax(ko.php?ls=/fb/stlc/pages </title>
	<title>index.html 20200429_1933  blob_arrowkeys="" </title>
	<title>index.html 20200427_2030  imgs/sound/ringworm_1.gif width=60 </title>
	<title>index.html 20200427_2000  imgs/sound/ringworm_1.gif .png </title>
	<title>index.html 20200427_1400  giphy_wave03 </title>
	<title>index.html 20200427_0840  gravity_gif height=200</title>
	<title>index.html 20200426_2200  kb/mp3 </title>
	<title>index.html 20200426_1900  kb/mp3 </title>
	<title>index.html 20200426_0100  script_jaxs </title>
	<title>index.html 20200424_1600  kolists_mp3 </title>
	<title>index.html 20200424_1600  imgs/btn/blob_gravity_onoff.gif </title>
	<title>index.html 20200424_0830  imgs/btn/blob_gravity_onoff.gif </title>
	<title>index.html 20200424_0830  imgs_blob5 blob_info </title>
	<title>index.html 20200424_0830  imgs/sound/soundwave.png </title>
	<title>index.html 20200423_0316  div_buttons us </title>
	<title>index.html 20200423_1413  gravityon blobColl.split </title>
	<title>index.html 20200423_1413 blob init split</title>
	<title>index.html 20200423_1413 jtfdc_20200423_1423_stalkaroundup_speeding_amazon_stalk.mp4</title>
	<title>index.html 20200423_1413 jaxphp button beutify</title>
	<title>index.html 20200423_1300 fb links </title>
	<title>index.html 20200423_1230 jax() kolists[id] kolists['jax'] </title>
	<title>index.html 20200423_0530 startup kolists</title>
	<title>index.html 20200422_1130 iperms konet links </title>
	<title>index.html 20200422_1130 ko_center links </title>
	<title>index.html 20200422_0630 postturtle_monkeytrap/floop </title>
	<title>index.html 20200422_0630 postturtle_monkeytrap </title>
	<title>index.html 20200420_2112 img_blob_buttons.png gravity </title>
	<title>index.html 20200420_2112 img_blob_togglestart gravity </title>
	<title>index.html 20200420_1233 blob+index.html mousebug fix </title>
	<title>blob.html 20200418_2130 up down left right new Vector</title>
	<title>blob.html 20200418_0900 keypress shift ctrl</title>
	<title>blob.html 20200418_0900 blobsallad</title>
	<title>blob.html 20200418_0400</title>
`;
		</script>



	<script id="script_titles">
		function titles(args) {
			alert( "BUGS_300 args="+args );
			alert( "MSG_300 titles kolist_titles="+kolists['titles'];
			return(args);
			}
		</script>

	<script id="script_titles1">
		function titles1(args) {
			alert( "BUGS_301 args="+args );
			alert( "MSG_301 titles kolist_titles="+kolists['titles'];
			return(args);
			}
		</script>


	<script id="script_blob_log"  type="text/javascript">
		function log(msg) {
			var textArea;
			textArea = document.getElementById("logArea");
			textArea.value = msg + "\n" + textArea.value;
			}

		function clearLog() {
			var textArea;
			textArea = document.getElementById("logArea");
			textArea.value = "";
			}
		</script>

<!--	<script type="text/javascript" src="blobsallad.js"> </script> -->
<!--	<script type="text/javascript" src="blob.js"> </script> -->
	<script id="script_blob">
		function Vector(x, y) {
			this.x = x; 
			this.y = y; 
			this.equal = function(v) {
				return this.x == v.getX() && this.y == v.getY(); 
				}
			this.getX = function() {
				return this.x; 
				}
			this.getY = function() {
				return this.y; 
				}
			this.setX = function(x) {
				this.x = x; 
				}
			this.setY = function(y) {
				this.y = y; 
				}
			this.addX = function(x) {
				this.x += x; 
				}
			this.addY = function(y) { this.y += y; }
			this.set = function(v) {
				this.x = v.getX(); 
				this.y = v.getY(); 
				}
			this.add = function(v) {
				this.x += v.getX(); 
				this.y += v.getY(); 
				}
			this.sub = function(v) {
				this.x -= v.getX(); 
				this.y -= v.getY(); 
				}
			this.dotProd = function(v) {
				return this.x * v.getX() + this.y * v.getY(); 
				}
			this.length = function() {
				return Math.sqrt(this.x * this.x + this.y * this.y); 
				}
			this.scale = function(scaleFactor) {
				this.x *= scaleFactor; 
				this.y *= scaleFactor; 
				}
			this.toString = function() {
				return " X: " + this.x + " Y: " + this.y; 
				}
			}
  
		function Environment(x, y, w, h) {
			this.left = x;   
			this.right = x + w;   
			this.top = y;   
			this.buttom = y + h;
			this.r = new Vector(0.0, 0.0); 

		this.collision = function(curPos, prevPos) {
			var collide = false; 
			var i; 

		if(curPos.getX() < this.left) {
			curPos.setX(this.left); 
			collide = true; 
			}
		else if(curPos.getX() > this.right) {
			curPos.setX(this.right); 
			collide = true; 
			}
		if(curPos.getY() < this.top) {
			curPos.setY(this.top); 
			collide = true; 
			}
      else if(curPos.getY() > this.buttom)
      {
        curPos.setY(this.buttom); 
        collide = true; 
      }
      return collide; 
    }  


	this.draw = function(ctx, scaleFactor) {}
	}
  
	function PointMass(cx, cy, mass) {
		this.cur = new Vector(cx, cy); 
		this.prev = new Vector(cx, cy); 
		this.mass = mass; 
		this.force = new Vector(0.0, 0.0); 
		this.result = new Vector(0.0, 0.0); 
		this.friction = 0.01; 
    
	this.getXPos = function() {
		return this.cur.getX(); 
		}
	this.getYPos = function() {
		return this.cur.getY(); 
		}
	this.getPos = function() {
		return this.cur; 
		}
	this.getXPrevPos = function() {
		return this.prev.getX(); 
		}
	this.getYPrevPos = function() {return this.prev.getY(); }
	this.getPrevPos = function() {return this.prev; }
	this.addXPos = function(dx) {this.cur.addX(dx); }
	this.addYPos = function(dy) {this.cur.addY(dy); }
	this.setForce = function(force) {this.force.set(force); }    
	this.addForce = function(force) {this.force.add(force); }
	this.getMass = function() {return this.mass; }
	this.setMass = function(mass) {this.mass = mass; }

		this.move = function(dt) {
			var t, a, c, dtdt; 
			dtdt = dt * dt; 
      
			a = this.force.getX() / this.mass;
			c = this.cur.getX(); 
			t = (2.0 - this.friction) * c - (1.0 - this.friction) * this.prev.getX() + a * dtdt;
			this.prev.setX(c); 
			this.cur.setX(t);
            
			a = this.force.getY() / this.mass;
			c = this.cur.getY(); 
			t = (2.0 - this.friction) * c - (1.0 - this.friction) * this.prev.getY() + a * dtdt;
			this.prev.setY(c); 
			this.cur.setY(t);
			}
		this.setFriction = function(friction) {this.friction = friction; }
		this.getVelocity = function() {
			var cXpX, cYpY; 
      
			cXpX = this.cur.getX() - this.prev.getX(); 
			cYpY = this.cur.getY() - this.prev.getY();
      
			return cXpX * cXpX + cYpY * cYpY;  
			}

		this.draw = function(ctx, scaleFactor) {
			ctx.lineWidth = 2; 
//			ctx.fillStyle = '#000000'; 
//			ctx.strokeStyle = '#000000'; 
			ctx.fillStyle = 'white'; 
			ctx.strokeStyle = 'black'; 
			ctx.beginPath(); 
			ctx.arc(this.cur.getX() * scaleFactor, 
			nthis.cur.getY() * scaleFactor, 
			4.0, 0.0, Math.PI * 2.0, true); 
			ctx.fill(); 
			}
		}
 
	function ConstraintY(pointMass, y, shortConst, longConst) {
		this.pointMass = pointMass; 
		this.y = y; 
		this.delta = new Vector(0.0, 0.0);
		this.shortConst = shortConst; 
		this.longConst = longConst;  
    
		this.sc = function() {      
      var dist; 
      
      dist = Math.abs(this.pointMass.getYPos() - this.y);
      this.delta.setY(-dist); 
       
      if(this.shortConst != 0.0 && dist < this.shortConst) {
        var scaleFactor; 
        
        scaleFactor = this.shortConst / dist; 
        this.delta.scale(scaleFactor); 
        pointMass.getPos().sub(this.delta); 
      } 
      else if(this.longConst != 0.0 && dist > this.longConst)
      {
        var scaleFactor; 
        
        scaleFactor = this.longConst / dist; 
        this.delta.scale(scaleFactor); 
        pointMass.getPos().sub(this.delta); 
      }
    } 
  }

  
  function Joint(pointMassA, pointMassB, shortConst, longConst)
  {
    this.pointMassA = pointMassA; 
    this.pointMassB = pointMassB; 
    this.delta = new Vector(0.0, 0.0);     
    this.pointMassAPos = pointMassA.getPos(); 
    this.pointMassBPos = pointMassB.getPos(); 
    
    this.delta.set(this.pointMassBPos); 
    this.delta.sub(this.pointMassAPos); 
    
    this.shortConst = this.delta.length() * shortConst; 
    this.longConst = this.delta.length() * longConst; 
    this.scSquared = this.shortConst * this.shortConst; 
    this.lcSquared = this.longConst * this.longConst; 

    this.setDist = function(shortConst, longConst)
    {
      this.shortConst = shortConst; 
      this.longConst = longConst; 
      this.scSquared = this.shortConst * this.shortConst; 
      this.lcSquared = this.longConst * this.longConst;     
    }
    this.scale = function(scaleFactor)
    {
      this.shortConst = this.shortConst * scaleFactor; 
      this.longConst = this.longConst * scaleFactor; 
      this.scSquared = this.shortConst * this.shortConst; 
      this.lcSquared = this.longConst * this.longConst;     
    }
    this.sc = function()
    {      
      this.delta.set(this.pointMassBPos); 
      this.delta.sub(this.pointMassAPos); 

      var dp = this.delta.dotProd(this.delta);
      
      if(this.shortConst != 0.0 && dp < this.scSquared)
      {
        var scaleFactor; 
        
        scaleFactor = this.scSquared / (dp + this.scSquared) - 0.5; 
        
        this.delta.scale(scaleFactor);
       
        this.pointMassAPos.sub(this.delta); 
        this.pointMassBPos.add(this.delta); 
      } 
      else if(this.longConst != 0.0 && dp > this.lcSquared)
      {
        var scaleFactor;
        
        scaleFactor = this.lcSquared / (dp + this.lcSquared) - 0.5; 
        
        this.delta.scale(scaleFactor);
       
        this.pointMassAPos.sub(this.delta); 
        this.pointMassBPos.add(this.delta);       
      }
    } 
  }
    
  function Stick(pointMassA, pointMassB)
  {
    function pointMassDist(pointMassA, pointMassB)
    {
      var aXbX, aYbY; 
    
      aXbX = pointMassA.getXPos() - pointMassB.getXPos(); 
      aYbY = pointMassA.getYPos() - pointMassB.getYPos(); 
    
      return Math.sqrt(aXbX * aXbX + aYbY * aYbY);  
    }
  
    this.length = pointMassDist(pointMassA, pointMassB); 
    this.lengthSquared = this.length * this.length; 
    this.pointMassA = pointMassA; 
    this.pointMassB = pointMassB; 
    this.delta = new Vector(0.0, 0.0); 
    
    this.getPointMassA = function()
    {
      return this.pointMassA; 
    }
    this.getPointMassB = function()
    {
      return this.pointMassB; 
    }
    this.scale = function(scaleFactor)
    {
      this.length *= scaleFactor; 
      this.lengthSquared = this.length * this.length; 
    }
    this.sc = function(env)
    {
      var dotProd, scaleFactor; 
      var pointMassAPos, pointMassBPos; 
    
      pointMassAPos = this.pointMassA.getPos(); 
      pointMassBPos = this.pointMassB.getPos(); 
    
      this.delta.set(pointMassBPos); 
      this.delta.sub(pointMassAPos); 

      dotProd = this.delta.dotProd(this.delta); 

      scaleFactor = this.lengthSquared / (dotProd + this.lengthSquared) - 0.5; 
      this.delta.scale(scaleFactor);
       
      pointMassAPos.sub(this.delta); 
      pointMassBPos.add(this.delta); 
    }
    this.setForce = function(force)
    {
      this.pointMassA.setForce(force); 
      this.pointMassB.setForce(force); 
    }
    this.addForce = function(force)
    {
      this.pointMassA.addForce(force); 
      this.pointMassB.addForce(force); 
    }
    this.move = function(dt)
    {
      this.pointMassA.move(dt); 
      this.pointMassB.move(dt); 
    }
		this.draw = function(ctx, scaleFactor) {
			this.pointMassA.draw(ctx, scaleFactor); 
			this.pointMassB.draw(ctx, scaleFactor); 
            
			ctx.lineWidth = 3; 
//			ctx.fillStyle = '#000000'; 
//			ctx.strokeStyle = '#000000'; 
			ctx.fillStyle = 'darkslategrey'; 
			ctx.strokeStyle = 'linen'; 
			ctx.beginPath(); 
			ctx.moveTo(this.pointMassA.getXPos() * scaleFactor, 
			this.pointMassA.getYPos() * scaleFactor); 
			ctx.lineTo(this.pointMassB.getXPos() * scaleFactor, 
			this.pointMassB.getYPos() * scaleFactor); 
			ctx.stroke(); 
			}
		}
  
  function Spring(restLength, stiffness, damper, pointMassA, pointMassB)
  {
    this.restLength = restLength; 
    this.stiffness = stiffness; 
    this.damper = damper; 
    this.pointMassA = pointMassA; 
    this.pointMassB = pointMassB; 
    this.tmp = Vector(0.0, 0.0); 
    
    this.sc = function(env)
    {
      env.collistion(this.pointMassA.getPos(), this.pointMassA.getPrevPos()); 
      env.collistion(this.pointMassB.getPos(), this.pointMassB.getPrevPos()); 
    }
    
    this.move = function(dt)
    {
      var aXbX;
      var aYbY;
      var springForce; 
      var length; 
      
      aXbX = this.pointMassA.getXPos() - this.pointMassB.getXPos(); 
      aYbY = this.pointMassA.getYPos() - this.pointMassB.getYPos(); 
      
      length = Math.sqrt(aXbX * aXbX + aYbY * aYbY);
      springForce = this.stiffness * (length / this.restLength - 1.0);   
      
      var avXbvX; 
      var avYbvY; 
      var damperForce; 
      
      avXbvX = this.pointMassA.getXVel() - this.pointMassB.getXVel(); 
      avYbvY = this.pointMassA.getYVel() - this.pointMassB.getYVel(); 
      
      damperForce = avXbvX * aXbX + avYbvY * aYbY;
      damperForce *= this.damper; 
      
      var fx; 
      var fy; 
      
      fx = (springForce + damperForce) * aXbX; 
      fy = (springForce + damperForce) * aYbY; 
      
      this.tmp.setX(-fx); 
      this.tmp.setY(-ft); 
      this.pointMassA.addForce(this.tmp); 

      this.tmp.setX(fx); 
      this.tmp.setY(ft); 
      this.pointMassB.addForce(this.tmp); 
      
      this.pointMassA.move(dt); 
      this.pointMassB.move(dt); 
    }
    this.addForce = function(force)
    {
      this.pointMassA.addForce(force); 
      this.pointMassB.addForce(force); 
    }


			this.draw = function(ctx, scaleFactor) {
				this.pointMassA.draw(ctx, scaleFactor); 
				this.pointMassB.draw(ctx, scaleFactor); 
      
//				ctx.fillStyle = '#000000'; 
//				ctx.strokeStyle = '#000000'; 
				ctx.fillStyle = 'red'; 
				ctx.strokeStyle = 'blue'; 
				ctx.beginPath(); 
				ctx.moveTo(this.pointMassA.getXPos() * scaleFactor, 
					this.pointMassA.getYPos() * scaleFactor); 
				ctx.lineTo(this.pointMassB.getXPos() * scaleFactor, 
					this.pointMassB.getXPos() * scaleFactor); 
				ctx.stroke(); 
				}
			}

		function Blob(x, y, radius, numPointMasses) {
			this.x = x; 
			this.y = y; 

//			alert( "BUGS_480 x="+x+" y="+radius+" numpointmasses="+numPointMasses );
			this.sticks = new Array(); 
			this.pointMasses = new Array(); 
			this.joints = new Array(); 
			this.middlePointMass; 
			this.radius = radius; 
			this.drawFaceStyle = 1; 
			this.drawEyeStyle = 1; 
			this.selected = false; 
    
			numPointMasses = 8; 
    
			var f = 0.1; 
			var low = 0.95, high = 1.05;
			var t, i, p;
  
		function clampIndex(index, maxIndex) {
			index += maxIndex; 
			return index % maxIndex; 
			}

		for(i = 0, t = 0.0; i < numPointMasses; i++) {
			this.pointMasses[i] = new PointMass(Math.cos(t) * radius + x, Math.sin(t) * radius + y, 1.0); 
			t += 2.0 * Math.PI / numPointMasses; 
			}
    
		this.middlePointMass = new PointMass(x, y, 1.0); 
     
    this.pointMasses[0].setMass(4.0); 
    this.pointMasses[1].setMass(4.0); 
     
    for(i = 0; i < numPointMasses; i++)
    {
      this.sticks[i] = new Stick(this.pointMasses[i], this.pointMasses[clampIndex(i + 1, numPointMasses)]); 
    }

    for(i = 0, p = 0; i < numPointMasses; i++)
    {
      this.joints[p++] = new Joint(this.pointMasses[i], this.pointMasses[clampIndex(i + numPointMasses / 2 + 1, numPointMasses)], low, high);  
      this.joints[p++] = new Joint(this.pointMasses[i], this.middlePointMass, high * 0.9, low * 1.1); // 0.8, 1.2 works  
    }
    
    this.addBlob = function(blob)
    {
      var index = this.joints.length;
      var dist; 
       
      this.joints[index] = new Joint(this.middlePointMass, blob.getMiddlePointMass(), 0.0, 0.0); 
      dist = this.radius + blob.getRadius(); 
      this.joints[index].setDist(dist * 0.95, 0.0); 
    }
    this.getMiddlePointMass = function()
    {
      return this.middlePointMass; 
    }
    this.getRadius = function()
    {
      return this.radius; 
    }
    this.getXPos = function()
    {
      return this.middlePointMass.getXPos(); 
    }
    this.getYPos = function()
    {
      return this.middlePointMass.getYPos(); 
    }
    this.scale = function(scaleFactor)
    {
      var i; 
      
      for(i = 0; i < this.joints.length; i++)
      {
        this.joints[i].scale(scaleFactor); 
      }
      for(i = 0; i < this.sticks.length; i++)
      {
        this.sticks[i].scale(scaleFactor); 
      }
      this.radius *= scaleFactor; 
    }
    
    this.move = function(dt)
    {
      var i; 
      
      for(i = 0; i < this.pointMasses.length; i++)
      {
        this.pointMasses[i].move(dt); 
      }
      this.middlePointMass.move(dt); 
    }
    this.sc = function(env)
    {
      var i, j; 
      
      for(j = 0; j < 4; j++)
      {
        for(i = 0; i < this.pointMasses.length; i++)
        {
          if(env.collision(this.pointMasses[i].getPos(), this.pointMasses[i].getPrevPos()) == true)
          {
            this.pointMasses[i].setFriction(0.75); 
          } 
          else 
          {
            this.pointMasses[i].setFriction(0.01); 
          }
        }
        for(i = 0; i < this.sticks.length; i++)
        {
          this.sticks[i].sc(env); 
        }
        for(i = 0; i < this.joints.length; i++)
        {
          this.joints[i].sc(); 
        }
      }
    }
    this.setForce = function(force)
    {
      var i; 
      
      for(i = 0; i < this.pointMasses.length; i++)
      {
        this.pointMasses[i].setForce(force); 
      }
      this.middlePointMass.setForce(force); 
    }
    this.addForce = function(force)
    {
      var i; 
      
      for(i = 0; i < this.pointMasses.length; i++)
      {
        this.pointMasses[i].addForce(force); 
      }
      this.middlePointMass.addForce(force); 
      this.pointMasses[0].addForce(force); 
      this.pointMasses[0].addForce(force); 
      this.pointMasses[0].addForce(force); 
      this.pointMasses[0].addForce(force); 
    }
    this.moveTo = function(x, y)
    {
      var i, blobPos; 
      
      blobPos = this.middlePointMass.getPos(); 
      x -= blobPos.getX(x); 
      y -= blobPos.getY(y); 

      for(i = 0; i < this.pointMasses.length; i++)
      {
        blobPos = this.pointMasses[i].getPos(); 
        blobPos.addX(x); 
        blobPos.addY(y); 
      }
      blobPos = this.middlePointMass.getPos(); 
      blobPos.addX(x); 
      blobPos.addY(y); 
    }
    this.setSelected = function(selected)
    {
      this.selected = selected; 
    }
    
		this.drawEars = function(ctx, scaleFactor) {
			ctx.strokeStyle = "#000000"; 
			ctx.fillStyle = "#FFFFFF"; 
//			ctx.strokeStyle = "#FFFFFF"; 
//			ctx.fillStyle = "#000000"; 
			ctx.lineWidth = 2; 

			ctx.beginPath(); 
			ctx.moveTo((-0.55 * this.radius) * scaleFactor, (-0.35 * this.radius) * scaleFactor);
			ctx.lineTo((-0.52 * this.radius) * scaleFactor, (-0.55 * this.radius) * scaleFactor);
			ctx.lineTo((-0.45 * this.radius) * scaleFactor, (-0.40 * this.radius) * scaleFactor);
			ctx.fill(); 
			ctx.stroke(); 
      
			ctx.beginPath(); 
			ctx.moveTo((0.55 * this.radius) * scaleFactor, (-0.35 * this.radius) * scaleFactor);
			ctx.lineTo((0.52 * this.radius) * scaleFactor, (-0.55 * this.radius) * scaleFactor);
			ctx.lineTo((0.45 * this.radius) * scaleFactor, (-0.40 * this.radius) * scaleFactor);
			ctx.fill(); 
			ctx.stroke(); 
			}
    
		this.drawHappyEyes1 = function(ctx, scaleFactor) {      
			ctx.lineWidth = 1; 
			ctx.fillStyle = "#FFFFFF";
			ctx.beginPath(); 
			ctx.arc((-0.15 * this.radius) * scaleFactor, 
				(-0.20 * this.radius) * scaleFactor, 
				this.radius * 0.12 * scaleFactor, 0, 2.0 * Math.PI, false);
			ctx.fill(); 
			ctx.stroke();  

			ctx.beginPath(); 
			ctx.arc(( 0.15 * this.radius) * scaleFactor, 
			(-0.20 * this.radius) * scaleFactor, 
				this.radius * 0.12 * scaleFactor, 0, 2.0 * Math.PI, false);
			ctx.fill(); 
			ctx.stroke();          

			ctx.fillStyle = "#000000";
			ctx.beginPath(); 
			ctx.arc((-0.15 * this.radius) * scaleFactor, 
				(-0.17 * this.radius) * scaleFactor, 
				this.radius * 0.06 * scaleFactor, 0, 2.0 * Math.PI, false);
			ctx.fill();  

			ctx.beginPath(); 
			ctx.arc(( 0.15 * this.radius) * scaleFactor, 
				(-0.17 * this.radius) * scaleFactor, 
				this.radius * 0.06 * scaleFactor, 0, 2.0 * Math.PI, false);
			ctx.fill();  
			}
		this.drawHappyEyes2 = function(ctx, scaleFactor) {      
      ctx.lineWidth = 1; 
      ctx.fillStyle = "#FFFFFF";
      ctx.beginPath(); 
      ctx.arc((-0.15 * this.radius) * scaleFactor, 
              (-0.20 * this.radius) * scaleFactor, 
              this.radius * 0.12 * scaleFactor, 0, 2.0 * Math.PI, false);
      ctx.stroke();  

      ctx.beginPath(); 
      ctx.arc(( 0.15 * this.radius) * scaleFactor, 
              (-0.20 * this.radius) * scaleFactor, 
              this.radius * 0.12 * scaleFactor, 0, 2.0 * Math.PI, false);
      ctx.stroke();          

      ctx.lineWidth = 1;       
      ctx.beginPath(); 
      ctx.moveTo((-0.25   * this.radius) * scaleFactor, 
                 (-0.20 * this.radius) * scaleFactor); 
      ctx.lineTo((-0.05 * this.radius) * scaleFactor, 
                 (-0.20 * this.radius) * scaleFactor); 
      ctx.stroke();  

      ctx.beginPath(); 
      ctx.moveTo(( 0.25   * this.radius) * scaleFactor, 
                 (-0.20 * this.radius) * scaleFactor); 
      ctx.lineTo(( 0.05 * this.radius) * scaleFactor, 
                 (-0.20 * this.radius) * scaleFactor); 
      ctx.stroke();  
			}


		this.drawHappyFace1 = function(ctx, scaleFactor) {      
			ctx.lineWidth = 2; 
//			ctx.strokeStyle = "#000000";
//			ctx.fillStyle = "#000000";
			ctx.strokeStyle = "black";
			ctx.fillStyle = "black";
			ctx.beginPath(); 
			ctx.arc(0.0, 0.0, 
				this.radius * 0.25 * scaleFactor, 0, Math.PI, false);
			ctx.stroke();
			}

		this.drawHappyFace2 = function(ctx, scaleFactor) {      
			ctx.lineWidth = 2; 
			ctx.strokeStyle = "#000000";
			ctx.fillStyle = "#000000";
			ctx.beginPath(); 
			ctx.arc(0.0, 0.0, 
        			this.radius * 0.25 * scaleFactor, 0, Math.PI, false);
			ctx.fill();  
			}
		this.drawOohFace = function(ctx, scaleFactor) {
			ctx.lineWidth = 2; 
			ctx.strokeStyle = "#000000";
			ctx.fillStyle = "#000000";
			ctx.beginPath(); 
			ctx.arc(0.0, (0.1 * this.radius) * scaleFactor, 
				this.radius * 0.25 * scaleFactor, 0, Math.PI, false);
			ctx.fill();  

			ctx.beginPath();

			ctx.moveTo((-0.25 * this.radius) * scaleFactor, (-0.3 * this.radius) * scaleFactor);
			ctx.lineTo((-0.05 * this.radius) * scaleFactor, (-0.2 * this.radius) * scaleFactor);
			ctx.lineTo((-0.25 * this.radius) * scaleFactor, (-0.1 * this.radius) * scaleFactor);

			ctx.moveTo((0.25 * this.radius) * scaleFactor, (-0.3 * this.radius) * scaleFactor);
			ctx.lineTo((0.05 * this.radius) * scaleFactor, (-0.2 * this.radius) * scaleFactor);
			ctx.lineTo((0.25 * this.radius) * scaleFactor, (-0.1 * this.radius) * scaleFactor);

			ctx.stroke();           
			} 

		this.drawFace = function(ctx, scaleFactor) {
			if(this.drawFaceStyle == 1 && Math.random() < 0.05) {
				this.drawFaceStyle = 2; 
				}
			else if(this.drawFaceStyle == 2 && Math.random() < 0.1) {
				this.drawFaceStyle = 1; 
				}

			if(this.drawEyeStyle == 1 && Math.random() < 0.025) {
				this.drawEyeStyle = 2; 
				}
			else if(this.drawEyeStyle == 2 && Math.random() < 0.3) {
				this.drawEyeStyle = 1; 
				}
                  
      if(this.middlePointMass.getVelocity() > 0.004)
      {    
        this.drawOohFace(ctx, scaleFactor);     
      }
      else 
      {
        if(this.drawFaceStyle == 1)
        {
          this.drawHappyFace1(ctx, scaleFactor, 0.0, -0.3);     
        }
        else 
        {
          this.drawHappyFace2(ctx, scaleFactor, 0.0, -0.3);     
        }
        
        if(this.drawEyeStyle == 1)
        {
          this.drawHappyEyes1(ctx, scaleFactor, 0.0, -0.3);     
        }
        else 
        {
          this.drawHappyEyes2(ctx, scaleFactor, 0.0, -0.3);     
        }
      }
    }
    this.getPointMass = function(index)
    {
      index += this.pointMasses.length; 
      index = index % this.pointMasses.length; 
      return this.pointMasses[index]; 
    }


		this.drawBody = function(ctx, scaleFactor) {
			var i; 

var colors = 
`blue
red
blue
white
white
wheat
burlywood
linen
darkslategray
yellow
pink
orange
red
blue
red
blue
green
brown`.split("\n");
			href=window.location.href;
			color=""; color_selected="";
//			alert( "BUGS_850 kolists_blobs="+kolists['blobs'] );
//			alert( "BUGS_800 ka1 href="+href+" color="+color+" selected="+color_selected );

			blobs=kolists['blobs'].split("\n");
			blobs_len=blobs.length;
//			alert( "BUGS_855 blobs_len="+blobs_len );

			for( j=0; j< blobs_len; j++ ) {
				if( blobs[j] == "" ) { continue; }
				if( /^#/.test(blobs[j] )) { continue; }
				if( /\n/.test(blobs[j] )) { continue; }
//				alert( "BUGS_860 blobs j="+j+" blobs="+blobs[j] );
				blob=blobs[j].split("|");
				id=blob[0];
				color=blob[1];
				color_selected=blob[2];
				color_stroke=blob[3];
				linewidth=blob[4];
				src_img=blob[5];
//				url=blob[6];
//				alert( "BUGS_870 j="+j+" id="+id+" color="+color+" color_selected="+color_selected+" linewidth="+linewidth );

//				if(filecheck(src)) {
//					img=new Image();
//					img.onload = function() {ctx.drawImage(img, 0,0); }
//					alert(  "BUGS_810 id="+id+" color="+color );
//					}

//				if( testid == id ) { 
//				if( /ka1/.test(href)) {
//				re=/id/;
//				href=window.location.href;
//				alert( "BUGS_881 blob FIND id -="+id+"=- match -="+match+"=- color="+color+" color_stroke="+color_stroke );
//				if( /id/.test(match)) { 
				match="ka21";
//				var str = "Hello world!";
//				var patt = /Hello/g;
				var str = id;
				var patt = /id/g;
				var result = patt.test(str);
//				if( patt.test(str)) { }
//				if( result == true ) { }
//				var id = geturlparam('id','3');
//				alert( "BUGS_881 BLOBID blobid="+blobid+" id="+id );
//				if( j==5 ) {
//					alert( "BUGS_882 __MATCH str="+str+" patt="+patt+" result="+result );


				blobid="ka12";
				blobid="ka21";
				blobid="konet";
				blobid=geturlparameter('id');
//				blobid=geturlparameter(blobid);
				if( blobid == id ) {
//					alert( "BUGS_882 __MATCH j="+j+" id="+id+" color="+color+" color_selected="+color_selected+" linewidth="+linewidth );
					break;
					}
				else {
//					alert( "BUGS_883 NOMATCH str="+str+" patt="+patt+" result="+result );
					}

//				if( id == match ) { 
//					alert( "BUGS_882 blob __MATCH id="+id+" href="+href+" color="+color+" color_stroke="+color_stroke );
//					break;
//					}
//				else {
//					alert( "BUGS_883 blob NOMATCH id="+id+" href="+href+" color="+color+" color_stroke="+color_stroke );
//					}
//				if( /id/.test(testid)) { 
//					color=blob[i].split("|")[1];
//					color_selected=blob[i].split("|")[2];
//					color_stroke=blob[i].split("|")[3];
//					linewidth=blob[i].split("|")[4];
//					alert( "BUGS_871 blob FOUND id="+id+" href="+href+" color="+color+" color_stroke="+color_stroke );
//					break;
//					}

//				alert( "BUGS_880 id="+id+" color="+color+" img="+img );
				}


//			if( color=="" ) {
//				alert( "BUGS_859 href="+window.location.href+" color="+color+" selected="+color_selected );
//				color=colors[0];
//				color_selected=colors[1];
//				color="blue";
//				}
//			alert( "BUGS_860 href="+href+" color="+color+" selected="+color_selected );

//			var color = colors[random_int(0,colors.length-1)]

      
//			ctx.strokeStyle = "white"; 
//			ctx.strokeStyle = "black`"; 
//			ctx.strokeStyle = "#000000"; 
			ctx.strokeStyle = color_stroke;


			ctx.shadowOffsetX = 5;
			ctx.shadowOffsetY = 5;
			ctx.shadowBlur = 10;
			ctx.shadowColor = "DarkGoldenRod";
			ctx.fillStyle = "Gold";
			ctx.fillRect(20, 50, 300, 200);

//			img2 = new Image();
//			img2.src="/imgs/btn/btn_mothersday.png";
//			ctx.globalAlpha=0.5;// opacity at 0.5
//			ctx.drawImage(img2, 20, 20);

//			alert( "BUGS_1251 img_fan="+img_fan );
//			alert( "BUGS_1252 img_key="+img_key );
//			alert( "BUGS_1253 img_eyepatch="+img_eyepatch );
//			alert( "BUGS_1254 img_gazibo="+img_gazibo );

			ctx.drawImage(img_fan, 10, 10 );
			ctx.drawImage(img_eyepatch, 120, 60, 50, 60 );
//			ctx.drawImage(img_key, 10, 200, 50, 50);
			ctx.drawImage(img_key, 500, 30, 50, 50);

//			if( random_int(1,0) == 0 ) {
				ctx.drawImage(img_gazibo, 0, 0, 700, 600);
//				}
//			else {
//				ctx.drawImage(img_sawhorse, 350, 100);
//				}


//			blob_imgs=kolists['blob_imgs'].split("\n");
//			blob_imgs_len=blob_imgs.length;
//			blob_imgs_num = random_int(blob_imgs_len,0);	
//			img_sawhorse.src = blob_imgs['blob_imgs'];

// img_sawhorse
	
//			ctx.globalAlpha=1.0; // opacity at 1.0
//			ctx.drawImage(img1, 20, 20);
//			ctx.globalAlpha=1.0;// opacity at 0.5
//			ctx.drawImage(img2, 500, 20, 10, 300);
//			ctx.globalAlpha=1.0;// opacity at 0.5
//			ctx.drawImage(img3, 40, 60, 100, 100);
//			ctx.globalAlpha=1.0;// opacity at 1.0


//			img_token = new Image();
//			img_token.src="/imgs/btn/koeye.png";
//			img_token.src="/fb/jtfdcr/imgs/jtfdc_20200704_0000_gazibo_privatedrive_keepout_IMG_9434_800.png";
			var token = random_int(999999,1);
			var dt=dttm("");
//			var dttm="yyyymmdd_hhmmss";
//			alert( "BUGS_1120: token="+token+" dttm="+dttm );

//			alert( "BUGS_1300 random_key_img="+random_key_img );
//			alert( "BUGS_1302 kolists_keys="+kolists['keys'] );

//			ctx.globalAlpha=1.0; // opacity at 1.0
//			ctx.drawImage(img_token, 0, 0);
			ctx.font = "italic 200 16px, sans-serif";
//			alert( "BUGS_1120: token="+token );
			var maxwidth=100;
			ctx.fillStyle = "black";
//			ctx.fillText(dt, 70,240, maxwidth );
			ctx.fillText(dt, 40,240, maxwidth );
			ctx.fillText(token, 550,10, maxwidth );
//			ctx.fillText("-- ==  j u l y    4    1 9 7 7  == --", 280,45, maxwidth );
//			ctx.fillText("- =   4 3 rd   =- ", 300,95, maxwidth );
//			ctx.fillText(token, 450,44, maxwidth );
//			ctx.fillText(token, 210,44, maxwidth );
//			alert( "BUGS_1130 dt="+dt+"  token="+token );


		dropmsg_wait='';
		dropmsg_wait+='<h1 id="h1_blobsallad">blobsallad <br>';
		dropmsg_wait+='count 16 n refresh regularly<br>';
		dropmsg_wait+='<hr color=goldenrod>';
		dropmsg_wait+=' -= ...::: wait_for_the_drop :::... =-';

		dropmsg_done = '';
		dropmsg_done +='<h1 id="h1_blobsallad">';
		dropmsg_done += '-= ...::: its about time :::... =-';
		dropmsg_done += '<br>';
		dropmsg_done += document.title;
		dropmsg_done += '<br>';
		dropmsg_done += '-= ...::: its about 7 years :::... =-';
		dropmsg_done += '<br>'
		dropmsg_done += '	</h1>';

		var canvas = document.getElementById('canvas_blob');
		if(canvas.getContext == null) {return; }
		var ctx = canvas.getContext('2d');
		var title=document.title;
//		ctx.fillText("-- ==  its about time  == --", 20,5, maxwidth );
//		ctx.fillText("-- ==  its about 7 years  == --", 125,5, maxwidth );
		ctx.fillText("-- ==  its about time  == --", 200,5, maxwidth );
		ctx.fillText("-- ==  its about 7 years  == --", 400,5, maxwidth );
//		ctx.fillText(title, 20,20, maxwidth );
		ctx.fillText(title, 300,20, maxwidth );

		dropmsg_done = "";
		if( document.getElementById('h1_blobsallad')) {
			document.getElementById('h1_blobsallad').innerHTML=dropmsg_done;
			}

//		if( document.getElementById('div_toplinks')) {
//			document.getElementById('div_toplinks').innerHTML=dropmsg_done;
//			}




//			ctx.fillStyle='#9933FF'; 
//			ctx.fillRect(40,20,300,150); //rectangle 1 (opaque)
//			ctx.globalAlpha=0.5;// opacity at 0.5
//			ctx.fillStyle='#009933';
//			ctx.fillRect(200,100,300,150);// rectangle 2 (transparent)

//			ctx.shadowBlur=15;
//			ctx.shadowColor='#000'; 
//			ctx.shadowOffsetX=10; // offset along X axis
//			ctx.shadowOffsetY=-10;  // offset along Y axis
//			ctx.fillStyle='#9933FF'; 
//			ctx.fillRect(70,20,400,200); //rectangle    


//			ctx.save()  // pushed in LIFO stack(fillStyle 2)   
//			ctx.fillRect(150, 5, 100, 100);
//			ctx.restore();// popped from LIFO stack(fillStyle 2)
//			ctx.fillRect(300, 5, 100, 100); 
//			ctx.restore();// poped from LIFO stack(fillStyle 1 )
//			ctx.fillRect(450,5, 100, 100);    


// Variables store centre and radius of arc
//      var x = 250;
//      var y = 125;
//      var radius =80;
// define start and finish angle
//      var startAngle = 1.2 * Math.PI;
//      var endAngle = 1.9 * Math.PI;
// set the direction to anticlockwise
//      var counterClockwise = true;
//      	ctx.beginPath();
//      	ctx.arc(x, y, radius, startAngle, endAngle, counterClockwise);
//      	ctx.lineWidth =10;
//      	ctx.strokeStyle = '#fa4b2a';
//		ctx.stroke();

//		ctx.beginPath();// start a new path
//		ctx.moveTo(40,70 );// begin subpath at (40,70)
//		ctx.lineTo(400,200);//destination of subpath at (400,200)
//		ctx.stroke();// make the line visible


			if(this.selected == true) {
//				ctx.fillStyle = "#FFCCCC"; 
//				ctx.fillStyle = color; 
//				ctx.fillStyle = "red"; 
				ctx.fillStyle = color_selected; 
				}
			else {
//				ctx.fillStyle = "#FFFFFF"; 
//				ctx.fillStyle = "red"; 
//				ctx.fillText('blob',10,10);
//				ctx.fillStyle = "blue"; 
				ctx.fillStyle = color; 
				}
//			ctx.lineWidth = 5; 
//			ctx.lineWidth = 5; 
			ctx.lineWidth = linewidth;
			ctx.beginPath(); 
			ctx.moveTo(this.pointMasses[0].getXPos() * scaleFactor, 
			this.pointMasses[0].getYPos() * scaleFactor); 

			for(i = 0; i < this.pointMasses.length; i++) {
				var px, py, nx, ny, tx, ty, cx, cy; 
				var prevPointMass, currentPointMass, nextPointMass, nextNextPointMass;
        
				prevPointMass = this.getPointMass(i - 1); 
				currentPointMass = this.pointMasses[i]; 
				nextPointMass = this.getPointMass(i + 1);   
				nextNextPointMass = this.getPointMass(i + 2);   
        
				tx = nextPointMass.getXPos(); 
				ty = nextPointMass.getYPos(); 
        
				cx = currentPointMass.getXPos(); 
				cy = currentPointMass.getYPos(); 

				px = cx * 0.5 + tx * 0.5; 
				py = cy * 0.5 + ty * 0.5; 
        
				nx = cx - prevPointMass.getXPos() + tx - nextNextPointMass.getXPos();         
				ny = cy - prevPointMass.getYPos() + ty - nextNextPointMass.getYPos(); 
        
				px += nx * 0.16; 
				py += ny * 0.16; 
        
				px = px * scaleFactor; 
				py = py * scaleFactor; 
        
				tx = tx * scaleFactor; 
				ty = ty * scaleFactor; 
        
				ctx.bezierCurveTo(px, py, tx, ty, tx, ty);        
				}    

		ctx.closePath(); 
		ctx.stroke(); 
		ctx.fill(); 
		}

	this.drawSimpleBody = function(ctx, scaleFactor) {
		for(i = 0; i < this.sticks.length; i++) {
			this.sticks[i].draw(ctx, scaleFactor); 
			}
		}

	this.draw = function(ctx, scaleFactor) {
		var i; 
		var up, ori, ang; 
            
		this.drawBody(ctx, scaleFactor); 

		ctx.strokeStyle = "#000000"; 
		ctx.fillStyle = "#000000"

		ctx.save(); 
		ctx.translate(this.middlePointMass.getXPos() * scaleFactor, 
			(this.middlePointMass.getYPos() - 0.35 * this.radius) * scaleFactor); 
      
		up = new Vector(0.0, -1.0); 
		ori = new Vector(0.0, 0.0); 
		ori.set(this.pointMasses[0].getPos()); 
		ori.sub(this.middlePointMass.getPos()); 
		ang = Math.acos(ori.dotProd(up) / ori.length());
		if(ori.getX() < 0.0) {
			ctx.rotate(-ang);  
			}
		else {
			ctx.rotate(ang);  
			}
      
// this.drawEars(ctx, scaleFactor); 
			this.drawFace(ctx, scaleFactor); 
			ctx.restore(); 
			}    
		}
  
	function BlobCollective(x, y, startNum, maxNum) {
		this.maxNum = maxNum;
		this.numActive = 1; 
		this.blobs = new Array(); 
		this.tmpForce = new Vector(0.0, 0.0); 
		this.selectedBlob = null; 
    
		this.blobs[0] = new Blob(x, y, 0.4, 8); 
    

		this.split = function() {
			var i, maxIndex = 0, maxRadius = 0.0;
			var emptySlot; 
			var motherBlob, newBlob;  
    
			if(this.numActive == this.maxNum) {
				return; 
				}
      
		emptySlot = this.blobs.length;
		for(i = 0; i < this.blobs.length; i++) {
			if(this.blobs[i] != null && this.blobs[i].getRadius() > maxRadius) {
				maxRadius = this.blobs[i].getRadius(); 
				motherBlob = this.blobs[i]; 
				}
		else if(this.blobs[i] == null) {
			emptySlot = i; 
			}
		}
      
		motherBlob.scale(0.75); 
		newBlob = new Blob(motherBlob.getXPos(), 
	        motherBlob.getYPos(), motherBlob.getRadius(), 8); 
        
		for(i = 0; i < this.blobs.length; i++) {
			if(this.blobs[i] == null) {
				continue; 
				}
			this.blobs[i].addBlob(newBlob); 
			newBlob.addBlob(this.blobs[i]); 
			}
		this.blobs[emptySlot] = newBlob; 
        
		this.numActive++; 
		}
    
	this.findSmallest = function(exclude) {
		var minRadius = 1000.0, minIndex; 
		var i; 
      
		for(i = 0; i < this.blobs.length; i++) {
			if(i == exclude || this.blobs[i] == null) {
				continue; 
				}
			if(this.blobs[i].getRadius() < minRadius) {
				minIndex = i; 
				minRadius = this.blobs[i].getRadius();  
				}
			}
		return minIndex; 
		}
	this.findClosest = function(exclude) {
      var minDist = 1000.0, foundIndex, dist, aXbX, aYbY;
      var i;
      var myPointMass, otherPointMass;    

      myPointMass = this.blobs[exclude].getMiddlePointMass(); 
      for(i = 0; i < this.blobs.length; i++)
      {
        if(i == exclude || this.blobs[i] == null) {
          continue; 
        }
        
        otherPointMass = this.blobs[i].getMiddlePointMass(); 
        aXbX = myPointMass.getXPos() - otherPointMass.getXPos(); 
        aYbY = myPointMass.getYPos() - otherPointMass.getYPos(); 
        dist = aXbX * aXbX + aYbY * aYbY; 
        if(dist < minDist)
        {
          minDist = dist; 
          foundIndex = i; 
        }
      }
      return foundIndex; 
    }
    this.join = function()
    {
      var blob1Index, blob2Index, blob1, blob2; 
      var r1, r2, r3; 
      
      if(this.numActive == 1)
      {
        return; 
      }
      
      blob1Index = this.findSmallest(-1); 
      blob2Index = this.findClosest(blob1Index);
      
      r1 = this.blobs[blob1Index].getRadius(); 
      r2 = this.blobs[blob2Index].getRadius(); 
      r3 = Math.sqrt(r1 * r1 + r2 * r2); 
      
      this.blobs[blob1Index] = null; 
      this.blobs[blob2Index].scale(0.945 * r3 / r2); 
      
      this.numActive--; 
    }
    
		this.selectBlob = function(x, y) {
			var i, minDist = 10000.0; 
			var otherPointMass; 
			var selectedBlob; 
			var selectOffset = null; 
      
			if(this.selectedBlob != null) { return; }
      
		for(i = 0; i < this.blobs.length; i++) {
			if(this.blobs[i] == null) { continue; }
        
			otherPointMass = this.blobs[i].getMiddlePointMass(); 
			aXbX = x - otherPointMass.getXPos(); 
			aYbY = y - otherPointMass.getYPos(); 
			dist = aXbX * aXbX + aYbY * aYbY; 
			if(dist < minDist) {
				minDist = dist; 
				if(dist < this.blobs[i].getRadius() * 0.5) {
					this.selectedBlob = this.blobs[i]; 
					selectOffset = { x : aXbX, y : aYbY };  
					}
				}
			}
      
		if(this.selectedBlob != null) {
			this.selectedBlob.setSelected(true); 
			}
		return selectOffset; 
		}

	this.unselectBlob = function() {
		if(this.selectedBlob == null) {
			return; 
			}
		this.selectedBlob.setSelected(false); 
		this.selectedBlob = null; 
		}
	this.selectedBlobMoveTo = function(x, y) {
		if(this.selectedBlob == null) {return; }
		this.selectedBlob.moveTo(x, y); 
		}
    
	this.move = function(dt) {
		var i; 
      
		for(i = 0; i < this.blobs.length; i++) {
			if(this.blobs[i] == null) {continue; }
			this.blobs[i].move(dt); 
//			if( i== 0 ) {
//				alert( "BUGS_1110 color="+this.blobs[i].color+"  i="+i+" this.blobs.length="+this.blobs.length );
//				}
			}
		}
		this.sc = function(env) {
			var i; 
			for(i = 0; i < this.blobs.length; i++) {
				if(this.blobs[i] == null) {continue; }
				this.blobs[i].sc(env); 
				}    
		if(this.blobAnchor != null) {
			this.blobAnchor.sc(); 
			}
		}


		this.setForce = function(force) {
			var i; 
			for(i = 0; i < this.blobs.length; i++) {
			if(this.blobs[i] == null) {continue; }
			if(this.blobs[i] == this.selectedBlob) {
				this.blobs[i].setForce(new Vector(0.0, 0.0)); 
				continue; 
				}
			this.blobs[i].setForce(force); 
			}
		}
	this.addForce = function(force) {
		var i; 
		for(i = 0; i < this.blobs.length; i++) {
			if(this.blobs[i] == null) {continue; }
			if(this.blobs[i] == this.selectedBlob) {continue; }
			this.tmpForce.setX(force.getX() * (Math.random() * 0.75 + 0.25)); 
			this.tmpForce.setY(force.getY() * (Math.random() * 0.75 + 0.25)); 
			this.blobs[i].addForce(this.tmpForce); 
			}
		}

	this.draw = function(ctx, scaleFactor) {
		var i; 
		for(i = 0; i < this.blobs.length; i++) {
			if(this.blobs[i] == null) {continue; }
			this.blobs[i].draw(ctx, scaleFactor); 
			}    
		}

//	this.info = function(ctx, scaleFactor) {  }
//		alert( "BUGS_1140 this.info ctx="+ctx );
//		var i; 
// var colors =
// `red
// white
// blue
// wheat
// darkslategray
// linen
//  black`;
//		for(i = 0; i < this.blobs.length; i++) {
//			if(this.blobs[i] == null) {continue; }
//			this.blobs[i].draw(ctx, scaleFactor); 
//			ctx.fillStyle=colors[i];
//			ctx.stroke(); 
//			}    
//		}

	}


		function random_int(max,min) {
			min = Math.ceil(min);
			max = Math.floor(max);
			return Math.floor(Math.random() * (max - min + 1)) + min;
			}

  function debug(msg, okFunc, cancelFunc)
  {
    if(confirm(msg) == true && okFunc != null)
    {
      okFunc(); 
    }
    else if(cancelFunc != null)
    {
      cancelFunc(); 
    }
  }

  var env; 
  var width = 600.0; 
  var height = 400.0; 
  var scaleFactor = 200.0; 
  var blobColl; 
  var gravity; 
  var stopped; 
  var savedMouseCoords = null; 
  var selectOffset = null; 

  function update() {
    var dt = 0.05; 
    
    if(savedMouseCoords != null && selectOffset != null)
    {
      blobColl.selectedBlobMoveTo(savedMouseCoords.x - selectOffset.x, 
        savedMouseCoords.y - selectOffset.y); 
    }
    
    blobColl.move(dt); 
    blobColl.sc(env); 
    blobColl.setForce(gravity); 
  }

		function draw() {
//			var canvas = document.getElementById('blob');
//			var canvas = document.getElementById('canvas_blob_w');
			var canvas = document.getElementById('canvas_blob');
			if(canvas.getContext == null) {return; }
			var ctx = canvas.getContext('2d');
			ctx.clearRect(0, 0, width, height); 
    
			env.draw(ctx, scaleFactor); 
			blobColl.draw(ctx, scaleFactor); 
			}
  
		function timeout() {
			draw(); 
			update(); 
        
			if(stopped == false) {
				setTimeout('timeout()', 30); 
				}
			}
  
		function init() {  
//			var canvas = document.getElementById('blob');
			var canvas = document.getElementById('canvas_blob');
			if(canvas.getContext == null) {
				alert("ALERT_100 unauthorized access logged"); 
				return; 
				}

			document.onkeydown = function(event) {
				var keyCode; 
      
//				alert( "BUGS_701 document.onkeydown event="+event );
				if(event == null) {
					keyCode = window.event.keyCode; 
					}
				else {
					keyCode = event.keyCode; 
					}

				if( keypress(event)){ return; }
//				alert( "BUGS_701 document.onkeydown keypress event="+event );

//				if( event.which === 89 && event.ctrlKey ) {
//				if( keyCode === 89 && event.ctrlKey ) {
//					alert('MSG_89-ctrl-y control + y'); 
//					}
//				else if( keyCode === 90 && event.ctrlKey ) {
//					alert('MSG_90-ctrl-z control + z'); 
//					}  

				switch(keyCode) {
// esc					
					case 27: alert( "MSG_027 esc keycode="+keyCode ); break;
// slash
					case 191: alert( "MSG_191 slash keycode="+keyCode ); break;
// colon
// hat
// dollar
// plus
// minus
					case 59: alert( "MSG_191 colon keycode="+keyCode ); break;
					case 54: alert( "MSG_54 hat keycode="+keyCode ); break;
					case 52: alert( "MSG_191 dollar keycode="+keyCode ); break;
					case 107: alert( "MSG_107 plus keycode="+keyCode ); break;
					case 109: alert( "MSG_109 minus keycode="+keyCode ); break;

// shift
// control
// winkey
// alt
// tab
// caps
// space
// enter
//					case 16: alert( "MSG_16 shift keycode="+keyCode ); break;
//					case 17: alert( "MSG_17 control keycode="+keyCode ); break;
//					case 224: alert( "MSG_224 meta keycode="+keyCode ); break;
//					case 18: alert( "MSG_18 alt keycode="+keyCode ); break;
//					case 9: alert( "MSG_9 tab keycode="+keyCode ); break;
//					case 20: alert( "MSG_191 caps keycode="+keyCode ); break;
//					case 32: alert( "MSG_32 space keycode="+keyCode ); break;
					case 13: alert( "MSG_13 enter keycode="+keyCode ); break;

					case 224: break;
					case 18: break;
					case 9: break;
					case 20: break;
					case 32: break;
					case 13: break;


// 0
// 9
					case 48: alert( "MSG_48 0 keycode="+keyCode ); break;
					case 49: alert( "MSG_49 1 keycode="+keyCode ); break;
					case 50: alert( "MSG_50 2 keycode="+keyCode ); break;
					case 51: alert( "MSG_51 3 keycode="+keyCode ); break;
					case 52: alert( "MSG_52 4 keycode="+keyCode ); break;
					case 53: alert( "MSG_53 5 keycode="+keyCode ); break;
					case 54: alert( "MSG_54 6 keycode="+keyCode ); break;
					case 55: alert( "MSG_55 7 keycode="+keyCode ); break;
					case 56: alert( "MSG_56 8 keycode="+keyCode ); break;
					case 57: alert( "MSG_57 9 keycode="+keyCode ); break;

// backtick
// backslash
// tick
// qoute
//					case 57: alert( "MSG_57 quote keycode="+keyCode ); break;
// question
					case 192: alert( "MSG_192 backtick keycode="+keyCode ); break;
					case 220: alert( "MSG_220 backslash keycode="+keyCode ); break;
					case 222: alert( "MSG_222 tick keycode="+keyCode ); break;
					case 191: alert( "MSG_57 question keycode="+keyCode ); break;

	
// left 
					case 37: 
						if( blob_arrowkeys != "" ) {
							blobColl.addForce(new Vector(-50.0, 0.0)); 
							}
						break; 
         
// up 
					case 38: 
						if( blob_arrowkeys != "" ) {
							blobColl.addForce(new Vector(0.0, -50.0)); 
							}
						break; 
          
// right 
					case 39: 
						if( blob_arrowkeys != "" ) {
							blobColl.addForce(new Vector(50.0, 0.0)); 
							}
						break; 
        
// down
					case 40: 
						if( blob_arrowkeys != "" ) {
							blobColl.addForce(new Vector(0.0, 50.0)); 
							}
						break; 
          
// join 'j' 
					case 74:
						blobColl.join(); 
						break;  
        
// split 'h'
					case 72: 
						blobColl.split(); 
						break; 
          
// toggle gravity 'g'
					case 71: 
						toggleGravity(); 
						break; 

					default: 
						break; 
					} 
				}
    
		function getMouseCoords(event) {
			if(event == null) {event = window.event; }
			if(event == null) {return null; }
			if(event.pageX || event.pageY){
				return {x:event.pageX / scaleFactor, y:event.pageY / scaleFactor};
				}
			return null;
			}

		document.onmousedown = function(event) {
			var mouseCoords; 
			if(stopped == true) {return; }
			mouseCoords = getMouseCoords(event); 
			if(mouseCoords == null) {return; }
			selectOffset = blobColl.selectBlob(mouseCoords.x, mouseCoords.y);         
			}
		document.onmouseup = function(event) {
			blobColl.unselectBlob(); 
			savedMouseCoords = null; 
			selectOffset = null; 
			}
		document.onmousemove = function(event) {
			var mouseCoords; 
			if(stopped == true) {return; }
			if(selectOffset == null) {return; }
			mouseCoords = getMouseCoords(event); 
			if(mouseCoords == null) {return; }
			blobColl.selectedBlobMoveTo(mouseCoords.x - selectOffset.x, mouseCoords.y - selectOffset.y); 
			savedMouseCoords = mouseCoords; 
			}
    
			env = new Environment(0.2, 0.2, 2.6, 1.6); 
			blobColl = new BlobCollective(1.0, 1.0, 1, 200); 
			gravity = new Vector(0.0, 10.0); 
			stopped = false; 
			timeout(); 
			}

			function stop() {
				stopped = true; 
				}
			function start() {
				stopped = false; 
				timeout(); 
				}

			function togglestart() {
				if( stopped == true ) {
					stopped = false; 
					timeout(); 
					if( document.getElementById('img_blob_togglestart')) {
						document.getElementById('img_blob_togglestart').src="/imgs/btn/kow.png";
						}
					}
				else {
					stopped = true;
					if( document.getElementById('img_blob_togglestart')) {
						document.getElementById('img_blob_togglestart').src="/imgs/btn/kob.png";
						}
					}
				}


		function toggleGravity() {
			if(gravity.getY() > 0.0) {
				gravity.setY(0.0); 
//				alert( "BUGS_121 img_blob_togglegravity" );
				if( document.getElementById('img_blob_togglegravity')) {
//					alert( "BUGS_122 img_blob_togglegravity" );
					document.getElementById('img_blob_togglegravity').src="/imgs/btn/blob_gravity_off.gif";
					}
				}
			else {
				gravity.setY(10.0); 
				if( document.getElementById('img_blob_togglegravity')) {
//					alert( "BUGS_132 img_blob_togglegravity" );
					document.getElementById('img_blob_togglegravity').src="/imgs/btn/blob_gravity_on.gif";
					}
				blobColl.split();
				}
			}
		</script>

	<script id="script_geturlvars" >
//		var number = geturlvars()["x"];
//		var mytext = geturlvars()["text"];
//		var mytext = geturlparam('text','Empty');
		function geturlvars() {
			var vars = {};
			var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
				vars[key] = value;
				});
			return vars;
			}

		<script id="script_geturlparam" >
			function geturlparam(parameter, defaultvalue){
				var urlparameter = defaultvalue;
				if(window.location.href.indexOf(parameter) > -1) {
					urlparameter = getUrlVars()[parameter];
					}
				return urlparameter;
				}
//			var mytext = getUrlParam('text','Empty');
			</script>


	<script id="script_keypress" >
		function keypress(e) {
// Ensure event is not null
			e = e || window.event;
			if ((e.which == 90 || e.keyCode == 90) && e.ctrlKey) {alert( "MSG_090 keypress  ctrl-z" );
				return('ctrl-z');
				}
			if ((e.which == 89 || e.keyCode == 89) && e.ctrlKey) {alert( "MSG_089 keypress  ctrl-y" );
				return('ctrl-y');
				}
			if ((e.which == 54 || e.keyCode == 54) && e.ctrlKey) {
				alert( "MSG_054 keypress  ctrl-hat" );
				return('ctrl-hat');
				}
			if ((e.which == 54 || e.keyCode == 54) && e.shiftKey) {
				alert( "MSG_054 keypress  shift-hat" );
				return('shift-hat');
				}
			if ((e.which == 60 || e.keyCode == 60) && e.shiftKey) {
				alert( "MSG_090 keypress dollar shift-4" );
				}

// case 59: alert( "MSG_191 colon keycode="+keyCode ); break;
// case 54: alert( "MSG_54 hat keycode="+keyCode ); break;
// case 52: alert( "MSG_191 dollar keycode="+keyCode ); break;
// case 107: alert( "MSG_107 plus keycode="+keyCode ); break;
// case 109: alert( "MSG_109 minus keycode="+keyCode ); break;
			}
		</script>


	<script id="script_trigger" >
// A handler called preventDefault.
// None of the handlers called preventDefault.
	
		function trigger_mouse(args) {
			alert( "BUGS_901 trigger _mouse args="+args );
			var event = new MouseEvent('click', {
				view: window,
				bubbles: true,
				cancelable: true
				});

			if(document.getElementById('checkbox')) {
				var cb = document.getElementById('checkbox'); 
				var cancelled = !cb.dispatchEvent(event);
				if (cancelled) {alert("cancelled");} 
				else {alert("not cancelled");}
				}
			}
		</script>

	<style type="text/css">
		canvas { }
		</style>

	<script id="script_startup_blob">
		function startup_blob(args) {
			init();
			blobColl.split();
//			blobColl.split();
//			blobColl.split();
			return('');
			}
		</script>


	<script id="script_trigger" >
		function trigger(key) {
//			alert( "BUGS_801 trigger key="+key );
			var trigger_char = "Q";
			var trigger_key = "q";
			var trigger_keycode = "81";
			if( key == 'h') { blobColl.split(); return(''); }
			if( key == 'g') { toggleGravity(); return(''); }
			if( key == 'j') { blobColl.join(); return(''); }
			if( key == '<') { blobColl.move(); return(''); }
			if( key == '>') { blobColl.move(); return(''); }

			if( key == 'q') { trigger_char="Q"; trigger_key="q"; trigger_keycode="81"; }
			if( key == 'h') { trigger_char="H"; trigger_key="h"; trigger_keycode="72"; }
			if( key == 'j') { trigger_char="J"; trigger_key="j"; trigger_keycode="74"; }
			if( key == 'g') { trigger_char="G"; trigger_key="g"; trigger_keycode="71"; }

//			alert( "BUGS_802 triger key="+key+" trigger_char="+trigger_char+" keycode="+trigger_keycode );
//			char : "Q",
//			key : "q",
//			keyCode : 81
////			var e = new KeyboardEvent("keydown", {
			var e = new KeyboardEvent("keyPress", {
				bubbles : true,
				cancelable : true,
				key : trigger_key,
				char : trigger_char,
				shiftKey : true,
				keyCode : trigger_keycode
				});
			alert( "BUGS_803 trigger key="+key );
			}
		function simulateKeyEvent(character) {
			var evt = document.createEvent("KeyboardEvent");
			(evt.initKeyEvent || evt.initKeyboardEvent)("keypress", true, true, window,
				0, 0, 0, 0,
				0, character.charCodeAt(0)) 
			var canceled = !body.dispatchEvent(evt);
// A handler called preventDefault
    // None of the handlers called preventDefault
			if(canceled) {
				alert("canceled");
				} 
			else {
				alert("not canceled");
				}
			}

		function simulateKeyPress(character) {
			jQuery.event.trigger({ type : 'keypress', which : character.charCodeAt(0) });
			}

		</script>

	<script id="script_replace_key" type="text/javascript">
		function replace(e) {
			if (e.keyCode==13) e.keyCode=9
			}
		</script>

	<script id="script_geturlparameter" >
		function geturlparameter(name) {
			return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.search) || [null, ''])[1].replace(/\+/g, '%20')) || null;
			}
		</script>

	<script id="script_load_fb_links" >
		function load_fb_links() {
			var j=0;
fb_links =
`/fb/law/skwii/|/fb/law/skwii/pages/tn/tn_1.png|/fb/law/skwii/pages/tn/tn_1.png|law_skwii
/fb/jhf/|/fb/jhf/pages/1.jpg|fb/jhf/pages/tn/tn_1.png|biz
/fb/nwm/|/fb/nwm/pages/1.jpg|fb/nwm/pages/1.jpg|biz
/fb/heart/|/fb/heart/pages/tn/tn_1.png|fb/heart/pages/tn/tn_1.png|heart
/fb/soul/|/fb/soul/pages/tn/tn_1.png|fb/soul/pages/tn/tn_1.png|soul
/fb/neuz/|/fb/neuz/pages/tn/tn_1.png|fb/neuz/pages/tn/tn_1.png|neuz
/yt/|/yt/pages/tn/tn_1.png|fb/neuz/pages/tn/tn_1.png|neuz
/fb/birthday/|fb/birthday/pages/tn/tn_1.png|fb/birthday/pages/tn/tn_1.png|birthday
/fb/operation/|fb/operation/pages/tn/tn_1.png|fb/operation/pages/tn/tn_1.png|operation
/fb/law/jkwiiv_byrdbell/|fb/law/jkwiiv_byrdbell/pages/tn/tn_1.jpg|fb/law/jkwiiv_byrdbell/pages/tn/tn_1.png|jkwiiv_byrdbell
/fb/gofunwii/|us/imgs/us_gofunwii_mag.png|us/imgs/tn/tn_fb_gofunwii_mag.png|gofunwii
/fb/byrdpucker/|us/imgs/fb_byrdpucker.png|us/imgs/tn/tn_fb_byrdpucker|byrdpucker
/fb/go/|us/imgs/fb_go.jpg|us/imgs/tn/tn_fb_go.png|go
/fb/focus/|us/imgs/fb_focus.jpg|us/imgs/tn/tn_fb_focus.png|title|desc|mil|js|ht|
/fb/iperms/|us/imgs/fb_iperms.jpg|us/imgs/tn/tn_fb_iperms.png|title|desc|mil|js|ht|
/fb/iperms/page9700|us/imgs/fb_iperms_page9700.jpg|us/imgs/tn/tn_fb_iperms_page9700.png|title|desc|mil|js|ht|
/fb/iperms/boswall_hwccc|us/imgs/fb_iperms__boswall_hwccc.jpg|us/imgs/tn/tn_fb_iperms_boswall_hwccc.png|title|desc|mil|js|ht|
/fb/iperms/bogwall_hwccc|us/imgs/fb_iperms__bogwall_hwccc.jpg|us/imgs/tn/tn_fb_iperms_bogwall_hwccc.png|title|desc|mil|js|ht|
/fb/konet/|fb/imgs/fb_konet.jpg|us/imgs/tn/tn_fb_konet.png|title|desc|ko|js|ht|
/fb/che/|fb/imgs/fb_che.jpg|us/imgs/tn/tn_fb_che.png|title|desc|ka|js|ht|
/fb/nwm/|fb/imgs/fb_nwm.jpg|us/imgs/tn/tn_fb_nwm.png|title|desc|ka|js|ht|
/fb/gov/|fb/imgs/fb_gov.jpg|us/imgs/tn/tn_fb_gov.png|title|desc|ka|js|ht|
/fb/kassil/|fb/imgs/fb_kassil.jpg|us/imgs/tn/tn_fb_kassil.png|title|desc|ka|js|ht|
/fb/jak1/|fb/imgs/fb_jak1.jpg|us/imgs/tn/tn_fb_jak1.png|title|desc|ka|js|ht|
/fb/jak2/|us/imgs/fb_jak2.jpg|us/imgs/tn/tn_fb_jak2.png|title|desc|ka|js|ht|
/fb/jak3/|us/imgs/fb_jak3.jpg|us/imgs/tn/tn_fb_jak3.png|title|desc|ka|js|ht|
/fb/jkwii/|us/imgs/fb_jkwii.jpg|us/imgs/tn/tn_fb_jkwii.png|title|desc|ka|js|ht|
/fb/skwii/|us/imgs/fb_skwii.jpg|us/imgs/tn/tn_fb_skwii.png|title|desc|ka|js|ht|
/fb/pastryroad/|us/imgs/fb_pastryroad.jpg|us/imgs/tn/tn_fb_pastryroad.png|title|desc|ka|js|ht|
/fb/konabus/|us/imgs/fb_konabus.jpg|us/imgs/tn/tn_fb_konabus.png|title|desc|ka|js|ht|
/fb/focus/|us/imgs/fb_focus.jpg|us/imgs/tn/tn_fb_focus.png|title|desc|ka|js|ht|
/fb/bh/|/fb/bh/pages/1.jpg|/fb/pages/tn/tn_1.png|title|desc|ka|js|ht|
/fb/kitiworks/|us/imgs/fb_kitiworks.jpg|us/imgs/tn/tn_fb_kitiworks.png|title|desc|ka|js|ht|
/fb/kitiworks/kitinits|us/imgs/fb_kitiworks_kitinits.jpg|us/imgs/tn/tn_fb_kitinits.png|title|desc|ka|js|ht|
/fb/kitiworks/kitisews|us/imgs/fb_kitiworks_kitisews.jpg|us/imgs/tn/tn_fb_kitisews.png|title|desc|ka|js|ht|
/fb/kitiworks/kitiweds|us/imgs/fb_kitiworks_kitiweds.jpg|us/imgs/tn/tn_fb_kitiweds.png|title|desc|ka|js|ht|
/fb/kitiworks/kitikids|us/imgs/fb_kitiworks_kitikids.jpg|us/imgs/tn/tn_fb_kitikids.png|title|desc|ka|js|ht|
/fb/go/|us/imgs/fb_go.jpg|us/imgs/tn/tn_fb_go.png|title|desc|go|js|ht|
/fb/kt/|us/imgs/fb_kt.jpg|us/imgs/tn/tn_fb_kt.png|title|desc|kt|js|ht|
/fb/kou|us/imgs/fb_kou.jpg|us/imgs/tn/tn_fb_kou.png|title|desc|kou|js|ht|
/fb/go/|us/imgs/fb_go.jpg|us/imgs/tn/tn_fb_go.png|title|desc|go|js|ht|
/fb/jtfdc/|us/imgs/fb_jtfdc.jpg|us/imgs/tn/tn_fb_jtfdc.png|title|desc|jtf|js|ht|
/fb/jtfdcr/|us/imgs/fb_jtfdcr.jpg|us/imgs/tn/tn_fb_jtfdcr.png|title|desc|jtf|js|ht|
/fb/jtfdcr/animalcontrol|us/imgs/fb_jtfdcr_animalcontrol.jpg|us/imgs/tn/tn_fb_jtfdcr_animalcontrol.png|title|desc|jtf|js|ht|
/fb/jtfdcr/animalcontrol/jtf30.html|us/imgs/fb_jtfdcr_animalcontrol_jtf30.jpg|us/imgs/tn/tn_fb_jtfdcr_animalcontrol_jtf30.png|title|desc|jtf|js|ht|
/fb/jtfdcr/animalcontrol/jtf30.html|us/imgs/fb_jtfdcr_animalcontrol_jtf30.jpg|us/imgs/tn/tn_fb_jtfdcr_animalcontrol_jtf30.png|title|desc|jtf|js|ht|
/fb/jtfdcr/animalcontrol/jtf31.html|us/imgs/fb_jtfdcr_animalcontrol_jtf31.jpg|us/imgs/tn/tn_fb_jtfdcr_animalcontrol_jtf31.png|title|desc|jtf|js|ht|
/fb/jtfdcr/animalcontrol/jtf32.html|us/imgs/fb_jtfdcr_animalcontrol_jtf32.jpg|us/imgs/tn/tn_fb_jtfdcr_animalcontrol_jtf32.png|title|desc|jtf|js|ht|
/fb/jtfdcr/animalcontrol/jtf38.html|us/imgs/fb_jtfdcr_animalcontrol_jtf38.jpg|us/imgs/tn/tn_fb_jtfdcr_animalcontrol_jtf38.png|title|desc|jtf|js|ht|
/fb/jtfdcr/animalcontrol/jtf39.html|us/imgs/fb_jtfdcr_animalcontrol_jtf39.jpg|us/imgs/tn/tn_fb_jtfdcr_animalcontrol_jtf39.png|title|desc|jtf|js|ht|
/fb/jtfdcr/thieftvandlism.html|us/imgs/fb_jtfdcr.jpg|us/imgs/tn/tn_fb_jtfdcr.png|title|desc|jtf|js|ht|
/fb/jtfdcr/thieftvandlism_jtf30.html|us/imgs/fb_jtfdcr.jpg|us/imgs/tn/tn_fb_jtfdcr.png|title|desc|jtf|js|ht|
/fb/jtfdcr/thieftvandlism_jtf30-2.html|us/imgs/fb_jtfdcr.jpg|us/imgs/tn/tn_fb_jtfdcr.png|title|desc|jtf|js|ht|
/fb/jtfdcr/thieftvandlism_jtf31.html|us/imgs/fb_jtfdcr.jpg|us/imgs/tn/tn_fb_jtfdcr.png|title|desc|jtf|js|ht|
/fb/jtfdcr/thieftvandlism_jtf39.html|us/imgs/fb_jtfdcr.jpg|us/imgs/tn/tn_fb_jtfdcr.png|title|desc|jtf|js|ht|
/fb/jtfdcr/thieftvandlism_jtf28.html|us/imgs/fb_jtfdcr.jpg|us/imgs/tn/tn_fb_jtfdcr.png|title|desc|jtf|js|ht|
/fb/jtfdcr/protect|us/imgs/fb_jtfdcr_protect.jpg|us/imgs/tn/tn_fb_jtfdcr_protect.png|title|desc|jtf|js|ht|
/fb/jtfdcr/protect/jtf39.html|us/imgs/fb_jtfdcr_protect_jtf39.jpg|us/imgs/tn/tn_fb_jtfdcr_protect_jtf39.png|title|desc|jtf|js|ht|
/fb/jtfdcr/protect/jtf38.html|us/imgs/fb_jtfdcr_protect_jtf38.jpg|us/imgs/tn/tn_fb_jtfdcr_protect_jtf38.png|title|desc|jtf|js|ht|
/fb/jtfdcr/protect/jtf32.html|us/imgs/fb_jtfdcr_protect_jtf32.jpg|us/imgs/tn/tn_fb_jtfdcr_protect_jtf32.png|title|desc|jtf|js|ht|
/fb/jtfdcr/protect/jtf31.html|us/imgs/fb_jtfdcr_protect_jtf31.jpg|us/imgs/tn/tn_fb_jtfdcr_protect_jtf31.png|title|desc|jtf|js|ht|
/fb/jtfdcr/protect/jtf28.html|us/imgs/fb_jtfdcr_protect_jtf28.jpg|us/imgs/tn/tn_fb_jtfdcr_protect_jtf28.png|title|desc|jtf|js|ht|
/fb/jtfdcr/protect/jtf30.html|us/imgs/fb_jtfdcr.jpg|us/imgs/tn/tn_fb_jtfdcr.png|title|desc|jtf|js|ht|
/fb/jtfdcr/preserve/barn|us/imgs/fb_jtfdcr_preserve_barn.jpg|us/imgs/tn/tn_fb_jtfdcr_preserve_barn.png|title|desc|jtf|js|ht|
/fb/jtfdcr/preserve/easement|us/imgs/fb_jtfdcr_preserv_easement.jpg|us/imgs/tn/tn_fb_jtfdcr_preserve_easement.png|title|desc|jtf|js|ht|
/fb/jtfdcr/preserve/easement_jtf30|us/imgs/fb_jtfdcr_preserve_easement_jtf30.jpg|us/imgs/tn/tn_fb_jtfdcr_preserve_easement_jtf30.png|title|desc|jtf|js|ht|
/fb/jtfdcr/preserve/easement_jtf28|us/imgs/fb_jtfdcr_preserve_easement_jtf28.jpg|us/imgs/tn/tn_fb_jtfdcr_preserve_easement_jtf28.png|title|desc|jtf|js|ht|
/fb/jtfdcr/preserve/driveway|us/imgs/fb_jtfdcr.jpg|us/imgs/tn/tn_fb_jtfdcr.png|title|desc|jtf|js|ht|
/fb/jtfdcr_preserve/driveway_jtf30|us/imgs/fb_jtfdcr.jpg|us/imgs/tn/tn_fb_jtfdcr.png|title|desc|jtf|js|ht|
/fb/jtfdcr/trials|us/imgs/fb_jtfdcr_trials.jpg|us/imgs/tn/tn_fb_jtfdcr_trials.png|title|desc|jtf|js|ht|
/fb/jtfdcr/trial1|us/imgs/fb_jtfdcr_trial1_judge_.jpg|us/imgs/tn/tn_fb_jtfdcr_trial1_judge_.png|title|desc|jtf|js|ht|
/fb/jtfdcr/trial2|us/imgs/fb_jtfdcr_trial2_judge_schrader.jpg|us/imgs/tn/tn_fb_jtfdcr_trial2_judge_schrader.png|title|desc|jtf|js|ht|
/fb/jtfdcr/trial3|us/imgs/fb_jtfdcr_trial3_judge_brown.jpg|us/imgs/tn/tn_fb_jtfdcr_trial3_judge_brown.png|title|desc|jtf|js|ht|
/fb/jtfdcr/trial4|us/imgs/fb_jtfdcr_trial4_judge_.jpg|us/imgs/tn/tn_fb_jtfdcr_trial4_judge_.png|title|desc|jtf|js|ht|
/fb/jtfdcr/trial|us/imgs/fb_jtfdcr_trial.jpg|us/imgs/tn/tn_fb_jtfdcr_trial.png|title|desc|jtf|js|ht|
/fb/jtfinc/mag|us/imgs/fb_jtfinc.jpg|us/imgs/tn/tn_fb_jtfinc.png|title|desc|jtf|js|ht|
/fb/byrdpucker/mag|us/imgs/fb_byrdpucker.jpg|us/imgs/tn/tn_fb_byrdpucker.png|title|desc|jtf|js|ht|
/fb/redeclaration_of_independance/mag/|us/jkwii4trusstee/mag/pages/1.jpg|us/jkwii4trusstee/mag/pages/1.jpg|
/fb/jkwii4trustee/|us/jkwii4trusstee/mag/pages/1.jpg|us/jkwii4trusstee/mag/pages/1.jpg|
/fb/jmh/|us/jmh/mag/pages/1.jpg|us/jmh/mag/pages/1.jpg|
/fb/kagawa/|us/kagawa/mag/pages/1.jpg|us/kagawa/mag/pages/1.jpg|
/fb/kids/|us/kids/mag/pages/1.jpg|us/kids/mag/pages/1.jpg|
/fb/take_a_neighbor2jail_day|us/imgs/fb_take_a_neighbor2jail_day.jpg/|us/take_a_neighbor2jail_day.jpg|us/imgs/fb_take_a_neighbor2jail_day.jpg|
/fb/who2jail|us/imgs/fb_take_a_neighbor2jail_day.jpg/|us/take_a_neighbor2jail_day.jpg|us/imgs/fb_take_a_neighbor2jail_day.jpg|
/fb/jtfdcr/trials.html/|us/jtfdcr/imgs/trials.jpg|us/jtfdcr/imgs/trials.jpg|
/fb/jtfdcr/trial1_judge_/|us/jtfdcr/imgs/trial1_judge.jpg|us/jtfdcr/imgs/trial1_judge.jpg|
/fb/jtfdcr/trial2_judge_schrader/|us/jtfdcr/imgs/trial2_judge_schrader.jpg|us/jtfdcr/imgs/trial2_judge_schrader.jpg|
/fb/jtfdcr/trial3_judge_brown/|us/jtfdcr/imgs/trial3_judge_brown.jpg|us/jtfdcr/imgs/trial3_judge_brown.jpg|
/fb/jtfdcr/trial4_judge.html/|us/jtfdcr/imgs/trial2_judge_schrader.jpg|us/jtfdcr/imgs/trial4_judge.jpg|
/fb/med/|us/imgs/fb_med.jpg|us/imgs/fb_tn_fb_med.png|
/fb/law/|us/imgs/fb_law.jpg|us/imgs/tn/tn_fb_law.png|
/fb/templets/basic/|us/templets/basic/pages/1.jpg|us/templets/basic/pages/1.jpg|
/fb/templets/mag/|us/templets/mag/pages/1.jpg|us/templets/mag/pages/1.jpg|
/fb/templets/bible/|us/templets/mag/pages/1.jpg|us/templets/mag/pages/1.jpg|
/fb/templets/magazine/|us/templets/magazine/pages/1.jpg|us/templets/magazine/pages/1.jpg|
/fb/templets/book/|us/templets/magazine/pages/1.jpg|us/templets/magazine/pages/1.jpg|`.split("\n");
			return( fb_links );
			}
		</script>


	<script id="script_show_jtfdc_stalkarounds_links" >
		function show_jtfdc_stalkarounds_links(mode) {
			alert( "BUGS_1925 show_jtfdc_stalkarounds_links mode="+mode );
			}
		</script>


	<script id="script_show_fb_links" >
		function show_fb_links(mode) {
//			alert( "BUGS_1901 show_fb_links mode="+mode );
			fb_links = load_fb_links();
//			fb_links = kolists['fb_law'].split("\n");
//			alert( "BUGS_1902 show_fb_links fb_links="+fb_links );
			htmout_fb_links = "";
			htmout_fb_linkz = "";
			for (i = 0; i < fb_links.length; i++) {
				my_btnimg = "/imgs/btn/koeye.png";
				my_href = fb_links[i].split("|")[0];
				my_popimg = fb_links[i].split("|")[1];
				my_alt = fb_links[i].split("|")[2];

//				htmout_fb_linkz += '<a class="drag" href="' + my_href + '" target=_blank>"';
				htmout_fb_linkz += '<a class="thumbnail" href="' + my_href + '" target=_blank>"';
				htmout_fb_linkz += '<img src="' + my_popimg + '" alt="' + my_alt + '" height=100></a>';

				htmout_fb_links += '<a class="thumbnail" href="' + my_href + '" target=_blank>"';
				htmout_fb_links += '<img src="' + my_btnimg + '" alt="' + my_alt + '" width=25px height=14px border=0>';
				htmout_fb_links += '<span><img src="' + my_popimg + '" alt="' + my_alt + '"></span></a>';
				}

			if( mode === 'pop' ) {
				htmout_fb_links += "<br><br>";
//				var div_fb_links = document.getElementById('div_fb_links');
//				div_fb_links.insertAdjacentHTML('beforeend', htmout_fb_links);
				if( document.getElementById('div_fb_links')) {
					document.getElementById('div_fb_links').insertAdjacentHTML('beforeend', htmout_fb_links);
					}
				return( htmout_fb_links );
				}

			htmout_fb_linkz += "<br><br>";
//			var div_fb_linkz = document.getElementById('div_fb_linkz');
//			div_fb_linkz.insertAdjacentHTML('beforeend', htmout_fb_linkz);
			if( document.getElementById('div_fb_links')) {
				document.getElementById('div_fb_links').insertAdjacentHTML('beforeend', htmout_fb_linkz);
				}
			return( htmout_fb_linkz );
			}
		</script>
	<script id="script_blobhead_wait">
		function blobhead_wait(args) {
//			alert("BUGS_2170 blobhead_wait args="+args );
kolists['blobhead'] =
`/imgs/links/woodson.jpg|woodsoncenter.org
/imgs/links/missioncontinues.jpg|https://missioncontinues.org
https://img.youtube.com/vi/89Vpqm2IaPE/default.jpg|https://www.youtube.com/watch?v=89Vpqm2IaPE
https://img.youtube.com/vi/-5RCmu-HuTg/default.jpg|https://www.youtube.com/watch?v=-5RCmu-HuTg
https://img.youtube.com/vi/_OzFtV_RYD8/default.jpg|https://www.youtube.com/watch?v=_OzFtV_RYD8
/imgs/links/woodson.jpg|woodsoncenter.org
https://img.youtube.com/vi/89Vpqm2IaPE/default.jpg|https://www.youtube.com/watch?v=89Vpqm2IaPE
https://img.youtube.com/vi/-5RCmu-HuTg/default.jpg|https://www.youtube.com/watch?v=-5RCmu-HuTg
https://img.youtube.com/vi/_OzFtV_RYD8/default.jpg|https://www.youtube.com/watch?v=_OzFtV_RYD8
/imgs/links/woodson.jpg|woodsoncenter.org
https://img.youtube.com/vi/89Vpqm2IaPE/default.jpg|https://www.youtube.com/watch?v=89Vpqm2IaPE
https://img.youtube.com/vi/-5RCmu-HuTg/default.jpg|https://www.youtube.com/watch?v=-5RCmu-HuTg
https://img.youtube.com/vi/_OzFtV_RYD8/default.jpg|https://www.youtube.com/watch?v=_OzFtV_RYD8
`;

//			alert("BUGS_2170 blobhead_wait kolists_blobhead="+kolists['blobhead'] );
htmout = '';
htmout += '		<h1 id="h1_blobsallad_wait">';
htmout += '			ko_blobsallad worksite: <br>';
htmout += '			hardhat - googles - mouse <br>';
// htmout += '			count 16 n refresh if needed<br>';
htmout += '			count 16 n refresh regularly<br>';
htmout += '			<hr color=goldenrod>';
htmout += '			-= ...::: wait_for_the_drop :::... =-';
htmout += '			<hr color=goldenrod>';

			blobheads = kolists['blobhead'].split("\n");
			blobheads_len = blobheads.length;
			for ( j=0; j< blobheads_len; j++ ) {
				blobhead_data=blobheads[j];
//				alert( "BUGS_2200 blobhead_data j="+j+" blobhead_data="+blobhead_data );
				if( /^#/.blobhead ) { continue; }
				img=blobhead_data.split("|")[0];
				url=blobhead_data.split("|")[1];
				htmout += '	<img src="'+img+'"';
				htmout += '		alt="'+img+'"';
				htmout += '		onclick="window.open(\''+url+'\'); return false;"';
				htmout += '		height=200 border=0>';
				htmout += '		<br>';
//				alert( "BUGS_2210 blobhead j="+j+" htmout="+htmout );
				}

			htmout += '			<br>';
			htmout += '			<hr color=goldenrod>';
			htmout += '			<hr color=goldenrod>';
			htmout += '			-= ...::: wait_for_the_drop :::... =-';
			htmout += '			<hr color=goldenrod>';
			htmout += '		</h1>';
			htmout += '		<hr color=white>';
//			alert( "BUGS_2215 blobhead_wait htmout="+htmout );

			if( document.getElementById('div_blobhead_wait')) {
				document.getElementById('div_blobhead_wait').innerHTML=htmout;
				}
			return(args);
			}
		</script>

	<script id="script_blobhead_wait_canvas">
		function blobhead_wait_canvas(args) {
			if( document.getElementById('canvas_blob')) {
				var canvas = document.getElementById('canvas_blob');
				}
			if(canvas.getContext == null) {return; }
			var ctx = canvas.getContext('2d');
			var title=document.title;
			var maxwidth=600;
//			ctx.font = "40pt Calibri";
//			ctx.font = "50pt yokkmokkOT";
//			ctx.fillStyle = 'goldenrod';
			ctx.fillText("-- ==  jkwii worksite == --", 20,10, maxwidth );
			ctx.fillText("-- ==  hardhat - googles - mouse  == --", 125,10, maxwidth );
			ctx.fillText("-- ==  count 16 n repeat/refresh as needed  == --", 125,50, maxwidth );
			ctx.fillText(title, 20,20, maxwidth );
			ctx.fillText("-- ==  wait for the drop  == --", 125,100, maxwidth );
//			alert( "BUGS_2200 blobhead_wait" );
			return(args);
			}
		</script>






<!--	</head> -->
<!-- <body bgcolor=wheat onload="init();"> -->
<!-- <body bgcolor=wheat onload="startup_blob();return false;"> -->


	<div id="div_blob_wait">
		<h1>div_blobhead_wait</h1>
		</div>

	<div id="div_blobhead" >
		<h1 id="h1_blobsallad">
		<img src="/imgs/btn/btn_jitsi1.png" alt="btn_jitsi"
			onclick="window.open('https://meet.jit.si/ko');return false;"
			height=100 border=0>
		&nbsp &nbsp &nbsp &nbsp 
		<img src="/imgs/btn/btn_zoom.png" alt="btn_zoom"
			onclick="window.open('https://zoom.us');return false;"
			height=50 border=0>
		&nbsp &nbsp &nbsp &nbsp 
		<img src="/imgs/btn/btn_jitsi2.png" alt="btn_zoom"
			onclick="window.open('https://jitsi.org');return false;"
			height=100 border=0>
		<br>
		<img src="/imgs/btn/warning1.gif" alt="warning1"
			onclick="window.open('/imgs/btn/warning1.gif');return false;"
			height=90 border=0>
		<img src="/imgs/btn/ko_warning.png" alt="warning"
			onclick="window.open('/imgs/btn/ko_warning.png');return false;"
			height=100 border=0>
		<img src="/imgs/btn/warning2.gif" alt="warning2"
			onclick="window.open('/imgs/btn/warning2.gif');return false;"
			height=90 border=0>
		<br>
		<hr color=linen>
		<hr color=linen>

<!--		<img src="/imgs/letters/ltr_j_fantasy.png" alt="email_jkwii_hat_ko2us" -->
		<img src="/imgs/letters/kurrent_j.png" alt="email_jkwii_hat_ko2us"
			id="img_random_letter_j"
			class="class_img_random_letter_j"
			onclick="window.open('/imgs/letters/kurrent_j.png'); return false;"
			height=100 border=0>
		<img src="/imgs/links/email.gif" alt="email_jkwii_ko2us"
			onclick="window.open('mailto:jkwii@ko2.us?subject=jkwii_hat_ko2us_knock_knock');return false;"
			height=50 border=0>
		&nbsp &nbsp &nbsp &nbsp
		<img src="/imgs/links/email.gif" alt="email_skwii_ko2us"
			onclick="window.open('mailto:skwii@ko2.us?subject=skwii_hat_ko2us_knock_knock');return false;"
			height=50 border=0>
<!--		<img src="/imgs/letters/ltr_s_swan.png" alt="email_skwii_hat_ko2us" -->
		<img src="/imgs/letters/kurrent_s.png" alt="email_skwii_hat_ko2us"
			id="img_random_letter_s"
			class="class_img_random_letter_j"
			onclick="window.open('/imgs/letters/kurrent_s.png'); return false;"
			height=100 border=0>
		<br>
		<hr color=linen>
		<hr color=linen>
		<img src="/imgs/btn/ko_count_to_16.png" alt="count_to_16"
			onclick="window.open('/imgs/btn/ko_count_to_16.png');return false;"
			height=100 border=0>
		<br>
		<hr color=linen>
		<img src="/imgs/gif/cpa/try_again.gif" alt="try_again"
			onclick="window.open('https://www.youtube.com/watch?v=SMpqjCSO9yI');return false;"
			height=150 border=0>
		<br>
		<hr color=linen>
		<img src="/imgs/btn/ko_wait_forthe_drop.png" alt="wait_forthe_drop"
			onclick="window.open('/imgs/btn/ko_wait_forthe_drop');return false;"
			height=100 border=0>
		<hr color=linen>

<!--
			ko_blobsallad worksite: <br>
			hardhat - googles - mouse <br>

			count 16 n refresh regularly<br>';
			<hr color=goldenrod>';
			-= ...::: wait_for_the_drop :::... =-
	-->
			<hr color=goldenrod>
			<hr color=red>
			<hr color=white>
			<hr color=blue>
			<img src="/fb/cards/pages/invite_vip_deutsch.jpg"
				alt="invite_vip_deutsch.org"
				onclick="window.open(\'/fb/cards/pages/zn/zn_invite_vip_deutsch.jpg\'); return false;"
				height=300 border=0>
<!--
keys/keys00_hole.png
keys/keys37_hole.png
keys/keys62_hole2heaven.png
	-->
<!--
			<img src="/imgs/keys/keys62_hole2heaven.png">
			<img src="/imgs/keys/key37_hole.png">
	-->
			<img src="/imgs/keys/keys00_hole.png"
				alt="keys00_hole"
				onclick="window.open('/imgs/keys/keys62_hole2heaven.png'); return false;"
				height=300 border=0>
			&nbsp &nbsp &nbsp &nbsp
			<img src="/imgs/keys/keys07_steampunk.png"
				id="img_random_key_deutsch"
				alt="img_random_key_deutsch"
				onclick="window.open('/imgs/keys/keys01_jkwii.jpg'); return false;"
				height=300 border=0>
			<br>
			<hr color=blue>
			<hr color=white>
			<hr color=red>
			<hr color=goldenrod>
			<br><br><br><br<>
	<img src="/law/pages/1.jpg" alt="law" onclick="window.open('/law/');return false; height=100 border=0>
	<img src="/imgs/btn/vu_law.png" alt="vu_law" onclick="window.open('/law/vu_law.html');return false; height=100 border=0>
	&nbsp &nbsp &nbsp &nbsp
	<img src="/cpa/pages/1.jpg" alt="cpa" onclick="window.open('/cpa/');return false; height=100 border=0>
	<img src="/imgs/btn/vu_cpa.png" alt="cpa" onclick="window.open('/cpa/vu_cpa.html');return false; height=100 border=0>
	&nbsp &nbsp &nbsp &nbsp
	<img src="/med/pages/1.jpg" alt="med" onclick="window.open('/med/');return false; height=100 border=0>
	<img src="/imgs/btn/vu_med.png" alt="vu_med" onclick="window.open('/med/vu_med.html');return false; height=100 border=0>

	<br>
	<img src="/trial6/pages/1.jpg" alt="trial6" onclick="window.open('/trial6/');return false; height=100 border=0>
	<img src="/imgs/btn/vu_trial6.png" alt="vu_med" onclick="window.open('/trial6/vu_trial6.html');return false; height=100 border=0>
	&nbsp &nbsp &nbsp &nbsp
	<img src="/trial7/pages/1.jpg" alt="trial7" onclick="window.open('/trial7/');return false; height=100 border=0>
	<img src="/imgs/btn/vu_trial7.png" alt="vu_med" onclick="window.open('/trial7/vu_trial6.html');return false; height=100 border=0>
	<br>
	<hr color=goldenrod>
	<hr color=goldenrod>
	<br><br><br><br>
<!--
			<img src="/imgs/links/missioncontinues.jpg"
				alt="missioncontinues.org"
				onclick="window.open(\'https://missioncontinues.org\'); return false;"
				height=200 border=0>
			&nbsp &nbsp &nbsp &nbsp
			<img src="/imgs/links/woodson.jpg"
				alt="woodsoncenter.org"
				onclick="window.open(\'woodsoncenter.org\'); return false;"
				height=200 border=0>
			<br>
			<img src="/imgs/links/trey_gowdy-doesnt_hurt2ask.jpg" alt="trey_goudy-doesnt_hurt2ask"
				onclick="window.open('https://www.treygowdy.com/doesnt-hurt-to-ask');return false;"
				height=100 border=0>
			&nbsp &nbsp &nbsp &nbsp 
			<img src="https://img.youtube.com/vi/89Vpqm2IaPE/default.jpg"
				onclick="window.open('https://www.youtube.com/watch?v=89Vpqm2IaPE');return false;"
				alt="jordan_peterson_howtosell"
				height=100 border=0>
			&nbsp &nbsp &nbsp &nbsp 
			<img src="https://img.youtube.com/vi/-5RCmu-HuTg/default.jpg"
				onclick="window.open('https://www.youtube.com/watch?v=-5RCmu-HuTg');return false;"
				alt="jordan_peterson_12_rules_of_life"
				height=100 border=0>
			&nbsp &nbsp &nbsp &nbsp 
			<img src="https://img.youtube.com/vi/_OzFtV_RYD8/default.jpg"
				onclick="window.open('https://www.youtube.com/watch?v=_OzFtV_RYD8');return false;"
				alt="webb_awanbeforemidnight"
				height=100 border=0>
	-->
			<br>
			<hr color=goldenrod>';
			<hr color=goldenrod>
			-= ...::: wait_for_the_drop :::... =-
			<hr color=goldenrod>
			</h1>
		<hr color=white>
		<canvas id="canvas_blob" width="600" height="400"></canvas><br>
<!--		<canvas id="canvas_blobs" width="600" height="400"></canvas><br> -->
<!--		<canvas id="canvas_blob" width="800" height="400" onclick="window.open('/blob.html');return false;"></canvas><br> -->
		<hr color=white>




<!--		<img src="/imgs/btn/koeyeb.png" onclick="stop();return false;" height=30> -->
<!--		<img src="/imgs/btn/koeyew.png" onclick="start();return false;" height=30> -->
<!-- -= start =- -= stop =- -->
		<br>
		<hr color=white>

<!--
		<img id="img_titles" src="/imgs/btn/koeye.png" onclick="alert('titles'+kolists['titles']);titles('');return false;" height=50>
		<img id="img_titles1" src="/imgs/btn/koeye.png" onclick="alert('titles1'+kolists['titles']);titles1('');return false;" height=50>
		&nbsp &nbsp &nbsp &nbsp
	-->
		<br>
		<hr color=goldenrod>
		<hr color=goldenrod>
		<img id="img_blob_togglestart" src="/imgs/btn/kow.png" onclick="togglestart();return false;" height=30>
		&nbsp &nbsp &nbsp &nbsp
		&nbsp &nbsp &nbsp &nbsp
		<img id="img_grid_toggle" src="/imgs/btn/btn_keyhole_us.png" onclick="grid_toggle(''); return false;" height=100> 
		&nbsp &nbsp &nbsp &nbsp

		<img id="img_grid_keys" src="/imgs/btn/btn_keys1.png" onclick="grid(''); return false;" height=100>
		&nbsp &nbsp &nbsp &nbsp
<!--		<img id="img_blob_togglestart" src="/imgs/btn/kob.png" onclick="keine('123'); return false;" height=50> -->
<!--		<img id="img_blob_togglestart" src="/imgs/btn/kob.png" onclick="bugs('123'); return false;" height=50> -->
		&nbsp &nbsp &nbsp &nbsp
		<img id="img_blob_k9" src="/imgs/btn/kob.png" onclick="window.open('k9.html');return false;" height=30>
		&nbsp &nbsp &nbsp &nbsp
		&nbsp &nbsp &nbsp &nbsp
		&nbsp &nbsp &nbsp &nbsp
		<img id="img_blob_arrowkeys_toggle" src="/imgs/btn/kob.png" onclick="blob_arrowkeys_toggle('');return false;" height=25>
		&nbsp &nbsp &nbsp &nbsp
		<img id="img_blob_split" src="/imgs/btn/koeye_split.png" onclick="blobColl.split();return false;" height=30>
		&nbsp &nbsp
<!--
		<img id="img_blob_togglegravity" src="/imgs/btn/koeyew_gravity.png" onclick="toggleGravity();return false;" 
			height=30>
			-->
		<img id="img_blob_togglegravity" src="/imgs/btn/blob_gravity_on.gif" 
			onclick="toggleGravity();return false;" 
			height=100>
<!--
		<img id="img_blob_togglegravity" src="/imgs/btn/blob_gravity_off.gif" 
			onclick="toggleGravity();return false;" 
			height=30>
	-->

		&nbsp &nbsp
		<img id="img_blob_join" src="/imgs/btn/koeye_join.png" onclick="blobColl.join();return false;" height=30>
		&nbsp &nbsp
<!--
		<button onclick="document.getElementById('audio_sound').play();">
			giggle
			</button>	
	-->
		&nbsp &nbsp
<!-- -= + =- -= = =- -= - =- -->
		<hr color=white>
		<br>
		<img id="img_blob1" src="/imgs/btn/koeye_space.png" 
			onclick="blobColl.addForce( new Vector(0.0,-50.0));return false;" 
			onmouseover="blob_mouseover('1');return false"
			height=30>
		<img id="img_blob2 "src="/imgs/btn/koeye_up.png" 
			onclick="blobColl.addForce( new Vector(0.0,-50.0));return false;" 
			onmouseover="blob_mouseover('2');return false"
			height=30>
		<img id="img_blob3" src="/imgs/btn/koeye_space.png" 
			onclick="blobColl.addForce( new Vector(0.0,-50.0));return false;" 
			onmouseover="blob_mouseover('3');return false"
			height=30>
		<br>
		<img id="img_blob4" src="/imgs/btn/koeye_left.png" 
			onclick="blobColl.addForce( new Vector(-50.0,0.0));return false;" 
			onmouseover="blob_mouseover('4');return false"
			height=30>
		<img id="img_blob5" src="/imgs/btn/koeye_space.png" 
			onclick="blob_info('');return false;" 
			onmouseover="blob_mouseover('5');return false"
			height=30>
		<img id="img_blob6" src="/imgs/btn/koeye_right.png" 
			onclick="blobColl.addForce( new Vector(50.0,0.0));return false;" 
			onmouseover="blob_mouseover('6');return false"
			height=30>
		<br>
		<img id="img_blob7" src="/imgs/btn/koeye_space.png" 
			onclick="blobColl.addForce( new Vector(0.0,50.0));return false;" 
			onmouseover="blob_mouseover('7');return false"
			height=30>
		<img id="img_blob8" src="/imgs/btn/koeye_down.png" 
			onclick="blobColl.addForce( new Vector(0.0,50.0));return false;" 
			onmouseover="blob_mouseover('8');return false"
			height=30>
		<img id="img_blob9" src="/imgs/btn/koeye_space.png" 
			onclick="blobColl.addForce( new Vector(0.0,50.0));return false;" 
			onmouseover="blob_mouseover('9');return false"
			height=30>
<!-- -= l =- -= u =- -= d =- -= r =- -->
		<hr color=white>
<br>

<!--
		<img id="img_blob0" src="/imgs/btn/kob.png" onclick="blob_mouseover('0');return false;" height=25>
	-->

		<script id="script_blob_arrowkeys_toggle">
			var blob_arrowkeys="";
			function blob_arrowkeys_toggle(args) {
//				alert( "BUGS_1830 args="+args );
//				alert( "BUGS_1834 blob_arrowkeys="+blob_arrowkeys );
				if( document.getElementById('img_blob_arrowkeys_toggle')) {
					if( blob_arrowkeys == "on" ) {
						blob_arrowkeys = "";
						document.getElementById('img_blob_arrowkeys_toggle').src='/imgs/btn/kob.png';
//						alert( "BUGS_1841 blob_arrowkeys="+blob_arrowkeys );
						}
					else {
						blob_arrowkeys = "on";
						document.getElementById('img_blob_arrowkeys_toggle').src='/imgs/btn/kow.png';
//						alert( "BUGS_1842 blob_arrowkeys="+blob_arrowkeys );
						}
					}
				}
			</script>
	<br>
	<hr color=goldenrod>
	<div id="div_tokens" hidden ><h3>div_tokens</h3></div>
	<div id="div_grid"><h3>div_grid</h3></div>
	<div id="div_grid1" hidden ><h3>div_grid</h3></div>
	<div id="div_grid2" hidden ><h3>div_grid</h3></div>
	<br>
	<hr color=goldenrod>
	<hr color=goldenrod>


	<div id="div_grid_canvas" hidden>
		<h3>grid_canvas</h3>
		<canvas id="canvas_table_top" height=50 ></canvas>
		<table id="table_grid_canvas" >
		<tr>
			<td id="td11" > <canvas id="canvas_grid_1" src=/imgs/btn/kob.png onclick="grid('grid1_11');return false;" height=50 border=0  ></canvas></td>
			<td id="td12" > <canvas id="canvas_grid_2" src=/imgs/btn/kob.png onclick="grid('grid1_12');return false;" height=50 border=0  ></canvas></td>
			<td id="td13" > <canvas id="canvas_grid_3" src=/imgs/btn/kob.png onclick="grid('grid1_13');return false;" height=50 border=0  ></canvas></td>
			</tr>
		<tr>
			<td id="td21" > <canvas id="canvas_grid_4" src=/imgs/btn/kob.png onclick="grid('grid1_21');return false;" height=50 border=0  ></canvas></td>
			<td id="td22" > <canvas id="canvas_grid_5" src=/imgs/btn/kob.png onclick="grid('grid1_22');return false;" height=50 border=0  ></canvas></td>
			<td id="td23" > <canvas id="canvas_grid_6" src=/imgs/btn/kob.png onclick="grid('grid1_23');return false;" height=50 border=0  ></canvas></td>
			</tr>
		<tr>
			<td id="td31" > <canvas id="canvas_grid_7" src=/imgs/btn/kob.png onclick="grid('grid1_31');return false;" height=50 border=0  ></canvas></td>
			<td id="td32" > <canvas id="canvas_grid_8" src=/imgs/btn/kob.png onclick="grid('grid1_32');return false;" height=50 border=0  ></canvas></td>
			<td id="td33" > <canvas id="canvas_grid_9" src=/imgs/btn/kob.png onclick="grid('grid1_33');return false;" height=50 border=0  ></canvas></td>
			</tr>
		<tr>
			<td id="td_1-1" >box1-1</td>
			<td id="td_1-2" >box1-2</td>
			<td id="td_1-3" >box1-3</td>
			</tr>
		<tr>
			<td id="td_2-1" >box2-1</td>
			<td id="td_2-2" >box2-2</td>
			<td id="td_2-3" >box2-3</td>
			</tr>
		<tr>
			<td id="td_3-1" >box3-1</td>
			<td id="td_3-2" >box3-2</td>
			<td id="td_3-3" >box3-3</td>
			</tr>
		</table>


		<canvas id="canvas_table_bot" height=100 width=400></canvas>
		</div>
	<br>
	<hr color=goldenrod>
	<hr color=goldenrod>
	<hr color=goldenrod>
	<br>



	<br>
	<hr color=red>
	<hr color=white>
	<hr color=blue>
	<hr color=goldenrod>
	<br>
	<img src="/fb/cards/pages/invite_vip_deutsch.jpg" 
		alt="invite_vip_deutsch"
onclick="window.open('/fb/cards/pages/zn/zn_invite_vip_deutsch.jpg'); return false;"
		height=300 border=0 >
		&nbsp &nbsp &nbsp &nbsp
	<img src="/imgs/keys/keys00_hole.png" 
onclick="window.open('/imgs/keys/keys62_hole2heaven.png'); return false;"
		height=300 border=0 >
	<br>
	<div id="div_kogrids_w" >
		</div>
	<div id="div_buttons_hideshow_w">
		<img src="/imgs/btn/koeye_alloff.png" height=50 onclick="script_hideshow('alloff');return false;" alt="btn_alloff">
		<img src="/imgs/btn/koeye_toggle.png" height=50 onclick="script_hideshow('toggle');return false;" alt="btn_alloff">
		<img src="/imgs/btn/koeye_allon.png" height=50 onclick="script_hideshow('allon');return false;" alt="btn_allon">
		<br>
		<hr color=white>
		<hr color=black>
<!--		<img src="/imgs/btn/koeyew_slots.png" height=50 onclick="script_hideshow('div_slots');return false;" alt="btn_slots"> -->
<!--		<img src="/imgs/btn/koeyew_hl.png" height=50 onclick="script_hideshow('div_hl');return false;" alt="btn_hl"> -->
<!--		<img src="/imgs/btn/koeyew_hllinks.png" height=50 onclick="script_hideshow('div_hllinks');return false;" alt="btn_hllinks"> -->
<!--		<img src="/imgs/btn/koeyew_hltext.png" height=50 onclick="script_hideshow('div_hltext');return false;" alt="btn_hltext"> -->
<!--		<img src="/imgs/btn/koeyew_hlmedia.png" height=50 onclick="script_hideshow('div_hltext');return false;" alt="btn_hlmedia"> -->
<!--		<img src="/imgs/btn/koeyew_games.png" height=50 onclick="script_hideshow('div_games');return false;" alt="btn_games"> -->
<!--		<img src="/imgs/btn/koeyew_av_jtfdc.png" height=50 onclick="script_hideshow('div_av_jtfdc');return false;" alt="btn_av_jtfdc"> -->
<!--		<img src="/imgs/btn/koeyew_av_jtfinc.png" height=50 onclick="script_hideshow('div_av_jtfinc');return false;" alt="btn_av_jtfinc"> -->
<!--		<img src="/imgs/btn/koeyew_av_jtfdcr.png" height=50 onclick="script_hideshow('div_av_jtfdcr');return false;" alt="btn_av_jtfdcr"> -->

		<img src="/imgs/btn/koeyew_av.png" height=50 onclick="script_hideshow('div_av');return false;" alt="btn_av">
		<img src="/imgs/btn/koeyew_bb.png" height=50 onclick="script_hideshow('div_db');return false;" alt="btn_db">
		<img src="/imgs/btn/koeyew_dd.png" height=50 onclick="script_hideshow('div_dd');return false;" alt="btn_dd">
		<img src="/imgs/btn/koeyew_fb.png" height=50 onclick="script_hideshow('div_fb');return false;" alt="btn_fb">
		<img src="/imgs/btn/koeyew_fs.png" height=50 onclick="script_hideshow('div_fs');return false;" alt="btn_fs">
		<img src="/imgs/btn/koeyew_pn.png" height=50 onclick="script_hideshow('div_pn');return false;" alt="btn_pn">
		<img src="/imgs/btn/koeyew_sl.png" height=50 onclick="script_hideshow('div_sl');return false;" alt="btn_sl">
		<img src="/imgs/btn/koeyew_tl.png" height=50 onclick="script_hideshow('div_tl');return false;" alt="btn_tl">
		<img src="/imgs/btn/koeyew_tm.png" height=50 onclick="script_hideshow('div_tm');return false;" alt="btn_tm">
		<img src="/imgs/btn/koeyew_yt.png" height=50 onclick="script_hideshow('div_yt');return false;" alt="btn_yt">
		<img src="/imgs/btn/koeyew_zm.png" height=50 onclick="script_hideshow('div_zm');return false;" alt="btn_zm">
		<br>
		<img src="/imgs/btn/koeyew_jtfdc.png" height=50 onclick="script_hideshow('div_jtfdc');return false;" alt="btn_jtfdc">
		<img src="/imgs/btn/koeyew_jtfinc.png" height=50 onclick="script_hideshow('div_jtfinc');return false;" alt="btn_jtfinc">
		<img src="/imgs/btn/koeyew_jtfdcr.png" height=50 onclick="script_hideshow('div_jtfdcr');return false;" alt="btn_jtfdcr">
		<br>
		<img src="/imgs/btn/koeyew_head.png" height=50 onclick="script_hideshow('div_head');return false;" alt="btn_head">
		<img src="/imgs/btn/koeyew_body.png" height=50 onclick="script_hideshow('div_body');return false;" alt="btn_body">
		<img src="/imgs/btn/koeyew_memes.png" height=50 onclick="script_hideshow('div_memes');return false;" alt="btn_memes">
		<img src="/imgs/btn/koeyew_kov.png" height=50 onclick="script_hideshow('div_kov');return false;" alt="btn_kov">
		<img src="/imgs/btn/koeyew_tail.png" height=50 onclick="script_hideshow('div_tail');return false;" alt="btn_tail">
<br>
<hr color=linen>
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

		<img src="/imgs/btn/koeyew_handhither.gif" 
			alt="<img src=imgs/btn/koeye.png height=200>stalkarounds"  
			onclick="script_hideshow('div_stalkarounds');return false;" 
			height=100 border=0>
yyyyyyyyyyyyyyyyyyyyyyyyy
<!--
div_postturtle_monkeytrap
div_tclaw
div_pdfs
div_media
div_fb_law
div_jtfdc_stalkarounds
div_mothersday
div_reindependenceday
div_anniversary
div_turbulence
div_us2
div_edu
div_hoa
div_zpid
	-->
		</div>


	<br><br><br><br>
	<hr color=linen>
	<h1>law</h1>
	<img src="/law/pages/1.jpg" alt="law" onclick="window.open('/law/'); return false;" height=100 border=0>
	<img src="/fb/focus/pages/tn/tn_1.png" alt="index_vu_law" onclick="window.open('/law/index_vu.html'); return false;" height=100 border=0>
	<img src="/fb/law/pages/1.jpg" alt="law" onclick="window.open('/fb/law/'); return false;" height=100 border=0>
	<hr color=yellow>
	<br>
	<hr color=goldenrod>
	<h2>trial6-hon_judge_heggie</h2>
	<img src="/fb/law/trial6_hon_judge_heggie/pages/1.jpg" alt="law" onclick="window.open('/fb/law/trial6_hon_judge_heggie'); return false;" height=100 border=0>
	&nbsp &nbsp &nbsp &nbsp
	<img src="/fb/law/trial7_hon_judge_concannon/pages/1.jpg" alt="law_" onclick="window.open('/fb/law/trial7_hon_judge_concannon'); return false;" height=100 border=0>
	<hr color=goldenrod>
	<br><br><br><br>
	<hr color=goldenrod>
	<img src="/med/pages/1.jpg" alt="med" onclick="window.open('/med/'); return false;" height=100 border=0>
	<img src="/kou/pages/1.jpg" alt="kou" onclick="window.open('/kou/'); return false;" height=100 border=0>
	<img src="/kids/pages/1.jpg" alt="kids" onclick="window.open('/kids/'); return false;" height=100 border=0>

	<br>
	<div id="div_soul_lewis" >
		<hr colod=red>
		<hr colod=white>
		<hr colod=blue>
		<h1>john lewis - civil rights leader</h1>
		<h2>1940-02-21 - 2020-07-17</h2>
		<img src="/fb/soul/imgs/john_lewis_wiki.jpg"
			alt="wiki_john_lewis"
			onclick="window.open('/fb/soul');return false;"
			height=300 border=0>
			<br>
		<hr color=red>
		<hr color=linen>
		<hr color=blue>
		<img src="https://img.youtube.com/vi/QFUif6T5xiI/default.jpg"
			alt="whitney_houston-abraham_martin_n_john"
			onclick="window.open('https://www.youtube.com/watch?v=QFUif6T5xiI'); return false;"
			height=100 border=0>
			&nbsp &nbsp &nbsp &nbsp
		<img src="/kb/vid/jkwii/nina_simonedont_let_me_be_misunderstood.jpg"
			onclick="window.open('/kb/vid/jkwii/nina_simonedont_let_me_be_misunderstood.mp4'); return false;"
			height=100 border=0>
			&nbsp &nbsp &nbsp &nbsp
		<img src="/kb/vid/jkwii/dion-abraham_martin_n_john.jpg"
			alt="dion-abraham_martin_n_john"
			onclick="window.open('/kb/vid/jkwii/dion-abraham_martin_n_john.mp4'); return false;"
			height=100 border=0>
		<br>
		<hr color=red>
		<hr color=linen>
		<hr color=blue>
		<img src="/kb/vid/jkwii/van_morrison-whenever_god_shines_his_light.jpg"
			alt="van_morissan-whenever_god_shines_his_light"
			onclick="window.open('/kb/vid/jkwii/van_morrison-whenever_god_shines_his_light.mp4');return false;"
			height=100 border=0>
			&nbsp &nbsp &nbsp &nbsp
		<img src="https://img.youtube.com/vi/myBVejwZt8Q/default.jpg"
			alt="ray_charles_america_the_beautiful_1972"
			onclick="window.open('https://www.youtube.com/watch?v=myBVejwZt8Q'); return false;"
			height=100 border=0>
			&nbsp &nbsp &nbsp &nbsp
		<img src="/kb/vid/jkwii/jesse_colin_young-whats_going_on.jpg"
			alt="jesse_colin_young-whats_going_on"
			onclick="window.open('/kb/vid/jkwii/jesse_colin_young-whats_going_on.mp4'); return false;"
			height=100 border=0>
		<br>
		<hr color=blue>
		<hr color=linen>
		<hr color=red>
<!--
		<img src="https://img.youtube.com/vi/GufSJChOFG8/default.jpg"
			alt="georga_on_my_mind"
			onclick="window.open('https://www.youtube.com/watch?v=GufSJChOFG8'); return false;"
			height=100 border=0>
			&nbsp &nbsp &nbsp &nbsp
	-->
<!--
		<img src="/fb/soul/imgs/john_lewis_wiki.jpg"
			alt="wikipedia_john_lewis"
			onclick="window.open('https://en.wikipedia.org/wiki/John_Lewis_(civil_rights_leader)');return false;"
			height=100 border=0>
			&nbsp &nbsp &nbsp &nbsp
	-->
<!--
		<img src="/fb/soul/imgs/john_lewis.jpg"
			alt="dailymail_john_lewis"
			onclick="window.open('https://www.dailymail.co.uk/news/article-8537071/Donald-Trump-FINALLY-pays-tribute-John-Lewis-White-House-flags-lowered-honor.html');return false;"
			height=100 border=0>
			&nbsp &nbsp &nbsp &nbsp
	-->
<!--
		<img src="https://img.youtube.com/vi/FryExpC-fS4/default.jpg"
			alt="dion-abraham_martin_n_john"
			onclick="window.open('https://www.youtube.com/watch?v=FryExpC-fS4'); return false;"
			height=100 border=0>
	-->
<!--
		<img src="https://img.youtube.com/vi/8xk1P1913y0/default.jpg"
			alt="ray_charles_america_the_beutiful"
			onclick="window.open('https://www.youtube.com/watch?v=8xk1P1913y0'); return false;"
			height=100 border=0>
			&nbsp &nbsp &nbsp &nbsp
	-->
		<br>
		<hr color=blue>
		<hr color=white>
		<hr color=red>
		</div>
		<br>
		<hr color=linen>
		<img src="/imgs/btn/warning1.gif" alt="warning1"
			id="img_warning_gif1"
			onclick="window.open('/imgs/btn/warning1.gif'); return false;"
			height=100 border=0>
		&nbsp &nbsp
		<img src="/imgs/btn/ko_warning.png" alt="ko_warning.png"
			id="img_ko_warning_png"
			onclick="window.open('/imgs/btn/ko_warning.png'); return false;"
			height=100 border=0>
		&nbsp &nbsp
		<img src="/imgs/btn/warning2.gif" alt="warning_gif2"
			id="img_warning_png2"
			onclick="window.open('/imgs/btn/warning2.gif'); return false;"
			height=100 border=0>
		
		<hr color=linen>
		<div id="div_img_letter_j">
			<img src="/imgs/letters/ltr_j_fantasy.png" alt="email_jkwii_hat_ko2us"
				id="img_random_letter_j1"
				onclick="window.open('/imgs/letters/ltr_j_fantasy.png'); return false;"
				height=100 border=0>
			<img src="/imgs/links/email.gif" alt="email_jkwii_ko2us"
				onclick="window.open('mailto:jkwii@ko2.us?subject=jkwii_hat_ko2us_knock_knock');return false;"
				height=50 border=0>
			</div>
		&nbsp &nbsp &nbsp &nbsp
		<img src="/imgs/btn/jkwii_greetings.png" alt="jkwii_greetings"
			onclick="window.open('/imgs/btn/jkwii_greetings.png');return false;"
			height=50 border=0>
		&nbsp &nbsp &nbsp &nbsp

		<div id="div_img_letter_s">
			<img src="/imgs/letters/ltr_s_swan.png" alt="email_skwii_hat_ko2us"
				id="img_random_letter_s1"
				onclick="window.open('/imgs/letters/ltr_s_swan.png'); return false;"
				height=100 border=0>
			<img src="/imgs/links/email.gif" alt="email_skwii_ko2us"
				onclick="window.open('mailto:skwii@ko2.us?subject=skwii_hat_ko2us_knock_knock');return false;"
				height=50 border=0>
			</div>
		<br>
		<hr color=linen>

	<hr color=goldenrod>
	<h1>thanks med_team thank bluehost_support_team</h1>
	<hr color=goldenrod>
<!--
	/imgs/eyepatchs/eyepatch_steampunk_posh.jpg
	/imgs/eyepatchs/eyepatch_steampunk_circles.jpg
	/imgs/eyepatchs/eyepatch_steampunk16.jpg
	<img src="/imgs/eyepatchs/eyepatch_steampunk14.jpg">
	-->
	<img src="/imgs/eyepatchs/eyepatch_steampunk14.jpg" 
		id="img_random_eyepatch"
		alt="thanks_med_eyepatch"
onclick="window.open('/imgs/eyepatchs/eyepatch_steampunk14.jpg'); return false;"
		height=200 border=0 >
	&nbsp &nbsp &nbsp &nbsp
	<img src="/fb/cards/pages/thanks_med_dr_lele.jpg" 
		alt="thanks_med_dr_lele"
onclick="window.open('/fb/cards/pages/zn/zn_thanks_med_dr_lele.jpg'); return false;"
		height=200 border=0 >
	&nbsp &nbsp &nbsp &nbsp
	<img src="/fb/cards/pages/thanks_med.jpg" 
		alt="thanks_med"
onclick="window.open('/fb/cards/pages/zn/zn_thanks_med.jpg'); return false;"
		height=200 border=0 >
	&nbsp &nbsp &nbsp &nbsp
	<img src="/fb/neuz/imgs/dailymail_20200720_cataract_surgery_savannah_guthrie.jpg" 
		alt="cataract_surgery_savannah_guthrie"
onclick="window.open('https://www.dailymail.co.uk/femail/article-8541609/Savannah-Guthrie-undergoes-cataract-surgery-repair-blurry-spot-eye.html');return false;"
		height=200 border=0 >
	&nbsp &nbsp &nbsp &nbsp
	<img src="/fb/operation/pages/1.jpg" 
		alt="flipbook_operation"
onclick="window.open('/fb/operation');return false;"
		height=200 border=0 >
	&nbsp &nbsp &nbsp &nbsp
	<img src="/fb/med/pages/1.jpg" 
		alt="flipbook_med"
onclick="window.open('/fb/med');return false;"
		height=200 border=0 >
	<br>
	<hr color=linen>		
	<hr color=orange>
	<hr color=linen>		
	<img src="/fb/cards/pages/thanks_bluehost.jpg" 
		alt="thanks_bluehost"
onclick="window.open('/fb/cards/pages/zn/zn_thanks_bluehost.jpg'); return false;"
		height=200 border=0 >
	&nbsp &nbsp &nbsp &nbsp
	&nbsp &nbsp &nbsp &nbsp
	&nbsp &nbsp &nbsp &nbsp
<img src="https://img.youtube.com/vi/LwofUx3E4XU/default.jpg"
	alt="ganpati_bappa_moriya"
	onclick="window.open('https://www.youtube.com/watch?v=LwofUx3E4XU'); return false;"
	height=200 border=0>
	&nbsp &nbsp &nbsp &nbsp
<img src="/imgs/btn/btn_pdf1.png" class="class_btn_pdf"
	alt="thanks_bluehost_20200724_0903"
	onclick="window.open('/pdf/web/viewer.html?file=/fb/emails/pdf/email_bluehost_david.pdf'); return false;"
	height=200 border=0>
	&nbsp &nbsp &nbsp &nbsp
	&nbsp &nbsp &nbsp &nbsp
	<img src="/imgs/links/bluehost_home.jpg" 
		alt="bluehost_affiliate"
		onclick="window.open('https://www.bluehost.com/?utm_source=%28direct%29&utm_medium=affiliate&utm_campaign=affiliate-link_konet_notype');return false;"
		height=200 border=0 >
	&nbsp &nbsp &nbsp &nbsp

	<a href="https://www.bluehost.com/?utm_source=%28direct%29&utm_medium=affiliate&utm_campaign=affiliate-link_konet_notype" class="thumbnail" target=_blank>
	<img src="'+mykoeyew[koeyew2]+'" height=75 alt=kow border=0>
//	<span><img src="/imgs/kogrids/tn/tn_links_bluehost.png" height=400 alt="bluehost.com" border=0></span>
	<span><img src="/imgs/kogrids/links_bluehost.png" height=400 alt="bluehost.com" border=0></span>
	</a>;
		
	<br>
	<hr color=goldenrod>
	<br><br><br><br>
	<hr color=red>
	<hr color=white>
	<hr colod=blue>
	<br>
	<h1>2020 july 4 online VIP invitation only party</h1>
	<h2>43rd wedding anniversary - 1977 - 2020</h2>
	<h2>USA reindependence day</h2>
	<h2>jtfdc reindepence day</h2>
	<h3>20200704_0300 last update</h3>
	<h3>20200704_0700 - blocked - 202007007_1200</h3>
	<img src="/imgs/eyepatchs/eyepatch_steampunk02.png" 
		alt="eyepatch_key"
onclick="window.open('/imgs/eyepatchs/eyepatch_steampunk02.jpg'); return false;"
		height=200 border=0 >
	<img src="/fb/cards/pages/invite_anniversary.jpg" 
		alt="invite_anniversary"
onclick="window.open('/fb/cards/pages/zn/zn_invite_anniversary.jpg'); return false;"
		height=200 border=0 >
	&nbsp &nbsp &nbsp &nbsp
	&nbsp &nbsp &nbsp &nbsp
	<img src="/fb/bh/imgs/screenshot_24345.png" alt="thanks_bluehost" onclick="window.open('/fb/bh'); return false;" height=200 border=0 >
	&nbsp &nbsp &nbsp &nbsp
	&nbsp &nbsp &nbsp &nbsp
	<img src="/fb/cards/pages/invite_reindependence.jpg" 
		alt="invite_reindependence"
onclick="window.open('/fb/cards/pages/zn/zn_invite_reindependence.jpg'); return false;"
		height=200 border=0 >
	<br>
	<hr color=blue>
	<hr color=white>
	<hr color=red>


	<br><br><br><br>
	<hr color=pink>
	<h1>birthdays August</h1>
	<img src="/imgs/eyepatchs/eyepatch_baby02.jpg" 
		alt="eyepatch_baby02"
onclick="window.open('/imgs/eyepatchs/eyepatch_baby.jpg'); return false;"
		height=200 border=0 >
	<img src="/fb/cards/pages/birthday_20200821.jpg" 
		alt="birthday_20200821"
onclick="window.open('/fb/cards/pages/zn/zn_birthday_20200821.jpg'); return false;"
		height=200 border=0 >
	&nbsp &nbsp &nbsp &nbsp
<img src="https://img.youtube.com/vi/09gJX0Cc6p0/default.jpg"
alt="elise_girl_from_iponema"
onclick="window.open('https://www.youtube.com/watch?v=09gJX0Cc6p0');return false;"); return false;"
		height=100 border=0 >  
		&nbsp &nbsp &nbsp &nbsp
	&nbsp &nbsp &nbsp &nbsp
	<img src="/fb/cards/pages/birthday_19940816.jpg" 
		alt="birthday_19940816"
onclick="window.open('/fb/cards/pages/zn/zn_birthday_19940816.jpg'); return false;"
		height=200 border=0 >
	<br>
	<hr color=pink>
	<hr color=yellow>
	<img src="/imgs/jsdoit/jsdoit_sailboat.png"
		onclick="window.open('index_sailboat.html');return false;"
		height=200 border=0 draggable="true">
	&nbsp &nbsp &nbsp &nbsp
	<img src="/imgs/jsdoit/jsdoit_shoo.png"
		onclick="window.open('index_shoo.html');return false;"
		height=200 border=0 draggable="true">
	<br>
	<hr color=yellow>
	<hr color=pink>
	<br><br><br><br>
	<br><br><br><br>

	<hr color=pink>
	<br><br><br><br>
	<hr color=darkslategray>
	<img src="/fb/cards/pages/invite_vip.jpg" 
		alt="invite_vip"
onclick="window.open('/fb/cards/pages/zn/zn_invite_vip.jpg'); return false;"
		height=300 border=0 >
	&nbsp &nbsp &nbsp &nbsp
	<img src="/imgs/keys/keys00_hole.png" 
onclick="window.open('/imgs/keys/keys62_hole2heaven.png'); return false;"
		height=300 border=0 >
	&nbsp &nbsp &nbsp &nbsp
	<img src="/imgs/keys/keys07_steampunk.png"
		id="img_random_key"
		alt="img_random_key"
		onclick="window.open('/imgs/keys/keys01_jkwii.jpg'); return false;"
		height=300 border=0>
	<br>
	<hr color=goldenrod>
	<hr color=blue>
	<hr color=white>
	<hr color=red>
	<br><br>
	<div id="div_greetings" hidden>

		
		<pre>

Liebe eingeladene Gäste und Ihre vertrauenswürdigen Mitarbeiter:

Erkunden Sie unseren digitalen Campus in Ihrem eigenen Tempo

Als Live-Baustelle brauchen Sie
- Arbeitsschutzhelm -
- Sicherheitsbrille (googles) 
- Computermaus
- (Arztmaske nicht notwendig)


Warnung: 
Unwissende oder faule Besucher können den Besuch 
als unangenehm empfinden.

Eine persönliche Tour kann auf Anfrage arrangiert werden.

Vielen Dank für Ihre Zeit
Mit freundlichen Grüßen 
Reiseführer
jkwii
(Besen und Schaufel Betreiber)


			</pre>
		</div>
	<hr color=pink>
	<hr color=pink>
	<hr color=pink>
	<hr color=pink>
	<h1>july 4 2020 jsk 43rd wedding anniversary</h1>
	<img src="/imgs/gif/giphy_anniversary/giphy_ann010.gif"
	alt="giphy_anniversary/giphy_ann010.gif"
onclick="window.open('/fb/anniversary'); return false;"
	height=300>
	<hr color=pink>
	<hr color=pink>
	<hr color=pink>
	<hr color=pink>

	<br><br><br><br>
<hr color=red>
<hr color=white>
<hr color=blue>
	<h1>july 4 2020 reindependenceday jtfdc USA</h1>
	<img src="/imgs/gif/cute/kid.gif"
	alt="reindependenceday/cute/kid"
onclick="window.open('/fb/reindependenceday'); return false;"
	height=300>
<br><br><br><br>
<br><br><br><br>
<hr color=red>
<hr color=white>
<hr color=blue>
<h1>div_top_fb_head</h1>
	<div id="div_fblink" >
		<h1>div_fblink</h1>
		<hr color=red>
		<img src="/imgs/btn/koeye_handhither.gif" onclick="show_kolists('');return false;"
			height=200 >
		<hr color=red>
		</div>
	<div id="div_fb_w" ><h1>div_fb_w</h1>
		<div id="canvas_fb">
		<div class="zoom-icon zoom-icon-in"></div>
			<div class="magazine-viewport">
				<div class="container">
					<div class="magazine">
				<!-- Next button -->
				<div ignore="1" class="next-button"></div>
				<!-- Previous button -->
				<div ignore="1" class="previous-button"></div>
				</div>
			</div>
		</div>

<!-- Thumbnails -->
	<div id="div_tn"></div>
	<div class="thumbnails" >
		<div>
			<ul>
			<li class="i">
				<img src="pages/tn/tn_1.png" width="76" height="100" class="page-1">
				<span>1</span>
				</li>
			<li class="d">
				<img src="pages/tn/tn_2.png" width="76" height="100" class="page-2">
				<img src="pages/tn/tn_3.png" width="76" height="100" class="page-3">
				<span>2-3</span>
				</li>
			<li class="d">
				<img src="pages/tn/tn_4.png" width="76" height="100" class="page-4">
				<img src="pages/tn/tn_5.png" width="76" height="100" class="page-5">
				<span>4-5</span>
				</li>
			<li class="d">
				<img src="pages/tn/tn_6.png" width="76" height="100" class="page-6">
				<img src="pages/tn/tn_7.png" width="76" height="100" class="page-7">
				<span>6-7</span>
				</li>
			<li class="d">
				<img src="pages/tn/tn_8.png" width="76" height="100" class="page-8">
				<img src="pages/tn/tn_9.png" width="76" height="100" class="page-9">
				<span>8-9</span>
				</li>
			<li class="d">
				<img src="pages/tn/tn_10.png" width="76" height="100" class="page-10">
				<img src="pages/tn/tn_11.png" width="76" height="100" class="page-11">
				<span>10-11</span>
				</li>
			<li class="d">
				<img src="pages/tn/tn_12.png" width="76" height="100" class="page-12">
				<img src="pages/tn/tn_13.png" width="76" height="100" class="page-13">
				<span>12-13</span>
				</li>
			<li class="d">
				<img src="pages/tn/tn_14.png" width="76" height="100" class="page-14">
				<img src="pages/tn/tn_15.png" width="76" height="100" class="page-15">
				<span>14-15</span>
				</li>
			<li class="d">
				<img src="pages/tn/tn_16.png" width="76" height="100" class="page-14">
				<img src="pages/tn/tn_17.png" width="76" height="100" class="page-15">
				<span>16-17</span>
				</li>
			<li class="i">
				<img src="pages/tn/tn_18.png" width="76" height="100" class="page-16">
				<span>18</span>
				</li>
			<ul>
			<div>	</div>
		</div>
	</div>
	</div id="div_fb_w_tail" >
<h1>div_top_fb_tail</h1>
<hr color=blue>
<hr color=white>
<hr color=rec>
<hr color=darkslategray>
<br><br><br><br>
<br><br><br><br>

	<div id="div_toplinks">

<!--		<h1 id="h1_toplinks">h1_toplinks</h1> -->
		<img src="/imgs/btn/btn_jitsi1.png" alt="btn_jitsi"
			onclick="window.open('https://meet.jit.si/ko');return false;"
			height=100 border=0>
		&nbsp &nbsp &nbsp &nbsp 
		<img src="/imgs/btn/btn_zoom.png" alt="btn_zoom"
			onclick="window.open('https://zoom.us');return false;"
			height=50 border=0>
		&nbsp &nbsp &nbsp &nbsp 
		<img src="/imgs/btn/btn_jitsi2.png" alt="btn_zoom"
			onclick="window.open('https://jitsi.org');return false;"
			height=100 border=0>
		<br><br><br><br>
		<hr color=goldenrod>
		<img src="/fb/cards/pages/invite_vip_deutsch.jpg" alt="invite_vip_deutsch"
			onclick="window.open('/fb/cards/pages/zn/zn_invite_vip_deutsch.jpg');return false;"
			height=100 border=0>
		<hr color=goldenrod>
		<br><br><br><br>
		<hr color=linen>
		<img src="/fb/jkwii/pages/1.jpg" alt="fb/neuz"
			onclick="window.open('/fb/jkwii');return false;"
			height=200 border=0>
		&nbsp &nbsp &nbsp &nbsp 
		<img src="/imgs/links/missioncontinues.jpg" alt="missioncontinues.org"
			onclick="window.open('https://missioncontinues.org');return false;"
			height=100 border=0>
		&nbsp &nbsp &nbsp &nbsp 
		<img src="/imgs/links/woodson.jpg" alt="woodsoncenter.org"
			onclick="window.open('https://woodsoncenter.org');return false;"
			height=100 border=0>
		&nbsp &nbsp &nbsp &nbsp 
		<img src="https://img.youtube.com/vi/89Vpqm2IaPE/default.jpg"
			onclick="window.open('https://www.youtube.com/watch?v=89Vpqm2IaPE');return false;"
			alt="jordan_peterson_howtosell"
			height=100 border=0>
		&nbsp &nbsp &nbsp &nbsp 
		<img src="https://img.youtube.com/vi/-5RCmu-HuTg/default.jpg"
			onclick="window.open('https://www.youtube.com/watch?v=-5RCmu-HuTg');return false;"
			alt="jordan_peterson_12_rules_of_life"
			height=100 border=0>
		&nbsp &nbsp &nbsp &nbsp 
		<img src="/imgs/links/trey_gowdy-doesnt_hurt2ask.jpg" alt="trey_goudy-doesnt_hurt2ask"
			onclick="window.open('https://www.treygowdy.com/doesnt-hurt-to-ask');return false;"
			height=100 border=0>
		&nbsp &nbsp &nbsp &nbsp 
		<br><br><br><br>
		<hr color=linen>
		<hr color=darkslategrey>
		<hr color=linen>
		<img src="/fb/neuz/pages/1.jpg" alt="fb/neuz"
			onclick="window.open('/fb/neuz');return false;"
			height=200 border=0>
		&nbsp &nbsp &nbsp &nbsp 
<!--
		<img src="/fb/neuz/pages/neuz_20200628_lawyers_keepmoving.jpg" alt="fb/neuz"
			onclick="window.open('https://www.dailymail.co.uk/news/article-8467075/St-Louis-couple-point-firearms-protesters-outside-home-marching-demand-mayors-resignation.html');return false;"
			height=200 border=0>
	-->

		<img src="/imgs/private_street_mccloskey.jpg" alt="private_street_mccloskey"
onclick="window.open('https://www.zerohedge.com/political/gun-toting-st-louis-lawyers-defend-mansion-blm-protesters-viral-video');return false;"
			height=200 border=0>
		&nbsp &nbsp &nbsp &nbsp 
		<img src="/imgs/links/stltoday_20200712_portlandplace_couple_history_not_backing_down.jpg"
			alt="stltoday_20200712_portlandplace_couple_history_not_backing_down"
onclick="window.open('https://www.stltoday.com/news/local/metro/portland-place-couple-who-confronted-protesters-have-a-long-history-of-not-backing-down/article_281d9989-373e-53c3-abcb-ecd0225dd287.html?utm_source=digg');return false;"
			height=200 border=0>
		&nbsp &nbsp &nbsp &nbsp 
		<img src="/kb/jtfdcr/vid/jtfdc_stalkarounds/alex_salvi_twitter_private_street.jpg" alt="alex_salvi_twitter_private_street.jpg"
onclick="window.open('/kb/jtfdcr/vid/jtfdc_stalkarounds/alex_salvi_twitter_private_street.mp4');return false;"
			height=150 border=0>
		&nbsp &nbsp &nbsp &nbsp 
<br><br><br><br>
<hr color=golenrod>
<h1>jtfdcr JamesTownFarms Deffords Court Report</h1>
<h2>pano_jtfdcr  gopher_crosswalkers fox_crosswalker bambi_crosswalkers </h2>
<hr color=golenrod>


<!--	<img src="/fb/jtfdcr/imgs/jtfdc_20200704_0000_gazibo_privatedrive_keepout_IMG_9434.png" -->
	<img src="/imgs/links/gazibo.png"
		onclick="window.open('/imgs/links/gazibo.png');return false;"
		alt="jtfdc_20200704_0000_gazibo_privatedrive_keepout_IMG_9434.png"
		height=200 border=0>




		<img src="/imgs/links/pano_courtyard1.jpg" " alt="pano_courtyard1"
onclick="window.open('/index_pn.html');return false;"
			height=200 border=0>
		&nbsp &nbsp &nbsp &nbsp 
		<img src="/fb/jtfdcr/pages/2.jpg" alt="private_court_jtfdc"
onclick="window.open('/fb/jtfdcr');return false;"
			height=200 border=0>
		<img src="/fb/jtfdcr/pages/3.jpg" alt="private_court_jtfdc"
onclick="window.open('/fb/jtfdcr');return false;"
			height=200 border=0>
		<br><br>
		<img src="/kb/jtfdcr/vid/jtfdc_stalkarounds/Jtfdc_20200714_0757_3gophers_IMG_9331.gif"
			alt="Jtfdc_20200714_0757_3gophers_IMG_9331"
			onclick="window.open('/kb/jtfdcr/vid/jtfdc_stalkarounds/Jtfdc_20200714_0757_3gophers_IMG_9331.mp4');return false;"
			height=100 border=0>
		&nbsp &nbsp &nbsp &nbsp 
		<img src="/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200714_0633_fox_IMG_9325.gif"
			alt="jtfdc_20200713_jtfdc_20200714_0633_fox_IMG_9325"
			onclick="window.open('/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200714_0633_fox_IMG_9325.mp4');return false;"
			height=100 border=0>
		&nbsp &nbsp &nbsp &nbsp 
		<img src="/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200712_1859_deer_bambis3_IMG_9259.gif"
onclick="window.open('/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200712_1859_deer_bambis3_IMG_9259.mp4');return false;"
		alt="jtfdc_20200712_1859_deer_bambis3_IMG_9259"
			height=100 border=0>
		&nbsp &nbsp &nbsp &nbsp 
<!--
		<img src="/kb/jtfdcr/vid/jtfdc_stalkarounds/alex_salvi_twitter_private_street.jpg" alt="alex_salvi_twitter_private_street.jpg"
onclick="window.open('/kb/jtfdcr/vid/jtfdc_stalkarounds/alex_salvi_twitter_private_street.mp4');return false;"
			height=150 border=0>
		&nbsp &nbsp &nbsp &nbsp 
	-->

<br><br>
		&nbsp &nbsp &nbsp &nbsp 



		<br><br><br><br>
		<hr color=darkslategray>
		<img src="/fb/who2jail/pages/1.jpg" alt="who2jail"
onclick="window.open('/fb/who2jail');return false;"
			height=200 border=0>

<br>
<hr color=darkslategray>
<h2>jtf32_donutvanlaw_direction_n_taking</h2>
&nbsp &nbsp
<img src="/fb/jtfdcr/imgs/eagle_sIMG_1703.jpg" alt="eagle_sIMG_1703" height=200 border=0>
&nbsp &nbsp
<img src=/fb/jtfdcr/pages/IMG_7640.png onclick="window.open('/fb/jtfdcr/pages/IMG_7640.png');return false;" height=200>
&nbsp &nbsp
	<img src="/fb/jtfdcr/imgs/jtfdc_20150608_eagle_stealn_streetgangIMG_1743.jpg"
		alt="jtfdc_20150608_eagle_stealn_streetgangIMG_1743"
onclick="window.open('/fb/jtfdcr/imgs/jtfdc_20150608_eagle_stealn_streetgangIMG_1743.jpg'); return false;"
		height=200 border=0>
&nbsp &nbsp
	<img src="/fb/jtfdcr/imgs/jtfdc_20150608_eagle_s_gone_abuttment_nonmaintIMG_1731.jpg"
		alt="jtfdc_20150608_eagle_s_gone_abuttment_nonmaintIMG_1731.jpg"
onclick="window.open('/fb/jtfdcr/imgs/jtfdc_20150608_eagle_s_gone_abuttment_nonmaintIMG_1731.jpg');return false;"
		height=200 border=0>



	<img src="/imgs/btn/btn_pdf1.png" alt="email_cohen_restraints_jtf32_joann_donovan_took" class="class_btn_pdf"
onclick="window.open('/pdf/web/viewer.html?file=/fb/emails/pdf/email_cohana_restraints.pdf');return false;"
		height=200 border=0>
<br>
<hr color=darkslategray>
<h2>jtf39_byrds_trespass_n_taking</h2>
		<img src="/fb/jtfdcr/imgs/IMG_5909.JPG" alt="byrdstaking"
onclick="window.open('/fb/jtfdcr/imgs/IMG_5909.JPG');return false;"
			height=200 border=0>
	&nbsp &nbsp &nbsp &nbsp
	<img src="/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200723_0814_stalkaroundup_orange_motorcycle_byrdlike_guy_IMG_9965.jpg"
		alt="jtfdc_20200723_0814_stalkaroundup_orange_motorcycle_byrdlike_guy"
		
onclick="window.open('/kb/jtfdcr/vid/jtfdc_stalkarounds/tn_jtfdc_20200723_0814_stalkaroundup_orange_motorcycle_byrdlike_guy_IMG_9965.mp4');return false;"
		height=200 border=0>
<img src="/fb/jtfdcr/imgs/jtfdc_20200723_0814_stalkaroundup_orange_motorcycle_byrdlike_guy_IMG_9965.JPG"
alt="/fb/jtfdcr/imgs/jtfdc_20200723_0814_stalkaroundup_orange_motorcycle_byrdlike_guy_IMG_9965"
onclick="window.open('/fb/jtfdrc/imgs/jtfdc_20200723_0814_stalkaroundup_orange_motorcycle_byrdlike_guy_IMG_9965.jpg');return false;"
<hr color=darkslategray>
<h2>jtf30_private_drive_no_trespass_sign_treegone_gazibo_back</h2>
		<img src="/fb/jtfdcr/imgs/IMG_6212.JPG" alt="jtf30_private_drive_no_trespassing_sign_treegone_gazibo_back"
onclick="window.open('/fb/jtfdcr/imgs/IMG_6212.JPG');return false;"
			height=200 border=0>
<!--	<img src="/fb/jtfdcr/imgs/jtf30_hastlecastledorfer_IMG_9437.jpg" -->
<!--	<img src="/fb/jtfdcr/imgs/jtf30_Christiantdd.jpg" -->
<!--		onclick="window.open('/fb/jtfdcr/imgs/jtf30_Christiantdd.jpg');return false;" -->
	<img src="/fb/jtfdcr/imgs/clever-and-do-rite-donuts-cycling-kit-1500127555.jpg"
		alt="/fb/jtfdcr/imgs/clever-and-do-rite-donuts-cycling-kit-1500127555.jpg"
		onclick="window.open('/fb/jtfdcr/imgs/clever-and-do-rite-donuts-cycling-kit-1500127555.jpg');return false;"
			height=200 border=0>
		<img src="/fb/jtfdcr/imgs/IMG_6212_tree.JPG" 
			alt="jtf30_private_drive_no_trespassing_sign_treegone"
			onclick="window.open('/fb/jtfdcr/imgs/IMG_6212_tree.JPG');return false;"
			height=200 border=0>
	<img src="/fb/jtfdcr/imgs/clever-and-do-rite-donuts-cycling-kit-1500127555.jpg"
		alt="/fb/jtfdcr/imgs/jtf30_hastlecastledorfer_IMG_9437.jpg"
		onclick="window.open('/fb/jtfdcr/imgs/jtf30_Christiantdd.jpg');return false;"
			height=200 border=0>
	<img src="/fb/jtfdcr/imgs/jtfdc_20200704_0000_privatedrive_notrespassing_IMG_9437.jpg"
		alt="jtfdc_20200704_0000_privatedrive_notrespassing_IMG_9437.jpg"
		onclick="window.open('/fb/jtfdcr/imgs/jtfdc_20200704_0000_privatedrive_notrespassing_IMG_9437.jpg');return false;"
		height=200 border=0>
	<br>
	<hr color=red>
	<img src="/fb/jtfdcr/pages/jtfdc_keepout_covd19.jpg" 
		alt="/fb/jtfdcr/pages/jtfdc_keepout_covd19.jpg"
		onclick="window.open('/fb/jtfdcr/pages/jtfdc_keepout_covd19.jpg');return false;" 
		height=100 border=0 >
	<img src="/fb/jtfdcr/imgs/IMG_5611_jtfdc_original_notrespassing_willbeprosecuted.jpg"
		alt="/fb/jtfdcr/imgs/IMG_5611_jtfdc_original_notrespassing_willbeprosecuted.jpg"
		onclick="window.open('/fb/jtfdcr/imgs/IMG_5611_jtfdc_original_notrespassing_willbeprosecuted.jpg'); return false;"
		height=100 border=0 >
	<br>
<hr color=darkslategray>
	<img src="/fb/jtfdcr/imgs/stalkaround_trafficparadeIMG_2030.jpg"
		alt="/fb/jtfdcr/imgs/stalkaround_trafficparadeIMG_2030.jpg"
	onclick="window.open('/fb/jtfdcr/imgs/stalkaround_trafficparadeIMG_2030.jpg');return false;"
			height=100 border=0>
	<img src="/fb/jtfdcr/imgs/jtfinc_new_biggarbagetrucksIMG_1915.jpg"
		alt="jtfinc_new_biggarbagetrucksIMG_1915.jpg"
	onclick="window.open('/fb/jtfdcr/imgs/jtfinc_new_biggarbagetrucksIMG_1915.jpg');return false;"
			height=100 border=0>

	<img src="/fb/jtfdcr/imgs/jtfdc_20150615_jtf32_donutvanlaw_stalkaround_teamIMG_2226.jpg"
		alt="jtfdc_20150615_jtf32_donutvanlaw_stalkaround_teamIMG_2226"
	onclick="window.open('/fb/jtfdcr/imgs/jtfdc_20150615_jtf32_donutvanlaw_stalkaround_teamIMG_2226.jpg');return false;"
			height=100 border=0>
	<img src="/fb/jtfdcr/imgs/paityn_IMG_2227.jpg"
		alt="paityn_IMG_2227.jpg"
	onclick="window.open('/fb/jtfdcr/imgs/paityn_IMG_2227.jpg');return false;"
			height=100 border=0>
	<img src="/fb/jtfdcr/imgs/jtfdc_stalkaround_clownvanIMG_2733.jpg"
		alt="jtfdc_stalkaround_clownvanIMG_2733"
	onclick="window.open('/fb/jtfdcr/imgs/jtfdc_stalkaround_clownvanIMG_2733.jpg');return flase;"
			height=100 border=0>
	<img src="/fb/jtfdcr/imgs/slow_drivewyIMG_2616.jpg"
		alt="slow_drivewyIMG_2616"
	onclick="window.open('/fb/jtfdcr/imgs/slow_drivewyIMG_2616.jpg');return false;"
			height=100 border=0>
	<img src="/fb/jtfdcr/imgs/jtfdc_201506_jtf32_donutvanlaw_stalkaroundtrucksIMG_2280.jpg"
		alt="jtfdc_201506_jtf32_donutvanlaw_stalkaroundtrucksIMG_2280"
	onclick="window.open('/fb/jtfdcr/imgs/jtfdc_201506_jtf32_donutvanlaw_stalkaroundtrucksIMG_2280.jpg');return false;"
			height=100 border=0>
	<img src="/fb/jtfdcr/imgs/jtfinc_pothole_IMG_2867.jpg"
		alt="jtfinc_pothole_IMG_2867"
	onclick="window.open('jtfinc_pothole_IMG_2867.jpg');return false;"
			height=100 border=0>
		<br>
		<hr color=goldenrod>
		<hr color=goldenrod>
		<img src="/fb/neuz/snap_20200703/snap_20200201_35926.png" alt="who2jail"
onclick="window.open('https://www.dailymail.co.uk/news/article-8487161/Bipolar-man-29-waved-sword-inside-home-died-cardiac-arrest-cops-used-Taser-him.html');return false;"
			height=200 border=0>
		&nbsp &nbsp &nbsp &nbsp 
		<img src="/fb/neuz/snap_20200703/snap_20200201_35920.png" alt="who2jail"
onclick="window.open('https://www.dailymail.co.uk/news/article-8486527/Two-Oklahoma-cops-tazered-naked-man-50-times.html');return false;"
			height=200 border=0>
		&nbsp &nbsp &nbsp &nbsp 
		<img src="/fb/neuz/snap_20200703/snap_20200201_35915.png" alt="who2jail"
onclick="window.open('https://www.dailymail.co.uk/news/article-8484183/Video-shows-white-woman-pulling-gun-Blacks-Michigan.html');return false;"
			height=200 border=0>


		&nbsp &nbsp &nbsp &nbsp 
		<img src="/fb/neuz/snap_20200703/snap_20200201_37513.jpg" alt="covid_elevator_assault"
onclick="window.open('https://www.dailymail.co.uk/news/article-8485349/Man-72-arrested-pushing-86-year-old-elevator-saying-did-protect-against-virus.html'); return false;"
			height=200 border=0>
		<br>
		<hr color=goldenrod>
		<br>
		<img src="/fb/jtfdcr/imgs/dailymail_hero_brother6_sister.jpg" 
			alt=" hero_borther6_n_sister"
onclick="window.open('/fb/jtfdcr/imgs/dailymail_hero_brother6_sister');return false;"
			height=200 border=0>
		&nbsp &nbsp &nbsp &nbsp
		<img src="/fb/jtfdcr/imgs/dailymail_hl_hero_brother6_dog_mauled_saves_sister.jpg" 
			alt=" hero_borther6_dog_mauled_saves_sister"
onclick="window.open('https://www.dailymail.co.uk/news/article-8526059/Anne-Hathaway-heaps-praise-Wyoming-boy-6-mauled-dog-attacked-sister.html');return false;"
			height=200 border=0>
		&nbsp &nbsp &nbsp &nbsp
		<img src="/fb/jtfdcr/imgs/jtfdc_kids3_fronthalf.jpg" 
			alt=" jtfdc_kids3_front"
onclick="window.open('/fb/jtfdcr/imgs/jtfdc_kids3_fronthalf.jpg');return false;"
			height=200 border=0>
		&nbsp &nbsp &nbsp &nbsp
		<img src="/fb/jtfdcr/animalcontrol/pages/1.jpg"
			alt="/fb/jtfdcr/animalcontrol/"
			onclick="window.open('/fb/jtfdcr/animalcontrol');return false;"
			height=200 border=0>
		<br>
		<hr color=goldenrod>
	<h1>jtf32_donutvanlaw big dog leash waivers</h1>
	<h2>big dogs need to keep thier pet owners on a short lease</h2>
	<h3>holidays jtfdc_20170529_memorialday woof</h3>
<!--
	<a href="/kb/jtfdcr/vid/jtfdc_20170529_memorialday_tiny/tn_jtfdc_20170529_0703_00028_memorialday_jkwii_jtf30_doogy.mp4" target=_blank>
		<img src="/kb/jtfdcr/vid/jtfdc_20170529_memorialday_tiny/jtfdc_20170529_0703_00028_memorialday_jkwii_jtf30_doogy.png"
			alt="jtfdc_20170529_0703_00028_memorialday_jkwii_jtf30_doogy.png"
			height=100 border=0>
		</a>
	-->

	<a href="/fb/law/dogs/#page/63" target=_blank>
		<img src="/fb/law/dogs/pages/1.jpg" alt="/fb/law/dogs/pages/63.jpg"
			height=100 border=0>
		</a>
	<a href="/holidays.html?id=jtfdc_20170529_memorialday" target=_blank>
		<img src="/kb/jtfdcr/vid/jtfdc_20170529_memorialday_tiny/jtfdc_20170529_0640_00001_memorialday_jkwii_jtf30_doogy.png"
			alt="/kb/jtfdcr/vid/jtfdc_20170529_memorialday_tiny/tn_jtfdc_20170529_0640_00001_memorialday_jkwii_jtf30_doogy"
			height=200 border=0>
		</a>
	<img src="/fb/jtfdcr/imgs/chalkmail_jtfdcr_online_soonIMG_2617.jpg"
		alt="chalkmail_jtfdcr_online_soonIMG_2617.jpg"
	onclick="window.open('chalkmail_jtfdcr_online_soonIMG_2617.jpg');return false;"
			height=100 border=0>
	<img src="/fb/jtfdcr/imgs/IMG_1621.jpg"
			alt="private_property_violators_willnot_be_prosecuted_IMG_1621"
		onclick="window.open('/fb/jtfdcr/imgs/IMG_1621.jpg');return false;"
			height=100 border=0>

		<img src="/fb/law/dogs/imgs/IMG_6070.jpg" alt="/fb/law/dogs/imgs/IMG_6070"
			onclick="windot.open('/fb/law/dogs/imgs/IMG_6070.jpg');return false;"
			height=100 border=0>
		<img src="/fb/law/dogs/imgs/IMG_0370.JPG" alt="/fb/law/dogs/imgs/IMG_0370.jpg"
			onclidk="window.open('/fb/law/dogs/imgs/IMG_0370.JPG');return false;"
			height=100 border=0>
<img src="/fb/law/dogs/imgs/IMG_6006.jpg" alt="/fb/law/dogs/imgs/IMG_6006.jpg"
			onclick="window.open('/fb/law/dogs/imgs/IMG_6006.jpg');"
			height=100 border=0>
<img src="/fb/law/dogs/imgs/pg_IMG_6623.jpg" alt="/fb/law/dogs/imgs/pg_IMG_6623.jpg"
			onclick="window.open('/fb/law/dogs/imgs/pg_IMG_6623.jpg');"
			height=100 border=0>
<img src="/fb/law/dogs/imgs/pg_IMG_3202.jpg" alt="/fb/law/dogs/imgs/pg_IMG_3202.jpg"
			onclick="window.open('/fb/law/dogs/imgs/pg_IMG_3202.jpg');"
			height=100 border=0>
<img src="/fb/law/dogs/imgs/jtfdc_20170527_fiona_attacking_stillonleash.jpg" alt="/fb/law/dogs/imgs/jtfdc_20170527_fiona_attacking_stillonleash.jpg"
			onclick="window.open('/fb/law/dogs/imgs/jtfdc_20170527_fiona_attacking_stillonleash.jpg');"
			height=100 border=0>
<img src="/fb/law/dogs/imgs/jtfdc_20170610_byrds_dogsit_nxtdoorneighbor_doogy_in_our_yard_IMG_8242.jpg" alt="/fb/law/dogs/imgs/jtfdc_20170610_byrds_dogsit_nxtdoorneighbor_doogy_in_our_yard_IMG_8242.jpg"
			onclick="window.open('/fb/law/dogs/imgs/jtfdc_20170610_byrds_dogsit_nxtdoorneighbor_doogy_in_our_yard_IMG_8242.jpg');"
			height=100 border=0>
<img src="/fb/law/dogs/imgs/pg_IMG_7892.jpg" alt="/fb/law/dogs/imgs/pg_IMG_7892.jpg"
		onclick="window.open('/fb/law/dogs/imgs/pg_IMG_7892.jpg');"
			height=100 border=0>
<img src="/fb/law/dogs/imgs/IMG_0388.JPG" alt="/fb/law/dogs/imgs/IMG_0388.JPG"
		onclick="window.open('/fb/law/dogs/imgs/IMG_0388.JPG');"
			height=100 border=0>
<img src="/fb/law/dogs/imgs/pg_IMG_3203.jpg" alt="/fb/law/dogs/imgs/pg_IMG_3203.jpg"
		onclick="window.open('/fb/law/dogs/imgs/pg_IMG_3203.jpg');"
			height=100 border=0>
<img src="/fb/law/dogs/imgs/pg_jtf31_fiona_autonoumus_patrol.jpg" alt="/fb/law/dogs/imgs/pg_jtf31_fiona_autonoumus_patrol.jpg"
		onclick="window.open('/fb/law/dogs/imgs/pg_jtf31_fiona_autonoumus_patrol.jpg');"
			height=100 border=0>
<img src="/fb/law/dogs/imgs/pg_jtf39_baily_autonomous_patrol.jpg" alt="/fb/law/dogs/imgs/pg_jtf39_baily_autonomous_patrol.jpg"
		onclick="window.open('/fb/law/dogs/imgs/pg_jtf39_baily_autonomous_patrol.jpg')"
			height=100 border=0>
<img src="/fb/law/dogs/imgs/pg_screenshot_24090.jpg" alt="/fb/law/dogs/imgs/pg_screenshot_24090.jpg"
		onclick="window.open('/fb/law/dogs/imgs/pg_screenshot_24090.jpg');"
			height=100 border=0>
<img src="/fb/law/dogs/imgs/pg_screenshot_24118.jpg" alt="/fb/law/dogs/imgs/pg_screenshot_24118.jpg"
		onclick="window.open('/fb/law/dogs/imgs/pg_screenshot_24118.jpg');"
			height=100 border=0>
<img src="/fb/law/dogs/imgs/pg_IMG_7042.jpg" alt="/fb/law/dogs/imgs/pg_IMG_7042.jpg"
		onclick="window.open('/fb/law/dogs/imgs/pg_IMG_7042.jpg')"
			height=100 border=0>

<img src="/fb/law/dogs/imgs/pg_IMG_7856.jpg" alt="/fb/law/dogs/imgs/pg_IMG_7856.jpg"
		onclick="window.open('/fb/law/dogs/imgs/pg_IMG_7856.jpg');"
			height=100 border=0>
	<img src="/fb/jtfdcr/imgs/20150624_1345_jtf38_segrists_tresspass_elvis2IMG_2200.jpg"
		alt="20150624_1345_jtf38_segrists_tresspass_elvis2IMG_2200"
		onclick="window.open('/fb/jtfdcr/imgs/20150624_1345_jtf38_segrists_tresspass_elvis2IMG_2200.jpg');return false;"
			height=100 border=0>
<img src="/fb/law/dogs/imgs/pg_screenshot_24032.jpg" alt="/fb/law/dogs/imgs/pg_screenshot_24032.jpg"
		onclick="window.open('/fb/law/dogs/imgs/pg_screenshot_24032.jpg');"
			height=100 border=0>
		<hr color=goldenrod>
		<br><br><br><br>
		<hr color=black>
	<br>
	<hr color=brown>
	<hr color=orange>
	<div id="div_oklahoma">
		<h1>oklahoma in action</h1>
		<h2>oklahoma4indians</h2>
		<img src="https://img.youtube.com/vi/VR42iYGtEAc/default.jpg" alt="yt_oklahoma4indians"
			onclick="window.open('https://www.youtube.com/watch?v=VR42iYGtEAc');return false;"
			height=200 border=0>
		&nbsp &nbsp &nbsp &nbsp 
		<img src="/imgs/links/dailymail_oklahoma4indians.jpg" alt="dailymail_oklahoma4indians"
			onclick="window.open('https://www.dailymail.co.uk/news/article-8506705/Justices-rule-swath-Oklahoma-remains-tribal-reservation.html');return false;"
			height=200 border=0>
		&nbsp &nbsp &nbsp &nbsp 
		<img src="/imgs/links/thehill_oklahoma4indians.jpg" alt="thehill_oklahoma4indians"
			onclick="window.open('https://thehill.com/homenews/state-watch/506548-supreme-court-rules-that-large-swath-of-oklahoma-belongs-to-indian');return false;"
			height=100 border=0>
		<br><br>
		<img src="/imgs/links/growwarehouse.jpg" alt="growwarehouse"
			onclick="window.open('https://www.growwarehouse.com/');return false;"
			height=100 border=0>
		&nbsp &nbsp &nbsp &nbsp
		<img src="/fb/konabus/pages/1.jpg" alt="konabus"
			onclick="window.open('/fb/konabus/');return false;"
			height=100 border=0>
		</div>
	<hr color=brown>
	<hr color=orange>
	
	<br><br><br><br>

	<div id="div_media" >
		<hr color=blue>
		<hr color=white>
		<hr color=red>
		<h1>div_media</h1>

<img src="/kb/vid/jkwii/jtfdcwillie_lukas_micah_nelson_promised_land_12_31_15.png"
alt="/kb/vid/jkwii/jtfdcwillie_lukas_micah_nelson_promised_land_12_31_15.png"
onclick="window.open('/kb/vid/jkwii/jtfdcwillie_lukas_micah_nelson_promised_land_12_31_15.mp4');return false;"
			height=200 border=0 >  




		<br><br><br><br>
<img src="/kb/vid/jkwii/god_bless_america_amazing_guitar_solo.jpg"
alt="/kb/vid/jkwii/god_bless_america_amazing_guitar_solo.jpg"
onclick="window.open('/kb/vid/jkwii/god_bless_america_amazing_guitar_solo.mp4');return false;"
		height=100 >
		<img src="https://img.youtube.com/vi/uja4SHnfogo/default.jpg"
			alt="waits_time_guitar"
onclick="window.open('https://www.youtube.com/watch?v=uja4SHnfogo');return false;"
				); return false;"
			height=100 border=0 >  
		&nbsp &nbsp &nbsp &nbsp

		<img src="https://img.youtube.com/vi/nqlhx-t-kXo/default.jpg"
			alt="jsondara_god_bless_america"
onclick="window.open('https://www.youtube.com/watch?v=nqlhx-t-kXo');return false;"
				); return false;"
			height=100 border=0 >  
		&nbsp &nbsp &nbsp &nbsp

		<img src="https://img.youtube.com/vi/qJJT-p_sYw0/default.jpg"
			alt="cohen_land_of_plenty"
onclick="window.open('https://www.youtube.com/watch?v=qJJT-p_sYw0');return false;"
				); return false;"
			height=100 border=0 >  
		&nbsp &nbsp &nbsp &nbsp

<br><br><br><br>
<hr color=darkslategray>
<img src="/kb/vid/jkwii/waits_time_lautern.jpg"
alt="/kb/vid/jkwii/waits_time_lautern.jpg"
onclick="window.open('/kb/vid/jkwii/waits_time_lautern.mp4');return false;"
		height=100 >
<img src="/kb/vid/jkwii/leonard_cohen_land_of_plenty_lyrics.jpg"
alt="/kb/vid/jkwii/leonard_cohen_land_of_plenty_lyrics.jpg"
onclick="window.open('/kb/vid/jkwii/leonard_cohen_land_of_plenty_lyrics.mp4');return false;"
		height=100 >

<img src="/kb/vid/jkwii/rodriquez_sandrevan_Lullaby.jpg"
alt="/kb/vid/jkwii/rodriquez_sandrevan_Lullaby.jpg"
onclick="window.open('/kb/vid/jkwii/rodriquez_sandrevan_Lullaby.mp4');return false;"
		height=100 >
<img src="/kb/vid/jkwii/leonard_cohen_webbsisters-if_it_be_your_will_live.jpg"
alt="/kb/vid/jkwii/leonard_cohen_webbsisters-if_it_be_your_will_live.jpg"
onclick="window.open('/kb/vid/jkwii/leonard_cohen_webbsisters-if_it_be_your_will_live.mp4');return false;"
		height=100 >






		<hr color=blue>
		<hr color=white>
		<hr color=red>
		</div>


	<div id="div_reindependenceday" >

		</div>
	<div id="div_anniversary" >

<hr color=red>
<hr color=white>
<hr color=blue>
<h1>reindependence day 2020</h1>
<hr color=blue>
<hr color=white>
<hr color=red>




<br><br><br><br>
		</div>
\
	<div id="div_turbulence" >

		</div>



	<script id="script_media" >
		function media(args) {

var list = `
https://www.youtube.com/watch?v=nf8ZAMRO1DU|flintstones_happy_anniversary
https://www.youtube.com/watch?v=qJJT-p_sYw0|cohen_land_of_plenty
https://www.youtube.com/watch?v=CrDtrHaozfs|cohen_got_me_singing
https://www.youtube.com/watch?v=vhXz-OTmrAE|cohen_got_me_singing_live
https://www.youtube.com/watch?v=KHxT-Aa4Q_A|cohen_got_me_singing_seashore
https://www.youtube.com/watch?v=ViRdiIHyT6Q|webbsisters_come_healing
https://www.youtube.com/watch?v=nqlhx-t-kXo|jsondara_god_bless_america
https://www.youtube.com/watch?v=WchPdy7jHZ4|jsondara_saying_goodby
https://www.youtube.com/watch?v=9ZArxjAl80o|jsondara_american_dream
https://www.youtube.com/watch?v=MMq4A6Tk0a0|jsondara_lebonon
https://www.youtube.com/watch?v=36tO5sOQaks|cohen_lulluby_blue
https://www.youtube.com/watch?v=nDaJpl8jrW8|waits_time_couple
https://www.youtube.com/watch?v=uja4SHnfogo|waits_time_guitar
https://www.youtube.com/watch?v=09gJX0Cc6p0|elise_iponema
https://www.youtube.com/watch?v=Gl9GtO_vQxw|elise_trow_mashup
https://www.youtube.com/watch?v=LtnYpPsgBxM|elise_trow_burn
https://www.youtube.com/watch?v=u9lAIvLosyg|elise_trow_meetpolice
https://www.youtube.com/watch?v=8UOf6kngJGw|otisreading_dreams2remember_cpl
https://www.youtube.com/watch?v=3Qf_aytrlpQ|bethjoe_strange_fruit
https://www.youtube.com/watch?v=j_cGtRMK-7Y|lenox_strange_fruit
`;
			alert( "MEDIA list="+list );
			return(list);
			}
		</script>











<hr color=blue>
<hr color=white>
<hr color=red>
<br><br><br><br>
<hr color=darkslategrey>
<hr color=darkslategrey>
<hr color=darkslategrey>
<h1>donutvanlaw tour_de_donut 7 year takings all took</h1>
<hr color=darkslategrey>

		<img src="/imgs/donutvanlaw_cheatsheet.jpg" alt="cheatsheet_donutvanlaw"
onclick="window.open('/imgs/donutvanlaw_cheatsheet.jpg');return false;"
			height=150 border=0>
		&nbsp &nbsp &nbsp &nbsp 
		<img src="/fb/law/pages/zn/zn_10.jpg" alt="jtfdcr"
onclick="window.open('/fb/law/pages/zn/zn_10.jpg');return false;"
			height=150 border=0>
		&nbsp &nbsp &nbsp &nbsp 
		<img src="/jtfdcr.jpg" alt="jtfdcr"
onclick="window.open('/jtfdcr.jpg');return false;"
			height=150 border=0>
		&nbsp &nbsp &nbsp &nbsp 


		<img src="/kb/books/intl/ein_hundes_leben/ein_hundeleben_00.jpg" alt="ein_hundes_leben"
onclick="window.open('/sl/index_sl_kb-intl-ein_hundes_leben.html');return false;"
			height=150 border=0>
		&nbsp &nbsp &nbsp &nbsp 
		<br><br><br><br>
		<img src="/imgs/links/lawdonovan.png" alt="lawdonovan"
onclick="window.open('lawdonovan.com');return false;"
			height=100 border=0>
		&nbsp &nbsp &nbsp &nbsp 

		<img src="/imgs/links/bebikeclub.jpg" alt="bebikeclub"
onclick="window.open('https://www.bebikeclub.org/tourdedonut');return false;"
			height=100 border=0>
		&nbsp &nbsp &nbsp &nbsp 

		<img src="/imgs/links/tourdedonut.jpg" alt="tourdedonut"
onclick="window.open('http://www.tourdedonut.org/index.html');return false;"
			height=100 border=0>
		&nbsp &nbsp &nbsp &nbsp 

		<img src="/imgs/links/oldtowndonuts.png" alt="oldtowndonuts"
onclick="window.open('https://oldtowndonuts.com');return false;"
			height=100 border=0>
		<br> <br> <br> <br>
		<hr color=black>
		<hr color=black>
		<hr color=yellow>
		<hr color=yellow>
		<h1>tour_de_france_2020</h1>
		<hr color=yellow>
		<img src="/imgs/links/steephill_tourdefrance.jpg"
			onclick="window.open('http://www.steephill.tv/tour-de-france');return false;"
			alt="tour_de_france"
			height=100 border=0>
		&nbsp &nbsp &nbsp &nbsp 
		<img src="https://img.youtube.com/vi/2Jyp0mDQc-U/default.jpg"
			onclick="window.open('https://www.youtube.com/watch?v=2Jyp0mDQc-U');return false;"
			alt="tour_de_france_stage3_5hrs"
			height=100 border=0>
		&nbsp &nbsp &nbsp &nbsp 
		<img src=" https://img.youtube.com/vi/BGfGAlhlldo/default.jpg"
			onclick="window.open('https://www.youtube.com/watch?v=BGfGAlhlldo');return false;"
			alt="tour_de_france_stage3_8hrs"
			height=100 border=0>
		&nbsp &nbsp &nbsp &nbsp 
		<img src="https://img.youtube.com/vi/BsILr0bxFlk/default.jpg"
			onclick="window.open('https://www.youtube.com/watch?v=BsILr0bxFlk');return false;"
			alt="tour_de_france"
			height=100 border=0>
		&nbsp &nbsp &nbsp &nbsp 
		<hr color=yellow>
		<hr color=yellow>
		<hr color=black>
		<hr color=black>


		<hr color=linen>
		<img src="/fb/jkwii/pages/1.jpg" alt="jkwii"
			onclick="window.open('/fb/jkwii');return false;"
			height=200 border=0>
		&nbsp &nbsp &nbsp &nbsp 
		<img id="zm_takings_all_took" src="/fb/law/jkwiiv_byrdbell/zm/donutvanlaw_takings/TileGroup0/0-0-0.jpg" onclick="window.open('/fb/law/jkwiiv_byrdbell/zm/zm_donutvanlaw_takings.html');return false;" height=200 border=0 draggable="true">
		&nbsp &nbsp &nbsp &nbsp
		<img id="zm_img_jtf2930" src="/fb/law/jkwiiv_byrdbell/zm/jtf2930/TileGroup0/0-0-0.jpg " onclick="window.open('/fb/law/jkwiiv_byrdbell/zm/zm_jtf2930.html');return false;" height=200 border=0 draggable="true">
		&nbsp &nbsp &nbsp &nbsp
		<img src="/fb/jtfdc/pages/1.jpg" alt="jtfdc"
onclick="window.open('/fb/jtfdc');return false;"
			height=200 border=0>
		&nbsp &nbsp &nbsp &nbsp 
		<br><br><br><br>
		<img src="/imgs/links/florrisantoldtown.jpg" alt="florissant_oldtown"
onclick="window.open('https://florissantoldtown.com/');return false;"
			height=200 border=0>
		&nbsp &nbsp &nbsp &nbsp 

		<img src="/imgs/links/helfers_pastry_delicafe.jpg" alt="helfers_patry_deli_cafe"
onclick="window.open('https://florissantoldtown.com/directory/helfers-pastries-deli-cafe/'); return false;"
			height=200 border=0>
		&nbsp &nbsp &nbsp &nbsp 



		<img src="/imgs/us/topos.png" alt="topos"
onclick="window.open('https://www.topos-surveying.com/');return false;"
			height=200 border=0>
		&nbsp &nbsp &nbsp &nbsp 
		<img src="/imgs/btn/btn_florissantgarage.png" alt="florissant_garage"
onclick="window.open('https://florissantgarageradiator.com');return false;"
			height=200 border=0>
		&nbsp &nbsp &nbsp &nbsp 
<!--
		<img src="/imgs/btn/btn_patrico_heating_n_cooling.png" alt="patrico_heating_n_cooling"
onclick="window.open('https://www.bbb.org/us/mo/black-jack/profile/heating-and-air-conditioning/patrico-j-heating-cooling-0734-110108872');return false;"
			height=200 border=0>
		&nbsp &nbsp &nbsp &nbsp 
	-->
		<img src="/fb/patrico/pages/1.jpg" alt="patrico_heating_n_cooling"
onclick="window.open('/fb/patrico');return false;"
			height=200 border=0>
		&nbsp &nbsp &nbsp &nbsp 
		<img src="/imgs/links/eckerts.jpg" alt="eckerts"
onclick="window.open('https://www.eckerts.com/grafton-farm');return false;"
			height=200 border=0>
		&nbsp &nbsp &nbsp &nbsp 
		<br>









<!--
		&nbsp &nbsp &nbsp &nbsp
		<img id="img_flood_law" src="/fb/law/pages/zn/zn_10.jpg" onclick="window.open('/fb/law/pages/zn/zn_10.jpg');return false;" height=100 border=0 draggable="true">
		&nbsp &nbsp &nbsp &nbsp
		<img id="img_postturtle_law" src="/jtfdcr.jpg" onclick="window.open('/jtfdcr.jpg');return false;" height=100 border=0 draggable="true">
		&nbsp &nbsp &nbsp &nbsp

		<img src="/imgs/gif/notes/giphy_notes10.gif" alt="notes"
			onclick="window.open('/txt/notes.txt');return false;"
			height=75 border=0>
		&nbsp &nbsp &nbsp &nbsp
		<img src="/imgs/gif/notes/giphy_notes03.gif" alt="ko_saic"
			onclick="window.open('/txt/jtfdcr_mp4.txt');return false;"
			height=75 border=0>
		&nbsp &nbsp &nbsp &nbsp
	-->
		</div>


		<script id="script_blob_audiocontrols_toggle">
			var blob_audiocontrols="";
			function blob_audiocontrols_toggle(args) {
//				alert( "BUGS_1830 args="+args );
//				alert( "BUGS_1834 blob_audiocontrols="+blob_audiocontrols );
				if( document.getElementById('img_blob_audiocontrols_toggle')) {
					if( blob_audiocontrols == "on" ) {
						blob_audiocontrols = "";
						document.getElementById('img_blob_audiocontrols_toggle').src='/imgs/btn/kob.png';
						document.getElementById('blob_audio').controls='false';

//						alert( "BUGS_1841 blob_audiocontrols="+blob_audiocontrols);
						}
					else {
						blob_audiocontrols = "on";
						document.getElementById('img_blob_audiocontrols_toggle').src='/imgs/btn/kow.png';
						document.getElementById('blob_audio').controls='true';
//						alert( "BUGS_1842 blob_audiocontrols="+blob_audiocontrols );
						}
					}
				}
			</script>







		<script id="script_blob_mouseover">
			function blob_mouseover1(args) {
				alert( "BUGS_499 blob_mouseover" );
				}
			function blob_mouseover(args) {
				var id=args;
				var img_id="img_blob"+id;
				if( id==0 ) {alert( "BUGS_500 blob_mouseover_0 img_id="+img_id ); }
//				alert( "BUGS_500 blob_info img_id="+img_id );
//				var src = document.getElemntById('img_blob0').src;
//				alert( "BUGS_501 blob_info src="+src );
////				if( document.getElementById(img_id)) {
//					alert( "BUGS_500 blob_info img_id="+img_id );
//					alert( "BUGS_501 blob_info divcheck img_id="+img_id );
//					document.getElementById(img_id).src="/imgs/btn/koeye_handhither.gif"";
//					}
				return(args);
				}
			</script>

		<script id="script_blob_info">
			function blob_info(args) {
				alert( "BUGS_500 blob_info args="+args );
//    				blobColl = new BlobCollective(1.0, 1.0, 1, 200); 
//				blobColl.split();
//				var blob_len = blobColl.length;
//				alert( "BUGS_501 blob_info blob_len="+blob_len );
//				alert( "BUGS_501 blobcoll0="+blobcoll[0] );
				}
			</script>
		</div>

		<br><br><br><br>
		<hr color=black>
		<hr color=white>
		<img id="img_blob_mute" src="/imgs/sound/ringworm_1.gif" 
			onclick="blob_mute('btn_soundwave_00');return false;" 
			onmouseover="blob_mute('btn_soundwave_00');return false;" 
			height=200 width=300>
		<hr color=white>
		<img id="img_blob_audiocontrols_toggle" src="/imgs/btn/kob.png" onclick="blob_audiocontrols_toggle('');return false;" height=25>
		&nbsp &nbsp &nbsp &nbsp
		<hr color=black>
		<img id="img_blob_sound" hidden src="/imgs/imgs_jukebox/record_04.gif"  
			onclick="blob_sound('img_record_04');return false;" 
			height=200 width=300>
		<br>
<!--
		<img id="img_blob_sound_ringworm" hidden src="/imgs/sound/ringworm_1.gif"  
			onclick="blob_sound('img_sound_ringworm_1');return false;" 
			height=200>
		-->
		<br>
		<hr color=black>
		<hr color=white>
		<hr color=black>
		<div id="div_blob_playlist" hidden>
			<h1>div_blob_playlist</h1>
			</div>
<!--		
		<img id="img_blob_sound" hidden src="/imgs/gif/spacers/giphy_spacer_22.gif"  
		<img id="img_blob_sound" hidden src="/imgs/gif/kali/kalid1.gif"  
		<img id="img_blob_sound" hidden src="/imgs/gif/orbs/godotss.gif"  
		<img id="img_blob_sound" hidden src="/imgs/gif/orbs/kali20.gif"  
		<img id="img_blob_sound" hidden src="/imgs/gif/orbs/orbcryst_alpulse.gif"  
		<img id="img_blob_sound" hidden src="/imgs/gif/orbs/ringcube.gif"  
	-->
<!--		
		<img id="img_blob_sound" hidden src="/imgs/sound/btn_sound.png"  
			onclick="blob_sound('koeyeb_sound');return false;" 
			height=30>
	-->

		<audio id="audio_sound" src="/gm/sounds/bubbles.mp3" preload="auto" muted="true">
			</audio>
		<input id="input_volume" hidden type="range" min="0" max="100" step="1" 
				oninput="SetVolume(this.value);return false;" 
				onchange="SetVolume(this.value); return false;">
				</input>

<hr color=goldenrod>
<hr color=goldenrod>
<hr color=goldenrod>
		<img id="img_mp3_playlist" src="/imgs/sound/btn_sound1.png"  
			alt="mp3_playlist"
			onclick="mp3_playlist('');return false;" 
			height=30>
		<br><br>
		<div id="div_mp3_playlist">
			<h1>div_mp3_playlist</h1>
			</div>

<br><br><br><br>
<hr color=goldenrod>
<hr color=goldenrod>
<hr color=goldenrod>


		<img src="/imgs/btn/btn_hannes_kassil.png"
			alt="hannes_kassil" height=100
onclick="window.open('https://www.kassil.at'); return false;" >

		&nbsp &nbsp &nbsp &nbsp
		<img src="/imgs/btn/btn_habegger.png"
			alt="habegger" height=100
onclick="window.open('https://habegger-austria.at'); return false;" >
		&nbsp &nbsp &nbsp &nbsp

		<img src="/imgs/btn/btn_edrmedia.png"
			alt="edrmedia" height=100
onclick="window.open('http://edrmedia.com/contacts.htm'); return false;" >
		&nbsp &nbsp &nbsp &nbsp
		<img src="/imgs/btn/btn_cfx.png" alt="cfx"
			onclick="window.open('https://cfx-inc.com');return false;"
			height=100 border=0>
		&nbsp &nbsp &nbsp &nbsp
		<img src="/imgs/links/quinn_michaels.jpg" alt="quinn_micheals"
			onclick="window.open('https://quinnmichaels.com/');return false;"
			height=100 border=0>
		&nbsp &nbsp &nbsp &nbsp
<hr color=linen>
<h1>dutch_jackson saint louis sessions</h2>
<hr color=linen>
<img src="/kb/vid/jkwii/dutch_jackson_fresher.jpg"
alt="/kb/vid/dutch/dutch_jackson_fresher.jpg"
onclick="window.open('/kb/vid/jkwii/dutch_jackson_fresher.mp4');return false;"
		height=150 >
&nbsp &nbsp &nbsp &nbsp
&nbsp &nbsp &nbsp &nbsp
&nbsp &nbsp &nbsp &nbsp

	<img src="http://img.youtube.com/vi/lOfZLb33uCg/default.jpg"
		alt="wierd_alyankovic_amish_paridise"
		onclick="window.open('https://www.youtube.com/watch?v=lOfZLb33uCg');return false;"
		height=100 border=0>
&nbsp &nbsp &nbsp &nbsp

	<img src="https://img.youtube.com/vi/N9qYF9DZPdw/default.jpg"
		alt="wierd_alyankovic_white_n_nerdy"
		onclick="window.open('https://www.youtube.com/watch?v=N9qYF9DZPdw');return false;"
		height=100 border=0>


&nbsp &nbsp &nbsp &nbsp
&nbsp &nbsp &nbsp &nbsp
&nbsp &nbsp &nbsp &nbsp
<img src="/kb/vid/jkwii/dutch_jackson_weightup.jpg"
alt="/kb/vid/dutch/dutch_jackson_weightup.jpg"
onclick="window.open('/kb/vid/jkwii/dutch_jackson_weightup.mp4');return false;"
		height=150 >
<br><br>
<hr color=goldenrod>
<h1>micheals reunion sessions</h1>
<br><br>
<img src="/fb/mk/pages/11.jpg" alt="micheals_reunion_sessions_track1"
onclick="window.open('/fb/mk/mp3/track1.mp3');return false;" height=100  border=0>
&nbsp &nbsp &nbsp &nbsp
<img src="/fb/mk/pages/13.jpg" alt="micheals_reunion_sessions_track3_short"
onclick="window.open('/fb/mk/mp3/track3_short.mp3');return false;" height=100  border=0>
&nbsp &nbsp &nbsp &nbsp
<img src="/fb/mk/pages/1.jpg" alt="micheals_reunion_sessions"
onclick="window.open('/fb/mk');return false;" height=200  border=0>
&nbsp &nbsp &nbsp &nbsp
<img src="/fb/mk/pages/14.jpg" alt="micheals_reunion_sessions_track4"
onclick="window.open('/fb/mk/mp3/track4.mp3');return false;" height=100  border=0>
&nbsp &nbsp &nbsp &nbsp
<img src="/fb/mk/pages/15.jpg" alt="micheals_reunion_sessions_track5"
onclick="window.open('/fb/mk/mp3/track5.mp3');return false;" height=100  border=0>
&nbsp &nbsp &nbsp &nbsp

<br><br><br><br>
<hr color=red>
<hr color=white>
<hr color=blue>


	<hr color=white>
	<hr color=pink>
	<hr color=pink>
	<hr color=pink>
	<hr color=white>
	<div id="div_yt_b" draggable="true"><h1>div_yt_b</h1>
	<img src="https://img.youtube.com/vi/NGorjBVag0I/default.jpg"
		alt="yt_cohen_danceme"
		onclick="window.open('https://www.youtube.com/watch?v=NGorjBVag0I');return false;"
			); return false;"
		height=100 border=0 >  
	&nbsp &nbsp &nbsp &nbsp


	<img src="https://img.youtube.com/vi/WkJoP2PLe6g/default.jpg"
		alt="yt_swing_chanzie_stephen_gettogether"
		onclick="window.open('https://www.youtube.com/watch?v=WkJoP2PLe6g');return false;"
			); return false;"
		height=100 border=0 >  
	&nbsp &nbsp &nbsp &nbsp

	<img src="https://img.youtube.com/vi/alLi8i9BQK4/default.jpg"
		alt="yt_swing_nils_bianca"
		onclick="window.open('https://www.youtube.com/watch?v=alLi8i9BQK4');return false;"
			); return false;"
		height=100 border=0 > 
	&nbsp &nbsp &nbsp &nbsp

	<img src="https://img.youtube.com/vi/m01f4uAn1AA/default.jpg"
		alt="yt_swing_chanzie_stephen_nittygritty"
		onclick="window.open('https://www.youtube.com/watch?v=m01f4uAn1AA');return false;"
			); return false;"
		height=100 border=0 >  
	&nbsp &nbsp &nbsp &nbsp



	<img src="https://img.youtube.com/vi/BPRPK5qU3Y4/default.jpg"
		alt="yt_cohen_slow_dance"
		onclick="window.open('https://www.youtube.com/watch?v=BPRPK5qU3Y4');return false;"
			); return false;"
		height=100 border=0 > 
	&nbsp &nbsp &nbsp &nbsp

	<img src="https://img.youtube.com/vi/EjFN5iVKn6w/default.jpg"
		alt="yt_childers_housefire"
		onclick="window.open('https://www.youtube.com/watch?v=EjFN5iVKn6w');return false;"
			); return false;"
		height=100 border=0 > 
	&nbsp &nbsp &nbsp &nbsp


<!--
		&nbsp &nbsp &nbsp &nbsp
		<img src="https://img.youtube.com/vi/WkJoP2PLe6g/default.jpg"
			alt="yt_dylan_mostfoul"
			onclick="window.open('https://www.youtube.com/watch?v=Rkr6TVnGtAM');return false;"
				); return false;"
			height=200 border=0 >  
	-->
		</div id="div_yt_b" >


	<hr color=white>
	<hr color=pink>
	<hr color=pink>
	<hr color=pink>
	<hr color=white>




<hr color=blue>
<hr color=white>
<hr color=red>

<br><br><br><br>
&nbsp &nbsp &nbsp &nbsp
&nbsp &nbsp &nbsp &nbsp
<hr color=linen>

<br><br><br><br>
		<img src="/fb/jtfdc/pages/1.jpg"
			alt="jtfdc" height=100
onclick="window.open('/fb/jtfdc'); return false;" >
		&nbsp &nbsp &nbsp &nbsp
		<img src="/fb/kitiworks/pages/1.jpg"
			alt="kitiworks" height=100
onclick="window.open('/fb/kitiworks'); return false;" >
		&nbsp &nbsp &nbsp &nbsp
		<img src="/fb/pastryroad/pages/1.jpg"
			alt="pastryroad" height=100
onclick="window.open('/fb/pastryroad'); return false;" >
		&nbsp &nbsp &nbsp &nbsp
	<img src="/fb/nwm/pages/1.jpg" 
			alt="north_west_mutual" height=100
onclick="window.open('/fb/nwm'); return false;" >
		&nbsp &nbsp &nbsp &nbsp
	<img src="/fb/jhf/pages/1.jpg" 
onclick="window.open('/fb/jhf/');return false;" 
		alt="josh_hawley_freight_lines" height=100 border=0 draggable="true" >
		&nbsp &nbsp &nbsp &nbsp

	<img src="/fb/konabus/pages/1.jpg"
		alt="konabus" height=100
onclick="window.open('/fb/konabus'); return false;" >
		&nbsp &nbsp &nbsp &nbsp

	<img src="/fb/gofunwii/pages/1.jpg"
		alt="gofunwii" height=100
onclick="window.open('/fb/gofunwii'); return false;" >
		&nbsp &nbsp &nbsp &nbsp

	<img src="/gm/pages/1.jpg" 
		alt="games" height=100
onclick="window.open('/gm'); return false;" >
		&nbsp &nbsp &nbsp &nbsp
		<br><br>

<br><br><br><br>
<hr color=linen>
		<img src="/imgs/btn/btn_german_consulate_stl.png"
			alt="consulate_germany_stl" height=100
onclick="window.open('https://embassies.info/ConsulateofGermanyinStLouisMissouri'); return false;" >
		&nbsp &nbsp &nbsp &nbsp

		<img src="/imgs/links/smith_neil_vote67.png"
			alt="mo_rep_smith_neil_067" height=150
onclick="window.open('https://www.facebook.com/neilsmithforstaterepresentative67/'); return false;" 
			height=100 border=0>
		<br><br><br><br>
		<hr color=blue>
		<hr color=white>
		<hr color=red>
		<img src="/imgs/btn/rep_green_alan.jpg"
			alt="mo_rep_green_alan_067" height=150
onclick="window.open('https://house.mo.gov/MemberDetails.aspx?year=2019&district=067'); return false;" >
		&nbsp &nbsp &nbsp &nbsp
		<img src="/imgs/btn/btn_sen_hawley_josh.png"
			alt="sen_mo2_hawley_josh" height=150
onclick="window.open('https://contactsenators.com/missouri/josh-hawley'); return false;" >
		&nbsp &nbsp &nbsp &nbsp
		<img src="/imgs/btn/btn_sen_paul_rand.png"
			alt="sen_ky2_paul_rand" height=150
onclick="window.open('https://www.paul.senate.gov/'); return false;" >
		&nbsp &nbsp &nbsp &nbsp
		<img src="/imgs/btn/rep_jordan_jim.jpg"
			alt="sen_ky2_paul_rand" height=150
onclick="window.open('https://jordan.house.gov/'); return false;" >
		<hr color=blue>
		<hr color=white>
		<hr color=red>
		<br><br><br><br>



		<script id="script_blob_volume">
			var audio = document.getElementById('audio');
			var volume = document.getElementById('input_volume');
			window.setInterval(changevolume(), 1);
			function SetVolume(val) {
//				alert( "BUGS_1680 SetVolume val="+val );
//				var player = document.getElementById('video');
				var player = document.getElementById('audio_sound');
//				console.log('Before: ' + player.volume);
				player.volume = val / 100;
//				console.log('After: ' + player.volume);
				}
			function changevolume() {
	 			var x = volume.value;
				var y = x / 100;
	 			audio.volume = y;
				}
			</script>



<hr color=pink>
<h1>43th anniversary 2020</h1>
<img src="/kb/vid/jkwii/flintstones_happy_anniversary.jpg"
alt="/kb/vid/jkwii/flintstones_happy_anniversary.jpg"
onclick="window.open('/kb/vid/jkwii/flintstones_happy_anniversary.mp4');return false;"
		height=100 >
<img src="/kb/vid/jkwii/furey_finbar_the_last_great_love_song.jpg"
alt="/kb/vid/jkwii/furey_finbar_the_last_great_love_song.jpg"
onclick="window.open('/kb/vid/jkwii/furey_finbar_the_last_great_love_song.mp4');return false;"
		height=100 >
<img src="/kb/vid/jkwii/leonard_cohen-dance_me_to_the_end_of_Love_official_.jpg"
alt="/kb/vid/jkwii/leonard_cohen-dance_me_to_the_end_of_Love_official_.jpg"
onclick="window.open('/kb/vid/jkwii/leonard_cohen-dance_me_to_the_end_of_Love_official_.mp4');return false;"
		height=100 >
<img src="/kb/vid/jkwii/fureys_davey_arthur-i_will_love_you.jpg"
alt="/kb/vid/jkwii/fureys_davey_arthur-i_will_love_you.jpg"
onclick="window.open('/kb/vid/jkwii/fureys_davey_arthur-i_will_love_you.mp4');return false;"
		height=100 >
<img src="/kb/vid/jkwii/jay_ungar_molly_mason-lovers_waltz.jpg"
alt="/kb/vid/jkwii/jay_ungar_molly_mason-lovers_waltz.jpg"
onclick="window.open('/kb/vid/jkwii/jay_ungar_molly_mason-lovers_waltz.mp4');return false;"
		height=100 >
<img src="/kb/vid/jkwii/john_denver_placido_doming-perhaps_love.jpg"
alt="/kb/vid/jkwii/john_denver_placido_doming-perhaps_love.jpg"
onclick="window.open('/kb/vid/jkwii/john_denver_placido_doming-perhaps_love.mp4');return false;"
		height=100 >
<img src="/kb/vid/jkwii/leonard_cohen-here_it_is.jpg"
alt="/kb/vid/jkwii/leonard_cohen-here_it_is.jpg"
onclick="window.open('/kb/vid/jkwii/leonard_cohen-here_it_is.mp4');return false;"
		height=100 >
<img src="/kb/vid/jkwii/redbone_come_get_your_love_powwow.jpg"
alt="/kb/vid/jkwii/redbone_come_get_your_love_powwow.jpg"
onclick="window.open('/kb/vid/jkwii/redbone_come_get_your_love_powwow.mp4');return false;"
		height=100 >
<img src="/kb/vid/jkwii/bellamy_brothers-let_your_love_flow_lyrics.jpg"
alt="/kb/vid/jkwii/bellamy_brothers-let_your_love_flow_lyrics.jpg"
onclick="window.open('/kb/vid/jkwii/bellamy_brothers-let_your_love_flow_lyrics.mp4');return false;"
		height=100 >
<img src="/kb/vid/jkwii/leonard_cohen-you_got_me_singing.jpg"
alt="/kb/vid/jkwii/leonard_cohen-you_got_me_singing.jpg"
onclick="window.open('/kb/vid/jkwii/leonard_cohen-you_got_me_singing.mp4');return false;"
		height=100 >
<img src="https://img.youtube.com/vi/09gJX0Cc6p0/default.jpg"
alt="elise_girl_from_iponema"
onclick="window.open('https://www.youtube.com/watch?v=09gJX0Cc6p0');return false;"); return false;"
		height=100 border=0 >  
		&nbsp &nbsp &nbsp &nbsp


<h1>time</h1>
<img src="/kb/vid/jkwii/waits_time_guitar.jpg"
alt="/kb/vid/jkwii/waits_time_guitar.jpg"
onclick="window.open('/kb/vid/jkwii/waits_time_guitar.mp4');return false;"
		height=100 >
<img src="/kb/vid/jkwii/abolli_thousand_kisses_deep.jpg"
alt="/kb/vid/jkwii/abolli_thousand_kisses_deep.jpg"
onclick="window.open('/kb/vid/jkwii/abolli_thousand_kisses_deep.mp4');return false;"
		height=100 >
<br><br><br><br>

<h1>happy endings soft landings</h1>
<img src="/kb/vid/jkwii/bobby_mcFerrin-dont_worry_be_happy.jpg"
alt="/kb/vid/jkwii/bobby_mcFerrin-dont_worry_be_happy.jpg"
onclick="window.open('/kb/vid/jkwii/bobby_mcFerrin-dont_worry_be_happy.mp4');return false;"
		height=100 >
<img src="/kb/vid/jkwii/emmylou_harris_earl_thomas-we_believe_in_happy_ending.jpg"
alt="/kb/vid/jkwii/emmylou_harris_earl_thomas-we_believe_in_happy_ending.jpg"
onclick="window.open('/kb/vid/jkwii/emmylou_harris_earl_thomas-we_believe_in_happy_ending.mp4');return false;"
		height=100 >
<img src="/kb/vid/jkwii/leonard_cohen-come_healing.jpg"
alt="/kb/vid/jkwii/leonard_cohen-come_healing.jpg"
onclick="window.open('/kb/vid/jkwii/leonard_cohen-come_healing.mp4');return false;"
		height=100 >





<hr color=goldenrod>
<hr color=goldenrod>
<div id="div_us2">
	<h1>div_us2 warning - active turbulence area - warning</h1>
	<img src="/imgs/btn/koeye.png" alt="us2" onclick="divlist('div_us2,us'); return false;" height=100>
	<img src="/imgs/btn/koeye.png" alt="edu" onclick="divlist('div_edu,edu'); return false;" height=100>
	<img src="/imgs/btn/koeye.png" alt="hoa" onclick="divlist('div_hoa,hoa'); return false;" height=100>
	<img src="/imgs/btn/koeye.png" alt="law" onclick="divlist('div_law,law'); return false;" height=100>
	<img src="/imgs/btn/koeye.png" alt="pano" onclick="divlist('div_hoa,pano'); return false;" height=100>
	<a href="/us"  target=_blank>
		<img src="/us/pages/1.jpg" alt="us"  height=100>
		</a>
	</div>
<br>
<hr color=goldenrod>
<hr color=goldenrod>
<br><br><br><br>
<hr color=goldenrod>
<div id="div_edu">
	<h1>div_edu</h1>
	<img src="/fb/edu/imgs/edu.png" alt="fb_edu" onclick="edu(''); return false;" height=100>
	<a href="/fb/edu"  target=_blank>
		<img src="/fb/edu/pages/1.jpg" alt="fb_edu"  height=100>
		</a>
	</div>
<hr color=goldenrod>
<br><br><br><br>
<hr color=goldenrod>
<div id="div_hoa">
	<h1>div_hoa</h1>
	<img src="/fb/hoa/imgs/hoa.png" alt="fb_hoa" onclick="hoa(''); return false;" height=100>
	<a href="/fb/hoa"  target=_blank>
		<img src="/fb/hoa/pages/1.jpg"   alt="fb_hoa" height=100>
		</a>
	</div>
<hr color=goldenrod>
<br><br><br><br>
<hr color=goldenrod>
<div id="div_law" >
	<h1>div_law</h1>
	<img src="/fb/law/imgs/law.png" alt="fb_law" onclick="law(''); return false;" height=100>
	<a href="/fb/law"  target=_blank>
		<img src="/fb/law/pages/1.jpg" alt="fb_law"  alt="fb_law" height=100>
		</a>
	</div>


<br><br><br><br>
<hr color=goldenrod>
<div id="div_zpid">
	<h1>div_zpid</h1>
	<br>
	<hr color=goldenrod>
	<hr color=goldenrod>
	<hr color=goldenrod>
	<img src="/imgs/btn/koeye_zpid.png" alt="div_zpid"
		onclick="window.open('/index_zpid.html'); return false;"
		height=100 border=0>
	<br>
	<hr color=goldenrod>
	<hr color=goldenrod>
	<hr color=goldenrod>
	<br><br><br><br>

	</div>
	<hr color=goldenrod>


	<script id="script_zpid">
lists['zpid'] = `
zpid_13658677.webp|$|bd|ba|sf|acres| https://www.zillow.com/homedetails/2950-Black-Canyon-Rd-Colorado-Springs-CO-80904/13658677_zpid/
zpid_13577104|$899,9995|bd5|ba6|116|acres|https://www.zillow.com/homedetails/3620-Saddle-Rock-Ct-Colorado-Springs-CO-80918/13577104_zpid/
zpid_13669585|$|bd|ba|sf|acres|www.zillow.com/homedetails/2205-Hercules-Dr-Colorado-Springs-CO-80906/13669585_zpid/
zpid_13673478|$|bd|ba|sf|acres|https://www.zillow.com/homedetails/4650-Bradford-Hts-Colorado-Springs-CO-80906/13673478_zpid/
zpid_80392720|$1,325,0005|bd5|ba5|5180|acres|https://www.zillow.com/homedetails/524-Silver-Oak-Grv-Colorado-Springs-CO-80906/80392720_zpid/"
121842595_zpid|$|bd|ba|sf|acres|https://www.zillow.com/homedetails/9289-Unionville-Dr-North-Ridgeville-OH-44039/121842595_zpid/
104327579_zpid|$|bd|ba|sf|acres|https://www.zillow.com/homedetails/9012-Lyman-Ct-North-Ridgeville-OH-44039/104327579_zpid/
117440105_zpid|$|bd|ba|sf|acres|https://www.zillow.com/homedetails/38123-Revere-Dr-North-Ridgeville-OH-44039/117440105_zpid/
`;
		function zpid(args) {
			var htmout="";
			var j=0; var k=0;
			alert( "BUGS_27500 zpid args="+args+" lists_zpid="+lists['zpid'] );
			var listids=kolists['zpid'].split("\n");
			for( j=0; j< listids.length; j++ ) {
				if( /^#/.test(listids[j])) { continue; }
				var len = listids[j].split("|").length;
				var id=listids[j].split("|")[0];
				if( id == undefined ) { continue; }
				if( id == "" ) { continue; }

				var url=listids[j].split("|")[len-1];
				var img="/fb/zpid/imgs/zpid_"+id+".webp";
				var dollars = listids[j].split("|")[1];
				var bd = listids[j].split("|")[2];
				var ba = listids[j].split("|")[3];
				var sf = listids[j].split("|")[4];
				var acres = listids[j].split("|")[5];

htmout += '<a href="'+url+'" target=_blank >';
htmout += '	<img src="'+img+'" border=0 height=200 ';
htmout += '		alt="'+listsid[j]+'" >';
htmout += j+'. '+listids[j];
htmout += '	</a>';
htmout += '	<br>';

//				if(! filecheck(url)) { 
//					alert( "BUGS_19573 NOTFOUND j="+j+" id="+id+" url="+url );
//					continue; 
//					}

				}

			if( document.getElementById("div_zpid")) {
				document.getElementById("div_zpid").innerHTML=htmout;
				}
			return(args);
			}
		</script>







<!--
	<form id="form_replace" >
		<input onkeydown="replace(event)" /><br /> <input />
		</form>

	<script id="script_dispatch">
		function dispatch(args) {
			document.addEventListener ('keydown', function (event) {
				console.log (event.which);
				}); 
     
			var evt = new KeyboardEvent('keydown', {'keyCode':65, 'which':65};
			document.dispatchEvent (evt);	
			}
		</script>


<!--	<link rel="shortcut icon" type="image/png" href="/koeye.png"/> -->
	<link rel="shortcut icon" type="image/png" href="ko.png"/>


	<style id="style_mobile">
		
/* Style the navigation menu */
/* Hide the links inside the navigation menu (except for logo/home) */
/* Style navigation menu links */
/* Style the hamburger menu */
/* Add a grey background color on mouse-over */
/* Style the active link (or home/logo) */

		.topnav {
			overflow: hidden;
//			background-color: #333;
//			background-color: yellow;
			background-color: burlywood;
			position: relative;
			}
		.topnav #myLinks {display: none;}
		.topnav a {
//			color: white; 
//			color: linen; 
			color: black;
//			width: 250;
			background: burlywood;
			padding: 14px 16px;
			text-decoration: none;
			font-size: 17px;
			display: block;
			}
		.topnav a.icon {
//			background: black;
//			background: darkslategrey;
			background: burlybrown;
			height: 100;
			width: 200:
			display: block;
			position: absolute;
			right: 0;
			top: 0;
//			url_bgimg: "/imgs/bg/background.jpg";
//			background: url(url_bgimg);
			}
		.topnav a:hover {
//			background-color: #ddd;
//			background-color: red;
			background-color: beige;
			background-color: blanchedalmond;
			background-color: antiquewhite
			background-color: burlywood;
			color: black;
			width: 200;
			width: 400;
			}
		.active {
//			background-color: #4CAF50;
//			background-color: linen;
//			background-color: yellow;
			background-color: burlywood;
			color: black;
			} 
		</style>

	<script id="script_mobile">
/* Toggle between showing and hiding the navigation menu links when the user clicks on the hamburger menu / bar icon */
		function myFunction() {
			var x = document.getElementById("myLinks");
			if (x.style.display === "block") {
				x.style.display = "none";
				} 
			else {
				x.style.display = "block";
				}
			} 
		</script>


	<style id="style_yokkmokk" >
		@font-face {
			font-family: yokkmokkOT;
			src: url("data:font/ttf;base64,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AEMARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgCjAFcAWABZAJYAWgChAFsAXABdAF4AXwBgAGEAYgBjAGQAZQBmAGcAaABpAGoAawBsAG0AbgBvAHAAcQByAHMAdAB1AHYAdwB4AHkAegB7AHwAfQB+AH8AgACBAIIAgwCEAIUAhgCHAIgAiQCKAIsAjACNAI4AjwCQAJEAkgCTAJQAlQCWAJcAmACZAJoAmwANAJwAnQCeAJ8AoAChAAAAAAAQAAAAqAkIBQABAQMCAwQFAwMEAgQCBQQCAwMDAwQDAgQCAgMEAwIGAwgFBAQEBAIEBAMGBQQEBQQCAwMEBgUEAwICAgQDBgQEAgQFAgQEAgYEAwQEBAICAwMGBQQDAwMFAgICBgYGBgYGCAgEBAQCAgIFBAQEBAQEAwMDAwMEBAQEBAQHBgQEBAICAgQDAwMDAwMDAwMDCAYCAgICAgIBAgIEAgICBgUBBQUAAAoJBQABAQMCBAUGAwMFAgQCBQUCBAMDBAUDAgQCAgMEAwMHAwkGBAQFBAIEBAMHBgUEBgQCBAQEBwUEAwICAwUDBwUEAgUGAgQEAgYFAwUFBQICAwMGBQQDAwMGAwIDBwcHBwcHCQkEBAQCAgIGBQUFBQUFBAQEBAMFBQUFBQUIBwQEBAICAgUDAwMDAwQDAwMDCAcDAwICAgIBAgIEAgICBwUBBQUAAAsKBgACAgQCBAUGAwMFAgQCBgUDBAQEBAUEAwUDAgMEAwMIAwoGBQUFBQIEBQMHBgUEBgUDBAQECAYFAwIDAwUDCAUFAwUGAgQEAgcFBAUFBQMDAwMHBgUDBAQGAwIDCAgICAgICQoFBQUCAgIGBQUFBQUFBAQEBAMFBQUFBQUJCAUFBQICAgUEBAQEBAQDAwMDCQgDAwICAwIBAgIEAgICBwYBBgYAAAwLBgACAgQDBAYHBAQGAgUDBgYDBQQEBAUEAwUDAwQFBAMIAwsHBQUFBQIFBQQIBwYFBwUDBQUFCAYFAwMDAwYDCQYFAwUHAgUFAggGBAYGBgMDBAQHBgUDBAQHAwMDCAgICAgICgsFBQUCAgIHBgYGBgYGBQUFBQMGBgYGBgYJCQUFBQICAgYEBAQEBAQEBAQECggDAwMDAwIBAwMFAwMDCAYBBgYAAA0MBwACAgQDBQYHBAQGAwUDBwYDBQQFBQYEAwYDAwQFBAMJBAwIBgYGBQMFBgQJBwYFCAUDBQUFCQcFBAMDAwYECQYGAwYIAwUFAggGBQYGBgMDBAQIBwYEBAQHAwMDCQkJCQkJCwwGBgYDAwMHBgYGBgYGBQUFBQQGBgYGBgYKCQYGBgMDAwYFBQUFBQUEBAQECwkDAwMDAwIBAwMFAwMDCQcCBwcAAA4NBwACAgUDBQcIBAQHAwUDBwcDBQUFBQYFAwYDAwQFBAQKBAwIBgYGBgMGBgQJCAcGCAYDBQUGCggGBAMDBAcECgcGAwYIAwYGAwkHBQcHBwMDBAQJBwYEBQUIBAMECgoKCgoKDA0GBgYDAwMIBwcHBwcHBQUFBQQHBwcHBwcLCgYGBgMDAwcFBQUFBQUEBAQEDAoEBAMDAwMBAwMGAwMDCQcCBwcAAA8OCAACAgUDBgcIBQUHAwYDCAcDBgUFBQcFBAcEAwUGBQQLBA0JBwcHBgMGBwUKCAcGCQYEBgYGCggGBAMEBAcECwcHBAcJAwYGAwkHBQcHBwQDBQUJCAYEBQUJBAMECwsLCwsLDQ4HBwcDAwMIBwcHBwcHBgYGBgQHBwcHBwcMCwcHBwMDAwcFBQUFBQUFBQUFDQoEBAMDBAMCAwMGAwMDCggCCAgAABAPCAACAgUEBggJBQUIAwYECAgEBgUGBgcFBAcEBAUGBQQLBQ4JBwcHBwMGBwULCQgGCQcEBgYGCwkHBAQEBAgFCwgHBAcJAwcGAwoHBggIBwQEBQUKCAcEBQUJBAMECwsLCwsLDg8HBwcDAwMJCAgICAgIBgYGBgUICAgICAgNCwcHBwMDAwcGBgYGBgYFBQUFDgsEBAQEBAMCAwMGBAQECwgCCAgAABEQCQACAgYEBggJBQUIAwcECQgEBwYGBggGBAcEBAUHBQUMBQ8KBwcIBwMHCAULCggHCgcEBgYHDAkHBQQEBAgFDAgHBAgKAwcHAwsIBggICAQEBQUKCQcFBgYKBAQFDAwMDAwMDxAHCAcDAwMKCAgICAgIBgYGBgUICAgICAgNDAcHBwMDAwgGBgYGBgYFBQUFDgwFBQQEBAMCBAQHBAQECwkCCQkAABIQCQADAwYEBwkKBgYJBAcECQkEBwYGBggGBAgEBAYHBgUNBRAKCAgICAQHCAUMCgkHCwcEBwcHDQoIBQQEBQkFDQkIBAgKBAcHAwsIBgkJCAQEBQYLCQgFBgYKBQQFDQ0NDQ0NDxAICAgEBAQKCQkJCQkJBwcHBwUJCQkJCQkODQgICAQEBAgGBgYGBgYFBQUFDwwFBQQEBAMCBAQHBAQEDAkCCQkAABMRCgADAwYEBwkLBgYJBAcECgkEBwYHBwkGBAgFBAYHBgUNBhELCAgJCAQICAYNCwkICwgEBwcIDQoIBQQFBQkFDQkIBAkLBAgIBAwJBwkJCQQEBgYMCggFBgYLBQQFDQ0NDQ0NEBEICAgEBAQLCQkJCQkJBwcHBwUJCQkJCQkPDQgICAQEBAkHBwcHBwcGBgYGEA0FBQQEBQQCBAQIBAQEDQoCCgoAABQSCgADAwcEBwoLBgYKBAgECgoFCAcHBwkHBQkFBAYIBgUOBhIMCQkJCAQICQYNCwoIDAgFCAgIDgsIBgUFBQoGDgoJBQkMBAgIBA0JBwoKCQUFBgYMCgkGBwcLBQQFDg4ODg4OERIJCQkEBAQLCgoKCgoKCAgICAYKCgoKCgoQDgkJCQQEBAkHBwcHBwcGBgYGEQ4FBQUFBQQCBAQIBQUEDgoCCgoAABUTCwADAwcFCAoMBgYKBAgFCwoFCAcHBwoHBQkFBQYIBgYPBhMMCQkJCQQJCQYODAoIDAkFCAgIDwsJBgUFBQoGDwoJBQoMBAkIBA0KBwoKCgUFBgcNCwkGBwcMBQQGDw8PDw8PEhMJCQkEBAQMCgoKCgoKCAgICAYKCgoKCgoRDwkJCQQEBAoHBwcHBwcGBgYGEg4GBgUFBQQCBAQIBQUFDgsDCwsAABYUCwADAwcFCAsMBwcLBAkFCwoFCAcICAoHBQoFBQcJBwYPBhQNCgoKCQQJCgcPDAoJDQkFCAgJDwwJBgUFBgsGEAsKBQoNBAkJBA4KCAsLCgUFBwcOCwkGBwcNBgUGDw8PDw8PExQKCgoEBAQMCgoKCgoLCAgICAYLCwsLCwsREAoKCgQEBAoICAgICAgHBwcHEw8GBgUFBQQCBQUJBQUFDwsDCwsAABcVDAADAwcFCQsNBwcLBQkFDAsFCQcICAsIBQoGBQcJBwYQBxQNCgoKCgUJCgcPDQsJDQoFCQkJEAwKBgUGBgsHEAsKBQoNBQkJBA4LCAsLCwUFBwcODAoGBwgNBgUGEBAQEBAQFBUKCgoFBQUNCwsLCwsLCQkJCQcLCwsLCwsSEAoKCgUFBQsICAgICAgHBwcHFBAGBgUFBgQCBQUJBQUFEAwDDAwAABgWDAADAwgFCQwNBwcMBQkFDAsGCQgICAsIBgoGBQcJBwYRBxUOCgoLCgUKCwcQDgsKDgoGCQkKEQ0KBwUGBgsHEQwKBgsOBQoKBA8LCAwMCwYGBwgPDAoHCAgOBgUGERERERERFRYKCwoFBQUOCwsLCwsMCQkJCQcLCwsLCwsTEQoKCgUFBQsICAgICAgHBwcHFBEGBgUFBgQCBQUKBQUFEAwDDAwAAAABAV0BkAAFAAICvAKKAAAAjwK8AooAAAHFADIBAwAAAAAEAAAAAAAAAAAAAAMAAAAAAAAAAAAAAABNQUNSAEAAICIZAyH/OQAAAyEAxwAAAAEAAAAAAAAAAQAAgAAAAACLAT8AAGAAAbQCdVlva2ttb2trICAgICAgICD/////N////llPS1IwMAAAAAAAAAABAAAAAQAAmJpL9V8PPPUAAAPoAAAAALfnFZIAAAAAt+cVkv+2/zkDawMhAAAAAwACAAEAAAAAAAEAAAMh/zkAAAOQ/7b/uANrAAEAAAAAAAAAAAAAAAAAAACkAAEAAACkAJgADQAAAAAAAgAIAEAACgAAAF0AvgABAAE=");
			}

		@font-face {
			font-family: 'yokkmokkOT_file';
			src: url('/fonts/yokkmokkOT.otf'); /* IE 5-8 */ 
			src: local('?'),             /* sneakily trick IE */
		        url('/fonts/yokkmokk.ttf') format('truetype'), /* Opera, Safari */
		        url('/fonts/yokkmokkOT.woff') format('woff'),    /* FF 3.6, Chrome 5, IE9 */
		        url('/fonts/yokkmokkOT.svg#font') format('svg'); /* iOS */
			}
	
		body { 
//			background: url("data:font/ttf;base64,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AEMARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgCjAFcAWABZAJYAWgChAFsAXABdAF4AXwBgAGEAYgBjAGQAZQBmAGcAaABpAGoAawBsAG0AbgBvAHAAcQByAHMAdAB1AHYAdwB4AHkAegB7AHwAfQB+AH8AgACBAIIAgwCEAIUAhgCHAIgAiQCKAIsAjACNAI4AjwCQAJEAkgCTAJQAlQCWAJcAmACZAJoAmwANAJwAnQCeAJ8AoAChAAAAAAAQAAAAqAkIBQABAQMCAwQFAwMEAgQCBQQCAwMDAwQDAgQCAgMEAwIGAwgFBAQEBAIEBAMGBQQEBQQCAwMEBgUEAwICAgQDBgQEAgQFAgQEAgYEAwQEBAICAwMGBQQDAwMFAgICBgYGBgYGCAgEBAQCAgIFBAQEBAQEAwMDAwMEBAQEBAQHBgQEBAICAgQDAwMDAwMDAwMDCAYCAgICAgIBAgIEAgICBgUBBQUAAAoJBQABAQMCBAUGAwMFAgQCBQUCBAMDBAUDAgQCAgMEAwMHAwkGBAQFBAIEBAMHBgUEBgQCBAQEBwUEAwICAwUDBwUEAgUGAgQEAgYFAwUFBQICAwMGBQQDAwMGAwIDBwcHBwcHCQkEBAQCAgIGBQUFBQUFBAQEBAMFBQUFBQUIBwQEBAICAgUDAwMDAwQDAwMDCAcDAwICAgIBAgIEAgICBwUBBQUAAAsKBgACAgQCBAUGAwMFAgQCBgUDBAQEBAUEAwUDAgMEAwMIAwoGBQUFBQIEBQMHBgUEBgUDBAQECAYFAwIDAwUDCAUFAwUGAgQEAgcFBAUFBQMDAwMHBgUDBAQGAwIDCAgICAgICQoFBQUCAgIGBQUFBQUFBAQEBAMFBQUFBQUJCAUFBQICAgUEBAQEBAQDAwMDCQgDAwICAwIBAgIEAgICBwYBBgYAAAwLBgACAgQDBAYHBAQGAgUDBgYDBQQEBAUEAwUDAwQFBAMIAwsHBQUFBQIFBQQIBwYFBwUDBQUFCAYFAwMDAwYDCQYFAwUHAgUFAggGBAYGBgMDBAQHBgUDBAQHAwMDCAgICAgICgsFBQUCAgIHBgYGBgYGBQUFBQMGBgYGBgYJCQUFBQICAgYEBAQEBAQEBAQECggDAwMDAwIBAwMFAwMDCAYBBgYAAA0MBwACAgQDBQYHBAQGAwUDBwYDBQQFBQYEAwYDAwQFBAMJBAwIBgYGBQMFBgQJBwYFCAUDBQUFCQcFBAMDAwYECQYGAwYIAwUFAggGBQYGBgMDBAQIBwYEBAQHAwMDCQkJCQkJCwwGBgYDAwMHBgYGBgYGBQUFBQQGBgYGBgYKCQYGBgMDAwYFBQUFBQUEBAQECwkDAwMDAwIBAwMFAwMDCQcCBwcAAA4NBwACAgUDBQcIBAQHAwUDBwcDBQUFBQYFAwYDAwQFBAQKBAwIBgYGBgMGBgQJCAcGCAYDBQUGCggGBAMDBAcECgcGAwYIAwYGAwkHBQcHBwMDBAQJBwYEBQUIBAMECgoKCgoKDA0GBgYDAwMIBwcHBwcHBQUFBQQHBwcHBwcLCgYGBgMDAwcFBQUFBQUEBAQEDAoEBAMDAwMBAwMGAwMDCQcCBwcAAA8OCAACAgUDBgcIBQUHAwYDCAcDBgUFBQcFBAcEAwUGBQQLBA0JBwcHBgMGBwUKCAcGCQYEBgYGCggGBAMEBAcECwcHBAcJAwYGAwkHBQcHBwQDBQUJCAYEBQUJBAMECwsLCwsLDQ4HBwcDAwMIBwcHBwcHBgYGBgQHBwcHBwcMCwcHBwMDAwcFBQUFBQUFBQUFDQoEBAMDBAMCAwMGAwMDCggCCAgAABAPCAACAgUEBggJBQUIAwYECAgEBgUGBgcFBAcEBAUGBQQLBQ4JBwcHBwMGBwULCQgGCQcEBgYGCwkHBAQEBAgFCwgHBAcJAwcGAwoHBggIBwQEBQUKCAcEBQUJBAMECwsLCwsLDg8HBwcDAwMJCAgICAgIBgYGBgUICAgICAgNCwcHBwMDAwcGBgYGBgYFBQUFDgsEBAQEBAMCAwMGBAQECwgCCAgAABEQCQACAgYEBggJBQUIAwcECQgEBwYGBggGBAcEBAUHBQUMBQ8KBwcIBwMHCAULCggHCgcEBgYHDAkHBQQEBAgFDAgHBAgKAwcHAwsIBggICAQEBQUKCQcFBgYKBAQFDAwMDAwMDxAHCAcDAwMKCAgICAgIBgYGBgUICAgICAgNDAcHBwMDAwgGBgYGBgYFBQUFDgwFBQQEBAMCBAQHBAQECwkCCQkAABIQCQADAwYEBwkKBgYJBAcECQkEBwYGBggGBAgEBAYHBgUNBRAKCAgICAQHCAUMCgkHCwcEBwcHDQoIBQQEBQkFDQkIBAgKBAcHAwsIBgkJCAQEBQYLCQgFBgYKBQQFDQ0NDQ0NDxAICAgEBAQKCQkJCQkJBwcHBwUJCQkJCQkODQgICAQEBAgGBgYGBgYFBQUFDwwFBQQEBAMCBAQHBAQEDAkCCQkAABMRCgADAwYEBwkLBgYJBAcECgkEBwYHBwkGBAgFBAYHBgUNBhELCAgJCAQICAYNCwkICwgEBwcIDQoIBQQFBQkFDQkIBAkLBAgIBAwJBwkJCQQEBgYMCggFBgYLBQQFDQ0NDQ0NEBEICAgEBAQLCQkJCQkJBwcHBwUJCQkJCQkPDQgICAQEBAkHBwcHBwcGBgYGEA0FBQQEBQQCBAQIBAQEDQoCCgoAABQSCgADAwcEBwoLBgYKBAgECgoFCAcHBwkHBQkFBAYIBgUOBhIMCQkJCAQICQYNCwoIDAgFCAgIDgsIBgUFBQoGDgoJBQkMBAgIBA0JBwoKCQUFBgYMCgkGBwcLBQQFDg4ODg4OERIJCQkEBAQLCgoKCgoKCAgICAYKCgoKCgoQDgkJCQQEBAkHBwcHBwcGBgYGEQ4FBQUFBQQCBAQIBQUEDgoCCgoAABUTCwADAwcFCAoMBgYKBAgFCwoFCAcHBwoHBQkFBQYIBgYPBhMMCQkJCQQJCQYODAoIDAkFCAgIDwsJBgUFBQoGDwoJBQoMBAkIBA0KBwoKCgUFBgcNCwkGBwcMBQQGDw8PDw8PEhMJCQkEBAQMCgoKCgoKCAgICAYKCgoKCgoRDwkJCQQEBAoHBwcHBwcGBgYGEg4GBgUFBQQCBAQIBQUFDgsDCwsAABYUCwADAwcFCAsMBwcLBAkFCwoFCAcICAoHBQoFBQcJBwYPBhQNCgoKCQQJCgcPDAoJDQkFCAgJDwwJBgUFBgsGEAsKBQoNBAkJBA4KCAsLCgUFBwcOCwkGBwcNBgUGDw8PDw8PExQKCgoEBAQMCgoKCgoLCAgICAYLCwsLCwsREAoKCgQEBAoICAgICAgHBwcHEw8GBgUFBQQCBQUJBQUFDwsDCwsAABcVDAADAwcFCQsNBwcLBQkFDAsFCQcICAsIBQoGBQcJBwYQBxQNCgoKCgUJCgcPDQsJDQoFCQkJEAwKBgUGBgsHEAsKBQoNBQkJBA4LCAsLCwUFBwcODAoGBwgNBgUGEBAQEBAQFBUKCgoFBQUNCwsLCwsLCQkJCQcLCwsLCwsSEAoKCgUFBQsICAgICAgHBwcHFBAGBgUFBgQCBQUJBQUFEAwDDAwAABgWDAADAwgFCQwNBwcMBQkFDAsGCQgICAsIBgoGBQcJBwYRBxUOCgoLCgUKCwcQDgsKDgoGCQkKEQ0KBwUGBgsHEQwKBgsOBQoKBA8LCAwMCwYGBwgPDAoHCAgOBgUGERERERERFRYKCwoFBQUOCwsLCwsMCQkJCQcLCwsLCwsTEQoKCgUFBQsICAgICAgHBwcHFBEGBgUFBgQCBQUKBQUFEAwDDAwAAAABAV0BkAAFAAICvAKKAAAAjwK8AooAAAHFADIBAwAAAAAEAAAAAAAAAAAAAAMAAAAAAAAAAAAAAABNQUNSAEAAICIZAyH/OQAAAyEAxwAAAAEAAAAAAAAAAQAAgAAAAACLAT8AAGAAAbQCdVlva2ttb2trICAgICAgICD/////N////llPS1IwMAAAAAAAAAABAAAAAQAAmJpL9V8PPPUAAAPoAAAAALfnFZIAAAAAt+cVkv+2/zkDawMhAAAAAwACAAEAAAAAAAEAAAMh/zkAAAOQ/7b/uANrAAEAAAAAAAAAAAAAAAAAAACkAAEAAACkAJgADQAAAAAAAgAIAEAACgAAAF0AvgABAAE=");
			background-color: lightblue;
			background-color: linen;
			background-color: burlywood;
			background-color: antiquewhite;
			background-color: yellow;
			background-color: lightyellow;
			background-color: blue;
			background-color: lightblue;
			background-color: black;
			background-color: white;
			background-color: wheat;
			background-color: #FFFDDA
//			background-color: darkslategrey;
//			background-color: darkgreyslate;
//			color: white;
			color: black;
			font-size:62.5%; 
			font-family: "New Times Roman";
			font-family: "serif";
			font-family: "sans-serif";
			font-family: "courier";
			font-family: "monospace";
			font-family: cursive;
			font-family: fantasy;
			font-family: yokkmokkOT;
			font-family: "arial";
			font-size: 38pt;
			}

//		h1 { font-size: 2.4em; } /* =24px */
		h1 { font-size: 14pt; } /* =24px */
		h2 { font-size: 12pt; } /* =24px */
		h3 { font-size: 10pt; } /* =24px */
		p  { font-size: 10pt; } /* =14px */
		li { font-size: 20pt; } /* =14px? */
		</style>

	<style id="style_buttons" >
//		body { text-align: center; background-color: "darkSlategrey"; color:"ivory"; }
                button {
//			visibility: hidden;
//			background: rgba(7, 99, 53, .1);
			background: transparent;
//	                border: 3px solid rgba(7, 99, 53, 1);
//	                border: 3px solid wheat;
//	                border: 3px solid #FFFDDA;
	                border: 3px solid darkSlategrey;
			border-radius: 5px;
//			color: rgba(7, 99, 53, 1);
//			color: ivory;
			color: darkSlategrey;
			color: black;
			cursor: pointer;
			line-height: 40px;
			font-size: 20px;
			outline: none;
			padding: 0 20px;
			transition: all .3s;
                	}
	        button:hover {
//	              background: rgba(7, 99, 53, 1);
			background: darkSlategrey;
			background: wheat;
			background: #FFFDDA;
//			background: yellow;
//			background: white;
//			color: rgba(255,255,255,1);
//			color: ivory				
			color: black;

  	              }
		p {font-size: 20px; font-weight: bold;
		</style>

	<style id="style_input" >
//		body { text-align: center; background-color: "darkSlategrey"; color:"ivory"; }
                input {
//			visibility: hidden;
//			background: rgba(7, 99, 53, .1);
			background: transparent;
//	                border: 3px solid rgba(7, 99, 53, 1);
	                border: 3px solid darkSlategrey;
			border-radius: 5px;
//			color: rgba(7, 99, 53, 1);
//			color: ivory;
//			color: darkSlategrey;
			color: black;
			cursor: pointer;
			line-height: 40px;
			font-size: 10px;
			outline: none;
			padding: 0 20px;
			transition: all .3s;
                	}
	        button:hover {
//	              background: rgba(7, 99, 53, 1);
  	              background: darkslategray;
//  	              background: yellow;
//  	              background: white;
//  	              color: rgba(255,255,255,1);
//  	              color: white;
//  	              color: ivory;
  	              color: darkslategray;
  	              }
		p {font-size: 10px; font-weight: bold;
		</style>




	<script id="script_allowdrop" >
		function allowDrop(ev) {ev.preventDefault();}
		function drag(ev) {ev.dataTransfer.setData("text", ev.target.id);}
		function drop(ev) {
			ev.preventDefault();
			var data = ev.dataTransfer.getData("text");
			ev.target.appendChild(document.getElementById(data));
			}
		</script>

	<style id="style_input_file">
		.fileContainer {
		    overflow: hidden;
		    position: relative;
			}
		
		.fileContainer [type=file] {
		    cursor: inherit;
		    display: block;
		    font-size: 999px;
		    filter: alpha(opacity=0);
		    min-height: 100%;
		    min-width: 100%;
		    opacity: 0;
		    position: absolute;
		    right: 0;
		    text-align: right;
		    top: 0;
			}
		</style>
<!--
	<style id="style_input_text">
		input[type=text] {
//			background-color: #BFBDBD;
//			background-color: darkSlategrey;
			background-color: wheat;
			background-color: #FFFDDA;
//			color: #979797;
			border:solid 1px darkSlategrey;
//			color: ivory;
			color: black;
			height: 28px;
			padding-left:10px;
			width: 191px;
			box-shadow: 2px 2px 0 #828181 inset;
			}
		input[type=button] {
//			background-color: #1E1E1E;
//			color: #979797;
			background-color: darkSlategrey;
			background-color: wheat;
			background-color: #FFFDDA;
//			color: ivory;
			color: darkslategray;
			height: 24px;
			width: 103px;
			text-transform:uppercase;
			box-shadow:-1px 2px #6E6B6A inset;
			}
//		input[type=button], input[type=text]
//			{border-radius: 5px; font-family: Sansation;}
//			{border-radius: 5px; font-family: yokkmokkOT;}
		</style>
	-->






	<style id="style_popover" >
		.popover  {
			position: relative;
			float: left;
			padding: 5px;
			/*z-ka1: 0;*/
			}
		.popover:hover {
//			background-color: #e9e9e2;
//			background-color: darkslategrey;
			background-color: wheat;
//			background-color: #FFFDDA;
			/*z-ka1: 50;*/
//			color: white;
//			color: ivory;
			color: black;
//			color: #335500;
			text-decoration: none;
			}
/*CSS for enlarged image*/
		.popover span { 
			position: absolute; 
//			background-color: #e5e5e5;
//			background-color: darkslategrey;
			background-color: wheat;
			background-color: #FFFDDA;
			padding: 5px;
			/*left: -1000px;*/
//			border: 1px solid #666;
//			border: 1px solid darkslategrey;
			border: 1px solid wheat;
			border: 1px solid #FFFDDA;
			visibility: hidden;
			color: black;
			text-decoration: none;
			}
/*CSS for enlarged image*/
		.popover span img { 
			border-width: 0px; 
			/*padding: 2px;*/
			}
		
/*CSS for enlarged image on hover*/
		.popover:hover span { 
			visibility: visible; 
//			width: 200px;
			top: 0px; /* use IF IE6 style to correct IE6 positions of larger image relative to thumb */
			left: 0px;/*position where enlarged image should offset horizontally */
			}
		</style>

	<style id="style_thumbnail" >
		.thumbnail  {
			position: relative;
			float: left;
			padding: 5px;
			/*z-ka1: 0;*/
			}
		.thumbnail:hover {
//			background-color: #e9e9e2;
			background-color: darkslategrey;
			/*z-ka1: 50;*/
//			color: #335500;
//			color: ivory;
			color: darkslategray;
			text-decoration: none;
			}
/*CSS for enlarged image*/
		.thumbnail span { 
			position: absolute; 
//			background-color: #e5e5e5;
			background-color: darkslategrey;
			padding: 5px;
			/*left: -1000px;*/
			border: 1px solid #666;
			visibility: hidden;
//			color: black;
			color: ivory;
			text-decoration: none;
			}
/*CSS for enlarged image*/
		.thumbnail span img { 
			border-width: 0px; 
			/*padding: 2px;*/
			}
		
/*CSS for enlarged image on hover*/
		.thumbnail:hover span { 
			visibility: visible; 
			width: 200px;
			top: 5px; /* use IF IE6 style to correct IE6 positions of larger image relative to thumb */
			left: 300px;/*position where enlarged image should offset horizontally */
			}
		</style>








	<script id="script_allowdrop">
		function allowDrop(ev) {
			ev.preventDefault();
			}

		function drag(ev) {
			ev.dataTransfer.setData("text", ev.target.id);
			}

		function drop(ev) {
			ev.preventDefault();
			var data = ev.dataTransfer.getData("text");
			ev.target.appendChild(document.getElementById(data));
		function drop1(ev) {
			ev.preventDefault();
			var data = ev.dataTransfer.getData("text");
			ev.target.appendChild(document.getElementById(data));
		function drop2(ev) {
			ev.preventDefault();
			var data = ev.dataTransfer.getData("text");
			ev.target.appendChild(document.getElementById(data));
			}
		</script>

	
	<script id="script_drop">
		function drop(e) {
			var e_id=e.getAttribute('id');
			var eid = e.attribute("id");
			alert( "BUGS_01 drop e_id="+e_id );
			alert( "BUGS_01 drop e.id="+e.id );
			var e_id=e.getAttribute("id");
			alert( "BUGS_00 drop e_id="+e_id );
			alert( "BUGS_00 drop e="+e );
			alert( "BUGS_01 drop e.attribute.id="+e.attribute.id );
			}
		</script>
	
	<script id="script_dropw1">
		function dropw1(e) {
			alert( "BUGS_110w dropw1 e="+e );
			alert( "BUGS_110w dropw1 e.id="+e.id );
			alert( "BUGS_111w dropw1 e.attribute.id="+e.attribute.id );
			}
		</script>
	<script id="script_dropb1">
		function dropb1(e) {
			alert( "BUGS_111b dropb1 e_id="+e_id );
			alert( "BUGS_111b dropb1 e.id="+e.id );
			alert( "BUGS_110b dropb1 e="+e );
			alert( "BUGS_21 dropb1 e.attribute.id="+e.attribute.id );
			}
		</script>

	<script id="script_allowdrop">
		function allowDrop(ev) { ev.preventDefault(); }
		function drag(ev) {ev.dataTransfer.setData("text", ev.target.id);}
		</script>

	<script id="script_drop">
		function drop(ev) {
			ev.preventDefault();
			var data = ev.dataTransfer.getData("text");
			ev.target.appendChild(document.getElementById(data));
			}
		function drop0(ev) {
			ev.preventDefault();
			var data = ev.dataTransfer.getData("text");
			ev.target.appendChild(document.getElementById(data));
			}
		function drop1(ev) {
			ev.preventDefault();
			var data = ev.dataTransfer.getData("text");
			ev.target.appendChild(document.getElementById(data));
			}
		function drop2(ev) {
			ev.preventDefault();
			var data = ev.dataTransfer.getData("text");
			ev.target.appendChild(document.getElementById(data));
			}

		function dropw(ev) {
			ev.preventDefault();
			var data = ev.dataTransfer.getData("text");
			ev.target.appendChild(document.getElementById(data));
			}
		function dropb(ev) {
			ev.preventDefault();
			var data = ev.dataTransfer.getData("text");
			ev.target.appendChild(document.getElementById(data));
			}
		function dropw1(ev) {
			ev.preventDefault();
			var data = ev.dataTransfer.getData("text");
			ev.target.appendChild(document.getElementById(data));
			}
		function dropb1(ev) {
			ev.preventDefault();
			var data = ev.dataTransfer.getData("text");
			ev.target.appendChild(document.getElementById(data));
			}
		function dropw2(ev) {
			ev.preventDefault();
			var data = ev.dataTransfer.getData("text");
			ev.target.appendChild(document.getElementById(data));
			}
		function dropb2(ev) {
			ev.preventDefault();
			var data = ev.dataTransfer.getData("text");
			ev.target.appendChild(document.getElementById(data));
			}
		</script>

	<style id="style_startup">
//		body { background-color: wheat; }	
		body { background-color: #FFFDDA; color: black }	
		</style>

	<script id="script_startup_canvas" >
		function startup_canvas(args) {
			var dt = dttm('');


//			canvas_button(id,imgsrc,txt,x,y,fontsize,fontname,fillstyle);
			canvas_button('canvas_button_alloff_w','/imgs/btn/koeyeb.png','head',80,40,'18px','Verdana','white' );
			canvas_button('canvas_button_toggle_w','/imgs/btn/koeyew.png','head',80,40,'18px','Verdana','black' );
			canvas_button('canvas_button_allon_w','/imgs/btn/koeyew.png','head',80,40,'18px','Verdana','black' );
			canvas_button('canvas_button_head_w','/imgs/btn/koeyeb.png','head',80,40,'18px','Verdana','white' );
			canvas_button('canvas_button_setup_w','/imgs/btn/koeyeb.png','setup',80,40,'18px','Verdana','black' );
			canvas_button('canvas_button_tail_w','/imgs/btn/koeyeb.png','setup',80,40,'18px','Verdana','black' );


//			canvas_button('canvas_button_hunt_w','/imgs/btn/koeyew.png','hunt',80,40,'18px','Verdana','black' );
//			canvas_button('canvas_button_tag_w','/imgs/btn/koeyeb.png','tag',80,40,'18px','Verdana','black' );
//			canvas_button('canvas_button_swarm_w','/imgs/btn/koeyeb.png','swarm',80,40,'18px','Verdana','black' );


			if( document.getElementById('canvas')) {
				var ctx= document.getElementById('canvas').getContext('2d');
				}


			var ctx_w = ctx;
			var ctx_b = ctx;
			var ctx_m = ctx;
			var ctx_bbwii = ctx;
			var ctx_blobs = ctx;
			if( document.getElementById('canvas_w')) {
				ctx_w = document.getElementById('canvas_w').getContext('2d');
				}
			if( document.getElementById('canvas_b')) {
				ctx_b = document.getElementById('canvas_b').getContext('2d');
				}
			if( document.getElementById('canvas_m')) {
				ctx_m = document.getElementById('canvas_m').getContext('2d');
				}
			if( document.getElementById('canvas_bbwii')) {
				ctx_bbwii = document.getElementById('canvas_bbwii').getContext('2d');
				}
			if( document.getElementById('canvas_bbwii')) {
				ctx_blobs = document.getElementById('canvas_blobs').getContext('2d');
				}
			var ctx_w = canvas_w.getContext('2d');
			var canvas_b = document.getElementById('canvas_b');
			var ctx_b = canvas_b.getContext('2d');
			var canvas_m = document.getElementById('canvas_m');
			var ctx_m = canvas_m.getContext('2d');

			drawimage(ctx,120,100,'/imgs/btn/koeyew.png');
			drawimage(ctx,200,200,'/imgs/btn/koeye.png');
			drawimage(ctx,500,400,'/imgs/btn/koeyeb.png');

//			drawimage(ctx_w,100,100,'/imgs/btn/kop12.png');
//			drawimage(ctx_b,100,100,'/imgs/btn/kop34.png');
//			drawimage(ctx_m,100,100,'/imgs/btn/kop1234.png');



			var my_gradient = ctx.createLinearGradient(0, 0, 0, 170);
			var my_gradient_w = ctx_w.createLinearGradient(0, 0, 0, 170);
			var my_gradient_b = ctx_b.createLinearGradient(0, 0, 0, 170);
			var my_gradient_m = ctx_m.createLinearGradient(0, 0, 0, 170);
			my_gradient.addColorStop(0, "black");
			my_gradient.addColorStop(1, "white");

			my_gradient_w.addColorStop(0, "white");
			my_gradient_w.addColorStop(1, "black");
			ctx_w.fillStyle = my_gradient_w;
//			ctx_w.fillRect(10,10,1300,650);

			my_gradient_b.addColorStop(0, "black");
			my_gradient_b.addColorStop(1, "white");
			ctx_b.fillStyle = my_gradient_b;
//			ctx_b.fillRect(0,0,500,500);

			my_gradient_m.addColorStop(0, "burlywood");
//			my_gradient_m.addColorStop(1, "wheat");
			my_gradient_m.addColorStop(1, "#FFFDDA");
			ctx_m.fillStyle = my_gradient_m;
			ctx_m.fillRect(0,0,500,500);

			ctx.fillStyle = my_gradient;
			ctx.fillRect(10,10,2000,800);
			ctx.font = "40pt Calibri";
			ctx.font = "50pt yokkmokkOT";
			ctx.fillStyle = 'white';
			ctx.fillText("jkwii timejak:      its about time",200, 80 );
			ctx.fillStyle = 'black';
			ctx.font = "160pt yokkmokkOT";
//			ctx.fillText("-= 2 0 2 0 =-",450, 160 );
			ctx.fillStyle = "blue";
			ctx.fillText("J U L Y   4  ",600, 200 );
			ctx.font = "40pt yokkmokkOT";
			ctx.fillStyle = "red";
			ctx.fillText("july 4 1977  jsk",100, 240 );
			ctx.fillStyle = "blue";
			ctx.fillText("43rd wedding anniversary",400, 240 );
			ctx.fillStyle = "red";
			ctx.fillText("july 4 2020 jsk",700, 240 );
			ctx.fillStyle = "black";

			ctx.font = "20pt yokkmokkOT";
			ctx.fillStyle = "wheat";
			ctx.fillText("-= shock =- n -= awe =-",500, 300 );
			ctx.fillStyle = "black";



//			ctx.fillText("avril 14 2020",650, 180 );

//			ctx.font = "110pt yokkmokkOT";
//			ctx.fillText("-=  happy passover easter  =-",100, 300 );
//			ctx.fillText("-=  happy easter passover  =-",100, 400 );
//			ctx.fillText("-=  happy birthday jessie  =-",100, 500 );

			ctx.strokeStyle = "blue";
			ctx.font = "100pt yokkmokkOT";
			ctx.fillText("-=   DEFFORD  COURT  =-",80, 350 );
			ctx.font = "160pt yokkmokkOT";
			ctx.fillText("-=     KEEP  OUT     =-",50, 600 );

			ctx.font = "60pt yokkmokkOT";
			ctx.fillText("-=  COVID-19 LOCKDOWN  =-",200, 460 );

			ctx.font = "70pt yokkmokkOT";
			ctx.fillText("est. 1979",1100, 400 );

			ctx.font = "40pt yokkmokkOT";
			ctx.fillText("offroad",150, 390 );
			ctx.fillText("private drive",500, 390 );
			ctx.fillText("no outlet",900, 390 );

			ctx.font = "20pt yokkmokkOT";
			ctx.fillText("please . . .",300, 500 );
			ctx.fillText("jkwii\@hi_risk",900, 500 );

			ctx.fillStyle="blue";
			ctx.strokeStyle="red";
			ctx.beginPath();
			ctx.lineWidth=6;
			ctx.rect(20, 250, 1300, 20);
			ctx.stroke();

//			ctx.font = "80pt yokkmokkOT";
//			ctx.fillText("offroad  private drive '100, 350 );
//			ctx.font = "110pt yokkmokkOT";
//			ctx.fillText("-=  C O V D 1 9  L O C K D O W N  =-",100, 400 );
////			ctx.fillText("-=  K E E P   O U T  =-",100, 400 );
//			ctx.font = "80pt yokkmokkOT";
//			ctx.fillText("please ...  ",100, 600 );
//			ctx.fillText("jkwii@hirisk ",600, 600 );
//
			ctx.font = "50pt yokkmokkOT";
			ctx.fillText( dt, 25,150 );
//			ctx.fillText("-= one =- -= eins =- -= un =- -= uno =- ",100, 400 );
//			ctx.fillText(dt,100, 100 );
//			ctx.font = "100pt yokkmokkOT";
//			ctx.fillText("eins",1000, 600 );

//			alert( "BUGS_690 startup_canvas" );

			drawimage(ctx,100,200,'/imgs/btn/ko.png');
			drawimage(ctx,200,100,'/imgs/btn/ok.png');


//			let mouse = { x: undefined, y: undefined };
//			window.addEventListener('mousemove', function(e) {
//				mouse.x = event.x;
//				mouse.y = event.y;
//				});
//
//			document.getElementById('div_msg').innerHTML = 'MOUSE '+mouse.x+","+mouse.y;


//			alert( "BUGS_701 startup_canvas ctx_w="+ctx_w );
			ctx_w.font = "12pt Calibri";
			ctx_w.fillStyle = 'red';
//			ctx_w.fillText("jkwii timejak_w",20, 10 );

//			alert( "BUGS_702 startup_canvas ctx_b="+ctx_b );
			ctx_b.font = "12pt Calibri";
			ctx_b.fillStyle = 'black';
//			ctx_b.fillText("jkwii timejak_b",20, 10 );

//			alert( "BUGS_703 startup_canvas ctx_m="+ctx_m );
			ctx_m.font = "12pt Calibri";
			ctx_m.fillStyle = 'black';
			ctx_m.fillText("jkwii timejak_m",20, 10 );
//			alert( "BUGS_704 startup_canvas ctx_m="+ctx_m );

//			ctx.fillStyle = "url('/gm/imgs/bg/bg_steel_linear.png')";
//			ctx.fillStyle = "url('/gm/imgs/bg/background1.jpg')";
//			ctx.fillstyle = "/gm/imgs/bg/background1.jpg";
//			var line1={x:10,y:10, l:40, h:1};
//			var down=false;
//			var mouse={x:0,y:0};
//			var line="line";
//			var mouse="mouse";
//			var down="false";
//			ctx.onmousemove=function(e){ 
//				mouse={x:e.pageX-this.offsetLeft,y:e.pageY-this.offsetTop};
//				this.onmousedown=function(){down=true};
//				this.onmouseup=function(){down=false} ; 
//				}
//			setInterval(function(){
//				ctx.clearRect(0,0,canvas.width,canvas.height)
//				ctx.beginPath()
//				ctx.moveTo(line1.x,line1.y)
//				ctx.lineTo(line1.x +line1.l,line1.y)
//				ctx.lineTo(line1.x +line1.l,line1.y+line1.h)
//				ctx.lineTo(line1.x,line1.y+line1.h)
//
//				ctx.isPointInPath(mouse.x,mouse.y)? (ctx.fillStyle ="red",line1.x=down?mouse.x:line1.x,line1.y=down?mouse.y:line1.y):(ctx.fillStyle ="blue")
//				ctx.fill()
//				},100)

//		var isInside=(
//			mouseX>=RectX && 
//			mouseX<=RectX+RectWidth &&
//			mouseY>=RectY &&
//			mouseY<=RectY+RectHeight
//			);

//		ctx.addEventListener('mousemove', e => {
//			let bound = ctx.getBoundingClientRect();
//			let x = e.pageX - bound.left;
//			let y = e.pageY - bound.top;
//			paths.forEach((path, index) => {
//				if ($.isPointInPath(path, x, y)) {
//					console.log(index);
//					}
//				});
//			});
//			document.body.appendChild(ctx);
//			alert( "BUGS_600 startup_canvas args="+args );

//			var canvas = document.getElementById('canvas');
//			var canvas_b = document.getElementById('canvas_b');
//			var canvas_m = document.getElementById('canvas_m');
//			var ctxx = canvas.getContext('2d');
//			var ctx_b = canvas_b.getContext('2d');
//			var ctx_m = canvas_m.getContext('2d');
//			ctxx.fillStyle = "yellow";
//			ctxx.fillText("jkwii timejak",20, 50 );
//			ctx_b.fillStyle = "black";
//			ctx_b.fillText("jkwii timejak_b" );
//			ctx_w.fillStyle = "white";
//			ctx_w.fillText("jkwii timejak_w" );
//			ctx_m.fillStyle = "red";
//			ctx_m.fill();
//			ctx_m.fillText("jkwii timejak_m" );
//
//			alert( "BUGS_651 ctx args="+args );
//			eval(req.responseText);args
//			req.open("GET", "/notes.txt", false);
//			req.send();
//			ctx.width = window.innerWidth;
//			ctx.height = window.innerHeight;
//			alertmsg( "BUGS_780 startup_canvas end" );
			}
		</script>


	<script id="script_shape">
		class Shape {
			constructor(x, y) {
				this.x = x;
				this.y = y;
				this.initialX = x;
				this.initialY = y;
				};  
// this is where we control the shape's appearance
// this is where we control movement and interactivity
			draw = () => {};  
			update = () => {this.draw();};
			};

		function animate() {
			requestAnimationFrame(animate);
// bugs			ctx.clearRect(0,0, window.innerWidth, window.innerHeight);
// bugs			Shape.draw();
			};
		animate();
		</script>

	<script id="script_drawimage" >
//		window.onload = function () {
		function drawimage(ctx,x,y,imgsrc) {
//			alert( "BUGS_680 drawimage" );
//			var canvas  = document.getElementById("canvas");
//			var ctx = canvas.getContext('2d');
//			var canvas_b  = document.getElementById("canvas_b");
//			var ctx_b = canvas_b.getContext('2d');
//			var canvas_w  = document.getElementById("canvas_w");
//			var ctx_w = canvas_w.getContext('2d');
//			var canvas_m  = document.getElementById("canvas_m");
//			var ctx_m = canvas_m.getContext('2d');

			var img = new Image();
//			img.src = '/imgs/btn/koeye.png';
			img.src = imgsrc;
			img.onload = function (e) {
//				ctx.drawImage(img, 10, 10);
				ctx.drawImage(img, 0, 0);
				}
			}
		</script>

	<script id="script_canvas_button" >
//	canvas_button(id,imgsrc,txt,x,y,font,fillstyle);
//	canvas_button('canvas_button_head_w','/imgs/btn/koeyew.png','head',80,40,'18px',' Verdana','black' );
//		function canvas_button(id,imgsrc,txt) {
		function canvas_button(id,imgsrc,txt,x,y,fontsize,fontname,fillstyle) {
//			alertmsg( "BUGS_1025 canvas_button id="+id+","+imgsrc+ ","+txt ","+x ","+y ","+fontsize ","+fontname ","+fillstyle );

			var img = new Image();
			img.src = '/imgs/btn/koeye.png';
			if( imgsrc != "" ) { img.src = imgsrc; }


//			alertmsg( "BUGS_1040 canvas_button id="+id+","+imgsrc+","+txt+","+x+","+y+","+fontsize+","+fontname+","+fillstyle );
			if(! document.getElementById(id)) { 
//				alertmsg( "BUGS_1042 canvas_button NOTFOUND id="+id+","+imgsrc+","+txt );
				return(""); 
				}

			var canvas  = document.getElementById(id);
			var ctx= canvas.getContext('2d');
			img.onload = function(e) {
				ctx.drawImage(img, 0, 0);
				}

//			alertmsg( "BUGS_1007 txt="+txt+","+x+","+y+" font="+font+" fillstyle="+fillstyle );
//			ctx.font = '18px yokkmokkOT';
//			ctx.font = '18px'+' '+'Verdana';
//			ctx.fillStyle = 'white';
//			ctx.fillStyle = 'black';

			ctx.fillStyle = fillstyle;
			var font = fontsize+" "+fontname;
			ctx.font = font;

//			alertmsg( "BUGS_1061 canvas_button FILLTEXT id="+id+","+imgsrc+","+txt+","+x+","+y+","+font+","+fillstyle );
			ctx.fillText(txt,x,y);			
//			alertmsg( "BUGS_1062 canvas_button FILLTEXT id="+id+","+imgsrc+",TXT="+txt+" x="+x+"y="+y+"fontname="+fontname );

//			ctx.font = '18px yokkmokkOT';
//			var gradient = ctx.createLinearGradient(0, 0, c.width, 0);
//			gradient.addColorStop("0"," magenta");
//			gradient.addColorStop("0.5", "blue");
//			gradient.addColorStop("1.0", "red");
//			ctx.fillStyle = gradient;
//			alertmsg( htmout );
//			alertmsg( "BUGS_1060 canvas_button FILLTEXT id="+id+","+imgsrc+",TXT="+txt );
			}
		</script>	

	<script id="script_play_audio" >
		function play_audio(args) {
			alertmsg("BUGS_1601 play_audio args="+args );
			return("");
			}
		</script>

	<script id="script_play_video" >
		function play_video(args) {
			alertmsg("BUGS_1602 play_video args="+args );
			return("");
			}
		</script>


	<script id="script_mute" >
// Mute a singular HTML5 element
// Try to mute all video and audio elements on the page
		function mute(elem) {
			alertmsg('BUGS_1071 mute elem='+elem );
			elem.muted = true; elem.pause();
			alertmsg('BUGS_1072 mute elem='+elem );
			}

		function allmute(args) {
//  			var x, i;
//			x = document.querySelectorAll(".img");
//			for (i = 0; i < x.length; i++) {
//				x[i].style.backgroundColor = "red";
//				}
//
			alertmsg('BUGS_1081 mute args='+args );
			var elems = document.querySelectorAll("video, audio");
//			var elems = document.querySelectorAll("<audio");
			alertmsg('BUGS_1081 mute elem='+elem );
			[].forEach.call(elems, function(elem) { 
				alertmsg('BUGS_1082 mute elem='+elem );
				mute(elem); 
				});
			alertmsg('BUGS_1083 mute elem='+elem );
			}	


// HTML Audio/Video Methods
// Method 	Description
// addTextTrack() 	Adds a new text track to the audio/video
// canPlayType() 	Checks if the browser can play the specified audio/video type
// load() 	Re-loads the audio/video element
// play() 	Starts playing the audio/video
// pause() 	Pauses the currently playing audio/video

// HTML Audio/Video Events
// Event 	Description
// abort 	Fires when the loading of an audio/video is aborted
// canplay 	Fires when the browser can start playing the audio/video
// canplaythrough 	Fires when the browser can play through the audio/video without stopping for buffering
// durationchange 	Fires when the duration of the audio/video is changed
// emptied 	Fires when the current playlist is empty
// ended 	Fires when the current playlist is ended
// error 	Fires when an error occurred during the loading of an audio/video
// loadeddata 	Fires when the browser has loaded the current frame of the audio/video
// loadedmetadata 	Fires when the browser has loaded meta data for the audio/video
// loadstart 	Fires when the browser starts looking for the audio/video
// pause 	Fires when the audio/video has been paused
// play 	Fires when the audio/video has been started or is no longer paused
// playing 	Fires when the audio/video is playing after having been paused or stopped for buffering
// progress 	Fires when the browser is downloading the audio/video
// ratechange 	Fires when the playing speed of the audio/video is changed
// seeked 	Fires when the user is finished moving/skipping to a new position in the audio/video
// seeking 	Fires when the user starts moving/skipping to a new position in the audio/video
// stalled 	Fires when the browser is trying to get media data, but data is not available
// suspend 	Fires when the browser is intentionally not getting media data
// timeupdate 	Fires when the current playback position has changed
// volumechange 	Fires when the volume has been changed
// waiting 	Fires when the video stops because it needs to buffer the next frame


 
// HTML Audio/Video Properties
// Property 	Description
// audioTracks 	Returns an AudioTrackList object representing available audio tracks
// autoplay 	Sets or returns whether the audio/video should start playing as soon as it is loaded
// buffered 	Returns a TimeRanges object representing the buffered parts of the audio/video
// controller 	Returns the MediaController object representing the current media controller of the audio/video
// controls 	Sets or returns whether the audio/video should display controls (like play/pause etc.)
// crossOrigin 	Sets or returns the CORS settings of the audio/video
// currentSrc 	Returns the URL of the current audio/video
// currentTime 	Sets or returns the current playback position in the audio/video (in seconds)
// defaultMuted 	Sets or returns whether the audio/video should be muted by default
// defaultPlaybackRate 	Sets or returns the default speed of the audio/video playback
// duration 	Returns the length of the current audio/video (in seconds)
// ended 	Returns whether the playback of the audio/video has ended or not
// error 	Returns a MediaError object representing the error state of the audio/video
// loop 	Sets or returns whether the audio/video should start over again when finished
// mediaGroup 	Sets or returns the group the audio/video belongs to (used to link multiple audio/video elements)
// muted 	Sets or returns whether the audio/video is muted or not
// networkState 	Returns the current network state of the audio/video
// paused 	Returns whether the audio/video is paused or not
// playbackRate 	Sets or returns the speed of the audio/video playback
// played 	Returns a TimeRanges object representing the played parts of the audio/video
// preload 	Sets or returns whether the audio/video should be loaded when the page loads
// readyState 	Returns the current ready state of the audio/video
// seekable 	Returns a TimeRanges object representing the seekable parts of the audio/video
// seeking 	Returns whether the user is currently seeking in the audio/video
// src 	Sets or returns the current source of the audio/video element
// startDate 	Returns a Date object representing the current time offset
// textTracks 	Returns a TextTrackList object representing the available text tracks
// videoTracks 	Returns a VideoTrackList object representing the available video tracks
// volume 	Sets or returns the volume of the audio/video
		</script>


	<script id="script_progressbar">
		var reader;
		var progress = document.querySelector('.percent');
		function abortRead() {reader.abort(); }

		function errorHandler(evt) {
			switch(evt.target.error.code) {
				case evt.target.error.NOT_FOUND_ERR:
					alert('File Not Found!');
        				break;
				case evt.target.error.NOT_READABLE_ERR:
					alert('File is not readable');
					break;
				case evt.target.error.ABORT_ERR:
					break; // noop
					default:
				alertmsg('ERR_7750 reading file');
				};
			}

// evt is an ProgressEvent.
// Increase the progress bar length.
		function updateProgress(evt) {
			if (evt.lengthComputable) {
				var percentLoaded = Math.round((evt.loaded / evt.total) * 100);
				if (percentLoaded < 100) {
					progress.style.width = percentLoaded + '%';
					progress.textContent = percentLoaded + '%';
					}
				}
			}

// Reset progress indicator on new file selection.
		function handleFileSelect(evt) {
			progress.style.width = '0%';
			progress.textContent = '0%';
			reader = new FileReader();
			reader.onerror = errorHandler;
			reader.onprogress = updateProgress;
			reader.onabort = function(e) {
				alertmsg('MSG_7790 cancelled');
				};
			reader.onloadstart = function(e) {
				document.getElementById('progress_bar').className = 'loading';
				};

// Ensure that the progress bar displays 100% at the end.
			reader.onload = function(e) {
				progress.style.width = '100%';
				progress.textContent = '100%';
				setTimeout("document.getElementById('progress_bar').className='';", 2000);
				}

// Read in the image file as a binary string.
			reader.readAsBinaryString(evt.target.files[0]);
			}

		document.getElementById('files').addEventListener('change', handleFileSelect, false);
		</script>


	<script id="script_jaximg">
		function jaximg(args) {
			var url_default="ko.png";
			var url	
			if( args != "" ) { url = args; }
			if(! filecheck(img)) { return(""); }
			var xhr = new XMLHttpRequest();
//			xhr.open('GET', '/path/to/image.png', true);
			xhr.open('GET', url, true);
			xhr.responseType = 'blob';
	
// Note: .response instead of .responseText
			xhr.onload = function(e) {
				if (this.status == 200) {
					var blob = new Blob([this.response], {type: 'image/png'});
					alertmsg( "MSG_7760 jax_blob" ):
					}
				};
			xhr.send();
			}

// var byte3 = uInt8Array[4]; 
// byte at offset 4
//  ...
		function jaximg2(args) {
			var url_default = "ko.png";
			if( args != "" ) { url = args; }
			if(! filecheck(imgurl)) { return(""); }
			var xhr = new XMLHttpRequest();
			xhr.open('GET', url, true);
			xhr.responseType = 'arraybuffer';
			xhr.onload = function(e) {
				var uInt8Array = new Uint8Array(this.response); // this.response == uInt8Array.buffer
				};
			xhr.send();
			}
		</script>

		<script id="script_jaxsend" >
			function sendText(txt) {
				var xhr = new XMLHttpRequest();
				xhr.open('POST', '/q=sendtextr', true);
				xhr.onload = function(e) {
					if (this.status == 200) {
						alertmsg(this.responseText);
						}
					};
				xhr.send(txt);
				}

// disable		sendText('test string');
			function sendTextNew(txt) {
				var xhr = new XMLHttpRequest();
				xhr.open('POST', '/?q=sendtextnew', true);
				xhr.responseType = 'text';
				xhr.onload = function(e) {
					if (this.status == 200) {
						alert(this.response);
						}
					};
				xhr.send(txt);
				}

// disable		sendTextNew('test string');
			function sendForm() {
				var formData = new FormData();
				formData.append('username', 'jkwii');
				formData.append('id', 1213);
				var xhr = new XMLHttpRequest();
				xhr.open('POST', '/?q=sendform', true);
				xhr.onload = function(e) { alert( "MSG_7000 sendform " ); };
				xhr.send(formData);
				}

// Append extra data before send.
// Prevent page from submitting.
			function sendForm(form) {
				var formData = new FormData(form);
				formData.append('secret_token', '1234567890'); 
				var xhr = new XMLHttpRequest();
				xhr.open('POST', form.action, true);
				xhr.onload = function(e) { alert("MSG_7000 sendForm form="+form); };
				xhr.send(formData);
				return false; 
				}

			function uploadFiles(url, files) {
				var formData = new FormData();
				for (var i = 0, file; file = files[i]; ++i) {
					formData.append(file.name, file);
					}
				var xhr = new XMLHttpRequest();
				xhr.open('POST', url, true);
				xhr.onload = function(e) { alert("BUGS_uploadFiles url="+url+" files="+files); };
// multipart/form-data
				xhr.send(formData);  
				}

//			document.querySelector('input[type="file"]').addEventListener('change', function(e) {
//				uploadFiles('/?q=input_file', this.files);
//				}, false);

			function upload_blob(blobOrFile) {
				var xhr = new XMLHttpRequest();
				xhr.open('POST', '/q=blobfile', true);
				xhr.onload = function(e) { alert("MSG_7000 blobfile");};

// Listen to the upload progress.
				var progressBar = document.querySelector('progress');
				xhr.upload.onprogress = function(e) {
					if (e.lengthComputable) {
						progressBar.value = (e.loaded / e.total) * 100;
						progressBar.textContent = progressBar.value; // Fallback for unsupported browsers.
						}
					};
				xhr.send(blobOrFile);
				}
//			upload_blob(new Blob(['jkwii timejak'], {type: 'text/plain'}));



// Access-Control-Allow-Origin: http://example.com
// Access-Control-Allow-Origin: *
			function jaxs_cors(args) {
				var urljson_default = "/?q=jaxs_cors_json";
				var urljson = urljson_default;
				if( args != "" ) { urljson = args; }
				var xhr = new XMLHttpRequest();
//				xhr.open('GET', 'httlP::/example.com/hello.json');
//				xhr.open('GET', 'index.json');
				xhr.open('GET', urljson);
				xhr.onload = function(e) {
					var data = JSON.parse(this.response);
					alertmsg( "MSG_7100 jaxs_cors urljson="+urljson );
					}
				xhr.send();
				}
			</script>










	<script id="script_alertmsg" >
		alertmsg(msg) {
			alert( "alert_101 msg="+msg );
			document.getElementById('div_msg').innerHTML=msg;
			document.getElementById('div_log').insertAdjacetHTML('afterend,msg);
//			document.getElementById('div_log').insertAdjacetHTML('beforeend,msg);
//			document.getElementById('div_log').insertAdjacetHTML('afterbegin,msg);
//			document.getElementById('div_log').insertAdjacetHTML('beforebegin,msg);
			}
		</script>

	<style id="style_details">
		details { border: 1px solid #aaa; border-radius: 4px; padding: .5em .5em 0; }
		summary { font-weight: bold; margin: -.5em -.5em 0; padding: .5em; }
		details[open] { padding: .5em; }
		details[open] summary { border-bottom: 1px solid #aaa; margin-bottom: .5em; }
		</style>

	<script id="script_ytload" >
		function ytload(args) {

var ytlist_default = `
yt_20190404_spring_blender_open_movie|https://www.youtube.com/watch?v=WhWc3b3KhnY
yt_20180531_first_of_spring_dgital_animation_showcase|https://www.youtube.com/watch?v=IAaLzP1U4nc
`;
			alertmsg( "MSG_300 ytload args="+args );
			return( ytlist.split("\n"));
			}
		</script>

	<script id="script_ytlist" >
		var childNumber_yt = 3;
		var ytlist = new Array();
		function script_ytlist(src) {
			ytlist=script_ytlist_load(src);
			alert( "BUGS_3000 script_ytlist_load src="+src );
			alert( "BUGS_3001 script_ytlist_load ytlist="+ytlist );
			script_ytlist_show(ytlist);
			alert( "BUGS_3002 script_ytlist_load ytlist="+ytlist );
			}
		function script_ytlist_ajax(src) {
			if( filecheck(src)) {
				var ytlist='';
				alert( "BUGS_2941 src="+src+" ytlist="+ytlist );
				ytlist=script_ytlist_load(src);
				script_ytlist_show(ytlist);
				alert( "BUGS_2942 src="+src+" ytlist="+ytlist );
				}
			}
		</script>

		<script id="script_avlist" >
			var childNumber_av = 3;
			function script_avlist() {
				script_avlist_load();
				script_avlist_show();
//				var parent = document.getElementById('div_tllist');
//				var newChild_tl = '<p>tl ' + childNumber_tl + '</p>';
//				newChild_tl += "<hr color=white><h1>tllist one</h1><hr color=white>";
//				parent.insertAdjacentHTML('beforeend', newChild_tl);
//				childNumber++;
				}
			</script>


		<script id="script_avlist_load" >
			var avlist = new Array();
			function script_avlist_load() {

//				alert( "BUGS_1455 script__avlist_load" );
				var z=0;

			avlist[z++] = "/kb/jtfdc/vid/jtfdc_20190122_2200_stalkaround_jtf28in_drivewaytraffic.mp4";
avlist =
`/index.mp4
/index1_avril.mp4
/index1.mp4
/index1.mp4`.split("\n");
			var z = avlist.length - 1;
//			alert( "BUGS_1875 script_load_avlist("+z+")="+avlist[z] + " len="+avlist.length );
//			document.write( "avlist_lost avlist_length="+avlist.length+" z="+z );
				return(avlist);
				}

		function script_avlist_show() {
			var z = 0; var avout=""; var len=avlist.length;
			var avid = ""; var avurl = "";
			var avid_default = "index.mp4";
			var avid_img_default = "/imgs/links/av.png";
//			var avid_tn_default = "/imgs/links/koeye_av.png";
			var avid_tn_default = "/imgs/links/tn/tn_av.png";
			var avid_img = avid_img_default;
			var avid_tn = avid_tn_default;
//			alert( "bugs_900 script_avlist_show IN" );
			for( z=0; z< avlist.length; z++ ) {
				avid = avlist[z];
				avid_filename = avid.substring(avid.lastIndexOf('/')+1);
				avid_ext = avid_filename.split(".")[1];
				avid_pathname = avid.replace( avid_filename, "" );
//				avid_code = avid_filename.replace(".mp4", "" );
				avid_code = avid_filename.replace(avid_ext, "" ).replace(".","");


				avid_img = avid_pathname + "/imgs/" + avid_code + ".png";
				avid_tn = avid_pathname + "tn/tn_" + avid_code + ".gif";
				if( avid_pathname == "" ) {
					avid_img = avid_pathname + avid_code + ".png";
							if(( element == "alloff" )) {
//				alert( "BUGS_1740 hideshow element="+element );
 				for( j=0; j<divids.length; j++ ) {
 					divid=divids[j];
					div_divid="div_"+divid;
					div_divid_w = div_divid+"_w";
					div_divid_m = div_divid+"_m";
					div_divid_b = div_divid+"_b";
					if( divid == "<br>" ) { continue; }

					alert( "BUGS_1750 hideshow j="+j+" element="+element );

					if( document.getElementById(div_divid)) {
						document.getElementById(div_divid).style.display="none";
						}
					if( document.getElementById(div_divid_w)) {
						document.getElementById(div_divid_w).style.display="none";
						}
					if( document.getElementById(div_divid_m)) {
						document.getElementById(div_divid_m).style.display="none";
						}
					if( document.getElementById(div_divid_b)) {
						document.getElementById(div_divid_b).style.display="none";
						}

//					var disp = document.getElementById(div_divid).style.display;
					alert( "BUGS_1770_allof j="+j+" disp="+disp+" htmout="+htmout+ "element="+element );
					}
				}	avid_tn = avid_pathname +  avid_code + ".gif";
					}
				if( avid_pathname == "/" ) {
					avid_img = avid_pathname + "" + avid_code + ".png";
					avid_tn = avid_pathname + "" + avid_code + ".gif";
					}

/////////////////////
// This Immediately Invoked Function Expression is invoked via call.
// call() takes 1 or more arguments: the first being the scope you want the 
// invoked function be in; the other arguments become arguments of the function
// itself.
// In this case, the scope of our function is an empty object ({}).
// This object allows us to attach functions using the this.* syntax and call the 
// functions with this["string"]() without ever polluting the global namespace. 
// It is also forward compatible with ECMAScript 5's scrict-mode as it does not
// use arguments.callee.
//		(function(document, window){
//		    var functionName = "myFunction";
// you'll need to define the function _before_ you call it.
//			    this.myFunction = function(){
//	Do some stuff
//			        alert('me');
//				    };
//			    this[functionName]();
//////////////////
//				alert( "BUGS_1360 avid="+avid+" ext="+avid_ext+" avid_pathname="+avid_pathname+" avid_filename="+avid_filename );
//				alert( "BUGS_1361 avid="+avid+" avid_ext="+avid_ext+ " avid_code="+avid_code+" avid_tn="+avid_tn );
//				alert( "BUGS_1350 avid="+avid+" avid_code="+avid_code+" avid_tn="+avid_tn );
//				tlout += "<h1><b>tllist_"+z+"</b><h1>";
//				tlout += "<a href='/index_vu.html?tlid="+tlid+"' target=_blank>";
//				tlout += "	<img name='img_" + tlid + "' src='"+tn_tlid+"' border=0 height=100 >\n";
//				tlout += "	</a>";
//				tlout += "<a href='"+tlid+".html' class="thumbnail"  target=_blank>";

// bugs				tlout += "<a href='"+tlid+".html' class='thumbnail'  target=_blank>";
//				avout += "<a href='/index_av.html?avid="+avid+"' class='thumbnail' target=_blank>";

				avout += "<a href='?avid="+avid+"' class='thumbnail' target=_blank>";

//				if( gif ) {				
//					avout += "	<img name='" + avid_img + "' height=25 src='"+avid_tn+"' border=0 height=100 >\n";
//					avout += "	<span><img name='img_" + avid + "' src='"+avid_img+"' border=0 height=100 ></span>\n";
//					avout += "	</a>";
//					}

				avout += "	<img name='" + avid_code + "' height=25 src='"+avid_tn_default+"' border=0 height=100 >\n";
				avout += "	<span><img name='" + avid_code + "' src='"+avid_tn+"' border=0 height=100 ></span>\n";
				avout += "	</a>";



//				alert( "bugs430 avid=" + avid + " tn_avid=" + tn_avid );
				}
//			document.write( "bugs435 avout=" + avout );

//			alert( "BUGS432_show avlist("+len+")="+avlist[z] + " len="+avlist.length );
// 			document.getElementById('div_avlist').innerHTML += avout;
			var parent = document.getElementById('div_avlist');
			parent.insertAdjacentHTML('beforeend', avout);
			}
			</script>


		<script id="script_ytlist_load" >
			var ytlist = new Array();


			function script_ytlist_load(src) {
//				alert( "BUGS_5670 script_ytlist_load src="+src );

				if( src != "" ) {
					var url = src.replace("jax=","");
//					alert( "BUGS_5602 url="+url+" kolists_jax="+kolists['jax'] );
					jax(url);
					var ytlist = kolists['jax'].split("\n");

//					alert( "BUGS_5689 ytlist_len="+ytlist.length+" ytlist="+ytlist );
//					alert( "BUGS_5681 kolists_jax="+kolists['jax'].length );
//					alert( "BUGS_5680 ytlist="+ytlist);
					return(ytlist);
					}





				if( src == "" ) {
var ytlist_text_ajax =
`https://youtube.com
yt_outerlight_20200130_kobe_bryant_crash_predicated_simpsons|yt_outerlight_20200130_kobe_bryant_crash_predicted_simpsons|https://www.youtube.com/watch?v=Bp2zJ5U31Ow
`;

//					alert( "BUGS_1171 script_ytlist_load src="+src+" ytlist_text_ajax="+ytlist_text_ajax );
					ytlist_text_ajax = load_ajax(src);
//					alert( "BUGS_1172 script_ytlist_load src="+src+" ytlist_text_ajax="+ytlist_text_ajax );
					return( ytlist_text_ajax.split("\n"));
				var ytlist = "";
				ytlist += ytlist_text;
				return( ytlist.split("\n"));
				}
			</script>
		<script id="script_ytlist_show">
		function script_ytlist_show(ytlist) {
//			var ytlist = new Array();
//			ytlist=script_ytlist_load(src);
//			alert( "BUGS_7660 script_ytlist_show len="+ytlist.length+" ytlist="+ytlist );
			var ytout='';
			src="/yt/txt/ytlist_202004.txt";
			ytout += '<h1>'+src+'</h1>';
			ytout += '<hr color=white>';
			ytout += '<hr color=black>';
			ytout += '<hr color=red>';
			ytout += '<hr color=white>';
			ytout += '<hr color=blue>';

			var z = 0; var ytout=""; var len=ytlist.length;
			var ytid = ""; var yturl = "";
			var ytid_default = "https://youtube.com";
			var ytid_img_default = "/imgs/links/yt.png";
			var ytid_tn_default = "/imgs/links/tn/tn_yt.png";
			var ytid_img = ytid_img_default;
			var ytid_tn = ytid_tn_default;
			var ytline = new Array(); var f=0;
			var ytid_filename = "";
//			alert( "bugs_1010 script_avlist_show ytlist.length="+ytlist.length );
			var ytid_text="";
			var yt_group = "";
			var yt_title = ""
			var yt_dttm = "";
			var re = "";
			var re_pound = '/^#/';
			for( z=0; z< ytlist.length; z++ ) {
				if( ytlist[z] == '' ) { continue; }
				if( ytlist[z] == '\n' ) { continue; }
				
//				if( ytlist[z].test(re_pound)) { 
				if( ytlist[z].match(/^#/)) {
//					alert( "BUGS_1011 matchpound z="+z+" re_pound="+re_pound+" ytlist="+ytlist[z] );
					continue; 
					}
				if( ytlist[z].match(/^\/\//)) {
//					alert( "BUGS_1012 matchpound z="+z+" re_pound="+re_pound+" ytlist="+ytlist[z] );
					continue; 
					}

				if( ytlist[z].match(/^</)) {
//					alert( "BUGS_1012 matchpound z="+z+" re_pound="+re_pound+" ytlist="+ytlist[z] );
					ytout += "<br>";
//					ytout += ytlist[z];
					continue; 
					}

//				alert( "BUGS_7700 z="+z+" ytlist="+ytlist[z] );


//				if( ytlist[z].test('/^\/\//gi')) { 
//					alert( "BUGS_1011 matchslash z="+z+" ytlist="+ytlist[z] );
//					continue; 
//					}
//				if( ytlist[z].test('/^</gi')) { 
//					alert( "BUGS_1011 matchhtml z="+z+" ytlist="+ytlist[z] );
//					ytout += ytlist[z];
//					continue; 
//					}


				ytline = ytlist[z].split("|");
//				alert( "BUGS_1425 ytline="+ytline+" len="+ytline.length );
				if( ytline.length == 1 ) { ytid = ytline[0]; }
				if( ytline.length == 2 ) { ytid = ytline[1]; yt_title=ytline[0]; }
				if( ytline.length == 3 ) { ytid = ytline[2]; yt_title=ytline[1]; yt_group=ytline[0]}
				if( ytid.length < 5 ) { continue; }


//				for( f=0; f< ytline.length; f++ ) {
//					ytid_text = ytline[0];
//					ytid = ytline[ytline.length-1];
//					alert( "BUGS_1429 ytid="+ytid+"  f="+f+" ytline="+ytline[f] );
//					}

//				ytid = ytline;
//				ytid = ytline[1];
//				ytid = ytlist[z];

//				alert( "BUGS_1430 ytid="+ytid );
//				ytid_filename = ytid.substring(ytid.lastIndexOf('/')+1);
//				alert( "BUGS_1431 ytid_filename="+ytid_filename );

//				ytid_ext = ytid_filename.split(".")[1];
//				ytid_pathname = ytid.replace( ytid_filename, "" );
//				alert( "BUGS_1440 ytid_pathname="+ytid_pathname );

//				ytid_code = ytid_filename.replace(".mp4", "" );
//				ytid_code = ytid_filename.replace(ytid_ext, "" ).replace(".","");


				ytid_tn = "/imgs/links/tn/tn_yt.png";

				ytid_tn = str2btn(ytline);
//				alert("BUGS_7000 str2btn ytid_tn="+ytid_tn+" ytline="+ytline );

				var ytid_id = ytid.split("=")[1];
				ytid_img = "http://i.ytimg.com/vi/" + ytid_id + "/default.jpg";
//				ytid_img = "http://i.ytimg.com/vi/" + ytid_id + "/maxresdefault.jpg";


//				ytid_img = ytid_pathname + "/imgs/" + ytid_code + ".png";
//				ytid_tn = ytid_pathname + "tn/tn_" + ytid_code + ".gif";
//				if( ytid_pathname == "" ) {
//					ytid_img = ytid_pathname + ytid_code + ".png";
//					ytid_tn = ytid_pathname +  ytid_code + ".gif";
//					}
//				if( ytid_pathname == "/" ) {
//					ytid_img = ytid_pathname + "" + ytid_code + ".png";
//					ytid_tn = ytid_pathname + "" + ytid_code + ".gif";
//					}

////				ytout += "<a href='?ytid="+ytid+"' class='thumbnail' target=_blank>";
				ytout += '<a href="'+ytid+'" target=_blank class="thumbnail">';

//				alert( "bugs_1060 script_ytlist_show ytout="+ytout );
////				if( gif ) {				
////					avout += "	<img name='" + avid_img + "' height=25 src='"+avid_tn+"' border=0 height=100 >\n";
////					avout += "	<span><img name='img_" + avid + "' src='"+avid_img+"' border=0 height=100 ></span>\n";
////					avout += "	</a>";
////					}
//
//				ytout += "	<img name='" + ytid_tn + "' src='"+ytid_tn_default+"' border=0 height=25 >\n";
				ytout += "	<img name='" + ytid_tn + "' src='"+ytid_tn+"' border=0 height=25 >\n";
//				ytout += "	<span><img name='" + ytid_tn + "' src='"+ytid_tn+"' border=0 height=50 ></span>\n";
				ytout += "	<span><img name='" + ytid_img + "' src='"+ytid_img+"' border=0 height=300 alt='"+ytid_text+"' ></span>\n";
				ytout += "	</a>";
				}

var ytout_spacer =
`<br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br>`;
			ytout += ytout_spacer;

//			alert( "BUGS_1035 script_ytlist_show ytout="+ytout );
			var parent = document.getElementById('div_ytlist');
			parent.insertAdjacentHTML('beforeend', ytout);
			}
			</script>



		<script id="script_ytlist_show1">
		function script_ytlist_show1(ytlist) {
//			var ytlist = new Array();
//			ytlist=script_ytlist_load(src);
//			alert( "BUGS_1410 script_ytlist_show ytlist="+ytlist );
			var ytout='';
			var z = 0; var ytout=""; var len=ytlist.length;
			var ytid = ""; var yturl = "";
			var ytid_default = "https://youtube.com";
			var ytid_img_default = "/imgs/links/yt.png";
			var ytid_tn_default = "/imgs/links/tn/tn_yt.png";
			var ytid_img = ytid_img_default;
			var ytid_tn = ytid_tn_default;
			var ytline = new Array(); var f=0;
			var ytid_filename = "";
//			alert( "bugs_1010 script_avlist_show ytlist.length="+ytlist.length );
			var ytid_text="";
			var yt_group = "";
			var yt_title = ""
			var yt_dttm = "";
			var re = "";
			var re_pound = '/^#/';
			for( z=0; z< ytlist.length; z++ ) {
				if( ytlist[z] == '' ) { continue; }
				if( ytlist[z] == '\n' ) { continue; }
				
//				if( ytlist[z].test(re_pound)) { 
				if( ytlist[z].match(/^#/)) {
//					alert( "BUGS_1011 matchpound z="+z+" re_pound="+re_pound+" ytlist="+ytlist[z] );
					continue; 
					}
				if( ytlist[z].match(/^\/\//)) {
//					alert( "BUGS_1012 matchpound z="+z+" re_pound="+re_pound+" ytlist="+ytlist[z] );
					continue; 
					}

				if( ytlist[z].match(/^</)) {
//					alert( "BUGS_1012 matchpound z="+z+" re_pound="+re_pound+" ytlist="+ytlist[z] );
					ytout += "<br>";
//					ytout += ytlist[z];
					continue; 
					}


//				if( ytlist[z].test('/^\/\//gi')) { 
//					alert( "BUGS_1011 matchslash z="+z+" ytlist="+ytlist[z] );
//					continue; 
//					}
//				if( ytlist[z].test('/^</gi')) { 
//					alert( "BUGS_1011 matchhtml z="+z+" ytlist="+ytlist[z] );
//					ytout += ytlist[z];
//					continue; 
//					}


				ytline = ytlist[z].split("|");
//				alert( "BUGS_1425 ytline="+ytline+" len="+ytline.length );
				if( ytline.length == 1 ) { ytid = ytline[0]; }
				if( ytline.length == 2 ) { ytid = ytline[1]; yt_title=ytline[0]; }
				if( ytline.length == 3 ) { ytid = ytline[2]; yt_title=ytline[1]; yt_group=ytline[0]}
				if( ytid.length < 5 ) { continue; }


//				for( f=0; f< ytline.length; f++ ) {
//					ytid_text = ytline[0];
//					ytid = ytline[ytline.length-1];
//					alert( "BUGS_1429 ytid="+ytid+"  f="+f+" ytline="+ytline[f] );
//					}

//				ytid = ytline;
//				ytid = ytline[1];
//				ytid = ytlist[z];

//				alert( "BUGS_1430 ytid="+ytid );
//				ytid_filename = ytid.substring(ytid.lastIndexOf('/')+1);
//				alert( "BUGS_1431 ytid_filename="+ytid_filename );

//				ytid_ext = ytid_filename.split(".")[1];
//				ytid_pathname = ytid.replace( ytid_filename, "" );
//				alert( "BUGS_1440 ytid_pathname="+ytid_pathname );

//				ytid_code = ytid_filename.replace(".mp4", "" );
//				ytid_code = ytid_filename.replace(ytid_ext, "" ).replace(".","");


				ytid_tn = "/imgs/links/tn/tn_yt.png";

				ytid_tn = str2btn(ytline);
//				alert("BUGS_7000 str2btn ytid_tn="+ytid_tn+" ytline="+ytline );

				var ytid_id = ytid.split("=")[1];
				ytid_img = "http://i.ytimg.com/vi/" + ytid_id + "/default.jpg";
//				ytid_img = "http://i.ytimg.com/vi/" + ytid_id + "/maxresdefault.jpg";


//				ytid_img = ytid_pathname + "/imgs/" + ytid_code + ".png";
//				ytid_tn = ytid_pathname + "tn/tn_" + ytid_code + ".gif";
//				if( ytid_pathname == "" ) {
//					ytid_img = ytid_pathname + ytid_code + ".png";
//					ytid_tn = ytid_pathname +  ytid_code + ".gif";
//					}
//				if( ytid_pathname == "/" ) {
//					ytid_img = ytid_pathname + "" + ytid_code + ".png";
//					ytid_tn = ytid_pathname + "" + ytid_code + ".gif";
//					}

////				ytout += "<a href='?ytid="+ytid+"' class='thumbnail' target=_blank>";
				ytout += '<a href="'+ytid+'" target=_blank class="thumbnail">';

//				alert( "bugs_1060 script_ytlist_show ytout="+ytout );
////				if( gif ) {				
////					avout += "	<img name='" + avid_img + "' height=25 src='"+avid_tn+"' border=0 height=100 >\n";
////					avout += "	<span><img name='img_" + avid + "' src='"+avid_img+"' border=0 height=100 ></span>\n";
////					avout += "	</a>";
////					}
//
//				ytout += "	<img name='" + ytid_tn + "' src='"+ytid_tn_default+"' border=0 height=25 >\n";
				ytout += "	<img name='" + ytid_tn + "' src='"+ytid_tn+"' border=0 height=25 >\n";
//				ytout += "	<span><img name='" + ytid_tn + "' src='"+ytid_tn+"' border=0 height=50 ></span>\n";
				ytout += "	<span><img name='" + ytid_img + "' src='"+ytid_img+"' border=0 height=300 alt='"+ytid_text+"' ></span>\n";
				ytout += "	</a>";
				}

var ytout_spacer =
`<br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br>`;
			ytout += ytout_spacer;

//			alert( "BUGS_1035 script_ytlist_show ytout="+ytout );
			var parent = document.getElementById('div_ytlist');
			parent.insertAdjacentHTML('beforeend', ytout);
			}
			</script>



	<script id="script_str2btn" >
		function str2btn(str) {
// var btn_default = "/imgs/btn/koeye_handhither.gif";
var btn_default = "/imgs/links/tn/tn_yt.png";
var btn = btn_default;
var re = "";
var htmout = "";
var regex_btn = "";

// # /youtube/gi|yt/imgs/koeye_yt.png
// # /youtube/gi|yt/imgs/koeye_av.png

var regex_btns = `

//
// /youtube/gi|yt/imgs/koeye_yt.png
// /youtube/gi|yt/imgs/koeye_av.png

polly|/yt/imgs/yt_polly.png
mcduff|/yt/imgs/yt_mcduff.png
munder|/yt/imgs/yt_munder.png
^munder|/yt/imgs/yt_munder.png
webb|/yt/imgs/yt_webb.png
vlad|/yt/imgs/yt_vlad9t.png
borealis|/yt/imgs/yt_borealis.png
med/imgs/operation.png
dah|/yt/imgs/yt_dahboo.png
fulford|/yt/imgs/yt_fulford.png
newearth|/yt/imgs/yt_newearth.png
quinn|/yt/imgs/yt_quinn.png
kt|/yt/imgs/koeye_kt.png
`.split("\n");
var line = "";
var regex = "";
var fldlen = 0;
var flds = "";

//			alert( "BUGS_104 regex_btns="+regex_btns );
			for( j=0; j<regex_btns.length; j++ ) {
				flds = regex_btns[j];
				fldlen=flds.split("|").length;			

//				alert( "BUGS_105 j="+j+" flds="+flds);
				if( flds == "" ){ continue; }
				if( /\#/.test(flds)){ continue; }
				if( /\/\//.test(flds)){ continue; }

				regex_btn="/imgs/btn/koeye_handhi.gif";	

				regex = flds.split("|")[0];
				re = flds.split("|")[0];
				regex_btn = flds.split("|")[fldlen-1];
				if( regex == "" ) { contihue; }

//				alert( "BUGS_120 str2btn j="+j+" regex="+regex+" regex_btn="+regex_btn );
//				regex_btn = regex_btns[j].split("|")[1];
//				if( regex.test(str)) {
//				var re = new RegExp( '/^yt_2020/' );
//				var re = /\w+\s/gi;
//				var re = /^yt_202003/gi;
//				var re = /kt/gi;

//				alert( "BUGS_111 str2btn ______ j="+j+" re="+re+" str="+str );
				re = new RegExp(regex,"gi");
//				alert( "BUGS_110 str2btn ______ j="+j+" re="+re+" str="+str );
				if( re.test(str)) {
//					alert( "BUGS_112 str2btn __MATCH j="+j+" re="+re+" str="+str );
					return(regex_btn);
					}
				else {
//					alert( "BUGS_113 str2btn nomatch j="+j+" re="+re+" str="+str );
					}
				}
			return(btn_default);
			}
		</script>

	<script id="script_hideshow1">
		function script_hideshow1(id) {
			alert( "BUGS_1500 script_hideshow1 id="+id );
			}
		</script>
	<script id="script_hideshow">
		function script_hideshow(element) {
//			alert( "BUGS_1720 hideshow element="+element );
//			alert( "BUGS_1722 hideshow kolists_divids="+kolists['divids'] );
			var divids = kolists['divids'].split(" ");;
//			alert( "BUGS_1731 hideshow divids="+divids );
			var htmbugs = ""; 
			htmbugs += '<div id="div_htmbugs">';
			htmbugs += '	<h1>div_htmbugs</h1>';
			htmbugs += '	<pre>';

			var style_d = "_style_d";
			var style_v = "_style_v";
//			alert( "BUGS_1570 element="+element );
			var htmout = ""; var j=0; var k=0;
			var divid = "";
			var div_divid = "";
			var div_divid_w = "";
			var div_divid_m = "";
			var div_divid_b = "";
//			var divids = "head jtfdc jtfinc jtfdcr av db dd fb pn sl tl tm yt zm".split(" ");
//			var divids = "head jtfdc jtfinc jtfdcr av db dd fb pn sl tl tm yt zm".split(" ");
//			var divids_hl = "hl hllinks hltext hlmouse";

////			var divids = "alloff toggle allon <br> hl av bb dd fb fs pn sl tl tm yt zm <br> jtfdcr jtfdc jtfinc <br> head body memes kov tail".split(" ");
//			var divids = kolists['divids'];
//			var divids = "alloff toggle allon <br> jtfdc jtfinc jtfdcr <br> head body memes kov tail".split(" ");
//			var divids = "games av_jtfdc av_jtfinc av_jtfdcr <br> av db dd fb fs pn sl tl tm yt zm <br> jtfdc jtfinc jtfdcr <br> head slots body memes kov tail".split(" ");
//			var divids = "av_jtfdc av_jtfinc av_jtfdcr <br> av db dd fb fs pn sl tl tm yt zm <br> jtfdc jtfinc jtfdcr <br> head slots body memes kov tail".split(" ");

//			alert( "BUGS_1730 hideshow element="+element );

//			htmout += '<div id="div_buttons_hideshow">';
////			htmout += '<img src="/imgs/btn/koeyeb_alloff.png" onclick="script_hideshow(\'alloff\'); return false;">';
////			htmout += '<img src="/imgs/btn/koeyew_allon.png" onclick="script_hideshow(\'allon\'); return false;">';
////			htmout += '<br>';
//			alert( "BUGS_2500 element="+element );
			if(( element == "alloff" )) {
 				for( j=0; j<divids.length; j++ ) {
 					divid=divids[j];
					div_divid="div_"+divid;
					div_divid_w = div_divid+"_w";
					div_divid_m = div_divid+"_m";
					div_divid_b = div_divid+"_b";
					if( divid == "<br>" ) { continue; }

					if( document.getElementById(div_divid)) {
						document.getElementById(div_divid).style.display="none";
						}
					if( document.getElementById(div_divid_w)) {
						document.getElementById(div_divid_w).style.display="none";
						}
					if( document.getElementById(div_divid_m)) {
						document.getElementById(div_divid_m).style.display="none";
						}
					if( document.getElementById(div_divid_b)) {
						document.getElementById(div_divid_b).style.display="none";
						}
					}
				}
			if(( element == "toggle" )) {
//				alert( "BUGS_1740 hideshow element="+element );
 				for( j=0; j<divids.length; j++ ) {
 					divid=divids[j];
					div_divid="div_"+divid;
					div_divid_w = div_divid+"_w";
					div_divid_m = div_divid+"_m";
					div_divid_b = div_divid+"_b";
					if( divid == "<br>" ) { continue; }

//					alert( "BUGS_1770 hideshow toggle j="+j+" element="+element );

					if( document.getElementById(div_divid)) {
						if( document.getElementById(div_divid).style.display == "none" ) {
							document.getElementById(div_divid).style.display="inline";
							}
						else {
							document.getElementById(div_divid).style.display="none";
							}
						}
					if( document.getElementById(div_divid_w)) {
						if( document.getElementById(div_divid_w).style.display == "none" ) {
							document.getElementById(div_divid_w).style.display="inline";
							}
						else {
							document.getElementById(div_divid_w).style.display="none";
							}
						}
					if( document.getElementById(div_divid_m)) {
						if( document.getElementById(div_divid_m).style.display == "none" ) {
							document.getElementById(div_divid_m).style.display="inline";
							}
						else {
							document.getElementById(div_divid_m).style.display="none";				
							}
						}
					if( document.getElementById(div_divid_b)) {
						if( document.getElementById(div_divid_b).style.display =="none" ) {
							document.getElementById(div_divid_b).style.display="inline";
							}
						else {
							document.getElementById(div_divid_b).style.display="none";
							}
						}
//					var disp = document.getElementById(div_divid).style.display;
//					alert( "BUGS_1810 toggle j="+j+" htmout="+htmout+ "element="+element );
					}
				}






			if( element == "allon" )  {
//				alert( "BUGS_2510 allon" );
 				for( j=0; j<divids.length; j++ ) {
 					divid=divids[j];
					div_divid="div_"+divid;
					div_divid_w = div_divid+"_w";
					div_divid_m = div_divid+"_m";
					div_divid_b = div_divid+"_b";
					if( divid == "<br>" ) { continue; }

					if( document.getElementById(div_divid)) {
						document.getElementById(div_divid).style.display="inline";
						}
					if( document.getElementById(div_divid_w)) {
						document.getElementById(div_divid_w).style.display="inline";
						}
					if( document.getElementById(div_divid_m)) {
						document.getElementById(div_divid_m).style.display="inline";
						}
					if( document.getElementById(div_divid_b)) {
						document.getElementById(div_divid_b).style.display="inline";
						}

//					alert( "BUGS_1840_allon j="+j+" htmout="+htmout+ "element="+element );
					}
				}

//			alert( "BUGS_1800 hideshow element="+element );
			htmout += '<hr color=white>';
			htmout += '<img src="/imgs/btn/koeye_'+"alloff"+'.png" height=50 onclick="script_hideshow(\''+"alloff"+'\');return false;" alt="btn_'+"alloff"+'">';
			htmout += '<img src="/imgs/btn/koeye_'+"toggle"+'.png" height=50 onclick="script_hideshow(\''+"toggle"+'\');return false;" alt="btn_'+"toggle"+'">';
			htmout += '<img src="/imgs/btn/koeye_'+"allon"+'.png" height=50 onclick="script_hideshow(\''+"allon"+'\');return false;" alt="btn_'+"allon"+'">';
//			htmout += '<img src="/imgs/btn/koeye_'+"games"+'.png" height=50 onclick="script_hideshow(\''+"div_games"+'\');return false;" alt="btn_'+"allon"+'">';
			htmout += '<br>';


 			for( j=0; j<divids.length; j++ ) {
 				divid=divids[j];
				div_divid="div_"+divid;
				div_divid_w = div_divid+"_w";
				div_divid_m = div_divid+"_m";
				div_divid_b = div_divid+"_b";
				if( divid == "<br>" ) {
					htmout += "<br>";
					continue;
					}

//				document.getElementById("test").style.visibility = "hidden";
//				document.getElementById("test").style.display = "none";

				style_v="";
				style_d="";
				if( document.getElementById(div_divid)) {
					style_v = document.getElementById(div_divid).style.visibility;
					style_d = document.getElementById(div_divid).style.display;
					}

				htmbugs += "htmbugs j="+j+" divid="+divid;
				htmbugs += " -== div_divid="+div_divid;
				htmbugs += " element="+element;
				htmbugs += " =- -=";
				htmbugs += " style_d="+style_d+"";
				htmbugs += " style_v="+style_v+"";
				htmbugs += "====================\n";
//				alert( "BUGS_1830 j="+j+" htmbugs="+htmbugs );

//				if( div_divid.match(/element/) != '') {
//				if( div_divid.match(element)) {
//				if( div_divid == element ) {
//					alert( "BUGS_141 _MATCH_ div_divid="+div_divid+" element="+element+" style_d="+style_d+" style_v="+style_v );
//					htmbugs += "BUGS_141 _MATCH_ div_divid="+div_divid+" element="+element+" style_d="+style_d+" style_v="+style_v;
//					}
//				else {
//					alert( "BUGS_142 nomatch div_divid="+div_divid+" element="+element+" style_d="+style_d+" style_v="+style_v );
//					htmbugs += "BUGS_142 _match_ div_divid="+div_divid+" element="+element+" style_d="+style_d+" style_v="+style_v;
//					}


				if( div_divid == element ) {
					if( document.getElementById(div_divid)) {
						style_d = document.getElementById(div_divid).style.display;
						}

//					alert( "BUGS_1850 MATCH div_divid="+div_divid+" element="+element+" style_d="+style_d );
					if( document.getElementById(div_divid)) {
					if( document.getElementById(div_divid).style.display == "none" ) {
						htmout += '<img src="/imgs/btn/koeyew_'+divid+'.png" height=50 onclick="script_hideshow(\''+div_divid+'\');return false;" alt="btn_'+divid+'_hide">';
//						alert( "BUGS_161 _DIV_DIVID-NONE div_divid="+div_divid+" element="+element+" style_d="+style_d+" style_v="+style_v );
						htmbugs += "BUGS_1850 _DIV_DIVID-NONE div_divid="+div_divid+" element="+element+" style_d="+style_d+" style_v="+style_v;
						if( document.getElementById(div_divid)) {
							document.getElementById(div_divid).style.display="inline";
							}
						if( document.getElementById(div_divid_w)) {
							document.getElementById(div_divid_w).style.display="inline";
							}
						if( document.getElementById(div_divid_m)) {
							document.getElementById(div_divid_m).style.display="inline";
							}
						if( document.getElementById(div_divid_b)) {
							document.getElementById(div_divid_b).style.display="inline";
							}
						}
					else {
						htmout += '<img src="/imgs/btn/koeyeb_'+divid+'.png" height=50 onclick="script_hideshow(\''+div_divid+'\');return false;" alt="btn_'+divid+'_hide">';
//						alert( "BUGS_1870 DIV_DIVID-INLINE div_divid="+div_divid+" element="+element+" style_d="+style_d+" style_v="+style_v );
						htmbugs += "BUGS_162 DIV_DIVID-INLINE div_divid="+div_divid+" element="+element+" style_d="+style_d+" style_v="+style_v;
						if( document.getElementById(div_divid)) {
							document.getElementById(div_divid).style.display="none";
							}
						if( document.getElementById(div_divid_w)) {
							document.getElementById(div_divid_w).style.display="none";
							}
						if( document.getElementById(div_divid_m)) {
							document.getElementById(div_divid_m).style.display="none";
							}
						if( document.getElementById(div_divid_b)) {
							document.getElementById(div_divid_b).style.display="none";
							}
						}}
					}

//				alert( "BUGS_1942 element="+element );

				if( div_divid != element ) {
//					alert( "BUGS_1885 rest div_divid="+div_divid+" element="+element );
					if( document.getElementById(div_divid)) {
					if( document.getElementById(div_divid).style.display == "none" ) {
						htmout += '<img src="/imgs/btn/koeyeb_'+divid+'.png" height=50 onclick="script_hideshow(\''+div_divid+'\');return false;" alt="btn_'+divid+'">';
//						alert( "BUGS_1890 div_divid_none div_divid="+div_divid+" element="+element+" style_d="+style_d+" style_v="+style_v );
						htmbugs += "BUGS_171 div_divid_none div_divid="+div_divid+" element="+element+" style_d="+style_d+" style_v="+style_v;
						}
					else {
						htmout += '<img src="/imgs/btn/koeyew_'+divid+'.png" height=50 onclick="script_hideshow(\''+div_divid+'\');return false;" alt="btn_'+divid+'_hide">';
//						alert( "BUGS_1900 div_divid_inline div_divid="+div_divid+" element="+element+" style_d="+style_d+" style_v="+style_v );
						htmbugs += "BUGS_172 div_divid_inline div_divid="+div_divid+" element="+element+" style_d="+style_d+" style_v="+style_v;
						}
					}

					}
				}  
//			htmout += '	</div>';

			htmbugs += "	</pre>";
			htmbugs += "	</div>";			

//			alert( "BUGS_181 script_hideshow divid="+divid+" htmout="+htmout );
//			alert( "BUGS_1911 htmout="+htmout );	
//			alert( "BUGS_1912 htmbugs="+htmbugs );	
//			document.getElementById("div_htmbugs").innerHTML = htmbugs;

			if( document.getElementById("div_buttons_hideshow")) {
				document.getElementById("div_buttons_hideshow").innerHTML = htmout;
				}
			if( document.getElementById("div_buttons_hideshow_w")) {
				document.getElementById("div_buttons_hideshow_w").innerHTML = htmout;
				}
			if( document.getElementById("div_buttons_hideshow_m")) {
				document.getElementById("div_buttons_hideshow_m").innerHTML = htmout;
				}
			if( document.getElementById("div_buttons_hideshow_b")) {
				document.getElementById("div_buttons_hideshow_b").innerHTML = htmout;
				}
			if( document.getElementById("div_htmbugs")) {
				document.getElementById("div_htmbugs").innerHTML = htmbugs;
				}
			}
 		</script>



	<script id="script_fb_law">
		function fb_law(args) {
//			alert( "BUGS_4300 fb_law args="+args );

			var imgb ="/imgs/btn/kob.png";
			var imgw ="/imgs/btn/kow.png";
			var img_fb_law ="/imgs/btn/btn_fb_law.png";

			var img1 ="/fb/imgs/tn/tn_fb_cartoon_shelf1.png";
			var img2 ="/fb/imgs/tn/tn_fb_cartoon_stackwalk1.png";
			var img3 ="/fb/imgs/tn/tn_fb_cartoon_shelf2.png";
			var img4 ="/fb/imgs/tn/tn_fb_cartoon_stackwalk2.png";


	if( document.getElementById('div_fb_law')) {
		if( document.getElementById('div_fb_law').style.display == "inline" ) {
//			alert( "BUGS_4271 INLINE" );
//			document.getElementById('div_fb_law').innerHTML='<div id="div_fb_law"><h1>div_fb_law</h1></div>';
			document.getElementById('div_fb_law').style.display = "none";
			if( document.getElementById('img_fb_law')) {
				document.getElementById('img_fb_law').src = imgb;
				document.getElementById('img_fb_law').height = 100;
				}
			if( document.getElementById('img_fb_law2')) {
				document.getElementById('img_fb_law2').src = img_fb_law;
				document.getElementById('img_fb_law2').height = 250;
				}
			return(args);
			}
//		else {
//			alert( "BUGS_4272 HIDDEN" );
//			document.getElementById('div_fb_law').style.display = "inline";
//			if( document.getElementById('img_fb_law')) {
//				document.getElementById('img_fb_law').src = imgw;
//				document.getElementById('img_fb_law').height = 100;
//				}
//			if( document.getElementById('img_fb_law2')) {
//				document.getElementById('img_fb_law2').src = imgb;
//				document.getElementById('img_fb_law2').height = 100;
//				}
//			}
		}


kolists['fb_law'] =
`/fb/law/topos/pages/1.jpg
# /fb/jtfdcr/animalcontrol/jtf30/pages/1.jpg
# /fb/jtfdcr/animalcontrol/jtf31/pages/1.jpg
# /fb/jtfdcr/animalcontrol/jtf32/pages/1.jpg
# /fb/jtfdcr/animalcontrol/jtf38/pages/1.jpg
# /fb/jtfdcr/animalcontrol/jtf39/pages/1.jpg
# /fb/jtfdcr/animalcontrol/pages/1.jpg
# /fb/jtfdcr/i/pages/1.jpg
# /fb/jtfdcr/jtfdcr_202004/pages/1.jpg
<br>
/fb/law/imgs/jkwii/1.jpg
/fb/jtfdc/pages/1.jpg
/fb/jtfinc/pages/1.jpg
/fb/law/archcity_defenders/pages/1.jpg
/fb/jtfdcr/animalcontrol/pages/1.jpg
/fb/law/imgs/who2jail/1.jpg
/fb/jtfdcr/pages/1.jpg
/fb/jtfdcr/preserve/pages/1.jpg
/fb/jtfdcr/protect/pages/1.jpg
/fb/jtfdcr/thieftvandalism/pages/1.jpg
/fb/jtfdcr/trials/pages/1.jpg
/fb/law/skwii/pages/1.jpg
# /fb/jtfdcr/preserve/barn_jtf30-29/pages/1.jpg
# /fb/jtfdcr/preserve/driveway_jtf30-29/pages/1.jpg
# /fb/jtfdcr/preserve/easement_jtf28-29/pages/1.jpg
# /fb/jtfdcr/preserve/easement_jtf30-29/pages/1.jpg
# /fb/jtfdcr/preserve/maga/pages/1.jpg
# /fb/jtfdcr/protect/jtf28/pages/1.jpg
# /fb/jtfdcr/protect/jtf30/pages/1.jpg
# /fb/jtfdcr/protect/jtf30-2/pages/1.jpg
# /fb/jtfdcr/protect/jtf31/pages/1.jpg
# /fb/jtfdcr/protect/jtf32/pages/1.jpg
# /fb/jtfdcr/protect/jtf38/pages/1.jpg
# /fb/jtfdcr/protect/jtf39/pages/1.jpg
# /fb/jtfdcr/thieftvandalism/jtf28/pages/1.jpg
# /fb/jtfdcr/thieftvandalism/jtf30/pages/1.jpg
# /fb/jtfdcr/thieftvandalism/jtf30-2/pages/1.jpg
# /fb/jtfdcr/thieftvandalism/jtf31/pages/1.jpg
# /fb/jtfdcr/trials/trial1_judge_/pages/1.jpg
# /fb/jtfdcr/trials/trial2_judge_schrader/pages/1.jpg
# /fb/jtfdcr/trials/trial3_judge_brown/pages/1.jpg
# /fb/jtfdcr/trials/trial4_judge_protect_jtf39_byrd/pages/1.jpg
# /fb/jtfdcr/trials/trial5_judge_heggie_jtfinc/pages/1.jpg
# /fb/jtfdcr/trials/trial6_judge_byrdbell_v_jkwii/pages/1.jpg
# /fb/law/imgs/1.jpg
<br><br><br><br>
# /fb/law/pages/1.jpg
/fb/law/jkwiiv_byrdbell/pages/1.jpg
/fb/law/law_cohen_alan/pages/1.jpg
/fb/law/law_cohen_nathan/pages/1.jpg
/fb/law/law_collections/pages/1.jpg
/fb/law/law_dolly/pages/1.jpg
/fb/law/law_donovan_joann/pages/1.jpg
/fb/law/law_elster_henry/pages/1.jpg
/fb/law/law_keuhlig_alexander/pages/1.jpg
/fb/law/law_korein_tillery/pages/1.jpg
/fb/law/law_law501/pages/1.jpg
/fb/law/law_smith_brown/pages/1.jpg
/fb/law/law_thompson_coburn/pages/1.jpg
/fb/law/law_walters_alan/pages/1.jpg
/fb/law/tc/db/pages/1.jpg
/fb/law/tc/kk/pages/1.jpg
/fb/law/tc/pages/1.jpg`;


//			alert( "BUGS_4430 fb_law kolists_fb_law="+kolists['fb_law'] );
//			alert( "BUGS_4241 fb_law kolists_fb_law="+kolists['fb_law'] );

			kolist=kolists['fb_law'].split("\n");
			kolist_len=kolist.length;
			htmout = "";
			htmout += '<div id="div_fb_law">';
			htmout += '	<h1>div_fb_law</h1>';

			for( j=0; j<kolist_len; j++ ) {

				if( kolist[j].match("^#")) { continue; }
				if( kolist[j].match("^<")) {
					htmout += kolist[j];
					continue;
					}


				img=kolist[j];
				url=img.replace("/pages/1.jpg","");
				htmout += '<a href="'+url+'" class="popover" ';
				htmout += '	>';
				htmout += '	<img src="'+img+'" height=50 ';
				htmout += '		border=0 draggable="true">';
				htmout += '	<span><img src="'+img+'" height=200 ';
				htmout += '		border=0 draggable="true"></span>';
				htmout += '	</a>';
				}
			htmout += '</div>';


			if( document.getElementById('div_fb_law')) {
				document.getElementById('div_fb_law').innerHTML=htmout;
				}

//			alert( "BUGS_4279 SHOW" );
			document.getElementById('div_fb_law').style.display = "inline";
			if( document.getElementById('img_fb_law')) {
				document.getElementById('img_fb_law').src = imgw;
				document.getElementById('img_fb_law').height = 100;
				}
			if( document.getElementById('img_fb_law2')) {
				document.getElementById('img_fb_law2').src = imgb;
				document.getElementById('img_fb_law2').height = 100;
				}

			return( kolists['fb_law'] );
			}
		</script>



	<script id="script_jtfdc_stalkarounds">
		function jtfdc_stalkarounds(args) {
//			alert( "BUGS_4300 jtfdc_stalkarounds args="+args );

			var imgb ="/imgs/btn/kob.png";
			var imgw ="/imgs/btn/kow.png";
			var img_jtfdc_stalkarounds ="/imgs/btn/btn_jtfdc_stalkarounds.png";

			var img1 ="/fb/imgs/tn/tn_fb_cartoon_shelf1.png";
			var img2 ="/fb/imgs/tn/tn_fb_cartoon_stackwalk1.png";
			var img3 ="/fb/imgs/tn/tn_fb_cartoon_shelf2.png";
			var img4 ="/fb/imgs/tn/tn_fb_cartoon_stackwalk2.png";


	if( document.getElementById('div_jtfdc_stalkarounds')) {
		if( document.getElementById('div_jtfdc_stalkarounds').style.display == "inline" ) {
//			alert( "BUGS_4271 INLINE" );
//			document.getElementById('div_jtfdc_stalkarounds').innerHTML='<div id="div_jtfdc_stalkarounds"><h1>div_jtfdc_stalkarounds</h1></div>';
			document.getElementById('div_jtfdc_stalkarounds').style.display = "none";
			if( document.getElementById('img_jtfdc_stalkarounds')) {
				document.getElementById('img_jtfdc_stalkarounds').src = imgb;
				document.getElementById('img_jtfdc_stalkarounds').height = 100;
				}
			if( document.getElementById('img_jtfdc_stalkarounds2')) {
				document.getElementById('img_jtfdc_stalkarounds2').src = img_jtfdc_stalkarounds;
				document.getElementById('img_jtfdc_stalkarounds2').height = 250;
				}
			return(args);
			}
		}


kolists['jtfdc_stalkarounds'] =
`/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200731_0755_stalkaroundacross_funny_whtpickup_n_bluebin.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200731_0829_stalkaroundup_confused_shywhtwagon.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds//jtfdc_20200731_1150_stalkaround_whtpickup_n_trailer.gif/jtfdc_20200731_0829_stalkaroundup_confused_shywhtwagon.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200730_1514_stalkaroundacross_speedy_usmail_IMG_0350.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200730_1018_stalkaroundup_shyredpickup_jtf32pause_IMG_0325.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20020729_1338_stalkaround_IMG_0304.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200729_1011_stalkaroundup_litle_lite_rumblewagon_roofer_IMG_0288.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200729_1115_stalkaround_lightconvertable_cpl.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200729_1115_stalkaroundup_wrongway_cpl_shywht_toyota_convertable_PM9Y8L_IMG_0297.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200729_1220_stalkaroundup_wrongway_shygrnwagon.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200729_1225_stalkaroundacross_wrongway_shyltldrk_wagon_IMG_0301.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200729_1339_stalkaround_wrongway_across_shnylong_blue_car_IMG_0301.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200729_1348_stalkaroundup_IMG_0308.gif
jtfdc_20200728_1640_stalkaroundsup_tagteam_silverconvert_ltlred_ups_wagon_IMG_0230_snap_20200201_41825.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200725_1118_stalkaroundup_police_A132_justturnaround_gunshots_IMG_0039.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200725_1116_jtf38_bang_bang_IMG_0036.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200725_1216_stalkaroundup_silver_honda_TDIM8F_IMG_0059.gif
/kb/jtfdcr/vid/jtfdc_20200723_0814_stalkaroundup_orange_motorcycle_byrdlike_guy_IMG_9965.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200723_0918_new_monster_garbagetruck_IMG_9886.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200723_1025_garbage_jkwii_complaint_IMG_9900.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200721_1720_jtf32out_donutvanlaw_skwiiwasp.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200722_1114_buzzfly_IMG_9809.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200722_1115_buzzfly_IMG_9811.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200722_1115_stalkaroundup_shnywht_wagon_IMG_9788.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200722_1116_stalkaroundup_jtf38_trustee_segrist_bistatepool_van_IMG_9813.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200722_1119_buzzfly_close_IMG_9810.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200722_1119_buzzfly_hover_IMG_9806.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200722_1119_stalkaround_jtf38_trustee_bistatepool_VCOR48_IMG_9814.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200722_1120_stalkaround_wrongway_shnywhtwagon_IMG_9794.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200722_1122_stalkaroundup_spectrum_cablevan_OR4A69_IMG_9782.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200722_1601_jtf31_fionas_uneasment_trepass_IMG_9828.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200722_1647_stalkaroundup_speedy_shnywhtguys_honda_UN6Y3E_IMG_9839.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200722_1847_downnice_slvwagon_jtf31_woofs_IMG_9857.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200722_1847_jtf32out_drksuv_IMG_9852.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200722_2319_stalkaround_acrous_IMG_9797.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200712_1946_stalkaroundupacross_slvrcar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200712_1940_stalkaroundupacross.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200712_1900_deer_north_IMG_9258.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200712_1859_deer_bambis3_IMG_9259.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200712_1859_deer_bambis3_IMG_9259.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200712_1858_backout_ltlcar_IMG_9251.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200712_1858_Ideer_MG_9254.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200712_1845_backout_ltldrkcar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200712_1800_stalkaroundup_shnynewgraypickupguy.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200712_1727_stalkaround_shygraypickupguy_IMG_9232.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200709_1010_stalkaroundup_drkltlcar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200710_1204_stalkaroundsup_jtf32_levenslawn_n_escort.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200710_1210_jtf32_levenlawn_stalkaround_complaint3_8377265.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200710_1437_stalkaroundup_litesubv.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200710_1600_stalkaroundup_whtpickup_guys.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200710_2135_stalkaroundup_light_cadilaclights.gif
# /kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200711_1100_IMG_9141.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200711_1100_IMG_9144.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200711_1645_stalkaroundup_shygraywagon.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200711_1700_IMG_9157.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200711_1716_IMG_9174.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200711_1717_IMG_9172.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200711_1725_IMG_9182.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200711_2008_IMG_9194.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200711_2020_IMG_9202.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200711_2030_darkcarwoofs4jtf06_stalkaround.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200711_2133_IMG_9222.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200710_1204_stalkaroundsup_jtf32_levenslawn_n_escort.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200710_1210_jtf32_levenlawn_stalkaround_complaint3_8377265.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200710_1437_stalkaroundup_litesubv.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200710_1600_stalkaroundup_whtpickup_guys.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200710_2135_stalkaroundup_light_cadilaclights.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200709_1010_stalkaroundup_drkltlcar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdcv_2020073_1130_stalkarounds_three_2dkr_1whtwagon.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_2015_jtf31fiona_trespass_stalkaroundsup_jkwiibarks_shydrkblkfam_shywhtcar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1800_stalkaround_jtf31fionas_IMG_8891.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1800_stalkaround_jtf31fionas_IMG_8890.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1800_stalkaround_jtf31fionas_IMG_8889.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1800_stalkaround_jtf31fionas_IMG_8887.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1800_stalkaround_jtf31fionas_IMG_8886.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1800_stalkaround_jtf31fionas_IMG_8884.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1800_stalkaround_jtf31fionas_IMG_8883.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1800_stalkaround_jtf31fionas_IMG_8882.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1800_stalkaround_jtf31fionas_IMG_8881.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1800_stalkaround_jtf31fionas_IMG_8878.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1800_stalkaround_jtf31fionas_IMG_8876.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1800_stalkaround_jtf31fionas_IMG_8868.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1800_stalkaround_jtf31fionas_IMG_8866.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1800_stalkaround_jtf31fionas_IMG_8864.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1800_stalkaround_jtf31fionas_IMG_8863.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1800_stalkaround_jtf31fionas_IMG_8838.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1800_stalkaround_jtf31fionas_IMG_8833.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1800_stalkaround_jtf31fionas_IMG_8832.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1800_stalkaround_jtf31fionas_IMG_8831.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1800_stalkaround_jtf31fionas_IMG_8827.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1800_stalkaround_jtf31fionas_IMG_8826.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1800_stalkaround_jtf31fionas_IMG_8825.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1800_stalkaround_jtf31fionas_IMG_8823.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1655_stalkaroundup_shydrkpickup.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1620_stalkaroundup_shyltlredcar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1231_stalkaroundup_shyltlwht.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1139_stalkaraounds_three_review_notpolice.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1100_stalkaroundsup_three_IMG_8853.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1100_stalkaroundsup_three_IMG_8850.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1100_stalkaroundsup_three_IMG_8849.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1100_stalkaroundsup_three_IMG_8848.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1100_stalkaroundsup_three_IMG_8844.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1100_stalkaroundsup_three_IMG_8840.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1100_stalkaroundsup_three_IMG_8838.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_0848_jtf32out_donurvanlaw_stalkroundup_shygraypickpu.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_0803_stalkaroundup_drtywhtladdervan_n_bum_IMG_8833.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_0803_stalkaroundup_drtywhtladdervan_n_bum_IMG_8832.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_0803_stalkaroundup_drtywhtladdervan_n_bum_IMG_8831.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_0803_stalkaroundup_drtywhtladdervan_n_bum_IMG_8827.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_0803_stalkaroundup_drtywhtladdervan_n_bum_IMG_8826.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_0803_stalkaroundup_drtywhtladdervan_n_bum_IMG_8825.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_0803_stalkaroundup_drtywhtladdervan_n_bum_IMG_8823.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703/jtfdc_20200703_0803_stalkaroundup_drtywhtladdervan_n_bum_IMG_8823.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703/jtfdc_20200703_0803_stalkaroundup_drtywhtladdervan_n_bum_IMG_8825.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703/jtfdc_20200703_0803_stalkaroundup_drtywhtladdervan_n_bum_IMG_8826.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703/jtfdc_20200703_0803_stalkaroundup_drtywhtladdervan_n_bum_IMG_8827.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703/jtfdc_20200703_0803_stalkaroundup_drtywhtladdervan_n_bum_IMG_8831.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703/jtfdc_20200703_0803_stalkaroundup_drtywhtladdervan_n_bum_IMG_8832.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703/jtfdc_20200703_0803_stalkaroundup_drtywhtladdervan_n_bum_IMG_8833.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703/jtfdc_20200703_0848_jtf32out_donurvanlaw_stalkroundup_shygraypickpu 37-3-202:53 PM.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703/jtfdc_20200703_1100_stalkaroundsup_three_IMG_8838.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703/jtfdc_20200703_1100_stalkaroundsup_three_IMG_8840.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703/jtfdc_20200703_1100_stalkaroundsup_three_IMG_8844.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703/jtfdc_20200703_1100_stalkaroundsup_three_IMG_8848.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703/jtfdc_20200703_1100_stalkaroundsup_three_IMG_8849.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703/jtfdc_20200703_1100_stalkaroundsup_three_IMG_8850.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703/jtfdc_20200703_1100_stalkaroundsup_three_IMG_8853.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703/jtfdc_20200703_1139_stalkaraounds_three_review_notpolice 57-3-202:53 PM.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703/jtfdc_20200703_1231_stalkaroundup_shyltlwht 77-3-202:53 PM.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703/jtfdc_20200703_1609_stalkaroundup_shyltlredcar 37-3-206:05 PM.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703/jtfdc_20200703_1620_stalkaroundup_shyltlredcar 47-3-206:05 PM.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703/jtfdc_20200703_1655_stalkaroundup_shydrkpickup 67-3-206:05 PM.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703/jtfdc_20200703_2015_jtf31fiona_trespass_stalkaroundsup_jkwiibarks_shydrkblkfam_shywhtcar 17-3-208:22 PM.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703/jtfdcv_2020073_1130_stalkarounds_three_2dkr_1whtwagon 107-3-202:53 PM.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1800_stalkaround_jtf31fionas_IMG_8823.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1800_stalkaround_jtf31fionas_IMG_8825.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1800_stalkaround_jtf31fionas_IMG_8826.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1800_stalkaround_jtf31fionas_IMG_8827.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1800_stalkaround_jtf31fionas_IMG_8831.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1800_stalkaround_jtf31fionas_IMG_8832.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1800_stalkaround_jtf31fionas_IMG_8833.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1800_stalkaround_jtf31fionas_IMG_8838.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1800_stalkaround_jtf31fionas_IMG_8862.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1800_stalkaround_jtf31fionas_IMG_8863.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1800_stalkaround_jtf31fionas_IMG_8864.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1800_stalkaround_jtf31fionas_IMG_8866.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1800_stalkaround_jtf31fionas_IMG_8868.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1800_stalkaround_jtf31fionas_IMG_8873.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1800_stalkaround_jtf31fionas_IMG_8876.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1800_stalkaround_jtf31fionas_IMG_8878.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1800_stalkaround_jtf31fionas_IMG_8881.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1800_stalkaround_jtf31fionas_IMG_8882.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1800_stalkaround_jtf31fionas_IMG_8883.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1800_stalkaround_jtf31fionas_IMG_8884.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1800_stalkaround_jtf31fionas_IMG_8886.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1800_stalkaround_jtf31fionas_IMG_8887.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1800_stalkaround_jtf31fionas_IMG_8889.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1800_stalkaround_jtf31fionas_IMG_8890.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1800_stalkaround_jtf31fionas_IMG_8891.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_0803_stalkaroundup_drtywhtladdervan_n_bum_IMG_8823.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_0803_stalkaroundup_drtywhtladdervan_n_bum_IMG_8825.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_0803_stalkaroundup_drtywhtladdervan_n_bum_IMG_8826.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_0803_stalkaroundup_drtywhtladdervan_n_bum_IMG_8827.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_0803_stalkaroundup_drtywhtladdervan_n_bum_IMG_8831.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_0803_stalkaroundup_drtywhtladdervan_n_bum_IMG_8832.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_0803_stalkaroundup_drtywhtladdervan_n_bum_IMG_8833.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200624_2100_stalkaroundwrongwayup_slowS_shnyltlwhtwagonmov.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200624_0000_IMG_8429.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200624_2000_IMG_8308.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200624_2000_IMG_8306.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200624_2000_IMG_8305.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200624_1730_IMG_8287.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200624_1730_IMG_8285.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200624_1700_IMG_8284.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200624_1418_jtf31_bigfedex_backacross_nice.gif
# /kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200624_2000_asphaltgirl_stopstalk_n_nexttime_trouble_threatmov.gif
# /kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200624_2000_IMG_8304.gif
# /kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200624_2000_IMG_8303.gif
# /kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200624_1800_IMG_8295.gif
# /kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200624_1800_IMG_8290.gif
# /kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200624_1700_IMG_8280.gif
# /kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200624_0000_IMG_8440.gif
# /kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200624_0000_IMG_8439.gif
# /kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200624_0000_IMG_8432.gif
# /kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200624_0000_IMG_8431.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200624_0000_IMG_8427.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200624_0000_IMG_8426.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200624_0000_IMG_8425.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200624_0000_IMG_8424.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200624_0000_IMG_8423.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200624_0000_IMG_8421.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200624_0000_IMG_8420.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200624_0000_IMG_8419.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200623_stalkaroiundup_silvertruck.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200623_1932_stalkaroundup_nodoorsgang.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200622_1045_backoutacross_pickup_n_trailer.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200621_1905_stalkaround_golfcarlkidsfamnily.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200620_1839_stalkroundup_blu2door.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200620_1500_backout_silversquareback.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200619_2010_backoutacross_nice.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200619_1910_stalkaroundacross_yellowcyclelguy_6keepoutsigns.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200618_0000_IMG_7820.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200618_0000_IMG_7668.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200618_0000_IMG_7705.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200618_0000_IMG_7735.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200618_0000_IMG_7756.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200618_0000_IMG_7777.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200618_0000_IMG_7782.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200618_0000_IMG_7783.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200618_0000_IMG_7784.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200618_0000_IMG_7811.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200618_0000_IMG_7813.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200617_0900_IMG_7617.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200617_0900_IMG_7625.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200617_0900_IMG_7626.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200617_0900_IMG_7629.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200617_0900_IMG_7631.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200617_1355_stalkaroundup_shynewdrkpickup.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200614_IMG_7360.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200614_IMG_7404.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200614_IMG_7406.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200613_IMG_7310.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200613_IMG_7317.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200613_IMG_7318.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200613_IMG_7336.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200613_IMG_7360.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200613_IMG_7370.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200613_iMG_7311.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200613_iMG_7363.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200616_1608_stalkaroundup_drkvan_rearwindowsighs.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200616_1540_stalkaroundup_bigdrtywhttruck.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200616_1310_stalkaroundacross_wrongway_ltlslvclwncar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200614_2010_stalkaroudup_shywhtwagonguy.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200614_1410_stalkaroundup_shyredpickup_rumble.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200614_1245_stalkaroundup_speedy_silverconvertguys.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200614_1104_stalkaroundacross_ltlslvwagoncpl.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200614_1101_stalkaroundup_ltlslvwagoncpl.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200612_0000_backout_ltlredcarcpl_grumble.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200612_0000_backout_whtcharger_jtf32out_donutvanlaw.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200612_0000_stalkaround_ltlcar_nicefamily.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200611_1430_stalkaround_ltlclwncar_cyclebackoutnic.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200610_1445_stalkaround_drtypickup.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200609_0731_IMG_7116_jtf31_fionas_tresspass_throw_privatepropertysign_instreet.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200609_1730_jtf31_fionatresspass_throw_privatpropertysign_instree.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200609_0731_IMG_7116_jtf31_fionas_tresspass_throw_privatepropertysign_instreet.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200514_1412_stalkaroundacross_silverwagon.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200514_1400_stalkaroundup_acrossin_shnyredcar.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200512_1130_stalkaroundup_slowlurk_shnywhtsuv_marked.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200506_1338_stalkaroundacross_shyredpickup_crunch.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200506_1302_stalkaroundup_ltldrkshnycar.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200504__0950_stalkaround_police_sqrbak_jkwiigoin_terror.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200503_1905_stalkaroudacross_ltlsilvrguy.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200503_1825_stalkaroundup_shinysilverguy.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200503_1825_stalkaroudup_shyredcpl.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200503_1816_stalkaround_drksqrbak.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200503_1656_stalkaoundacross_shiygrey_cpl.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200503_0810_stalkaroundacross_dogs2.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200502_1124_stalkaroundsup_fedex_gigglegirls.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200501_2012_stalkaround_jtf31_bigups_crunch.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200424_1850_stalkaroundup_speedy_bigtruckvan.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200424_1833_stalkaroundup_longflatbed_truck.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200423_1920_stalkaroundup_ltlsilver_gigglegirls.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200423_1905_stalkaround_regular_shydarkwagon_rattled.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200423_1423_stalkaroundup_speeding_amazon_stalk.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200408_1153_jtf31_stalkaround_ltlsilver_4xkeepout_jkwiihot.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200328_2235_stalkarounup_xmaslite_rumble_truck.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200328_0920_jkwii_chapelwakers_tomazy_got2hell_lures.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200327_1532_stalkaround_jtf30_yellowcycler_fu_fu_fu.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200326_1830_stalkaroundacross_shnywhtsuv_medmask.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20190731_1845_stalkaround_darkcharger.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200609_2030_stalkaround_shypickupntrailer_niceguy.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200609_1810_stalkaround_nice_seatlelady.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200609_0731_IMG_7116_jtf31_fionas_tresspass_throw_privatepropertysign_instreet.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200609_1728_IMG_7117_jtf31_fionas_tresspass_liars_n_thieves.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200609_1730_jtf31_fionatresspass_throw_privatpropertysign_instree.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200609_1710_stalkaroundup_jtf33_shybigpickup_smartass.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200609_1615_stalkaroundacross_suv.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200609_1525_stalkaroundacrosss_bigdrtyblusuv.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200609_1320_stalkaroundup_shyltlgreycar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200609_0731_IMG_7116_jtf31_fionas_tresspass_throw_privatepropertysign_instreet.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200609_0615_jtf31_uneasement_swingback.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200608_2107_jtf31_swing_streeedge.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200608_2000_stalkaround_dtyslvrconvertable.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200608_1032_stalkaroundup_drtyltlcar_cycrake_again_n_friend.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200608_0947_stalkaroundup_drtyltlcar_cyclerake_jtf30in_speedy_almostcrashbyb.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200607_1830_stalkarounupd_shnydrkcarcple_inhurry.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200607_1700_stalkaround_wronway_amazon_jtf30pausengo.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200607_1700_astalkaround_arkansas_plates.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200607_1600_stalkaroundup_pickupnmowr_ragesqueel_by_carter.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200606_1711_stalkaroundup_ltlfullcat.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200606_1612_stalkaroundup_shygrnrumble_piockup.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200606_1558_skin_stalkroundup_ltlsqrbackgreen.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200606_1215_jkwii_stalkaroundnice_whtsuvladies.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200606_0100_stalkaroundup.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200605_2056_stalkaroundup_.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200605_2025_stalkaroundup_shylkcarguy.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200605_1900_jtf28in_backout_slvercarlady.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200605_+1229_stalkaroundup_speedyltlwagon.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jttfdc_20200605_0900_stalkaround_police_wagon_jkwiigo_nostop.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200604_backupnice_whtepickup_n_trailer.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200604_1700_stalkaroundup_ltlredcar_4blackguys_mail2.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200604_1615_pre_jtf32amazon_stalkaround_disput.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200604_1250_stalkaround_nicegirl_jkwii_ko2us.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200604_1200_stalkaroundup_drksuv.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200604_1130_backoutnice_whtpickupntrailer.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200604_0925_backoutnice_twice_drksqrbacksuv.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200604_0030_stalkaroundup.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200603_stalkaround_shywhtcaraa.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200603_1732_stalkaroundacross_drtydrksuv.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200603_1131_stalkaroundup_drtyltlsilvercarguy.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200602_1837_stalkaroundacross_shyltlwhtcar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200602_1428_stalkaroundup_amazon.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200602_1315_stalkaround_truegreen_jkwii_ko2us.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200601_stalkaroudacross_tinyshnyltldrkwagon.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200601_1035_stalkaround_police_pickup_jtf32mow.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200531_2000_stalkaround_shnydrksuvfamily.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200531_1805_stalkaroundupacross_wrondway_ltlslvclowncar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200531_1304_stalkaround_upsmail_n_escort_3rdtime.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200531_1300_stalkaroundacroos_lost_upsmailvan.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200530_2010_stalkaroundup_speedyshydrkwagon.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200530_1657_stalkaroundup_silvercarndoorsign.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200530_1532_stalkaroundup_ltldarkcar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200530_1333_stalkaround_across_spedy_drksuv.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200529_2145_stalkaround_drksqrbaksuvstalk.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200529_2135_stalkaroundup_speedy_drkltlcar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200529_1915_stalkarouup_beigh3winjeepy_regular.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200529_1855_jak3out_stalkaround_drkcarbutchlady_wahtever.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200529_1840_stalkaround_jkwii_lawer_ko2us_nice.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200529_1630_mail_stalkaround_jtf32hotrod.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200529_1255_stalkaroudup_shyltldarkcarcpl.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200528_1022_stalkarouaandup_police_msnostop.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200527_1853_stalkaroundacross_ltlslvrcar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200527_1306_stalkaroundup_ltldrkcarcpl.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200527_0100_stalkaroundup.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200526_1847_jkwiihill_jtf32_stalkpenskeout.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200526_1838_stalkaroudup2jtf32_bigyellowpenske.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200526_1715_stalkaroundup_motorcycglebigguy.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200526_1705_stalkaroundacross_ltlltlcar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200526_1210_stalkaroundup_dngywhtvannladderrack.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200522_1708_stalkaroundup_shydrkcrcpl.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200522_1625_stalkaround_shydrkltlcar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200522_1624_stalkaroundup_shynwhtcar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200522_1555_stalkaround_shyblksuv_sorry.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200522_1155_stalkaroundacrossslow_drkltlwagon.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200521_1850_stalkbackout_slvltlcarguys.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200521_1345_stalkaround_jeepy_giggle_shiftworker.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200521_1343_stalkarund_jeepy.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200520_1430_stalkaround_redtwodorshypickup.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200520_1133_stalkaroundup_police_suv.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200519_1713_stalkaroundacross_dngydrkpickupsuv.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200519_1705_stalkaroundacross_spdyshywhtltlwagon.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200519_1700_stalkaroundupnotacross_srksuv.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200518_1820_stalkaroundup_drkshywagon.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200517_stalkaroundacross_upsmail.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200517_1814_stalkaroundup_drkchevypickup.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200517_1709_stalkaroundup_silvercar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200517_1555_stalkaroundup_snydrkcar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200516_1810_jtf30about_stalkaorund_slvr3winjeey.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200516_1655_stalkaround_shnydrkwagon_jkwii_ko2us.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200516_1623_stalkaround_shyltlwhtcarguy.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200516_1400_stalkaroundacross_wron.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200516_1333_stalkaroundup_shydrkltlcar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200516_1326_stalkaroundacross_shydrkltlcar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200516_1325_stalkaroundup_greenwagon.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200516_1315_stalkaroundacross_fedex_complaint_18004633339.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200516_1314_fedex_stalkarounde_across.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200516_1223_stalkaround_nice_jkwii_ko2us.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200516_0920_stalkaroundup_shywhtwagon.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_202005160931_stalkaroundup_shywhtcar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200515_2035_stalkaround_shywhtsuv_backdownacross.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200515_1827_stalkaroundacross_greenpickupguy.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200515_1510_stalkaroundacross_shndrksuvguys.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200514_1916_stalkaround_shnydrkwagon_roofrack.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200514_1900_stalkaroundup_shnydrkltlcarguy.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200514_1830_stalkaroundup_shydrkltlcar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200514_1748_stalkaroundup_gemini_truckntrailer_househunting.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200514_1714_stalkaroundup_shydrkwagon.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200514_1412_stalkaroundacross_silverwagon.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200514_1400_stalkaroundup_acrossin_shnyredcar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200513_1743_stalkaroundacross_shywhtwagon.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200512_1950_stalkaroundup_drkltlcar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200512_1709_stalkaroundup_wrongway_budget.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200512_1708_jtf301outin_jtf30kidsin_stalkaround_ltlsilv3er_sunrooflafer.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200512_1704_stalkaroundup_spedy_darkltlcar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200512_1130_stalkaroundup_slowlurk_shnywhtsuv_marked.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200511_1205_stalkaroundacross_speedyredcarradioguy.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200511_1007_stalkaroud_uppauseacross_whtpickup.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_202005111145_stalkaroundup_amazon.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200510_1850_stalkaroundup_shywhtsuv.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200510_1629_1626_stalkaround_shywhgtpickupcpl_backout.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200510_1612_stalkaroundup_speedylitlewaogn.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200510_1544_stalkaroundacross_beigesquarback_clowncar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200510_1540_stalkaround_stalkaround_backoutnice3.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200509_1901_woofs_inthe_duskstalkaround_darksuv.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200509_1642_stalkaroundup_shydrkwagon.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200509_1556_stalkaround_speedy_shnyltlwhtcloowncar_upacross.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200507_1916_stalkaroundup_shydarkwago_regulasr.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200507_1855_stalkaroaundacross_shydarkwagonguy.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200507_1810_stalkaround_speedy_shywhtfunyack.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200507_1347_stalkaraoundup_bluesuv.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200507_1128_stalkaroundup_fedex_nodeliveryinsite.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200506_1917_stalkaroundacross_shyred_ruable_pickup.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200506_1515_stalkaround_jtf30_whtclownvan_n_ladders.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200506_1338_stalkaroundacross_shyredpickup_crunch.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200506_1302_stalkaroundup_ltldrkshnycar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200505_1608_jjtf32in_donutvanlaw_stalkaroundup_silverwagon.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200505_1606_stalkaroaund_drklong_suv.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200505_1418_stalkaround_jtf32_amazon_jkwii_meetngreet.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200505_1315_stalkaroundacross_redrumblepickup.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200505_1041_stalkaroaund_cardinal_contractor.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200505_0848_stalkaroudacross_darkshnypickup_cabcover2.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200504__0950_stalkaround_police_sqrbak_jkwiigoin_terror.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200504_1350_stalkaroundacross_speedy_ltlsilvcarguy.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200504_1001_postt_poliice_stalkaround_terror_tweets.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200503_2035_stalkaroundup_tnysqrbak_clowncar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200503_2030_stalkaroundacross_lauater_rumblepickup_squeel2.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200503_1905_stalkaroudacross_ltlsilvrguy.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200503_1825_stalkaroundup_shinysilverguy.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200503_1825_stalkaroudup_shyredcpl.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200503_1816_stalkaround_drksqrbak.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200503_1656_stalkaoundacross_shiygrey_cpl.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200503_1215_stalkaroundup_speedy_ltldarkcar_cyclerack2.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200503_0810_stalkaroundacross_dogs2.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200502_1958_stalkaround__shydarksquarback.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200502_1750_stalkaroundup_ltldarkcarguys.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200502_1721_stalkaroundup_motorcycle_offroad_sixsigns.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200502_1124_stalkaroundsup_fedex_gigglegirls.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200501_2012_stalkaround_jtf31_bigups_crunch.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200501_0051_stalkaroundup_owl_n_sumblepickup.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200430_1645_stalkaround_hillfedex4jtf16.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200430_1431_stalkaround_jtf32donutvanlaw_jtf30_allabout.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200430_1238_stalkaround_across_shnltlredguy.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200429_1753_stalkaround_ltlsilvervanpari.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200429_1731_stalkaroundup_speedy_snywht.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200428_1840stalkaround_shydrksquarback.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200428_1812_stalkaroundup_shnydrkwagon.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200428_0829_stalkaround_whitepicup_trailer_2mowers.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200426_2125_stalkaround_across_shnywhtcar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200426_2005_stalkaroundup_backacross_shnydrkcar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200426_1720_stalkaoundup_shybluclowncar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200426_1626_stalkaround_shnyltldrncar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200426_1337_stalkaround_motorcycleamazon.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200425_2005_stalkaround_darkrumblepickup_backup_nice.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200425_2003_stalkaroundup_bigdarkrumble_pickup.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200425_1915_stalkaround_shydrkltlcarguy.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200425_1755_stalkaroundacross_ltlsilverwagonguy.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200425_1537_stalkaroundup_shyltlwhtcarguy.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200425_1150_stalkacrossin_upacross_longdrkvar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200424_1850_stalkaroundup_speedy_bigtruckvan.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200424_1833_stalkaroundup_longflatbed_truck.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200424_1611_stalkaaroundup_redbeattle.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200424_1400_stalkaround_jtf32_jtf26_delivery.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200424_0835_stalkaround_speedy_ltlred_sportsterguy.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200423_1920_stalkaroundup_ltlsilver_gigglegirls.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200423_1905_stalkaround_regular_shydarkwagon_rattled.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200423_1423_stalkaroundup_speeding_amazon_stalk.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200423_1314_stalkaround_acrossinup_ltlbeigewagon_tier2.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200422_1920_jstalkaroundup_jtf32_ltldrkvan_lawntrailer_jkwiihill.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200422_1414_stalkaround_pauseacross_ltlshydrnwagon.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200422_1401_stalkaroundup_ltlshygrnwagon.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200421_1915_stalkaround_deliberate_shydrksuv.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200421_1343_stalkaroundacross_speedy_bluprislikegu.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200420_1355_stalkaroundacross_shywhtpickup_jkwiihil_sanswoof.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200420_1131_stalkaroundacross_jkwiigo_jltlsilverwagon_jtf39byrd.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200420_1130_stalkaroundacross_jkwiigo_jltlsilverwagon_jtf39byrd.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200420_0015_stalkaroundacross_maybe_drksuv.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_2020042001_jstalkaround_twice_tf32_amazon_.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200419_stalkaround_shydrkltlwagoncpl_upacross.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200419_1935_stalkaroaundup_speedy_silversqrbak_jeepyguy.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200419_1523_stalkaroundacross_shnygrayltlpickup.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200418_1935_stalkaourd_amazon_unmarked.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200418_1929_stalkaroundup_shnydarkcar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200418_1838_jkwii_stalkaround_beigge_suv.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200418_1734_speedy_stalkaround_drkgrnshny_wagon.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200418_1500_jtf30out_ks_stalkaround_shnywhtltlwagon_wrongway.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200418_1438_stalkaround_jtf30_stre_red.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200418_1252_jtf30_amazon_stalkarounup_escorts_hydarkcar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200418_0941_stalkaroundup_lgingylightsuv.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200417_2250_stalkaroundup_shnywht.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200417_2157_stalkaroundup_shnywhite.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200417_2021_stalkaround_jtf31_streettruck.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200417_2019_stalkaround_jtf32_amazon.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200417_1801_stalkaroundup_silversuv.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200416_1529_stalkarond_shnywhitsuv_sqrbak_lurkacroos.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200416_1149_stalkaround_shydarksuvsqrback.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200416_0954_stalkaroundacross_speedyfedex.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200415_1958_stalkaround_ltlshnybeigecar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200415_1838_stalkaroundup_speedyltlshygreenwagon.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200415_1600_stalkaround_twice_threat.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200415_1338_stalkaround_shnydarltlwagon.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200415_1247_stalkaround_whtpickup_atlas_glass.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200414_1955_stalkaround_across_tancadalaclights.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200414_1820_stalkaround_dingytanywagon_youlost_n_screek.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200413_1831_stalkaroundup_speeding_silvercar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200413_1743_stalkaround_speedy_drkgrnwagon_jtf31out.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200413_1735_stalkaroundup_speedy_greyis_rumblecar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200413_1637_stalkaroundacross_speedy_darkltlwagon.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200413_1532_stalkaroundup_darkpickup.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200413_1521_stalkaroundacross_longdrkcar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200413_1304_stalkaround_shyltlgreenwagon.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200412_1925_stalkaound_speedy_blkshysuv.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200412_1613_stalkaroud_darkcar_jkwiihot_.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200412_1555_stalkaround_ltlwhtcar_uporacross.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200412_1513_stalkaaround_anyway.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200412_1250_stalkaroundup_shyltlwhitewagon.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200412_1237_stalkaroundup_return_speeding_whitepickupguy.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200410_1815_jkwii_driveway_messaging_stalkaround_ko2.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200410_1537_stalkarounds_2donut_invites_jkwiiflee_2x.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200410_1416_stalkaround_dirtygraypickup.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200410_1110_stalkaround_whtpickup_nofriends_jtf31_about_jkwiihot.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200410_0953_stalkaround_shydrkwagonguy.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200409_1221_stalkaround_dark_pontiaclikewagon.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200408_stalkaroundnot_darksqrback_acrossnice.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200408_1527_stalkaround_ltldarkcar_cycleracks.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200408_1340_stalkaround_beigpickup_amazoncomplaint_12062661000.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200408_1333_stalkaround_wrionway_amazon.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200408_1153_jtf31_stalkaround_ltlsilver_4xkeepout_jkwiihot.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200407_1326_stalkaround_shnltlwhtwagon_keepoutx4.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200405_stalkaround_police_nostop.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200405_1644_stalkaround_longlow_whtpickup_cple.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200405_1550_jkwii_remarks_stalkaround_darksqrback.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200404_2228_stalkaround_back_lurkup_jtf30about.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200404_2220_stalkaroundup_speedy_darkcar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200404_1141_stalkaroundup_ltldrkcar_jtf32_pauseup.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200404_1140_stalkaroundup_ltldrkcar_jtf32pauseup.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200403_1505_jstalkaround_tf30whtwagn_strparker_jkwiinwalkers2.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200401_1007_stalkaroundup_ltlblucar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200329_1737_stalkaroundacross_ltldarkwagon.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200329_1624_stalkaroundacross_ltldarkclowntruck.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200329_1602_stalkaroundacross_ltlsilvercar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200329_1555_stalkaroundup_ltlshinywhitwagon.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200329_1404_stalkaroundup_ltlgrnsuv.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200329_1341_stalkaroundacross_darklitlpickup.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200329_1134_stalkaroundacroos_silverwagon.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200328_2235_stalkarounup_xmaslite_rumble_truck.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200328_1714_stalkaround_darkltlwgn.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200328_1615_stalkaround_cardinal_contractors.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200328_1358_stalkaroundup_speedy_ltldarkcarbuy.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200328_1147_stalkaroundacross_shiny_dark_pickup.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200328_0920_jkwii_chapelwakers_tomazy_got2hell_lures.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200327_1658_stalkaraoundacross_litlesilvercarguy.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200327_1644_jtf33out_stalkaround_tricycle_.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200327_1557_stalkaround_litlcat_jtf30_ups.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200327_1532_stalkaround_jtf30_yellowcycler_fu_fu_fu.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200327_1529_jkwii2dolley_stalking_help.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200326_1830_stalkaroundacross_shnywhtsuv_medmask.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200326_1657_stalkaround__darkltlcar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200326_1635_stalkaround_shywhite_suv.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200325_1634_stalkaround_silversuv_kids.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200325_1205_stalkaround_ltlgrnwagn.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200324_1315_stalkaroundacross_darkcar_again.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200324_1310_stalkaroundup_darkcar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200321_1911_stalkaround_greenwagon_youlost.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200321_1255_stalkaround_across_litlewhite_2dogs2.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200320_2155_stalkaroundup_suv.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200319_1913_stalkaround3_nstop.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200319_1857_stalkaroundup_darkgrnltlwagon_gus.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200319_1500_stalkaound_speedy_ltlwhtcarguy.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200319_1335_stalkaroudup_ltlgrnwagonguy.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200314_1540_stalkaround_ltlsilverguy_n_sputter.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200313_2105_stalkaroundup_car.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200313_1750_stalkaround_lerker_darkwagon.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200313_1750_stalkaround_jtf31_amazon.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200313_1228_stalkaoundacrossup_dirtybluetruckguys.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200313_1035_stalkaroundacross_darkpickupguy.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200311_1804_stalkaoround_gray_charger.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200308_1531_stalkaround_silver_treebutcher_again.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200307_1055_stalkacrrossinup_ltlpickup_ladrrak.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200306_1620_stalkaround_across_greenwagon.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200305_1743_stalkaround_silvywagon_speedy.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200305_1623_stalkaround_jtf31_fionain.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200304_1424_stalkaroundup_litlsilver_radiobase.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200303_1503_stalkaround_speedyup_silverwagon.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200302_1329_stalkaroundup_ltlredcar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200301_0720_stalkaroundup_darkltlcar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_202003008_1505_jjak3out2shower_stalkaround_jtf31_treebutcher.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200229_1345_stalkaroundup_litlegrenwagon_speedy.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200229_1230_stalkaoundup_darklitlewagon.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200229_1045_stalkaround_darkwagon.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200228_1818_stalkaround_acroossup_rumbel_grey_pickup.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200228_1339_stalkaround_darklitlcar_up_blackcat_across.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200228_1212_stalkaround_darkpickup_acrossslow.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200227_1114_stalkaround_speedy_dirtydarkwagon.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200225_1255_stalkaround_jtf32_amazonjkwii.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200223_1552_stalkaroun_vancpl_housing.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200223_1453_stalkaround_police_jkwii_intro.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200222_1607_stalkaround_greywagon_up.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200218_1650_stalkaroundup_greycar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200218_1230_stalkaround_litlbluewht_clow.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200217_1611_stalkaround_darkcarup.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200215_0820_stalkaround_bigdarkpickup.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200214_1951_stalkaroundup.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200213_1740_stalkaround_suv_jtf31pause.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200212_1435_stalkaround_redpickup_wrongway_jkwiiulost.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200212_1430_stalkaround_redpickup_wrongway_jtf33_downnice_pickup.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200208_1917_stalkaound_speedingup.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200208_1559_stalkaround_darkpickupguy_jtf32in_donutvanlaw.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200208_1526_stalkaround_darkwagon_up_pause_across.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200207_1641_stalkaround_jtf31_fedex.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200203_1211_stalkaound_county_waterhookup_hunt.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200203_1210_stalkaround_stlc_waterhookup_hunter.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200202_2230_stalkaroundup_dargwagon.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200202_2034_stalkaround_white_suvlik_rumble_.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200202_1415_jtf30_stalkaround_cycleyello_showoff_convertableguys.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200202_1330_stalkaround_across_carcpl.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200201_1342_stalkaround_ltlwhtcar_across.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200128_1213_stalkaroundup_suv.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200127_2231_stalkaround_speedy_wht_truck.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200127_0fedex_stalkaroundjtfdc_20200127_1038_.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200126_2656_stalkaround_speedyspeedy_ltlwithcar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200121_1359_stalkaround_shinyloaded_redpickupacross.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200119_1752_stalkaround_twins_suv_n_pickup.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200118_1202_stalkaround_darkvancuple_slowM.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200116_1540_stalkaround_fedex_hill.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200115_1030_stalkaround_ltlslvercar_jtf31_fiona_carpaus.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200114_1418_stalkaround_grayjenajaguarlike.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200114_1128_stalkaaround_speedy_honkM.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200113_1755_stalkaround_jtf31_bigbig_lighted_truck.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200113_1320_stalkaround_dirtywhtrumble_pickup_backnet.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200111_1445_stalkaround_ltldarkgrn_hatchback.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200107_1256_stalkaround_darkcarguy_slowout.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200106_1530_stalkaround_shywhtjeepy_jkwiihill_woofs.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200106_1514_stalkaround_shnywhitecar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200106_1144_stalkaround_jtf32_amazon_longvan_uM.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200105_1327_stalkaround_diryredpickup.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200104_1412_jstalkaround_tf32_ups.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200103_2344_stalkaround_whtcar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200101_1900_stalkaround.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200101_1219_stalkaroundup_litldarkcar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_201928_1550_stalkaround_speeding_police_wagon.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191231_1337_stalkaround_speedydarkcar_walkersnicer.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191230_428_stalkaround_silveryminivan.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191228_1550_stalkaround_silverninivanguy.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191227_1836_jtfd31_stalkaround_back.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191227_1825_stalkaround_jtf31_litledarkwagon.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191227_1308_stalkaround_speddydarkcarmov.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191227_1306_stalkaround_pausespeedy_carguy.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191226_1524_stalkaround_speedy_orange_clowncar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191225_1735_stalkaround_bugsuv_jtf28out.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191224_2100_stalkaround_lightsuv_n_escort.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191224_1943_stalkaround_jtf32_donuvanlaw_guest.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191224_1908_stalkaround_darksuv_4headlights.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191224_0945_stalkaround_pickup.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191222_1236_stalkaround_shiny_dark_suv_across.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191221_1504_stalkaround_longwhtsuv.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191215_0915_stalkaround_ltldarkccar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191214_1357_stalkaround_darkltlcar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191214_1354_stalkaround_ltlgraywagon_roofrakemov.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191213_1603_stalkaround_twice2jtf33.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191213_1556_stalkaround_litldarkdcar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191213_1320_stalkaround_speedy_dirtysilverwagon_winsticker.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191212_1715_stalkaround_dirtywhitepickup.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191212_1427_stalkaroundup_speedy_darkwagon.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191212_1035_stalkaround_darksuv.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191211_2136_stalkaround_.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191210_16108_stalkaround_litlwhitecar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191209_1529_stalkaround_bus.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191207_2033_stalkaround_across.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191207_1503_stalkaround_jtf31_amazong.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191204_1646_stalkaround_schoolbus_2dayrow.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191204_1510_stalkaround_speedy_darkltlcar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191203_1643_stalkaround_bus_jtf30in_newsuv_busup.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191202_1230_stalkaround_whitetruck_jtf32out_lyinglawerin.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191201_1931_stalkaround_wrongway_n_pause.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191201_1349_stalkaround__jtf31_yellowvest_spire.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191201_1032_stalkaround_downnice.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191129_1415_stalkaround_jtf32_amazon.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191129_1212_jtf31_fionas_nice_stalkaround_litlauto.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191128_0157_stalkaround_squarebak_across.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191127_1620_stalkaround_darklitlwagon.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191126_1440_stalkaround_speedy_darklitlpickup.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191126_1011_stalkaroundup_litlshinywhite.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191125_1059_stalkaround_longwhitewagon.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191122_1542_stalkaroundup_darklitlcar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191121_1558_stalkaround_darklitlecar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191121_1516_stalkaround_police.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191121_1136_stalkaround_litlsilvercar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191121_1022_stalkaround_bigfedex_lost.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191121_1013_stalkaround_pickup_fancygrey.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191117_1315_stalkaround_lightminivan.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191116_2120_stalkaround_across.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191111_1258_stalkaround_jtf3231_budgettruck.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191110_1635_stalkaround_darrklitlsuvsuv.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191110_1625_stalkaround_litlgraywagon2.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191110_1609_stalkaround_litlsilvercar_lostrt.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191110_1505_stalkaround_shinyoldcar_rumble.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191108_1614_stalkaround_silver_red_jtf30out_pickup.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191107_1738_stalkaround_amazon.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191106_1420_stalkaround_amazon.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191103_1420_stalkaround_jtf32_driveway2.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191030__1745_stalkaround_sil.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191028_1243_stalkaround_blinky_rainbow_whitevan.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191027_1411_stalkaround_shinyredpickupgus.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191025_1513_stalkaround_darkjeep.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191025_1512_stalkaround_darkjeep.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191023_1536_stalkaround_bus.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191023_0355_stalkaround_snowplow.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191020_1705_stalkaround_wrongway_bluejeepguy.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191020_1705_stalkaround_again_bluejeepguy.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191019_1430_downnice_stalkaround_jkwiiin.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191019_1306_stalkaround_wronway_litleredcar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_201910191800_jtf31in_fiona_stalkaround_blacksuv_jtf31in_2.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191018_2137_stalkaround_n_lurrk.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191017_1529_stalkaround_half_jtf28_levan.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191015_1518_stalkaround_police_1518.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191015_1518_stalkaround__1517.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191015_1257_stalkaround_+greenclowncar_confusedout.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191014_1434_stalkaround_shinywhite_suv_wronway.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20191012_1248_stalkaround_shiny.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20190920_1200_stalkaround_shinydarkpickup_rumble.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20190919_1610_stalkaround_hitoplpire_jtf30in2.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20190918_2099_jkwiigo_stalkaround_wrongway_nicetalkn2ya.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20190918_1540_stalkaround_wrongway_shinywhitecar_sloow.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20190918_1150_stalkaround_shinyblackpickup_contractor.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20190917_1838_stalkaround_shinyblackpickup_rumble.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20190913_1812_stalkaroun_wrongway_litledarkcar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20190913_1550_stalkaround_shnywhitesuv.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20190907_1722_stalkaround_speedy_almost_inthegrass.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20190905_1754_jkwii_stillalarmed_stalkaround_ehm_suvpolice.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20190905_1748_jkwii_post_stalkaround_blinky_emtruck_n_suvpolice.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20190904_1706_stalkaround_litlredcar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20190903_1529_stalkaround_speedy_litlesilvercat.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20190902_1317_stalk_halfaround_redtruck_mailpause2.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20190731_1845_stalkaround_darkcharger.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20190517_1836_eagles_bus_stalkaround.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_201110_1622_stalkaround_litlgraywagon.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_1345_stalkaroundacross_shygrnchvy_radio2.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtdc_20191102_1335_stalkaroundup_shinywhiteminivan.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtafc_20200421_1850_stalkaroundup_bigwhtsuv.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jkwiijjtfdc_20200517_stalkaroundwronway_jkwiiko2us.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/htfdc_20200329_1628_stalkarondacross_silvercharge.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/_jtfdc_20200202_1310_stalkaround_slow_up.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/1825_stalkaround_ltldentdslver_speeoffup.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/tn_jtfdc_20200327_1532_stalkaround_jtf30_yellowcycler_fu_fu_fu.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/tn_jtfdc_20200326_1830_stalkaroundacross_shnywhtsuv_medmask.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/tfdc_20191224_1340_stalkaround_darkcar_jtf31_dogsabout.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdfc_20200511_1650_stalkaroundup_shnywhtltlcar.gif
/
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdec_20200426_1654_stalkaroundup_shydrkwagonlike.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdec_20200307_1154_stalkaroundup_speedy_ltlwht_spire.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfddc_20200530_2025_stalkaround_shnwhtpickup_contractorngirl_ko2.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdd_20190911_1617_stalkaround_darklitlecart.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_stalkaround_drkltlcar_jkwii_jtf31woofs.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_stalkaround_drkltlcar_1823.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_21090916_1427_stalkaround_longwhitevan_jtf31in.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20910731_1755_stalkaoundf_light_speedy_suv.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_2020509_1618_stalkaround_jkwiiko2_jtf32in_doberpatrol_stoleneagles_stillthinkn.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20203927_1945_stalkaroundup_pause_offroad.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_202020515_1858_stalkaroundup_nice_ko2us.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_202020505_11614_stalkaround_cyclegynhat.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_2020200422_stalkaround_ltldrkcar.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20201213_0925_stalkaround_wronway_silversuv_jtf30ou.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200608_2000_stalkaround_dtyslvrconvertable.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200608_1032_stalkaroundup_drtyltlcar_cycrake_again_n_friend.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200608_0947_stalkaroundup_drtyltlcar_cyclerake_jtf30in_speedy_almostcrashbyb.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200607amazzon_stalkaround_1415.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200607_1850_stalkaroundacross_speedy_snydrksuvguy.gif`;


//			alert( "BUGS_5001 jtfdc_stalkarounds kolists_jtfdc_stalkarounds="+kolists['jtfdc_stalkarounds'] );
//			alert( "BUGS_5001 jtfdc_stalkarounds kolists_jtfdc_stalkarounds="+kolists['jtfdc_stalkarounds'] );
			jaxurl="/txt/jtfdc_stalkarounds.txt";
//			jax(jaxurl);
//			kolists['jtfdc_stalkarounds']=kolists[jax];
//			alert( "BUGS_5002 jtfdc_stalkarounds kolists_jax="+kolists['jax'] );
//			alert( "BUGS_5003 jtfdc_stalkarounds kolists_jtfdc_stalkarounds="+kolists['jtfdc_stalkarounds'] );

			kolist=kolists['jtfdc_stalkarounds'].split("\n");
			kolist_len=kolist.length;
			htmout = "";
			htmout_mp4="<hr><hr><hr><hr>";
			htmout += '<div id="div_jtfdc_stalkarounds">';
			htmout += '	<h1>div_jtfdc_stalkarounds</h1>';
			height_mp4=150;
			height_gif=25;
			height=height_gif;
//			alert( "BUGS_5130 height_mp4="+height_mp4 );
			k=0;
			jlim=10;
//			kolist_len=jlim;
			for( j=0; j<kolist_len; j++ ) {

				img=kolist[j];
				href=kolist[j].split("|")[0];

				if( kolist[j].match("^#")) { continue; }
				if( kolist[j].match("png$")) { continue; }
				if( kolist[j].match("jpg$")) { continue; }
				if( kolist[j].match("^<")) {
					htmout += kolist[j];
					continue;
					}


				id=img.replace(".jpg","");
				id=img.replace(".gif","");
				id=img.replace(".mp4","");
				id=img.replace(".png","");
				gif=id.replace("$",".gif");
				mp4=gif.replace(".gif",".mp4");
				height=height_gif;

//				if( kolist[j].match("mp4$")) { continue; }
				if( href.match("mp4$")) { 
					height=height_mp4; 
					gif=href.replace(".mp4",".gif");
//					alert( "BUGS_5150 MP4 href="+href );
					}


//				if( filecheck(mp4)) { 
//					k=k+1;
//					href=mp4; 
//					height=height_mp4;
//					alert( "BUGS_5131 ___FOUND  k="+k+" mp4="+mp4+" href="+href );
//					htmout_mp4 += k+". "+mp4+"<br>";
//					} 


				url=mp4;
				img=gif;
				label=id.replace("/kb/jtfdcr/vid/","").replace(".gif","").replace(".mp4","" );	
//				htmout += '<a href="'+mp4+'" class="popover" ';
				htmout += '<a href="'+href+'" class="popover" target=_blank ';
				htmout += '	>';
//				htmout += '	<img src="'+gif+'" height=100';
				htmout += '	<img src="'+gif+'" height='+height+' ';
				htmout += '		alt="'+id+'" ';
				htmout += '		border=0 draggable="true">';
				htmout += '	<span><img src="'+gif+'" height=300 ';
				htmout += '		alt="'+id+'" ';
				htmout += '		border=0 draggable="true"></span>';
				htmout += '	'+j+'. '+label;
				htmout += '	</a>';
				htmout += '	<br><br><br>';
				}
			htmout += htmout_mp4;
			htmout += '<h1>div_jtfdc_stalkarounds_tail</h1>';
			htmout += '</div>';


			if( document.getElementById('div_jtfdc_stalkarounds')) {
				document.getElementById('div_jtfdc_stalkarounds').innerHTML=htmout;
				}

//			alert( "BUGS_4279 SHOW" );
			document.getElementById('div_jtfdc_stalkarounds').style.display = "inline";
			if( document.getElementById('img_jtfdc_stalkarounds')) {
				document.getElementById('img_jtfdc_stalkarounds').src = imgw;
				document.getElementById('img_jtfdc_stalkarounds').height = 100;
				}
			if( document.getElementById('img_jtfdc_stalkarounds2')) {
				document.getElementById('img_jtfdc_stalkarounds2').src = imgb;
				document.getElementById('img_jtfdc_stalkarounds2').height = 100;
				}

			return( kolists['jtfdc_stalkarounds'] );
			}
		</script>




	<script id="script_mothersday">
		function mothersday(args) {
// `/imgs/gif/mothersday/giphy_mothersday090.gif
kolists['mothersday'] =
`/imgs/gif/mothersday/giphy_mothersday10.gif
/imgs/gif/mothersday/giphy_mothersday11.gif
/imgs/gif/mothersday/giphy_mothersday13.gif
/imgs/gif/mothersday/giphy_mothersday14.gif
/imgs/gif/mothersday/giphy_mothersday15.gif
/imgs/gif/mothersday/giphy_mothersday16.gif
/imgs/gif/mothersday/giphy_mothersday20.gif
/imgs/gif/mothersday/giphy_mothersday21.gif
/imgs/gif/mothersday/giphy_mothersday22.gif
/imgs/gif/mothersday/giphy_mothersday23.gif
/imgs/gif/mothersday/giphy_mothersday24.gif
/imgs/gif/mothersday/giphy_mothersday25.gif
/imgs/gif/mothersday/giphy_mothersday26.gif
/imgs/gif/mothersday/giphy_mothersday27.gif
/imgs/gif/mothersday/giphy_mothersday30.gif
/imgs/gif/mothersday/giphy_mothersday31.gif
/imgs/gif/mothersday/giphy_mothersday32.gif
/imgs/gif/mothersday/giphy_mothersday33.gif
/imgs/gif/mothersday/giphy_mothersday34.gif
/imgs/gif/mothersday/giphy_mothersday36.gif
/imgs/gif/mothersday/giphy_mothersday37.gif
/imgs/gif/mothersday/giphy_mothersday38.gif
/imgs/gif/mothersday/giphy_mothersday39.gif
/imgs/gif/mothersday/giphy_mothersday40.gif
/imgs/gif/mothersday/giphy_mothersday41.gif
/imgs/gif/mothersday/giphy_mothersday42.gif
/imgs/gif/mothersday/giphy_mothersday43.gif
/imgs/gif/mothersday/giphy_mothersday44.gif
/imgs/gif/mothersday/giphy_mothersday45.gif
/imgs/gif/mothersday/giphy_mothersday46.gif
/imgs/gif/mothersday/giphy_mothersday47.gif
/imgs/gif/mothersday/giphy_mothersday48.gif
/imgs/gif/mothersday/giphy_mothersday50.gif
/imgs/gif/mothersday/giphy_mothersday51.gif
/imgs/gif/mothersday/giphy_mothersday52.gif
/imgs/gif/mothersday/giphy_mothersday54.gif
/imgs/gif/mothersday/giphy_mothersday55.gif
/imgs/gif/mothersday/giphy_mothersday56.gif
/imgs/gif/mothersday/giphy_mothersday57.gif
/imgs/gif/mothersday/giphy_mothersday59.gif
/imgs/gif/mothersday/giphy_mothersday60.gif
/imgs/gif/mothersday/giphy_mothersday80.gif`;

			gifs = kolists['mothersday'].split("\n");
			gifs_len=gifs.length;
			gifid=random_int(gifs_len-1,0);
			gif = gifs[gifid];
			htmout = "";
			htmout += '<div id="div_mothersday"';
			htmout += '<h1>happy mothersday</h1>';
			htmout += '	<img src="'+gif+'" onclick="window.open(\'/fb/mothersday\');return false; " ';
			htmout += '		height=400 border=0 draggable="true" >';
			htmout += '	</div>';

			if( document.getElementById('div_mothersday')) {
				document.getElementById('div_mothersday').innerHTML=htmout;
				}
			}
		</script>

	<script id="script_divlist">
		function divlist(args) {
			args_len=args.split(",").length;
			div_id=""; list_id=""; match="";
			if( args_len > 1 ) { div_id=args.split(",")[0];}
			if( args_len > 2 ) { list_id=args.split(",")[1];}
			if( args_len > 3 ) { match=args.split(",")[2];}

			alert( "bugs_6700 divlist args="+args+" args_len="+args_len );
			alert( "bugs_6701 divlist div_id="+div_id+" list_id="+list_id+" match="+match );

kolists['edu'] =
`/fb/edu/imgs/edu.png
/fb/edu/imgs/edu_miami.png
/fb/edu/imgs/edu_csu.png
/fb/edu/imgs/edu_bw.png
/fb/edu/imgs/edu_lindenwood.png
/fb/edu/imgs/edu_baker.png`;

kolists['hoa'] =
`/fb/hoa/imgs/hoa.png
/fb/hoa/imgs/hoa_stonehendge.png
/fb/hoa/imgs/hoa_doevalley.png
/fb/hoa/imgs/hoa_jtfdc.png
/fb/hoa/imgs/hoa_jtfinc.png
/fb/hoa/imgs/hoa_barrington.png
`;

kolists['law'] =
`/fb/law/imgs/law.png
/fb/law/imgs/law_tc_kk.png
/fb/law/imgs/law_tc_db.png
/fb/law/imgs/law_sb.png
/fb/law/imgs/law_elster.png
/fb/law/imgs/law_law501.png
/fb/law/imgs/law_kt.png
`;

kolists['pano'] =
`pn/imgs/Opportunity-Mars-Rover-Lander-pia19112.jpg
/pn/imgs/PIA22313_pano.jpg
/pn/imgs/Sol83-PremiersGivres-pano.jpg
/pn/imgs/Taipo_pano.jpg
/pn/imgs/mars-gale-crater-panorama-pia11241-full.jpg
/pn/imgs/mars-panoramic-mt-sharp-rover-curiosity-pia19662.jpg
/pn/imgs/mars-rover-opportunity-pia19110_Sol3902B_Cape_Tribulation_L257F.jpg
/pn/imgs/mars-rover-opportunity-pia19111_Sol3902B_Cape_Tribulation_L2R2ana.jpg
/pn/imgs/opportunity-panorama-warton-ridge-enhanced-pia20850-full.jpg
/pn/imgs/pano.jpg
/pn/imgs/pano_backyard_all.jpg
/pn/imgs/pano_burmuda.jpg
/pn/imgs/pano_closeline.jpg
/pn/imgs/pano_courtyard1.jpg
/pn/imgs/pano_courtyard2.jpg
/pn/imgs/pano_creek.jpg
/pn/imgs/pano_creek5.jpg
/pn/imgs/pano_falls.jpg
/pn/imgs/pano_falls1_4000.jpg
/pn/imgs/pano_falls_015-285.jpg
/pn/imgs/pano_falls_north.jpg
/pn/imgs/pano_falls_south.jpg
/pn/imgs/pano_fork_grass.jpg
/pn/imgs/pano_jtf_entrance.jpg
/pn/imgs/pano_jtf_entrance_jtf.jpg
/pn/imgs/pano_jtfarms_enter_hi.jpg
/pn/imgs/pano_jtfarms_entrance_9700x100.jpg
/pn/imgs/sphere.jpg
/pn/imgs/veneer.jpg
/pn/imgs/yard.jpg
`;
			alert( "BUGS_6800 kolists_edu="+kolists['pano'] );

kolists['us'] =
`http://ko2.us|/imgs/us/lawdonovan.png|law_donovan|/imgs/btn/koeye.png|law|phn|email|note
http://lawdonovan.com|/imgs/us/lawdonovan.png|law_donovan|/imgs/btn/koeye.png|law|phn|email|note
http://nathanscohen.com/|/imgs/us/law_cohen_nathan_s.png|law__cohen_nathan_s|/imgs/btn/koeye.png|law|phn|email|note
https://www.linkedin.com/in/alan-cohen-2314473b/|/imgs/us/law_cohen_alan_w.png|law__cohen_alan_w|/imgs/btn/koeye.png|law|phn|email|note
https://twitter.com/AlanWCohenEsq|/imgs/us/cohen_alan_w_twitter.png|cohen_alan_w_twitter|/imgs/btn/koeye.png|law|phn|email|note
http://www.primerus.com/attorneys/alexander-h-kuehling-esq-rosenblum-goldenhersh-st-louis-missouri-mo.htm|/imgs/us/law_kuehling_alexander.png|law_law_kuehling_alexander|/imgs/btn/koeye.png|law|phn|email|note
http://elsterlaw.com/henry-elster-attorney-missouri-best/|/imgs/us/law_elster_henry.png|law_elster_henry|/imgs/btn/koeye.png|law|phn|email|note
https://pview.findlaw.com/view/2830721_1|/imgs/us/law_walters_alan.png|law_walters_alan|/imgs/btn/koeye.png|law|phn|email|note
https://www.thompsoncoburn.com/|/imgs/us/law_thompson_coburn.png|law__thompson_coburn|/imgs/btn/koeye.png|law|phn|email|note
http://koreintillery.com/|/imgs/us/law_korein_tillery.png|law_korein_tillery|/imgs/btn/koeye.png|law|phn|email|note
http://www.smithbrownllc.com/|/imgs/us/law_smith_brown.png|law_smith_brown|/imgs/btn/koeye.png|law|phn|email|note
https://www.lawyers.com/st-louis/missouri/Larry-B-Luber-1043827-a/|/imgs/us/law_luber_larry_b.png|muenkstax|/imgs/btn/koeye.png|law|phn|email|note
http://www.yourmissourijudges.org/judges/|/imgs/us/mo_judges.png|mo_judges|/imgs/btn/koeye.png|law|phn|email|note
http://www.yourmissourijudges.org/judges/schroeder-2012/|/imgs/us/judge_schroeder.png|judge_schroeder|/imgs/btn/koeye.png|law|phn|email|note
https://www.stlouisco.com/LawandPublicSafety/MunicipalCourts/Judges/JudgeDanielBrow/|/imgs/us/judge_brown_daniel.png|judge_brown_daniel|/imgs/btn/koeye.png|law|phn|email|note
https://jmhalumni.com|/imgs/us/jmhalumni.png|ed_jmhalumni|/imgs/btn/koeye.png|edu|phn|email|note
https://johnmarshallhighschool.com|/imgs/us/johnmarshallhighschool.png|ed_johnmarshallhighschool|/imgs/btn/koeye.png|edu|phn|email|note
https://www.greatschools.org/kentucky/brandenburg/1993-Brandenburg-High-School/|/imgs/us/brandenburg_highschool.png|ed_brandenburg-highschool|/imgs/btn/koeye.png|edu|phn|email|note
https://www.hazelwoodschools.org/Page/3143|/imgs/us/hazelwood_schools.png|ed_hazelwood_schools|/imgs/btn/koeye.png|edu|phn|email|note
https://bw.edu|/imgs/us/bw.png|ed_bw|/imgs/btn/koeye.png|edu|phn|email|note
http://oldtowndonuts.com|/imgs/us/oldtowndonuts.png|food_oldtowndonuts|/imgs/btn/koeye.png|food|phn|email|note
http://farkaspastries.com|/imgs/us/farkaspastries.png|food_farkaspastries|/imgs/btn/koeye.png|food|phn|email|note
https://www.facebook.com/HansaImportHouse|/imgs/us/hansaimporthouse.png|food_hansaimporthouse|/imgs/btn/koeye.png|food|phn|email|note
http://havanagrillco.com|/imgs/us/havanagrillco.png|food_havanagrillco|/imgs/btn/koeye.png|food|phn|email|note
http://spiros-restaurant.com|/imgs/us/spiros_restaurant.png|food_spiros_restaurant|/imgs/btn/koeye.png|food|phn|email|note
http://edelweissrest.com|/imgs/us/edelweissrest.png|food_edelweissrest|/imgs/btn/koeye.png|food|phn|email|note
https://www.facebook.com/woohoogreekfood2/|/imgs/us/woohoogreekfood2.png|food_woohoogreekfood2|/imgs/btn/koeye.png|food|phn|email|note
https://bdo.com/about/us-locations/bdo-st-louis|/imgs/us/bdo-stl.png|acct_bdo-stl|/imgs/btn/koeye.png|acct|phn|email|note
https://bdo.com/about/us-locations/bdo-cleveland-office|/imgs/us/bdo-cle.png|acct_bdo-cle|/imgs/btn/koeye.png|acct|phn|email|note
http://www.gatewayloan.com/|/imgs/us/gateway_mortgage.png|gateway_mortgage|/imgs/btn/koeye.png|acct|phn|email|note
https://chesonsulting.com|/imgs/us/checonsulting.png|biz_checonsulting|/imgs/btn/koeye.png|biz|phn|email|note
http://saic.com|/imgs/us/saic.png|saic|/imgs/btn/koeye.png|biz|phn|email|note
http://leidos.com|/imgs/us/leidos.png|leidos|/imgs/btn/koeye.png|biz|phn|email|note
http://dvunited.com|/imgs/us/dvunited.png|dvunited|/imgs/btn/koeye.png|cont|phn|email|note
http://tdginc.com|/imgs/us/tdginc.png|dalton_gang|/imgs/btn/koeye.png|cont|phn|email|note
http://allyntech.com|/imgs/us/allyntech.png|allyntech|/imgs/btn/koeye.png|cont|phn|email|note
https://www.linkedin.com/in/edgar-lewin-35a4b02b|/imgs/us/edgar-lewin.png|cont_edgar-lewin|/imgs/btn/koeye.png|cont|phn|email|note
http://ibm.com|/imgs/us/ibm.png|cont_ibm|/imgs/btn/koeye.png|cont|phn|email|note
http://boeing.com|/imgs/us/boeing.png|boeing|/imgs/btn/koeye.png|cont|phn|email|note
http://ko2.us/index_focus.com|/imgs/us/focus_solutions.png|focus_solutions|/imgs/btn/koeye.png|biz|phn|email|note
http://www.finduslocal.com/hardware-stores/kentucky/brandenburg/allens-s-t-hardware-inc|/imgs/us/biz_allens_hardware.png|biz_allens_hardware|/imgs/btn/koeye.png|biz|phn|email|note
http://growwarehouse.com|/imgs/us/grow_warehouse.png|grow_warehouse|/imgs/btn/koeye.png|biz|phn|email|note
https://www.facebook.com/avondanceandmartialarts|/imgs/us/avondanceandmartialarts.png|avondanceandmartialarts|/imgs/btn/koeye.png|phy|phn|email|note
https://www.facebook.com/avondanceandmartialarts|/imgs/us/avondanceandmartialarts.png|avondanceandmartialarts|/imgs/btn/koeye.png|phy|phn|email|note
http://www.savellidanceandmartialarts.com/?load=html|/imgs/us/savelli_dance_martialarts.png|savelli_dance_martialarts|/imgs/btn/koeye.png|phy|phn|email|note
http://myfusiondance.com/?load=html|/imgs/us/fusion_dance.png|fusion_dance|/imgs/btn/koeye.png|phy|phn|email|note
http://www.superseriesbaseball.com/|/imgs/us/super_series_baseball.png|super_series_baseball|/imgs/btn/koeye.png|phy|phn|email|note
https://ftknox.afceachapters.org/|/imgs/us/afcea_knox.png|afcea_knox|/imgs/btn/koeye.png|org|phn|email|note
https://scott.afceachapters.org/|/imgs/us/afcea_scott.png|afcea_scott|/imgs/btn/koeye.png|org|phn|email|note
https://www.ble-t.org/|/imgs/us/ble.png|ble|/imgs/btn/koeye.png|org|phn|email|note
http://www.doevalley.org/|/imgs/us/doe_valley.png|doe_valley|/imgs/btn/koeye.png|org|phn|email|note
https://www.bw.edu/libraries|/imgs/us/bw_edu_lib.png|bw_edu_lib|/imgs/btn/koeye.png|lib|phn|email|note
http://librarytechnology.org/library/4941|/imgs/us/lib4941.png|lib4941|/imgs/btn/koeye.png|lib|phn|email|note
http://spokane.wsu.edu/library/|/imgs/us/wsu_edu_lib.png|spokane_wsu_lib|/imgs/btn/koeye.png|lib|phn|email|note
http://cpl.org|/imgs/us/lib_westpark.png|lib_westpark|/imgs/btn/koeye.png|lib|phn|email|note
http://librarytechnology.org|/imgs/us/lib8623.png|lib8623|/imgs/btn/koeye.png|lib|phn|email|note
http://www.slcl.org/content/florissant-valley-branc.com|/imgs/us/slcl_fvb.png|slcl_fvb|/imgs/btn/koeye.png|lib|phn|email|note
http://www.slcl.org/|/imgs/us/slcl.png|slcl_fvb|/imgs/btn/koeye.png|lib|phn|email|note
https://www.spectrum.com|/imgs/us/spectrum.png|spectrum|/imgs/btn/koeye.png|util|phn|email|note
https://www.stlouis-mo.gov/government/departments/health/animal-care-control/index.cfm|/imgs/us/animal_control.png|animal_control|/imgs/btn/koeye.png|stlc|phn|email|note
https://www.ameren.com|/imgs/us/ameren.png|ameren|/imgs/btn/koeye.png|stlc|phn|email|note
https://www.stlwater.com|/imgs/us/stlwater.png|stlwater|/imgs/btn/koeye.png|stlc|phn|email|note
http://stlcountycourts.com/DEP_Family_Court.php|/imgs/us/stlc_family_court.png|stlc_family_court|/imgs/btn/koeye.png|stlc|phn|email|note
https://www.stlouis-mo.gov/government/departments/public-safety/fire/|/imgs/us/stlc_fire.png|stlc_fire|/imgs/btn/koeye.png|stlc|phn|email|note
https://www.healthgrades.com/physician/dr-alok-katyal-ynwtq|/imgs/us/dr_katyal_alok.png|dr_katyal_alok|/imgs/btn/koeye.png|med|phn|email|note
https://www.doximity.com/pub/alok-katyal-md|/imgs/us/docimity_katyal_alok.png|us/docimity_katyal_alok|/imgs/btn/koeye.png|med|phn|email|note
https://www.healthgrades.com/physician/dr-ayotunde-bamimore-gc8hf|/imgs/us/dr_bamimore_ayotunde.png|dr_bamimore_ayotunde|/imgs/btn/koeye.png|med|phn|email|note
https://doctor.webmd.com/doctor/ayotunde-bamimore-034e1bd5-d20b-42a5-9dfb-d9c09c4183b8-overview|/imgs/us/webmd_bamimore_ayotunde.png|webmd_bamimore_ayotunde|/imgs/btn/koeye.png|medhttps://www.healthgrades.com/physician/dr-jessica-smith-xgnvw|/imgs/us/dr_smith_jessica.png|dr_smith_jessica|/imgs/btn/koeye.png|med|phn|email|note
https://www.healthgrades.com/physician/dr-patrick-morris-xpsh2|/imgs/us/dds_morris_patrick.png|dds_morris_patrick|/imgs/btn/koeye.png|med|phn|email|note
https://www.facebook.com/pages/Patrick-R-Morris-DDS-MD/906948729378402U|/imgs/us/fb_dds_morris_patrick.png|fb_dds_morris_patrick|/imgs/btn/koeye.png|med|phn|email|note
https://blunt.senate.gov/public/|/imgs/us/uss_mo_blunt.png|uss_mo_boeing|/imgs/btn/koeye.png|gov|phn|email|note
https://www.mccaskill.senate.gov|/imgs/us/uss_mo_mccaskill.png|uss_mo_mccaskill|/imgs/btn/koeye.png|gov|phn|email|note
https://www.mcconnell.senate.gov/public|/imgs/us/uss_ky_mcconnell.png|uss_ky_mcconnell|/imgs/btn/koeye.png|gov|phn|email|note
http://www.paul.senage.gov|/imgs/us/uss_ky_paul.png|uss_ky_boeing|/imgs/btn/koeye.png|gov|phn|email|note
http://en.wikipedia.org/wiki/Mitch_McConnell|/imgs/us/wiki_mcconnell_mitch.png|wiki_mcconnell_mitch|/imgs/btn/koeye.png|gov|phn|email|note
https://www.senate.gov/?State=OH|/imgs/us/boeing.png|boeing|/imgs/btn/koeye.png|cont|phn|email|note
https://www.senate.gov/general/contact_information/senators_cfm.cfm?State=KY|/imgs/us/boeing.png|boeing|/imgs/btn/koeye.png|cont|phn|email|note
https://www.house.gov/general/contact_information/senators_cfm.cfm?State=MO|/imgs/us/boeing.png|boeing|/imgs/btn/koeye.png|cont|phn|email|note
index_konabus.html|/imgs/us/konabus.png|konabus|/imgs/btn/koeye.png|konabus|phn|email|note
http://growwarehouse.com|/imgs/us/growwarehouse.png|growwarehouse|/imgs/btn/koeye.png|konabus|phn|email|note
https://www.leafly.com/dispensary-info/the-epic-remedy---colorado-springs|/imgs/us/epic_remedy.png|epic_remedy|/imgs/btn/koeye.png|konabus|phn|email|note
https://www.weedsta.com/dispensary/colorado/colorado-springs/the-epic-remedy|/imgs/us/weedsta.png|weedsta|/imgs/btn/koeye.png|konabus|phn|email|note
https://www.coloradopotguide.com/where-to-buy-marijuana/colorado/colorado-springs/the-epic-remedy-south/||phn|email|note
index_sl_medcan_bible.html|/imgs/us/medcan_bible.png|medcan_bible|/imgs/btn/koeye.png|konabus|phn|email|note
http://franwell.com|/imgs/us/franwell.png|franwell|/imgs/btn/koeye.png|konabus|phn|email|note
http://www.metric.com|/imgs/us/metric.png|metric|/imgs/btn/koeye.png|konabus|phn|email|note
https://co.metric.com/log-in?ReturnUrl=%2f|/imgs/us/metric_co.png|metric_co|/imgs/btn/koeye.png|konabus|phn|email|note
https://oh.metric.com/log-in?ReturnUrl=%2f|/imgs/us/metric_oh.png|metric_oh|/imgs/btn/koeye.png|konabus|phn|email|note
https://or.metric.com/log-in?ReturnUrl=%2f|/imgs/us/metric_or.png|metric_or|/imgs/btn/koeye.png|konabus|phn|email|note
/us/konabus/ko_metric/ko_metric.php|/imgs/us/ko_metric.png|ko_metric|/imgs/btn/koeye.png|konabus|phn|email|note
http://www.chapelofthecross.org/|/imgs/us/chapel_of_the_cross.png|chapel_of_the_cross|/imgs/btn/koeye.png|rel|phn|email|note
https://www.lds.org/temples/details/st.-louis-missouri-temple|/imgs/us/lds_stl.png|lds_stl|/imgs/btn/koeye.png|rel|phn|email|note
https://www.bethanyenglish.org/|/imgs/us/bethany_english_lutheran.png|bethany_english_lutheran|/imgs/btn/koeye.png|rel|phn|email|note
https://www.meadecountymessenger.com/|/imgs/us/meade_county_messenger.png|meade_county_messenger|/imgs/btn/koeye.png|media|phn|email|note
/index_jtfdcr.html|/imgs/us/jtfdcr.png|jtfdcr|/imgs/btn/koeye.png|media|phn|email|note
https://mars.jpl.nasa.gov/msl/multimedia/raw/?s=#/?slide=2088|/imgs/us/mars_jpl_nasa.png|mars_jpl_nasa|/imgs/btn/koeye.png|sci|phn|email|note
https://mars.nasa.gov/mer/gallery/all/opportunity.html|/imgs/us/mars_nasa_gov.png|mars_nasa_gov|/imgs/btn/koeye.png|sci|phn|email|note
/index_jtfdcr.html|/imgs/us/jtfdcr.png|jtfdcr|/imgs/btn/koeye.png|media|phn|email|note
`;


			htmout = "";
			items = kolists[list_id].split("\n");
			items_len=items.length;
			for( j=0; j<items_len; j++ ) {
				item = items[j];
//				flds = item.split("|");
//				flds_len=flds.length;

//				my_href = item[j].split('|")[0];
//				my_popimg = "/imgs/btn/kob.png";
//				my_alt = "alt";
//				my_id = "my_id";
//				my_phn = "my_phn";
//				my_email = "my_email";
//				my_note = "my_note";

//				if( flds_len > 1 ) { my_popimg = item[j].split('|")[1]; }
//				if( flds_len > 2 ) { my_alt = item[j].split('|")[2]; }
//				if( flds_len > 4 ) { my_id = item[j].split('|")[3]; }
//				if( flds_len > 5 ) { my_phn = item[j].split('|")[4]; }
//				if( flds_len > 6 ) { my_email = item[j].split('|")[5]; }
//				if( flds_len > 7 ) { my_note = item[j].split('|")[6]; }

//				htmout += "my_id="+my_id+"|";
//				htmout += "my_phn="+my_phn+"|";
//				htmout += "my_email="+my_email+"|";
//				htmout += "my_note="+my_note+"|";


//				item_id=random_int(items_len-1,0);
				htmout += '<hr color=orange><hr color=orange>';
				htmout += '<div id="'+div_id+'" >';
				htmout += '<h1>'+id+'</h1>';
				htmout += '<br><br><br><br>';
				htmout += '	<img src="'+item+'" onclick="window.open(\''+url+'\');return false; " ';
				htmout += '		height=400 border=0 draggable="true" >';
				htmout += '	</div>';
				}
	
			if( document.getElementById(div_id)) {
				document.getElementById('div_id').innerHTML=htmout;
				}
			return(args);


			alert( "bugs_4002 us kolist="+kolists[id] );


			}
		</script>

	<script id="script_edu">
		function edu(args) {
			alert( "bugs_5000 edu args="+args );
kolists['edu'] =
`/fb/edu/imgs/edu.png
/fb/edu/imgs/edu_miami.png
/fb/edu/imgs/edu_csu.png
/fb/edu/imgs/edu_bw.png
/fb/edu/imgs/edu_lindenwood.png
/fb/edu/imgs/edu_baker.png`;

			alert( "BUGS_5000 edu kolists_edu="+kolists['edu'] );
			edus = kolists['edu'].split("\n");
			edus_len=edus.length;
			eduid=random_int(edus_len-1,0);
			edu = edus[eduid];
			htmout = "";
			htmout += '<hr color=orange><hr color=orange>';
			htmout += '<div id="div_edu"';
			htmout += '<h1>edu</h1>';
			htmout += '<br><br><br><br>';
			htmout += '	<img src="'+edu+'" onclick="window.open(\'/fb/edu\');return false; " ';
			htmout += '		height=400 border=0 draggable="true" >';
			htmout += '	</div>';

			if( document.getElementById('div_edu')) {
				document.getElementById('div_edu').innerHTML=htmout;
				}
			return(args);
			}
		</script>


	<script id="script_edu_bugs">
		function edu_bugs(args) {
kolists['hoa'] =
`/fb/hoa/imgs/hoa.png
/fb/hoa/imgs/hoa_stonehendge.png
/fb/hoa/imgs/hoa_doevalley.png
/fb/hoa/imgs/hoa_jtfdc.png
/fb/hoa/imgs/hoa_jtfinc.png
/fb/hoa/imgs/hoa_barrington.png
`;
			alert( "BUGS_6000 hoa kolists_hoas="+kolists['hoa'] );

			hoas = kolists['hoa'].split("\n");
			hoas_len=hoas.length;
			hoaid=random_int(hoas_len-1,0);
			hoa = hoas[hoaid];
			htmout = "";
			htmout += '<hr color=orange><hr color=orange>';
			htmout += '<div id="div_hoa"';
			htmout += '<h1>hoa</h1>';
			htmout += '<br><br><br><br>';
			htmout += '	<img src="'+hoa+'" onclick="window.open(\'/fb/hoa\');return false; " ';
			htmout += '		height=400 border=0 draggable="true" >';
			htmout += '	</div>';

			if( document.getElementById('div_hoa')) {
				document.getElementById('div_hoa').innerHTML=htmout;
				}
			return(args);
			}
		</script>





	<script id="script_hoa">
		function hoa(args) {
kolists['hoa'] =
`/fb/hoa/imgs/hoa.png
/fb/hoa/imgs/hoa_stonehendge.png
/fb/hoa/imgs/hoa_doevalley.png
/fb/hoa/imgs/hoa_jtfdc.png
/fb/hoa/imgs/hoa_jtfinc.png
/fb/hoa/imgs/hoa_barrington.png
`;
			alert( "BUGS_6000 hoa kolists_hoas="+kolists['hoa'] );

			hoas = kolists['hoa'].split("\n");
			hoas_len=hoas.length;
			hoaid=random_int(hoas_len-1,0);
			hoa = hoas[hoaid];
			htmout = "";
			htmout += '<hr color=orange><hr color=orange>';
			htmout += '<div id="div_hoa"';
			htmout += '<h1>hoa</h1>';
			htmout += '<br><br><br><br>';
			htmout += '	<img src="'+hoa+'" onclick="window.open(\'/fb/hoa\');return false; " ';
			htmout += '		height=400 border=0 draggable="true" >';
			htmout += '	</div>';

			if( document.getElementById('div_hoa')) {
				document.getElementById('div_hoa').innerHTML=htmout;
				}
			return(args);
			}
		</script>

	<script id="script_law">
		function law(args) {
kolists['law'] =
`/fb/law/imgs/law.png
/fb/law/imgs/law_tc_kk.png
/fb/law/imgs/law_tc_db.png
/fb/law/imgs/law_sb.png
/fb/law/imgs/law_elster.png
/fb/law/imgs/law_law501.png
/fb/law/imgs/law_kt.png
`;

			alert( "BUGS_7000 law kolists_law="+kolists['law'] );

			laws = kolists['law'].split("\n");
			laws_len=laws.length;
			lawid=random_int(laws_len-1,0);
			law = laws[lawid];
			htmout = "";
			htmout += '<hr color=orange><hr color=orange>';
			htmout += '<div id="div_law"';
			htmout += '<h1>law</h1>';
			htmout += '<br><br><br><br>';
			htmout += '	<img src="'+law+'" onclick="window.open(\'/fb/law\');return false; " ';
			htmout += '		height=400 border=0 draggable="true" >';
			htmout += '	</div>';

			if( document.getElementById('div_law')) {
				document.getElementById('div_law').innerHTML=htmout;
				}
			return(args);
			}
		</script>


	<script id="script_fathersday">
		function fathersday(args) {
kolists['fathersday'] =
`/imgs/gif/giphy_fathersday/giphy_fahtersday41.gif
/imgs/gif/giphy_fathersday/giphy_fathers13.gif
/imgs/gif/giphy_fathersday/giphy_fathers13.gif
/imgs/gif/giphy_fathersday/giphy_fathersda501.gif
/imgs/gif/giphy_fathersday/giphy_fathersday.gif
/imgs/gif/giphy_fathersday/giphy_fathersday03.gif
/imgs/gif/giphy_fathersday/giphy_fathersday04.gif
/imgs/gif/giphy_fathersday/giphy_fathersday05.gif
/imgs/gif/giphy_fathersday/giphy_fathersday06.gif
/imgs/gif/giphy_fathersday/giphy_fathersday07.gif
/imgs/gif/giphy_fathersday/giphy_fathersday08.gif
/imgs/gif/giphy_fathersday/giphy_fathersday09.gif
/imgs/gif/giphy_fathersday/giphy_fathersday10.gif
/imgs/gif/giphy_fathersday/giphy_fathersday11.gif
/imgs/gif/giphy_fathersday/giphy_fathersday17.gif
/imgs/gif/giphy_fathersday/giphy_fathersday18.gif
/imgs/gif/giphy_fathersday/giphy_fathersday20.gif
/imgs/gif/giphy_fathersday/giphy_fathersday21.gif
/imgs/gif/giphy_fathersday/giphy_fathersday22.gif
/imgs/gif/giphy_fathersday/giphy_fathersday23.gif
/imgs/gif/giphy_fathersday/giphy_fathersday24.gif
/imgs/gif/giphy_fathersday/giphy_fathersday25.gif
/imgs/gif/giphy_fathersday/giphy_fathersday26.gif
/imgs/gif/giphy_fathersday/giphy_fathersday27.gif
/imgs/gif/giphy_fathersday/giphy_fathersday29.gif
/imgs/gif/giphy_fathersday/giphy_fathersday30.gif
/imgs/gif/giphy_fathersday/giphy_fathersday31.gif
/imgs/gif/giphy_fathersday/giphy_fathersday33.gif
/imgs/gif/giphy_fathersday/giphy_fathersday34.gif
/imgs/gif/giphy_fathersday/giphy_fathersday36.gif
/imgs/gif/giphy_fathersday/giphy_fathersday37.gif
/imgs/gif/giphy_fathersday/giphy_fathersday38.gif
/imgs/gif/giphy_fathersday/giphy_fathersday39.gif
/imgs/gif/giphy_fathersday/giphy_fathersday40.gif
/imgs/gif/giphy_fathersday/giphy_fathersday41.gif
/imgs/gif/giphy_fathersday/giphy_fathersday42.gif
/imgs/gif/giphy_fathersday/giphy_fathersday43.gif
/imgs/gif/giphy_fathersday/giphy_fathersday44.gif
/imgs/gif/giphy_fathersday/giphy_fathersday45.gif
/imgs/gif/giphy_fathersday/giphy_fathersday46.gif
/imgs/gif/giphy_fathersday/giphy_fathersday_bigbucks.gif
/imgs/gif/giphy_fathersday/giphy_fathersday_car.gif
/imgs/gif/giphy_fathersday/giphy_fathersday_catch.gif
/imgs/gif/giphy_fathersday/giphy_fathersday_cokk.gif
/imgs/gif/giphy_fathersday/giphy_fathersday_collest.gif
/imgs/gif/giphy_fathersday/giphy_fathersday_cook_rollingpin.gif
/imgs/gif/giphy_fathersday/giphy_fathersday_deer.gif
/imgs/gif/giphy_fathersday/giphy_fathersday_flag.gif
/imgs/gif/giphy_fathersday/giphy_fathersday_hocky.gif
/imgs/gif/giphy_fathersday/giphy_fathersday_kitiworks.gif
/imgs/gif/giphy_fathersday/giphy_fathersday_kitiworks2.gif
/imgs/gif/giphy_fathersday/giphy_fathersday_kungfu.gif
/imgs/gif/giphy_fathersday/giphy_fathersday_ladder.gif
/imgs/gif/giphy_fathersday/giphy_fathersday_muscles.gif
/imgs/gif/giphy_fathersday/giphy_fathersday_overboard.gif
/imgs/gif/giphy_fathersday/giphy_fathersday_pool.gif
/imgs/gif/giphy_fathersday/giphy_fathersday_pullups.gif
/imgs/gif/giphy_fathersday/giphy_fathersday_smooch.gif
/imgs/gif/giphy_fathersday/giphy_fathersday_stairtwins.gif
/imgs/gif/giphy_fathersday/giphy_fathersday_superdad.gif
/imgs/gif/giphy_fathersday/giphy_fathersday_swing.gif
/imgs/gif/giphy_fathersday/giphy_fathersday_vacume.gif
/imgs/gif/giphy_fathersday/giphy_fgathersday_ponyride.gif
/imgs/gif/giphy_fathersday/giphy_headbut.gif
/imgs/gif/giphy_fathersday/giphy_headbut01.gif`;

			gifs = kolists['fathersday'].split("\n");
			gifs_len=gifs.length;
			gifid=random_int(gifs_len-1,0);
			gif = gifs[gifid];
			htmout = "";
			htmout += '<hr color=orange><hr color=orange>';
			htmout += '<div id="div_fathersday"';
			htmout += '<h1>happy fathersday</h1>';
			htmout += '<br><br><br><br>';
			htmout += '	<img src="'+gif+'" onclick="window.open(\'/fb/fathersday\');return false; " ';
			htmout += '		height=400 border=0 draggable="true" >';
			htmout += '	</div>';

			if( document.getElementById('div_fathersday')) {
				document.getElementById('div_fathersday').innerHTML=htmout;
				}
			}
		</script>


	<script id="script_anniversary">
		function anniversary(args) {
// `/imgs/gif/mothersday/giphy_mothersday090.gif
kolists['anniversary'] =
`/imgs/gif/giphy_anniversary/giph_ann016.gif
/imgs/gif/giphy_anniversary/giph_ann06.gif
/imgs/gif/giphy_anniversary/giphy-ann15.gif
/imgs/gif/giphy_anniversary/giphy_18.gif
/imgs/gif/giphy_anniversary/giphy_ann.gif
/imgs/gif/giphy_anniversary/giphy_ann01.gif
/imgs/gif/giphy_anniversary/giphy_ann010.gif
/imgs/gif/giphy_anniversary/giphy_ann02.gif
/imgs/gif/giphy_anniversary/giphy_ann05.gif
/imgs/gif/giphy_anniversary/giphy_ann06.gif
/imgs/gif/giphy_anniversary/giphy_ann07.gif
/imgs/gif/giphy_anniversary/giphy_ann08.gif
/imgs/gif/giphy_anniversary/giphy_ann11.gif
/imgs/gif/giphy_anniversary/giphy_ann12.gif
/imgs/gif/giphy_anniversary/giphy_ann13.gif
/imgs/gif/giphy_anniversary/giphy_ann16.gif
/imgs/gif/giphy_anniversary/giphy_ann17.gif
/imgs/gif/giphy_anniversary/giphy_ann18.gif
/imgs/gif/giphy_anniversary/giphy_ann19.gif
/imgs/gif/giphy_anniversary/giphy_ann21.gif
/imgs/gif/giphy_anniversary/giphy_ann22.gif
/imgs/gif/giphy_anniversary/giphy_ann67.gif
/imgs/gif/giphy_anniversary/giphy_ann_43.gif
/imgs/gif/giphy_anniversary/giphy_ann_confetti.gif
/imgs/gif/giphy_anniversary/giphy_ann_heart.gif
/imgs/gif/giphy_anniversary/giphy_ann_piza.gif
/imgs/gif/giphy_anniversary/giphy_ann_pizza2.gif
/imgs/gif/giphy_anniversary/gipy_ann34.gif`;

			gifs = kolists['anniversary'].split("\n");
			gifs_len=gifs.length;
			gifid=random_int(gifs_len-1,0);
			gif = gifs[gifid];
			htmout = "";
			htmout += '<div id="div_anniversary"';
			htmout += '<h1>happy anniversary</h1>';
			htmout += '	<img src="'+gif+'" onclick="window.open(\'/fb/anniversary\');return false; " ';
			htmout += '		height=400 border=0 draggable="true" >';
			htmout += '	</div>';

			if( document.getElementById('div_anniversary')) {
				document.getElementById('div_anniversary').innerHTML=htmout;
				}
			}
		</script>

	<script id="script_reindependenceday">
		function reindependenceday(args) {
// `/imgs/gif/mothersday/giphy_mothersday090.gif
kolists['reindependenceday'] =
`/imgs/gif/giphy_reindependenceday/giphy_july4.gif
/imgs/gif/giphy_reindependenceday/giphy_reindependanceday.gif
/imgs/gif/giphy_reindependenceday/giphy_reindependenseday_01.gif
/imgs/gif/giphy_reindependenceday/giphy_reindependenseday_02.gif
/imgs/gif/giphy_reindependenceday/giphy_reindependenseday_03.gif
/imgs/gif/giphy_reindependenceday/giphy_reindependenseday_04.gif
/imgs/gif/giphy_reindependenceday/giphy_reindependenseday_05.gif
/imgs/gif/giphy_reindependenceday/giphy_reindependenseday_06.gif
/imgs/gif/giphy_reindependenceday/giphy_reindependenseday_07.gif`;









			gifs = kolists['reindependenceday'].split("\n");
			gifs_len=gifs.length;
			gifid=random_int(gifs_len-1,0);
			gif = gifs[gifid];
			htmout = "";
			htmout += '<div id="div_reindependenceday"';
			htmout += '<h1>happy reindependenceday</h1>';
			htmout += '	<img src="'+gif+'" onclick="window.open(\'/fb/reindependenceday\');return false; " ';
			htmout += '		height=400 border=0 draggable="true" >';
			htmout += '	</div>';

			if( document.getElementById('div_reindependenceday')) {
				document.getElementById('div_reindependenceday').innerHTML=htmout;
				}
			}
		</script>









	<script id="script_kogrids">
		function kogrids(args) {
//			alert( "BUGS_4300 kogrids args="+args );
//			fb_law(args);
//			jtfdc_stalkarounds(args);
//			mothersday(args);

//			fathersday(args);
//			anniversary(args);
//			reindependenceday(args);

			postturtle_monkeytrap(args);
//			alert( "BUGS_1852 kogrids len="+len+" kolist="+kolist );
//			alert( "BUGS_1852 kogrids len="+kolist.length+" kolist="+kolist );
//			var j=0; var len = divids.split(" ").length;
//			script_hideshow('alloff');
//			var id="zm";
//			script_hideshow(id);
//			script_hideshow1('allon');
		
//			alert( "BUGS_1850 kogrids args="+args );
//			var kolist = kolists['divids'];
//			alert( "BUGS_1851 kogrids kolist="+kolist );
//			alert( "BUGS_1851 kogrids divids="+divids );
//			alert( "BUGS_1852 kogrids kolist_divids="+kolists['divids'] );
//			alert( "BUGS_1860 kogrids len="+len+" kolist="+kolist );
			var kolist = kolists['divids'].split(" ");
			var len=kolist.length;
			for ( j=0; j<len; j++ ) {
				var rand = random_int(len,1);
				var id=kolist[rand-1];
				if( /alloff/.test(id)) {continue;}
				if( /allon/.test(id)) {continue;}
				if( /toggle/.test(id)) {continue;}
				if( /</.test(id)) {continue;}
				script_hideshow('alloff');
				var divid="div_"+id;
//				alert( "BUGS_1881 j="+j+" hideshow id="+id+" rand="+rand );
//				script_hideshow('fb');
//				script_hideshow('yt');
				script_hideshow(divid);
//				alert( "BUGS_1882 j="+j+" hideshow id="+id+" rand="+rand );
////				script_hideshow1('allon');
				break;
				}

			var myko = new Array();
			var mykob = new Array();
			var mykow = new Array();
			var mykoeyeb = new Array();
			var mykoeyew = new Array();

mykob =
`/imgs/kogrids/tn/tn_kob_grid1.png
/imgs/kogrids/tn/tn_kob_grid2.png
/imgs/kogrids/tn/tn_kob_grid3.png
/imgs/kogrids/tn/tn_kob_grid4.png
/imgs/kogrids/tn/tn_kob_grid5.png
/imgs/kogrids/tn/tn_kob_grid6.png
/imgs/kogrids/tn/tn_kob_grid7.png
/imgs/kogrids/tn/tn_kob_grid8.png
/imgs/kogrids/tn/tn_kob_grid9.png
/imgs/kogrids/tn/tn_kob_grid.gif`.split("\n");
mykow = 
`/imgs/kogrids/tn/tn_kow_grid1.png
/imgs/kogrids/tn/tn_kow_grid2.png
/imgs/kogrids/tn/tn_kow_grid3.png
/imgs/kogrids/tn/tn_kow_grid4.png
/imgs/kogrids/tn/tn_kow_grid5.png
/imgs/kogrids/tn/tn_kow_grid6.png
/imgs/kogrids/tn/tn_kow_grid7.png
/imgs/kogrids/tn/tn_kow_grid8.png
/imgs/kogrids/tn/tn_kow_grid9.png
/imgs/kogrids/tn/tn_kow_grip.gif`.split("\n");

mykoeyeb =
`/imgs/kogrids/tn/tn_koeyeb_grid1.png
/imgs/kogrids/tn/tn_koeyeb_grid2.png
/imgs/kogrids/tn/tn_koeyeb_grid3.png
/imgs/kogrids/tn/tn_koeyeb_grid4.png
/imgs/kogrids/tn/tn_koeyeb_grid5.png
/imgs/kogrids/tn/tn_koeyeb_grid6.png
/imgs/kogrids/tn/tn_koeyeb_grid7.png
/imgs/kogrids/tn/tn_koeyeb_grid8.png
/imgs/kogrids/tn/tn_koeyeb_grid9.png
/imgs/kogrids/tn/tn_koeyeb_grid_delay5.gif`.split("\n");
mykoeyew =
`/imgs/kogrids/tn/tn_koeyew_grid1.png
/imgs/kogrids/tn/tn_koeyew_grid2.png
/imgs/kogrids/tn/tn_koeyew_grid3.png
/imgs/kogrids/tn/tn_koeyew_grid4.png
/imgs/kogrids/tn/tn_koeyew_grid5.png
/imgs/kogrids/tn/tn_koeyew_grid6.png
/imgs/kogrids/tn/tn_koeyew_grid7.png
/imgs/kogrids/tn/tn_koeyew_grid8.png
/imgs/kogrids/tn/tn_koeyew_grid9.png
/imgs/kogrids/tn/tn_koeyew_grip_delay5.gif`.split("\n");

				var ko=Math.floor(Math.random()*myko.length);
				var kob=Math.floor(Math.random()*mykob.length);
				var kow=Math.floor(Math.random()*mykow.length);
				var koeyeb=Math.floor(Math.random()*mykoeyeb.length);
				var koeyew=Math.floor(Math.random()*mykoeyew.length);
				var koeyeb1=Math.floor(Math.random()*mykoeyeb.length);
				var koeyew1=Math.floor(Math.random()*mykoeyew.length);
				var koeyeb2=Math.floor(Math.random()*mykoeyeb.length);
				var koeyew2=Math.floor(Math.random()*mykoeyew.length);

				var max=4; var min=1;
				var delay1=random_int(max,min);
				var delay2=random_int(max,min);
				var delay3=random_int(max,min);
				var delay4=random_int(max,min);

//				var random_toggle = random_int(kolists['divids'].split(" ").length,1);
//				script_hideshow('alloff');
//				script_hideshow(kolists['divids'].split(" ")[random_toggle-1] );

				if( delay1 = 1 ) mykoeyeb[10]="/imgs/kogrids/tn/tn_koeyew_grid_delay100.gif";
				if( delay1 = 2 ) mykoeyeb[10]="/imgs/kogrids/tn/tn_koeyew_grid_delay25.gif";
				if( delay1 = 3 ) mykoeyeb[10]="/imgs/kogrids/tn/tn_koeyew_grid_delay50.gif";
				if( delay1 = 4 ) mykoeyeb[10]="/imgs/kogrids/tn/tn_koeyew_grid_delay5.gif";
				if( delay2 = 1 ) mykoeyew[10]="/imgs/kogrids/tn/tn_koeyew_grip_delay100.gif";
				if( delay2 = 2 ) mykoeyew[10]="/imgs/kogrids/tn/tn_koeyew_grip_delay25.gif";
				if( delay2 = 3 ) mykoeyew[10]="/imgs/kogrids/tn/tn_koeyew_grip_delay50.gif";
				if( delay2 = 4 ) mykoeyew[10]="/imgs/kogrids/tn/tn_koeyew_grip_delay5.gif";

				if (ko==0) ko=10;
				if (kob==0) kob=10;
				if (kow==0) kow=10;
				if (koeyeb==0) koeyeb=10;
				if (koeyew==0) koeyew=10;
				if (koeyeb1==0) koeyeb1=10;
				if (koeyew1==0) koeyew1=10;
				if (koeyeb2==0) koeyeb2=10;
				if (koeyew2==0) koeyew2=10;

var htmout_spacer = 
`<br><br><br><br><br><br><br><br>
<hr color=red>
<hr color=white>
<hr color=blue>
<br><br><br><br>`;
				htmout  = '\n';
				htmout += '<a href="/index.html" class="thumbnail"  target=_blank>';
				htmout += '<img src="'+mykoeyeb[koeyeb1]+'" height=75 alt=kob border=0>';
//				htmout += '<span><img src="/imgs/kogrids/tn/tn_links_ko2us.png" height=400 alt="ko2.us" border=0></span>';
				htmout += '<span><img src="/imgs/kogrids/links_ko2us.png" height=400 alt="ko2.us" border=0></span>';
				htmout += '</a>';
				htmout += '&nbsp  &nbsp';
				htmout += '<a href="/ko_center/ko_center.php?q=login" class="thumbnail" target=_blank>';
				htmout += '<img src="'+mykoeyew[koeyew1]+'" height=75 alt=koeyeb border=0>';
//				htmout += '<span><img src="/imgs/kogrids/tn/tn_links_kologin.png" height=400 alt="kolgin" border=0></span>';
				htmout += '<span><img src="/imgs/kogrids/links_kologin.png" height=400 alt="kolgin" border=0></span>';
				htmout += '</a>';
				htmout += '&nbsp  &nbsp';
				htmout += '<a href="/cfaa.html" class="thumbnail" target=_blank>';
				htmout += '<img src="'+mykoeyeb[koeyeb2]+'"  height=75 alt=koeyew border=0>';
//				htmout += '<span><img src="/imgs/kogrids/tn/tn_links_cfaa.png" height=400 alt="ko2.us" border=0></span>';
				htmout += '<span><img src="/imgs/kogrids/links_cfaa.png" height=400 alt="ko2.us" border=0></span>';
				htmout += '</a>';
				htmout += '&nbsp &nbsp &nbsp';
				htmout += '<a href="https://www.bluehost.com/?utm_source=%28direct%29&utm_medium=affiliate&utm_campaign=affiliate-link_konet_notype" class="thumbnail" target=_blank>';
				htmout += '<img src="'+mykoeyew[koeyew2]+'" height=75 alt=kow border=0>';
//				htmout += '<span><img src="/imgs/kogrids/tn/tn_links_bluehost.png" height=400 alt="bluehost.com" border=0></span>';
				htmout += '<span><img src="/imgs/kogrids/links_bluehost.png" height=400 alt="bluehost.com" border=0></span>';
				htmout += '</a>';
				htmout += '\n';

				htmout_kogrids=htmout;

				var htmout_lever_mw = "";
				htmout_lever_mw += '<a href=#div_kogrids class="popover" >\n';	
				htmout_lever_mw += '	<img  src=/imgs/btn/kop12.png onclick="kogrids(\'\'); return false;" border=0>\n';
				htmout_lever_mw += '	<span><img src=/imgs/btn/kop34.png onclick="kogrids(\'\');return false;" border=0></span>\n';
				htmout_lever_mw += '	</a>\n';

				var htmout_lever_mb = "";
				htmout_lever_mb += '<a href=#div_kogrids class="popover" >\n';	
				htmout_lever_mb += '	<img  src=/imgs/btn/kop34.png onclick="kogrids(\'\'); return false;" border=0>\n';
				htmout_lever_mb += '	<span><img src=/imgs/btn/kop12.png onclick="kogrids(\'\');return false;" border=0></span>\n';
				htmout_lever_mb += '	</a>\n';


				var htmout_m = "";
				htmout_m += htmout_lever_mw;
				htmout_m += htmout_kogrids;
				htmout_m += htmout_lever_mb;
				htmout_m += htmout_spacer;


				htmout_lever_w = "";
				htmout_lever_w += '<a href=# class="popover" >\n';	
				htmout_lever_w += '	<img src=/imgs/btn/kop1.png onclick="kogrids(\'w\'); return false;" border=0>\n';
				htmout_lever_w += '	<span><img src=/imgs/btn/kop2.png onclick="kogrids(\'w\'); return false;" border=0></span>\n';
				htmout_lever_w += '	</a>\n';

				htmout_w = "";
				htmout_w += htmout_lever_w;
				htmout_w += htmout_kogrids;
				htmout_w += htmout_spacer;

				htmout_lever_b = "";
				htmout_lever_b += '<a href=# class="popover" >\n';	
				htmout_lever_b += '	<img src=/imgs/btn/kop3.png onclick="kogrids(\'b\');return false;" border=0>\n';
				htmout_lever_b += '	<span><img src=/imgs/btn/kop4.png onclick="kogrids(\'b\'); return false;" border=0></span>\n';
				htmout_lever_b += '	</a>\n';

				htmout_b = "";
				htmout_b += htmout_kogrids;
				htmout_b += htmout_lever_b;
				htmout_b += htmout_spacer;

//				alert( "BUGS_2140 kogrids_w htmout_w="+htmout_w );
//				alert( "BUGS_2141 kogrids htmout="+htmout );
//				var div_kogrids = document.getElementById('div_kogrids_m');
//				div_kogrids.innerHTML = htmout_m;
//				var div_kogrids_b = document.getElementById('div_kogrids_b');
//				div_kogrids_b.innerHTML = htmout_b;

				if(document.getElementById('div_kogrids_xx')){
					document.getElementById('div_kogrids_xx').innerHTML=htmout_m;
					}
//				document.getElementById('div_kogrids').innerHTML=htmout;
				document.getElementById('div_kogrids_w').innerHTML=htmout_w;
				document.getElementById('div_kogrids_m').innerHTML=htmout_m;
				document.getElementById('div_kogrids_b').innerHTML=htmout_b;
				}

			function random_int(max,min) {
				min = Math.ceil(min);
				max = Math.floor(max);
				return Math.floor(Math.random() * (max - min + 1)) + min;	
				}

		</script>


	<script id="script_toggle">
		function script_toggle(element) {
//			alert( "BUGS_2400 hideshow element="+element );
			var htmbugs = ""; 
			htmbugs += '<div id="div_htmbugs">';
			htmbugs += '	<h1>div_htmbugs</h1>';
			htmbugs += '	<pre>';

			var style_d = "_style_d";
			var style_v = "_style_v";
//			alert( "BUGS_2401 element="+element );
			var htmout = ""; var j=0; var k=0;
			var divid = "";
			var div_divid = "";
			var div_divid_w = "";
			var div_divid_m = "";
			var div_divid_b = "";
//			var divids = "head jtfdc jtfinc jtfdcr av db dd fb pn sl tl tm yt zm".split(" ");
//			var divids = "head jtfdc jtfinc jtfdcr av db dd fb pn sl tl tm yt zm".split(" ");
//			var divids = "allon toggle alloff head setup hunt tag swarm bd status all_places all_items all_sounds all_us all_eggs all_grass places items sounds us eggs grass yt av links ".split(" ");
			var divids = "allon toggle alloff <br> hl jtfinc jtfdc bb fb  head setup hunt tag swarm bd status all_places all_items all_sounds all_us all_eggs all_grass places items sounds us eggs grass yt av links ".split(" ");

			if(( element == "alloff" )) {
//				alertmsg( "BUGS_2450 hideshow divids_length="+divids.length );
 				for( j=0; j<divids.length; j++ ) {
 					divid=divids[j];
					div_divid="div_"+divid;
//					div_divid_w = div_divid+"_w";
//					div_divid_m = div_divid+"_m";
//					div_divid_b = div_divid+"_b";
					if( divid == "<br>" ) { continue; }


					if( document.getElementById(div_divid)) {
						document.getElementById(div_divid).style.display="none";
						}
//					if( document.getElementById(div_divid_w)) {
//						document.getElementById(div_divid_w).style.display="none";
//						}
//					if( document.getElementById(div_divid_m)) {
//						document.getElementById(div_divid_m).style.display="none";
//						}
//					if( document.getElementById(div_divid_b)) {
//						document.getElementById(div_divid_b).style.display="none";
//						}
					}
				}
			if( element == "allon" )  {
//				alertmsg( "BUGS_2460 hideshow divids_length="+divids.length );
 				for( j=0; j<divids.length; j++ ) {
 					divid=divids[j];
					div_divid="div_"+divid;
					div_divid_w = div_divid+"_w";
					div_divid_m = div_divid+"_m";
					div_divid_b = div_divid+"_b";
					if( divid == "<br>" ) { continue; }

					if( document.getElementById(div_divid)) {
						document.getElementById(div_divid).style.display="inline";
						}
//					if( document.getElementById(div_divid_w)) {
//						document.getElementById(div_divid_w).style.display="inline";
//						}
//					if( document.getElementById(div_divid_m)) {
//						document.getElementById(div_divid_m).style.display="inline";
//						}
//					if( document.getElementById(div_divid_b)) {
//						document.getElementById(div_divid_b).style.display="inline";
//						}
					}
				}

			htmout += '<hr color=white>';
			htmout += '<img src="/imgs/btn/koeye_'+"alloff"+'.png" height=50 onclick="script_hideshow(\''+"alloff"+'\');return false;" alt="btn_'+"alloff"+'">';
			htmout += '<img src="/imgs/btn/koeye_'+"allon"+'.png" height=50 onclick="script_hideshow(\''+"allon"+'\');return false;" alt="btn_'+"allon"+'">';
			htmout += "<hr color=pink>";
			htmout += '<br>';


//			alertmsg( "BUGS_2500 hideshow divids_length="+divids.length );
 			for( j=0; j<divids.length; j++ ) {
 				divid=divids[j];
				div_divid="div_"+divid;
				div_divid_w = div_divid+"_w";
				div_divid_m = div_divid+"_m";
				div_divid_b = div_divid+"_b";
				if( divid == "<br>" ) {
					htmout += "<br>";
					continue;
					}

				style_v="";
				style_d="";
				if( document.getElementById(div_divid)) {
//					style_v = document.getElementById(div_divid).style.visibility;
					style_d = document.getElementById(div_divid).style.display;
//					alert( "BUGS_880 div_divid="+div_divid+"  style_d="+style_d );
					}

				htmbugs += "htmbugs j="+j+" divid="+divid;
				htmbugs += " -== div_divid="+div_divid;
				htmbugs += " element="+element;
				htmbugs += " =- -=";
				htmbugs += " style_d="+style_d+"";
				htmbugs += " style_v="+style_v+"";
				htmbugs += "====================\n";



//				alertmsg("BUGS_2520 divid="+divid+" element="+element );
//				if( div_divid == element ) {
				if( divid == element ) {
//					alertmsg("BUGS_2540 div_divid="+div_divid+" element="+element );
					if( document.getElementById(div_divid)) {
						style_d = document.getElementById(div_divid).style.display;
						}

					if( document.getElementById(div_divid)) {
//						alert( "BUGS_900 div_div="+div_div+" style_d="+style_d );
						if( document.getElementById(div_divid).style.display == "none" ) {
							alert( "BUGS_901 div_div="+div_div+" style_d="+style_d );
							htmout += '<img src="/imgs/btn/koeyew_'+divid+'.png" height=50 onclick="script_hideshow(\''+div_divid+'\');return false;" alt="btn_'+divid+'_hide">';
							htmbugs += "BUGS_161 _DIV_DIVID-NONE div_divid="+div_divid+" element="+element+" style_d="+style_d+" style_v="+style_v;
							document.getElementById(div_divid).style.display="inline";
//							document.getElementById(div_divid_w).style.display="inline";
//							document.getElementById(div_divid_m).style.display="inline";
//							document.getElementById(div_divid_b).style.display="inline";
							}
						else {
							htmout += '<img src="/imgs/btn/koeyeb_'+divid+'.png" height=50 onclick="script_hideshow(\''+div_divid+'\');return false;" alt="btn_'+divid+'_hide">';
							htmbugs += "BUGS_162 DIV_DIVID-INLINE div_divid="+div_divid+" element="+element+" style_d="+style_d+" style_v="+style_v;
							document.getElementById(div_divid).style.display="none";
//							document.getElementById(div_divid_w).style.display="none";
//							document.getElementById(div_divid_m).style.display="none";
//							document.getElementById(div_divid_b).style.display="none";
							}
						}
					}


				if( div_divid != element ) {
					if( document.getElementById(div_divid).style.display == "none" ) {
						htmout += '<img src="/imgs/btn/koeyeb_'+divid+'.png" height=50 onclick="script_hideshow(\''+div_divid+'\');return false;" alt="btn_'+divid+'">';
//						htmbugs += "BUGS_921 div_divid_none div_divid="+div_divid+" element="+element+" style_d="+style_d+" style_v="+style_v;
						}
					else {
						htmout += '<img src="/imgs/btn/koeyew_'+divid+'.png" height=50 onclick="script_hideshow(\''+div_divid+'\');return false;" alt="btn_'+divid+'_hide">';
						htmbugs += "BUGS_922 div_divid_inline div_divid="+div_divid+" element="+element+" style_d="+style_d+" style_v="+style_v;
						}
					}
				}  
			htmbugs += "	</pre>";
			htmbugs += "	</div>";			

			alertmsg( "BUGS_2590 htmout="+htmbugs );
			document.getElementById("div_buttons_hideshow").innerHTML = htmout;
			document.getElementById("div_htmbugs").innerHTML = htmbugs;
//			document.getElementById("div_buttons_hideshow_w").innerHTML = htmout;
//			document.getElementById("div_buttons_hideshow_m").innerHTML = htmout;
//			document.getElementById("div_buttons_hideshow_b").innerHTML = htmout;
			document.getElementById("div_htmbugs").innerHTML = htmbugs;
			}
 		</script>
	<script id="script_alertmsg1">
		function alertmsg1(msg) {
//			alert( "BUGS_2321 alertmsg1 msg="+msg );
			}
		</script>
	<script id="script_alertmsg" >
		function alertmsg(msg) {
//			alert( "BUGS_2320 alertmsg="+msg );
			if( document.getElementById('div_msg')) {
				document.getElementById('div_msg').innerHTML = msg+"<hr color=white>";
				}

//			document.getElementById('div_log').innerHTML = msg;
//			document.getElemetById('div_log').insertAdjacentHTML('afterbegin', msg);
//			document.getElemetById('div_log').insertAdjacentHTML('beforebegin', msg);
//			document.getElemetById('div_log').insertAdjacentHTML('beforeend', msg);
//			if( document.getElementById('div_log_m')) {
//				document.getElementById('div_log_m').insertAdjacentHTML("beforeend", msg+"<br>" );
//				}
			if( document.getElementById('div_log')) {
				document.getElementById('div_log').insertAdjacentHTML("beforeend", msg+"<br>" );
				}
//			alert( "BUGS_2340 alertmsg="+msg );
			return("");
			}
		</script>



	<script id="script_dttm_bugs" >
		function dttm_bugs(args) {
			alert( "BUGS_1500 args="+args );
//			var formatTime = function(time, format) {
//				alert( "BUG1_1500 args="+args );
//				time = typeof time == 'number' ? new Date(time) : time;
//				format = format || 'yyyy-mm-dd hh:MM:ss';
//				var year = time.getFullYear();
//				var month = time.getMonth() + 1;
//				var date = time.getDate();
//				var hours = time.getHours();
//				var minutes = time.getMinutes();
//				var seconds = time.getSeconds();
//				var add0 = function(t){ return t < 10 ? '0' + t : t }
//				alert( "BUGS_1499" );
//				var replaceMent = {
//					'yyyy': year,
//					'mm': add0(month),
//					'm': month,
//					'dd': add0(date),
//					'd': date,
//					'hh': add0(hours),
//					'h': hours,
//					'MM': add0(minutes),
//					'M': minutes,
//					'ss': add0(seconds),
//					's': seconds
//					}
//				alert( "BUGS_1510 format="+format );
//				for( var k in replaceMent ){
//					format = format.replace(k, replaceMent[k]);
//					}
//				}
//			var dt = format;
//			alert( "BUGS_1515 dt="+dt );
//			return(dt);
			}
		</script>		



	<script id="script_dttm" >
		function dttm(args) {
//			alert( "BUGS dttm args="+args );
//			alert( "BUGS dttm now="+now );
//			var today = new Date().toISOString().slice(0, 10);

			var now = new Date();
			var yyyy_mm_dd = new Date().toISOString().slice(0, 10);
			var hh_mm_dd = new Date().toISOString().slice(11, 19);
			var dt=yyyy_mm_dd+"_"+hh_mm_dd;

//			const d = new Date('2010-08-05')
//			const d = new Date();
//			const ye = new Intl.DateTimeFormat('en', { year: 'numeric' }).format(d)
//			const mo = new Intl.DateTimeFormat('en', { month: 'short' }).format(d)
//			const da = new Intl.DateTimeFormat('en', { day: '2-digit' }).format(d)
//			var dt = `${da}-${mo}-${ye}`;
//			var d = date.getDate();
//			var m = date.getMonth() + 1; //Month from 0 to 11
//			var y = date.getFullYear();
//			var dt = '' + y + '-' + (m<=9 ? '0' + m : m) + '-' + (d <= 9 ? '0' + d : d);
//			var strArray=['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
//			var mth = strArray[date.getMonth()];
//			alert( "BUGS_1543 dt="+dt );
//			console.log("1) "+  new Date().toDateString());
//			console.log("2) "+  new Date().toISOString());
//			console.log("3) "+  new Date().toJSON());
//			alert( "BUGS_1560 dttm dt="+dt );
			return( dt );
			}
		</script>

	<script id="script_postturtle_monkeytrap" >


		function postturtle_monkeytrap(args) {
//			alert( "BUGS_postturtle_monkeytrap args="+args );


var img_monkeytraps = `
/imgs/postturtle_moneytrap/monkeytrap1.png
/imgs/postturtle_moneytrap/monkeytrap2.jpg
/imgs/postturtle_moneytrap/monkeytrap3.jpg
/imgs/postturtle_moneytrap/monkeytrap10.jpg
/imgs/postturtle_moneytrap/monkeytrap11.jpg
/imgs/postturtle_moneytrap/monkeytrap12.jpg
/imgs/postturtle_moneytrap/monkeytrap13.jpg
/imgs/postturtle_moneytrap/monkeytrap14.jpg
/imgs/postturtle_moneytrap/monkeytrap17.jpg
/imgs/postturtle_moneytrap/monkeytrap18.jpg
/imgs/postturtle_moneytrap/monkeytrap20.jpg
/imgs/postturtle_moneytrap/monkeytrap21.png
/imgs/postturtle_moneytrap/monkeytrap22.png
/imgs/postturtle_moneytrap/monkeytrap24.jpg
/imgs/postturtle_moneytrap/monkeytrap28.jpg
/imgs/postturtle_moneytrap/monkeytrap29.jpg
/imgs/postturtle_moneytrap/monkeytrap30.jpg
/imgs/postturtle_moneytrap/monkeytrap31.jpg
/imgs/postturtle_moneytrap/monkeytrap34.png
/imgs/postturtle_moneytrap/monkeytrap36.jpg
/imgs/postturtle_moneytrap/monkeytrap37.jpg
/imgs/postturtle_moneytrap/monkeytrap37.png
/imgs/postturtle_moneytrap/monkeytrap4.png
/imgs/postturtle_moneytrap/monkeytrap5.jpg
/imgs/postturtle_moneytrap/monkeytrap54.jpg
/imgs/postturtle_moneytrap/monkeytrap6.jpg
/imgs/postturtle_moneytrap/monkeytrap7.png
/imgs/postturtle_moneytrap/monkeytrap8.jpg
/imgs/postturtle_moneytrap/monkeytrap9.jpg
`;

var img_postturtles = `
/imgs/postturtle_moneytrap/postturtl10.jpg
/imgs/postturtle_moneytrap/postturtl11.jpg
/imgs/postturtle_moneytrap/postturtl12.jpg
/imgs/postturtle_moneytrap/postturtl13.jpg
/imgs/postturtle_moneytrap/postturtl14.jpg
/imgs/postturtle_moneytrap/postturtl15.png
/imgs/postturtle_moneytrap/postturtl16.jpg
/imgs/postturtle_moneytrap/postturtl17.gif
/imgs/postturtle_moneytrap/postturtl18.jpg
/imgs/postturtle_moneytrap/postturtl2.jpg
/imgs/postturtle_moneytrap/postturtl20.jpg
/imgs/postturtle_moneytrap/postturtl21.jpg
/imgs/postturtle_moneytrap/postturtl22.jpg
/imgs/postturtle_moneytrap/postturtl23.jpg
/imgs/postturtle_moneytrap/postturtl24.jpg
/imgs/postturtle_moneytrap/postturtl25.png
/imgs/postturtle_moneytrap/postturtl26.gif
/imgs/postturtle_moneytrap/postturtl27.jpg
/imgs/postturtle_moneytrap/postturtl3.jpg
/imgs/postturtle_moneytrap/postturtl31.png
/imgs/postturtle_moneytrap/postturtl4.jpg
/imgs/postturtle_moneytrap/postturtl5.jpg
/imgs/postturtle_moneytrap/postturtl6.jpg
/imgs/postturtle_moneytrap/postturtl7.jpg
/imgs/postturtle_moneytrap/postturtl8.jpg
/imgs/postturtle_moneytrap/postturtl9.jpg
/imgs/postturtle_moneytrap/postturtle_caption.jpg
/imgs/postturtle_moneytrap/rose.jpg
# /imgs/postturtle_moneytrap/postturtl33.jpg
`;

var img_floods = `
/imgs/postturtle_moneytrap//floop_rooftop.jpg
/imgs/postturtle_moneytrap//floop_rooftop1.jpg
/imgs/postturtle_moneytrap//floop_rooftop11.jpg
/imgs/postturtle_moneytrap//floop_rooftop12.jpg
/imgs/postturtle_moneytrap//floop_rooftop13.jpg
/imgs/postturtle_moneytrap//floop_rooftop14.jpg
/imgs/postturtle_moneytrap//floop_rooftop15.jpg
/imgs/postturtle_moneytrap//floop_rooftop2.jpg
/imgs/postturtle_moneytrap//floop_rooftop20.jpg
/imgs/postturtle_moneytrap//floop_rooftop21.jpg
/imgs/postturtle_moneytrap//floop_rooftop3.jpg
/imgs/postturtle_moneytrap//floop_rooftop5.jpg
/imgs/postturtle_moneytrap//floop_rooftop6.jpg
/imgs/postturtle_moneytrap//floop_rooftop7.jpg
/imgs/postturtle_moneytrap//floop_rooftop8.jpg
/imgs/postturtle_moneytrap//floop_rooftop9.jpg
`;



//			alert( "BUGS_4181 img_postturtles="+img_postturtles );
//			alert( "BUGS_4182 img_monkeytraps="+img_monkeytraps );

//	<img id="img_postturtle" src="/imgs/postturtle_moneytrap/postturtle_caption.jpg" onclick="window.open('/?postturtle');return false;" height=200 border=0 draggable="true">
//	<img id="img_monkeytrap" src="/imgs/postturtle_moneytrap/monkeytrap10.jpg" onclick="window.open('/?monkeytrap');return false;" height=200 border=0 draggable="true">
//	<img id="img_flood" src="/imgs/postturtle_moneytrap/floop1.jpg" onclick="window.open('/?flood');return false;" height=200 border=0 draggable="true">

			var turtle=0; var turtle_max=0;
			var monkey=0; var monkey_max=0;
			var flood=0; var flood_max=0;
			
			var turtle_max = img_postturtles.split("\n").length;
			var monkey_max = img_monkeytraps.split("\n").length;
			var flood_max = img_floods.split("\n").length;
			turtle = random_int(turtle_max,0);
			monkey = random_int(monkey_max,0);
			flood = random_int(flood_max,0);
			var img_postturtle = img_postturtles.split("\n")[turtle];
			var img_monkeytrap = img_monkeytraps.split("\n")[monkey];
			var img_flood = img_floods.split("\n")[flood];

			if( filecheck(img_postturtle)) {
				if( document.getElementById("img_postturtle")) {
					document.getElementById("img_postturtle").src=img_postturtle;
					}
				}
			if( filecheck(img_monkeytrap)) {
				if( document.getElementById("img_monkeytrap")) {
					document.getElementById("img_monkeytrap").src=img_monkeytrap;
					}
				}
			if( filecheck(img_flood)) {
				if( document.getElementById("img_flood")) {
					document.getElementById("img_flood").src=img_flood;
					}
				}
			}
		</script>
	<script>
		function isOdd(num) { return num % 2;}
		function oddOrEven(x) {return ( x & 1 ) ? "odd" : "even";}
//		var isOdd = function(x) { return x & 1; };
//		var isEven  = function(x) { return !( x & 1 ); };
		</script>
	<script id="script_kolists">
//		alert( "BUGS_10" );
		var kolists = [];
		kolists['ids'] = `id0 id1 id2 id3`;
//		alert( "BUGS_11 kolists_ids="+kolists['ids'] );
		</script>

	<script id="script_random_int">
               function random_int(max,min) {
                        min = Math.ceil(min);
                        max = Math.floor(max);
                        return Math.floor(Math.random() * (max - min + 1)) + min;
                        }
		</script>

	<script id="script_bugs">
		function bugs(args) {
			alert( "BUGS_8900 args="+args );
			return(args);
			}
		</script>


	<script id="script_keine">
              function keine(i) {
//			alert( "BUGS_8980 keine i="+i );
			j=0; o=0;
			is=i.toString().split("");
			islen=is.length;
//			alert( "BUGS_8995 keine j="+j+" islen="+islen+" is="+is );
			for( j=0; j<islen; j++ ) {
				o=o+parseInt(is[j]);
				if( o>9 ) { 
//					alert( "BUGS_8996 TOBIG j="+j+" i="+i+" o="+o );
					o=o-9; 
//					alert( "BUGS_8997 tobig j="+j+" i="+i+" o="+o );
					}
				}
//			alert( "BUGS_9000 keine j="+j+" i="+i+" o="+o );
			return(o);
			}
		</script>

	<script id="script_grid_toggle">
		function grid_toggle(args) {
//			alert("BUGS_200 grid args="+args );

			div_divid="div_grid";
			if( document.getElementById('div_grid')) {
				if( document.getElementById('div_grid').style.display == "inline" ) {
					document.getElementById('div_grid').style.display="none";
					if( document.getElementById('img_grid_toggle')) {
						document.getElementById('img_grid_toggle').src="/imgs/btn/btn_keyhole_us1.png";
						}
					if( document.getElementById('img_grid_keys')) {
						document.getElementById('img_grid_keys').src="/imgs/btn/btn_keys1.png";
						}
					}
				else{
					document.getElementById('div_grid').style.display="inline";
					if( document.getElementById('img_grid_toggle')) {
						document.getElementById('img_grid_toggle').src="/imgs/btn/btn_keyhole2heaven.png";
						}
//					if( document.getElementById('img_grid_keys')) {
//						document.getElementById('img_grid_keys').src="/imgs/btn/btn_keys2.png";
//						}
//					return('');
					}
				}



			return(args);
			}
		</script>

	<script id="script_grid">
		function grid(args) {
//			alert("BUGS_200 grid args="+args );
//			var ctx = document.getElementById('canvas_table_top').getContext('2d');
			if( document.getElementById('img_grid_keys')) {
				document.getElementById('img_grid_keys').src="/imgs/btn/btn_keys_string1.png";
				}

			if(args=="") {
				}

			tokens=args;
			k9s=tokens;
			j=0; k=0;
			if( args == '' ) {
				tokens = '';
				tokens += '-';
				for( k=1; k<11; k++ ) {
//					token = random_int(99999999,0);
					token = random_int(999999,100000);
					k9=token;
//					alert("BUGS_9010 grid j="+j+" k="+k+" token="+token+" k9="+k9 );
					k9=keine(token);
//					alert("BUGS_9020 grid j="+j+" k="+k+" token="+token+" k9="+k9 );
					token_str = token.toString();
					tokens += token.toString(); tokens += '-';
//					tokens += token_str; tokens += '-';
					}
//				tokens += '-';
				}
		k9s=tokens;
	
		var tokes = tokens.split(/-/);
		tokes_len = tokes.length;
		head=0; tail=tokes_len-1;

		if(( tokes[head] != "" ) && ( tokes[tail] != "" )) {
			k9head=keine(tokes[head]);
			status=0;
			for( j=1; j<tail; j++ ) {
				if( tokes[tail] == tokes[j] ) {
					if( j == k9head ) { status=1; }				
					break;
					}
				}
			if( status == 1 ) {
				htmout  = '';
				htmout += '<img src="/imgs/btn/btn_key_happiness.png" ';
				htmout += '	onclick="window.open(\'/imgs/btn/btn_key_happiness.png\');return false;"';
				htmout += '	height=400 border=0>';
				}
			else {
				htmout  = '';
				htmout += '<img src="/imgs/btn/btn_keyhole_us.png" ';
				htmout += '	onclick="window.open(\'/imgs/btn/btn_key_happiness.png\');return false;"';
				htmout += '	height=400 border=0>';
				}
			if( document.getElementById('div_grid1')) {
				document.getElementById('div_grid1').innerHTML = htmout;
				}

			return(args);
			}






		grid1 = '';
		grid1 += '<div id="div_grid1" >';
		grid1 += '	<h1>div_grid1</h1>';
		grid1 += '	<h3>'+tokens+'</h3>';
		grid1 += '	<br>';
		grid1 += '	<table id="table_grid">';
//		alert( "BUGS_150 grid1="+grid1+"  tokes="+tokes );
		j=0;
		for(r=1; r<4; r++) {
			grid1 += '<tr>';
			for(c=1; c<4; c++) {
//				alert( "BUGS_150 j="+j+"-"+r+"-"+c+" tokens="+tokens );
				j=j+1;
				grid1 += '<td>';
//				grid1 += j;
				if((tokes[head]=="")&&(tokes[tail]=="")) {
					grid1 += '<img src="/imgs/btn/kob.png" onclick=';
//					grid1 += '	"grid(\''+j+tokens+'\'); return false;" ';
					grid1 += '	"grid(\''+tokes[j]+tokens+'\'); return false;" ';
					grid1 += '	height=50 border=0>';
					grid1 += '<br>';
//					grid1 += tokes[j];
//					grid1 += '<br>';
//					grid1 += keine(tokes[j]);
//					alert( "BUGS_151 j="+j+"-"+r+"-"+c+" tokens="+tokens );
					}

				if((tokes[head]!="")&&(tokes[tail]=="")) {
//					if( tokes[head] == j ) {
					if( tokes[head] == tokes[j] ) {
						grid1 += '<img src="/imgs/btn/kow.png" ';
//						grid1 += '	onclick="grid(\''+tokens+j+'\'); return false;" ';
						grid1 += '	onclick="grid(\''+tokens+tokes[j]+'\'); return false;" ';
						grid1 += '	height=50 border=0>';
						grid1 += '<br>';
//						grid1 += tokes[j];
//						grid1 += '<br>';
//						grid1 += keine(tokes[j]);
						}
					else {
						grid1 += '<img src="/imgs/btn/kob.png" ';
						grid1 += '	onclick="grid(\''+tokens+tokes[j]+'\'); return false;" ';
						grid1 += '	height=50 border=0>';
						grid1 += '<br>';
//						grid1 += tokes[j];
//						grid1 += '<br>';
//						grid1 += keine(tokes[j]);
						}
//					alert( "BUGS_152 j="+j+"-"+r+"-"+c+" tokens="+tokens );
					}
				if((tokes[head]!="")&&(tokes[tail]!="")) {
//					if( tokes[head] == keine(tokes[tokes[tail]]) ) {
//					if( tokes[ tokes[head]] == keine(tokes[tokes[tail]]) ) {
					if( tokes[ tokes[head]] == tokes[tokes[tail]] ) {
						grid1 += '<img src="/imgs/btn/btn_key_happiness.png" ';
						grid1 += '	onclick="grid(\''+tokens+'\'); return false;" ';
						grid1 += '	height=50 border=0>';
						grid1 += '<br>';
						grid1 += tokes[head]+'='+tokes[tail]+'<br>';
//						grid1 += tokes[j]+<br>;
//						grid1 += '<br>';
//						grid1 += keine(tokes[tokes[tail]]);
						}
					else {
						grid1 += '<img src="/imgs/btn/kob.png" ';
						grid1 += '	onclick="grid(\''+tokens+'\'); return false;" ';
						grid1 += '	height=50 border=0>';
						grid1 += '<br>';
						grid1 += tokes[j];
//						grid1 += '<br>';
//						grid1 += keine(tokes[j]);
						}

//					alert( "BUGS_153 j="+j+"-"+r+"-"+c+" tokens="+tokens );
					}






				grid1 += '<br>'+tokes[j];
//				grid1 += '<br>'+keine(tokes[j]);
				grid1 += '<br>';
				grid1 += '	</td>';

//				grid1 += '-'+k9;
//				grid1 += '-'+keine(tokes[j]);
//				alert( "BUGS_65 j="+j+" toke="+tokes[j] );
//				grid1 += 	tokes[j].toString();
				}
			grid1 += '	</tr>';	
			}
		grid1 += '	</table>';
		grid1 += '	</div>';

//		alert( "BUGS_111 grid1="+grid1 );

		if( document.getElementById('div_grid')) {
			document.getElementById('div_grid').innerHTML=grid1;
			}
//		alert( "BUGS_71 grid1="+grid1 );

		return(args);


			htmout = '';
			htmout += '<div id="div_tokens">';
			htmout += '<h1>div_tokens</h1>';
			htmout += '<br>';
			htmout += '	</div>';	
			if( document.getElementById('div_tokens')) {
				document.getElementById('div_tokens').innerHTML=tokens;
				}


			htmout += '<div id="div_grid">';
			htmout += '<h1>div_grid</h1>';

			htmout += '<img src="/imgs/btn/kob.png" ';
			htmout += '	onclick="grid(\'grid-1\');return false;" ';
			htmout += '	height=50 border=0>';
			htmout += '<img src="/imgs/btn/kob.png" ';
			htmout += '	onclick="grid(\'grid-2\');return false;" ';
			htmout += '	height=50 border=0>';
			htmout += '<img src="/imgs/btn/kob.png" ';
			htmout += '	onclick="grid(\'grid-3\');return false;" ';
			htmout += '	height=50 border=0>';
			htmout += '<br>';
			htmout += '<img src="/imgs/btn/kob.png" ';
			htmout += '	onclick="grid(\'grid-4\');return false;" ';
			htmout += '	height=50 border=0>';
			htmout += '<img src="/imgs/btn/kob.png" ';
			htmout += '	onclick="grid(\'grid-5\');return false;" ';
			htmout += '	height=50 border=0>';
			htmout += '<img src="/imgs/btn/kob.png" ';
			htmout += '	onclick="grid(\'grid-6\');return false;" ';
			htmout += '	height=50 border=0>';
			htmout += '<br>';
			htmout += '<img src="/imgs/btn/kob.png" ';
			htmout += '	onclick="grid(\'grid-7\');return false;" ';
			htmout += '	height=50 border=0>';
			htmout += '<img src="/imgs/btn/kob.png" ';
			htmout += '	onclick="grid(\'grid-8\');return false;" ';
			htmout += '	height=50 border=0>';
			htmout += '<img src="/imgs/btn/kob.png" ';
			htmout += '	onclick="grid(\'grid-9\');return false;" ';
			htmout += '	height=50 border=0>';
			htmout += '<br><br><br><br>';
			htmout += '<hr color=goldenrod';


//			htmout += '<table>';
//
//			j=0;
//			for(r=0; r<3; r++ ) {
//				htmout += '	<tr>';
//				for( c=0; c<3; c++ ) {
//					rand=random_int(99999999,0);
////					alert( "BUGS_202 j="+j+"  rand="+rand );
//					kolists[j] = rand;
//					htmout += '	<td>';
//					htmout += '<img src="/imgs/btn/kob.png"';
//					htmout += '	alt="/imgs/btn/kob.png"';
//					htmout += '	onclick="grid(\''j+'|'+kolists[j]+'\');return false;" ';
//					htmout += '	height=50 border=0>';
//					htmout += '	'+kolists[j];
//					htmout += '		</td>';
//					}
//				htmout += '		</tr>';
//				}
//			htmout += '	</table>';
//			htmout += '	</div>';
//
//			htmout="<h1>BUGS_HTML</h1>";	
//			alert("BUGS_201 grid htmout="+htmout );
			if( document.getElementById('div_grid')) {
				document.getElementById('div_grid').innerHTML=htmout;
				}
			return(args);
			}
		</script>




	<script id="script_grid_old">
		function grid_old(args) {
//			alert("BUGS_200 grid args="+args );
//			var ctx = document.getElementById('canvas_table_top').getContext('2d');
				if( document.getElementById('img_grid_keys')) {
					document.getElementById('img_grid_keys').src="/imgs/btn/btn_keys_string1.png";
					}

			if(args=="") {
				}

			tokens=args;
			k9s=tokens;
			j=0; k=0;
			if( args == '' ) {
				tokens = '';
				tokens += '-';
				for( k=1; k<19; k++ ) {
					token = random_int(9999,0);
					k9=token;
//					alert("BUGS_9010 grid j="+j+" k="+k+" token="+token+" k9="+k9 );
					k9=keine(token);
//					alert("BUGS_9020 grid j="+j+" k="+k+" token="+token+" k9="+k9 );
					token_str = token.toString();
					tokens += token.toString(); tokens += '-';
//					tokens += token_str; tokens += '-';
					}
				tokens += '-';
				}
		k9s=tokens;
	
		var tokes = tokens.split(/-/);
		tokes_len = tokes.length;
		head=0; tail=tokes_len-1;

		grid1 = '';
		grid1 += '<div id="div_grid1" >';
		grid1 += '	<h1>div_grid1</h1>';
		grid1 += '	<br>';
		grid1 += '	<table id="table_grid">';
//		alert( "BUGS_80 grid1="+grid1+"  tokes="+tokes );
		j=0;
		for(r=1; r<4; r++) {
			grid1 += '<tr>';
			for(c=1; c<4; c++) {
//				alert( "BUGS_9050 j="+j+"-"+r+"-"+c );
				j=j+1;
				grid1 += '<td>';
				grid1 += j;

//				if( tokes[0] == "0000" ) {
//				if( /-/.tokes[0] ) {
				if( tokes[head] == "" ) {
					grid1 += '<img src="/imgs/btn/kob.png" ';
					}
				else {
					if(tokes[tail] == "" ) {
						if( tokes[head] == j ) {
							grid1 += '<img src="/imgs/btn/kow.png" ';
							}
						else {
							grid1 += '<img src="/imgs/btn/kob.png" ';
							}
						}
					else {
						if( tokes[tail] == keine(tokes[head])  ) {
							grid1 += '<img src="/imgs/btn/kow.png" ';
							}
						else {
							grid1 += '<img src="/imgs/btn/kob.png" ';
							}

						}
					}

//				k9s[j] = k0s(tokes[j]);
				grid1 += '	onclick="grid(\''+j+'-'+tokens+'\'); return false;" ';
//				if( tokes[tail] == "" ) {	
//					grid1 += '	onclick="grid(\''+j+'-'+tokens+'\'); return false;" ';
//					}
//				else {
//					grid1 += '	onclick="grid(\''+j+'-'+tokens+'-'+j+'\'); return false;" ';
//					}

				grid1 += '	height=50 border=0 >';
				grid1 += '<br>'+tokes[j];
//				grid1 += '-'+k9;
//				grid1 += '-'+keine(tokes[j]);
				grid1 += '<br>'+k9s[j];
				grid1 += '<br>';
//				alert( "BUGS_65 j="+j+" toke="+tokes[j] );
//				grid1 += 	tokes[j].toString();
				grid1 += '	</td>';
				}
			grid1 += '	</tr>';	
			}
		grid1 += '	</table>';
		grid1 += '	</div>';

//		alert( "BUGS_111 grid1="+grid1 );

		if( document.getElementById('div_grid')) {
			document.getElementById('div_grid').innerHTML=grid1;
			}
//		alert( "BUGS_71 grid1="+grid1 );

		return(args);


			htmout = '';
			htmout += '<div id="div_tokens">';
			htmout += '<h1>div_tokens</h1>';
			htmout += '<br>';
			htmout += '	</div>';	
			if( document.getElementById('div_tokens')) {
				document.getElementById('div_tokens').innerHTML=tokens;
				}


			htmout += '<div id="div_grid">';
			htmout += '<h1>div_grid</h1>';

			htmout += '<img src="/imgs/btn/kob.png" ';
			htmout += '	onclick="grid(\'grid-1\');return false;" ';
			htmout += '	height=50 border=0>';
			htmout += '<img src="/imgs/btn/kob.png" ';
			htmout += '	onclick="grid(\'grid-2\');return false;" ';
			htmout += '	height=50 border=0>';
			htmout += '<img src="/imgs/btn/kob.png" ';
			htmout += '	onclick="grid(\'grid-3\');return false;" ';
			htmout += '	height=50 border=0>';
			htmout += '<br>';
			htmout += '<img src="/imgs/btn/kob.png" ';
			htmout += '	onclick="grid(\'grid-4\');return false;" ';
			htmout += '	height=50 border=0>';
			htmout += '<img src="/imgs/btn/kob.png" ';
			htmout += '	onclick="grid(\'grid-5\');return false;" ';
			htmout += '	height=50 border=0>';
			htmout += '<img src="/imgs/btn/kob.png" ';
			htmout += '	onclick="grid(\'grid-6\');return false;" ';
			htmout += '	height=50 border=0>';
			htmout += '<br>';
			htmout += '<img src="/imgs/btn/kob.png" ';
			htmout += '	onclick="grid(\'grid-7\');return false;" ';
			htmout += '	height=50 border=0>';
			htmout += '<img src="/imgs/btn/kob.png" ';
			htmout += '	onclick="grid(\'grid-8\');return false;" ';
			htmout += '	height=50 border=0>';
			htmout += '<img src="/imgs/btn/kob.png" ';
			htmout += '	onclick="grid(\'grid-9\');return false;" ';
			htmout += '	height=50 border=0>';
			htmout += '<br><br><br><br>';
			htmout += '<hr color=goldenrod';


//			htmout += '<table>';
//
//			j=0;
//			for(r=0; r<3; r++ ) {
//				htmout += '	<tr>';
//				for( c=0; c<3; c++ ) {
//					rand=random_int(99999999,0);
////					alert( "BUGS_202 j="+j+"  rand="+rand );
//					kolists[j] = rand;
//					htmout += '	<td>';
//					htmout += '<img src="/imgs/btn/kob.png"';
//					htmout += '	alt="/imgs/btn/kob.png"';
//					htmout += '	onclick="grid(\''j+'|'+kolists[j]+'\');return false;" ';
//					htmout += '	height=50 border=0>';
//					htmout += '	'+kolists[j];
//					htmout += '		</td>';
//					}
//				htmout += '		</tr>';
//				}
//			htmout += '	</table>';
//			htmout += '	</div>';
//
//			htmout="<h1>BUGS_HTML</h1>";	
//			alert("BUGS_201 grid htmout="+htmout );
			if( document.getElementById('div_grid')) {
				document.getElementById('div_grid').innerHTML=htmout;
				}
			return(args);
			}
		</script>

	<script id="script_startup2">
		function startup2(args) {
			alert("BUGS_100 startup args="+args );
//			grid(args);
//			script_hideshow('allon');
//			script_hideshow('div_pdfs');
			return(args);
			}
		</script>

<script type = "text/javascript">
	function drawgrid() {
		if(document.getElementById('canvas_grid_table_top')) {;
			var canvas = document.getElementById('canvas_grid_table_top');
			}
		if (canvas.getContext) {
			var ctx = canvas.getContext('2d');
               
// Create a pattern
			for (var i = 0;i<7;i++) {
				for (var j = 0;j<7;j++) {   
					ctx.fillStyle = 'rgb(' + Math.floor(255-20.5*i)+ ','+ 
					Math.floor(255 - 42.5*j) + ',255)';
					ctx.fillRect( j*25, i* 25, 55, 55 );
        				}
				}
			} 
		else {
			alert('ALERT_100: unauthorized access logged !!');
			}
		}
	</script>



	</head>


<!-- <body bgcolor=darkslategrey> -->
<!-- <body bgcolor=wheat> -->
<!-- <body bgcolor=#FFFDDA> -->
<body onload="startup(''); return false;" >


<!-- Load an icon library to show a hamburger menu (bars) on small screens -->
<!-- <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"> -->
<!-- Top Navigation Menu -->
		<div class="topnav">
			<a href="#home" class="active">
				<img id="img_topnav_logo" src="/imgs/btn/ok.png" height=50>
				</a>
	
<!-- Navigation links (hidden by default) -->
		<div id="myLinks">
			<div id="div_kogrids_m"></div>
			<canvas id="canvas_m" onclick="window.open('/?canvas_m'); return false;" height=400 witdh=400 draggable="true"></canvas>
			<a href="#news">News</a>
			<a href="#contact">Contact</a>
			<a href="#about">About</a>
			<img src="/fb/jkwii/pages/1.jpg" onclick="window.open('/fb/jkwii');return false;" border=0 height=100>
			<hr color=white>
			<hr color=black>
			<a href="/notes.txt">notes</a>
			<a href="#about">About</a>
			<div id="div_log_m"><h1>div_log_m</h1></div>
			</div>

<!-- "Hamburger menu" / "Bar icon" to toggle the navigation links -->
		<a href="javascript:void(0);" class="icon" onclick="myFunction()">
			<i class="fa fa-bars"></i>
			</a>
		</div>

<!--		<img src="/imgs/btn/koeye_handhither.gif" onclick="startup(''); return false" height=50 border=0 > -->
	<div id="div_kogrids_w" >
		</div>
	<div id="div_buttons_hideshow_w">
		<img src="/imgs/btn/koeye_alloff.png" height=50 onclick="script_hideshow('alloff');return false;" alt="btn_alloff">
		<img src="/imgs/btn/koeye_toggle.png" height=50 onclick="script_hideshow('toggle');return false;" alt="btn_alloff">
		<img src="/imgs/btn/koeye_allon.png" height=50 onclick="script_hideshow('allon');return false;" alt="btn_allon">
		<br>
		<hr color=white>
		<hr color=black>
<!--		<img src="/imgs/btn/koeyew_slots.png" height=50 onclick="script_hideshow('div_slots');return false;" alt="btn_slots"> -->
<!--		<img src="/imgs/btn/koeyew_hl.png" height=50 onclick="script_hideshow('div_hl');return false;" alt="btn_hl"> -->
<!--		<img src="/imgs/btn/koeyew_hllinks.png" height=50 onclick="script_hideshow('div_hllinks');return false;" alt="btn_hllinks"> -->
<!--		<img src="/imgs/btn/koeyew_hltext.png" height=50 onclick="script_hideshow('div_hltext');return false;" alt="btn_hltext"> -->
<!--		<img src="/imgs/btn/koeyew_hlmedia.png" height=50 onclick="script_hideshow('div_hltext');return false;" alt="btn_hlmedia"> -->
<!--		<img src="/imgs/btn/koeyew_games.png" height=50 onclick="script_hideshow('div_games');return false;" alt="btn_games"> -->
<!--		<img src="/imgs/btn/koeyew_av_jtfdc.png" height=50 onclick="script_hideshow('div_av_jtfdc');return false;" alt="btn_av_jtfdc"> -->
<!--		<img src="/imgs/btn/koeyew_av_jtfinc.png" height=50 onclick="script_hideshow('div_av_jtfinc');return false;" alt="btn_av_jtfinc"> -->
<!--		<img src="/imgs/btn/koeyew_av_jtfdcr.png" height=50 onclick="script_hideshow('div_av_jtfdcr');return false;" alt="btn_av_jtfdcr"> -->

		<img src="/imgs/btn/koeyew_av.png" height=50 onclick="script_hideshow('div_av');return false;" alt="btn_av">
		<img src="/imgs/btn/koeyew_bb.png" height=50 onclick="script_hideshow('div_db');return false;" alt="btn_db">
		<img src="/imgs/btn/koeyew_dd.png" height=50 onclick="script_hideshow('div_dd');return false;" alt="btn_dd">
		<img src="/imgs/btn/koeyew_fb.png" height=50 onclick="script_hideshow('div_fb');return false;" alt="btn_fb">
		<img src="/imgs/btn/koeyew_fs.png" height=50 onclick="script_hideshow('div_fs');return false;" alt="btn_fs">
		<img src="/imgs/btn/koeyew_pn.png" height=50 onclick="script_hideshow('div_pn');return false;" alt="btn_pn">
		<img src="/imgs/btn/koeyew_sl.png" height=50 onclick="script_hideshow('div_sl');return false;" alt="btn_sl">
		<img src="/imgs/btn/koeyew_tl.png" height=50 onclick="script_hideshow('div_tl');return false;" alt="btn_tl">
		<img src="/imgs/btn/koeyew_tm.png" height=50 onclick="script_hideshow('div_tm');return false;" alt="btn_tm">
		<img src="/imgs/btn/koeyew_yt.png" height=50 onclick="script_hideshow('div_yt');return false;" alt="btn_yt">
		<img src="/imgs/btn/koeyew_zm.png" height=50 onclick="script_hideshow('div_zm');return false;" alt="btn_zm">
		<br>
		<img src="/imgs/btn/koeyew_jtfdc.png" height=50 onclick="script_hideshow('div_jtfdc');return false;" alt="btn_jtfdc">
		<img src="/imgs/btn/koeyew_jtfinc.png" height=50 onclick="script_hideshow('div_jtfinc');return false;" alt="btn_jtfinc">
		<img src="/imgs/btn/koeyew_jtfdcr.png" height=50 onclick="script_hideshow('div_jtfdcr');return false;" alt="btn_jtfdcr">
		<br>
		<img src="/imgs/btn/koeyew_head.png" height=50 onclick="script_hideshow('div_head');return false;" alt="btn_head">
		<img src="/imgs/btn/koeyew_body.png" height=50 onclick="script_hideshow('div_body');return false;" alt="btn_body">
		<img src="/imgs/btn/koeyew_memes.png" height=50 onclick="script_hideshow('div_memes');return false;" alt="btn_memes">
		<img src="/imgs/btn/koeyew_kov.png" height=50 onclick="script_hideshow('div_kov');return false;" alt="btn_kov">
		<img src="/imgs/btn/koeyew_tail.png" height=50 onclick="script_hideshow('div_tail');return false;" alt="btn_tail">
		</div>



	<div id="div_blob_w" hidden >
		<h3>blobsallad_w</h3>
		<hr color=white>
		<canvas id="canvas_blob_w" width="600" height="400"></canvas><br>
		<hr color=white>

		<img id="img_startstop" src="/imgs/btn/koeye.png" onclick="startstop();return false;" height=30>
<!-- -= start =- -= stop =- -->
		<br>
		<hr color=white>
		<img src="/imgs/btn/koeyeb.png" onclick="blobColl.split();return false;" height=30>
		<img src="/imgs/btn/koeyeb.png" onclick="toggleGravity();return false;" height=30>
		<img src="/imgs/btn/koeyeb.png" onclick="blobColl.join();return false;" height=30>
<!-- -= + =- -= = =- -= - =- -->
		<hr color=white>
		<br>
		<img src="/imgs/btn/koeyeb.png" onclick="blobColl.addForce( new Vector(-50.0,0.0));return false;" height=30>
		<img src="/imgs/btn/koeyeb.png" onclick="blobColl.addForce( new Vector(0.0,-50.0));return false;" height=30>
		<img src="/imgs/btn/koeyeb.png" onclick="blobColl.addForce( new Vector(0.0,50.0));return false;" height=30>
		<img src="/imgs/btn/koeyeb.png" onclick="blobColl.addForce( new Vector(50.0,0.0));return false;" height=30>
<!-- -= l =- -= u =- -= d =- -= r =- -->
		<hr color=whtie>
		</div>


	<hr color=pink>
	<hr color=pink>
	<div id="div_fathersday">
		<h1>happy fathersday 2020</h1>
		<br><br> <br><br> 
		<img src="/imgs/gif/giphy_fathersday/giphy_fathersday01.gif" onclick="window.open('/fb/fathersday');return false;"
			height=400 border=0 draggable="yes" >
		</div>
	<br><br><br<br>
	<hr color=goldenrod>
	<hr color=orange>
	<hr color=yellow>
	<div id="div_holidays">
	<h1>mothersday &nbsp &nbsp &nbsp -= holidays =- &nbsp &nbsp &nbsp fathersday</h1>
	<hr color=goldenrod>
	<br>

	
<!-- imgs/gif/mothersday/giphy_mothersday10...60,80 14_sparkle 43_flower -->

	<img src="/imgs/gif/mothersday/giphy_mothersday20.gif" onclick="mothersday(\'args\');return false;"
			height=150 border=0 draggable="yes" >
	&nbsp &nbsp &nbsp &nbsp
	<img src="/imgs/gif/mothersday/giphy_mothersday22.gif" onclick="window.open('/fb/mothersday');return false;"
			height=150 border=0 draggable="yes" >
	&nbsp &nbsp &nbsp &nbsp
	&nbsp &nbsp &nbsp &nbsp
<!-- imgs/gif/giphy_fathersday/giphy_fatersday03.gif ..46.gif 10 13 31 -->
	<img src="/imgs/gif/giphy_fathersday/giphy_fathersday10.gif" onclick="fathersday(\'args\');return false;"
		return false;" height=150 border=0>
	&nbsp &nbsp &nbsp &nbsp
	<img src="/imgs/gif/giphy_fathersday/giphy_fathersday31.gif" onclick="window.open('/fb/fathersday');return false;"
		return false;" height=150 border=0>
	<br>
	<hr color=yellow>
	<hr color=goldenrod>	
	<hr color=pink>
	<br>
<!-- giphy_ann13.gif 18.gif 21.gif _06.gif -->
	<h1>anniversary  &nbsp &nbsp &nbsp -= holidays =- &nbsp &nbsp &nbsp reindependenceday</h1>
	<img src="/imgs/gif/giphy_anniversary/giphy_ann21.gif" alt="anniversary"
		onclick="annivarsary('args'); return false;" height=150 border=0>
	&nbsp &nbsp &nbsp &nbsp
	<img src="/imgs/gif/giphy_reindependenceday/giphy_reindependenseday_03.gif" alt="reindependenceday"
		onclick="reindependenceday('args'); return false;" height=150 border=0>
		</div>
	<br>
	<hr color=yellow>
	<hr color=orange>
	<hr color=goldenrod>

	<div id="div_anniversary" hidden>
		<h1>happy 43 annivarsary 2020</h1>
		<img src="/imgs/gif/anniversary/giphy_anniversary.gif" onclick="window.open('/fb/mothersday');return false;"
			height=400 border=0 draggable="yes" >
		</div>
	<div id="div_reindependenceday" hidden>
		<h1>happy reindependenceday 2020</h1>
		<img src="/imgs/gif/reindependenceday/giphy_reindependenceday.gif" onclick="window.open('/fb/mothersday');return false;"
			height=400 border=0 draggable="yes" >
		</div>

	<div id="div_mothersday" hidden>
		<h1>happy mothersday 2020</h1>
		<img src="/imgs/gif/mothersday/giphy_mothersday40.gif" onclick="window.open('/fb/mothersday');return false;"
			height=400 border=0 draggable="yes" >
		</div>


	<hr color=pink>
	<hr color=pink>
	<br><br><br><br>

	<hr color=white>
	<hr color=linen>
	<hr color=black>
	<div id="div_postturtle_monkeytrap">
<!--
		<img id="img_postturtle" src="/imgs/postturtle_moneytrap/postturtl2.jpg" onclick="window.open('/?postturtle');return false;" height=200 border=0 draggable="true">
		<img id="img_monkeytrap" src="/imgs/postturtle_moneytrap/monkeytrap2.jpg" onclick="window.open('/?postturtle');return false;" height=200 border=0 draggable="true">
		<img id="img_flood" src="/imgs/postturtle_moneytrap/floop_rooftop2.jpg" onclick="window.open('/?postturtle');return false;" height=200 border=0 draggable="true">
		-->
		<img id="img_postturtle" src="/imgs/postturtle_moneytrap/postturtl2.jpg" onclick="window.open('/jtfdcr.jpg');return false;" height=200 border=0 draggable="true">
		<img id="img_monkeytrap" src="/imgs/postturtle_moneytrap/monkeytrap2.jpg" onclick="window.open('/kb/kt/funny_monkeys_vs_dogs_cats_compilation_2017.mp4');return false;" height=200 border=0 draggable="true">
		<img id="img_flood" src="/imgs/postturtle_moneytrap/floop_rooftop2.jpg" onclick="window.open('/fb/law/pages/zn/zn_10.jpg');return false;" height=200 border=0 draggable="true">


		</div>
	<br>
	<hr color=black>
	<hr color=red>
	<hr color=white>
	<hr color=blue>
	<hr color=white>

	<hr color=slategray>
	<hr color=darkslategray>
	<hr color=black>



	<div id="div_tclaw" >


		<hr color=red>
		<hr color=white>
		<hr color=blue>


		<br><br><br><br>
		<br><br><br><br>
		<br><br><br><br>
		<br><br><br><br>
		<hr color=red>
		<hr color=white>
		<hr color=blue>
		<h1>iperms</h1>
		<hr color=blue>
		<hr color=white>
		<hr color=red>


		<img src="/fb/iperms/pages/1.jpg" alt="fb/law/tc"
			onclick="window.open('iperms.com');return false;"
			height=200 border=0>
		&nbsp &nbsp &nbsp &nbsp
		<img src="/imgs/btn/ko_center2.png" alt="ko_center"
			onclick="window.open('/ko_center/ko_center.php');return false;"
			height=200 border=0>
		&nbsp &nbsp &nbsp &nbsp
		<img src="/imgs/btn/ko_center_tools.png" alt="ko_center_tools"
			onclick="window.open('/ko_center/ko_center.php?q=tools');return false;"
			height=200 border=0>
		&nbsp &nbsp &nbsp &nbsp
		<img src="/imgs/btn/ko_center_zm.png" alt="ko_center_zm"
			onclick="window.open('/ko_center/zm5/hrc_d.htm');return false;"
			height=200 border=0>
		&nbsp &nbsp &nbsp &nbsp
		<img src="/fb/bh/pages/1.jpg" alt="fb/bluehost"
			onclick="window.open('/fb/bh/');return false;"
			height=100 border=0>
		<br><br><br><br>
		<hr color=darkslategray>
<!--
		<img src="/imgs/links/bdo_cle-trouten_floyd.png" alt="bdo_cle-trouten_floyd"
https://bdo.com/out-people/trouten-floyd
https://www.linkedin.com/in/floydtrouten
		&nbsp &nbsp &nbsp &nbsp
	-->


		<br><br><br><br>
		<hr color=darkslategray>
		<img src="/imgs/us/checonsulting.png" alt="che_consulting"
			onclick="window.open('https://checonsulting.com');return false;"
			height=200 border=0>
		&nbsp &nbsp &nbsp &nbsp
		<img src="/imgs/links/missioncontinues.jpg"
			alt="missioncontinues.org"
			onclick="window.open(\'https://missioncontinues.org\'); return false;"
			height=200 border=0>
		&nbsp &nbsp &nbsp &nbsp
		<img src="/fb/focus/pages/1.jpg" alt="fb/focus"
			onclick="window.open('/fb/focus');return false;"
			height=200 border=0>
		&nbsp &nbsp &nbsp &nbsp
		<img src="/fb/konet/pages/1.jpg" alt="fb/law/tc"
			onclick="window.open('konet.org');return false;"
			height=200 border=0>
		<hr color=white>
		<hr color=white>
		<br><br>
		<img id="zm_img_hrc2011" src="/zm/hrc2011/TileGroup0/0-0-0.jpg" onclick="window.open('/zm/zm_hrc2011.html');return false;" height=150 border=0 draggable="true">
		<br><br> <br><br>
		<hr color=blue>
		<hr color=white>
		<hr color=red>
		<h1>accounting</h1>

				<hr color=goldenrod>
		<h1>restructure n accounting</h1>
		<h2>barnes_wendling/ssg/bdo_cle-trouten_floyd bdo_stl-kraner_richard</h2>

		<hr color=red>
		<hr color=white>
		<hr color=blue>
		<hr color=blue>
		<hr color=white>
		<hr color=red>
		<h2>saic / leidos </h2>
		<img src="/imgs/btn/ko_saic.png" alt="ko_saic"
			onclick="window.open('/ko_saic/ko_saic.php');return false;"
			height=300 border=0>
<br>
<h2>kraner_richard bdo-stl</h2>
		<img src="/imgs/links/bdo_stl-kraner_richard.png" alt="bdo_stl-kraner_richard"
			onclick="window.open('https://www.bdo.com/our-people/richard-kraner');return false;"
			height=100 border=0>
		<br>
<h2>trouten_floyd barnes_wendling/bdo_cle/ssg_cle</h2>
		<img src="/imgs/links/barnes_wendling-trouten_floyd.jpg" alt="barnes_wendling-trouten_floyd"
			onclick="window.open('https://www.barneswendling.com/employees/floyd-trouten/');return false;"
			height=200 border=0>
		<br>
		<hr color=linen>
	<h2>thompson coburn IP</h2>
		<img src="/fb/law/tc/kk/pages/1.jpg" alt="fb/law/tc/kk"
			onclick="window.open('/fb/law/tc/kk');return false;"
			height=150 border=0>
		<br>
		<hr color=linen>
	<h2>busey </h2>
		<img src="/imgs/btn/btn_busey" alt="busey_bank"
			onclick="window.open('https://busey.com');return false;"
			height=150 border=0>
		<br>
		<hr color=linen>

	<h2>focus solutions </h2>
		<img src="/fb/focus/pages/1.jpg" alt="focus solutions"
			onclick="window.open('/fb/focus');return false;"
			height=150 border=0>
		<br>
		<hr color=linen>

<h2>sk2saic_alversio_2016 konet_itso_oy4_award_30007_po10093205_rel2</h2>
		<img src="/imgs/btn/btn_pdf1.png" alt="sk2saic_alverson" class="class_btn_pdf"
			onclick="window.open('/pdf/web/viewer.html?file=/fb/emails/pdf/email_saic_sk2alverson.pdf');return false;"
			height=100 border=0>
		<img src="/imgs/btn/btn_pdf.png" alt="konet_itso_oy4_award_e0007_po10093205_rel2" class="class_btn_pdf"
			onclick="window.open('/pdf/web/viewer.html?file=/fb/emails/pdf/konet_itso_oy4_award_e0007_po10093205_rel2.pdf');return false;"
			height=100 border=0>
		<br>
<h2>iperms.com focus checonsulting konet.org</h2>
		<br>
		<img src="/fb/iperms/pages/1.jpg" alt="iperms.com"
			onclick="window.open('iperms.com');return false;"
			height=200 border=0>
		&nbsp &nbsp &nbsp &nbsp
		<img src="/fb/focus/pages/1.jpg" alt="focus"
			onclick="window.open('/fb/focus');return false;"
			height=100 border=0>
		&nbsp &nbsp &nbsp &nbsp
		<img src="/imgs/us/checonsulting.png" alt="che_consulting"
			onclick="window.open('https://checonsulting.com');return false;"
			height=100 border=0>
		&nbsp &nbsp &nbsp &nbsp
		<img src="/fb/konet/pages/1.jpg" alt="konet.org"
			onclick="window.open('konet.org');return false;"
			height=80 border=0>
	<br><br><bt><br>
	<hr color=goldenrod>
	<hr color=goldenrod>

	<div id="div_pdfs">
		<h1>div_pdfs</h1>
		</div>
	<br>
	<hr color=goldenrod>
	<hr color=goldenrod>
	<div id="div_pdfs_jtfdc"><h3>div_pdfs_jtfdc</h3></div>
	<div id="div_pdfs_konet"><h3>div_pdfs_konet</h3></div>
	<div id="div_pdfs_iperms"><h3>div_pdfs_iperms</h3></div>
	<div id="div_pdfs_saic"><h3>div_pdfs_saic</h3></div>
	<div id="div_pdfs_kdar"><h3>div_pdfs_kdar</h3></div>
	<div id="div_pdfs_pastryroad"><h3>div_pdfs_pastryroad</h3></div>
	<div id="div_pdfs_kou"><h3>div_pdfs_kou</h3></div>
	<div id="div_pdfs_trial6"><h3>div_pdfs_trial6</h3></div>
	<div id="div_pdfs_trial7"><h3>div_pdfs_trial7</h3></div>
	<div id="div_pdfs_all"><h3>div_pdfs_all</h3></div>
	<br>
	<hr color=goldenrod>
	<hr color=goldenrod>

	<br><br><br><br>
	<hr color=orange>
	<img src="/imgs/btn/btn_pdfsa1.png" id="img_btn_pdfsa1" alt="pdfs_default"
		onclick="pdfs_show('div_pdfs','');return false;"
		height=200 border=0>
		default
	<br>
	<hr color=goldenrod>
		<br><br><br>


	<img src="/imgs/btn/btn_pdfsa1.png" id="img_btn_pdfsa2" alt="pdfs_iperms"
		onclick="pdfs_show('div_pdfs_iperms','iperms');return false;"
		height=50 border=0>
		iperms
		&nbsp &nbsp &nbsp

	<img src="/imgs/btn/btn_pdfsa1.png" id="img_btn_pdfsa2" alt="pdfs_konet"
		onclick="pdfs_show('div_pdfs_konet','konet');return false;"
		height=50 border=0>
		konet
		&nbsp &nbsp &nbsp
	<img src="/imgs/btn/btn_pdfsa1.png" id="img_btn_pdfsa2" alt="pdfs_saic"
		onclick="pdfs_show('div_pdfs_saic','saic');return false;"
		height=50 border=0>
		saic
		&nbsp &nbsp &nbsp
	<br><br><br><br>

	<img src="/imgs/btn/btn_pdfsa2.png" id="img_btn_pdf1" alt="pdfs_jtfdc"
		onclick="pdfs_show('div_pdfs_jtfdc','jtfdc');return false;"
		height=50 border=0>
		jtfdc
		&nbsp &nbsp &nbsp
	<img src="/imgs/btn/btn_pdfsa1.png" id="img_btn_pdfsa2" alt="pdfs_kdar"
		onclick="pdfs_show('div_pdfs_kdra','kdar');return false;"
		height=50 border=0>
		kdar
		&nbsp &nbsp &nbsp

	<img src="/imgs/btn/btn_pdfsa2.png" id="img_btn_pdf1" alt="pdfs_pastryroad"
		onclick="pdfs_show('div_pdfs_pastryroad','pastryroad');return false;"
		height=50 border=0>
		pastryroad
		&nbsp &nbsp &nbsp
	<img src="/imgs/btn/btn_pdfsa2.png" id="img_btn_pdf1" alt="pdfs_kou"
		onclick="pdfs_show('div_pdfs_kou','kou');return false;"
		height=50 border=0>
		kou
	<br>
	<br>
	<br>
	<hr color=darkslategray>
	<img src="/imgs/btn/btn_pdfsa2.png" id="img_btn_pdf1" alt="pdfs_trial6"
		onclick="pdfs_show('div_pdfs_trial6','trial6');return false;"
		height=100 border=0>
<br>
		<h2>trial6 jkwii_v_jtfinc 202008?? judge heggie  </h2>
<br>
		<h3>hoa roadmaint not done jtf28 - jtf29 - jtf30</h3>
	<br>
	<hr color=darkslategray>
	<img src="/imgs/btn/btn_pdfsa2.png" id="img_btn_pdf1" alt="pdfs_trial7"
		onclick="pdfs_show('div_trial7','trial7');return false;"
		height=100 border=0>
<br>
		<h2>trial7 jkwii_v_byrdbell 20200818_1800 judge concannon</h2>
	<br><br><br><br>
	<hr color=linen>
	<img src="/imgs/btn/btn_pdfsa2.png" id="img_btn_pdfsa1" alt="pdfs_all"
		onclick="pdfs_show('div_pdfs_all','all');return false;"
		height=200 border=0>
		
	<hr color=linen>
	<br>
	<hr color=linen>
	<hr color=linen>
	<hr color=linen>
	

<hr color=red>
<hr color=white>
<hr color=blue>
	<h1>memes: a barr_christmas_story</h1>
		<a href="/kb/memes/a_barr_christmas_story/index.html" class="popover" target=_blank>
			<img src="/kb/memes/a_barr_christmas_story/barr_painting.png" height=300  border=0>
			<span><img src="/kb/memes/a_barr_christmas_story/barrbunny_painting_inset.png" height=300 border=0></span>
			</a>
		&nbsp &nbsp &nbsp &nbsp

		<a href="/kb/memes/a_barr_christmas_story/index.html" class="popover" target=_blank>
<!--
			<img src="imgs//gif/spacers/giphy_spacer_11.gif" width=150 height=10 border=0 >  
			<span><img src="imgs//gif/spacers/giphy_spacer_11.gif" width=150 height=300  border=0></span>
	-->
			<img src="imgs//gif/spacers/giphy_spacer_11.gif" width=150 height=10 border=0 >  
			<span><img src="imgs//gif/spacers/giphy_spacer_11.gif" width=150 height=300  border=0></span>
			</a>
		<a href="/kb/memes/a_barr_christmas_story/index.html" class="popover" target=_blank>
			<img src="/kb/memes/a_barr_christmas_story/barrbunny_painting.png" height=300 border=0 >
			<span><img src="/kb/memes/a_barr_christmas_story/barr_painting_inset.png" height=300 border=0></span>
			</a>
		<br><br><br><br>
		<br><br><br><br>
		<br><br><br><br>
		<br><br><br><br>
		<br><br><br><br>


		<hr color=black>
		<hr color=linen>
		<hr color=black>

<!--
		<img id="zm_takings_all_took" src="/fb/law/jkwiiv_byrdbell/zm/donutvanlaw_takings/TileGroup0/0-0-0.jpg" onclick="window.open('/fb/law/jkwiiv_byrdbell/zm/zm_donutvanlaw_takings.html');return false;" height=100 border=0 draggable="true">
		&nbsp &nbsp &nbsp &nbsp
		<img id="zm_img_jtf2930" src="/fb/law/jkwiiv_byrdbell/zm/jtf2930/TileGroup0/0-0-0.jpg " onclick="window.open('/fb/law/jkwiiv_byrdbell/zm/zm_jtf2930.html');return false;" height=100 border=0 draggable="true">
		&nbsp &nbsp &nbsp &nbsp
	-->
		<br><br><br><br>
		<hr color=linen>
		<img src="/fb/jkwii/pages/1.jpg" alt="who2jail"
			onclick="window.open('/fb/jkwii');return false;"
			height=150 border=0>
		&nbsp &nbsp &nbsp &nbsp 
		<img id="zm_takings_all_took" src="/fb/law/jkwiiv_byrdbell/zm/donutvanlaw_takings/TileGroup0/0-0-0.jpg" onclick="window.open('/fb/law/jkwiiv_byrdbell/zm/zm_donutvanlaw_takings.html');return false;" height=100 border=0 draggable="true">
		&nbsp &nbsp &nbsp &nbsp
		<img id="zm_img_jtf2930" src="/fb/law/jkwiiv_byrdbell/zm/jtf2930/TileGroup0/0-0-0.jpg " onclick="window.open('/fb/law/jkwiiv_byrdbell/zm/zm_jtf2930.html');return false;" height=100 border=0 draggable="true">
		&nbsp &nbsp &nbsp &nbsp
<!--		<img id="img_flood_law" src="/imgs/postturtle_moneytrap/floop_rooftop2.jpg" onclick="window.open('/fb/law/pages/zn/zn_10.jpg');return false;" height=100 border=0 draggable="true"> -->
		<img id="img_flood_law" src="/fb/law/pages/zn/zn_10.jpg" onclick="window.open('/fb/law/pages/zn/zn_10.jpg');return false;" height=100 border=0 draggable="true">
		&nbsp &nbsp &nbsp &nbsp
<!--		<img id="img_postturtle_law" src="/imgs/postturtle_moneytrap/postturtl2.jpg" onclick="window.open('/jtfdcr.jpg');return false;" height=100 border=0 draggable="true"> -->
		<img id="img_postturtle_law" src="/jtfdcr.jpg" onclick="window.open('/jtfdcr.jpg');return false;" height=100 border=0 draggable="true">
		&nbsp &nbsp &nbsp &nbsp

		<img src="/imgs/gif/notes/giphy_notes10.gif" alt="notes"
			onclick="window.open('/txt/notes.txt');return false;"
			height=75 border=0>
		&nbsp &nbsp &nbsp &nbsp
		<img src="/imgs/gif/notes/giphy_notes03.gif" alt="ko_saic"
			onclick="window.open('/txt/jtfdcr_mp4.txt');return false;"
			height=75 border=0>
		&nbsp &nbsp &nbsp &nbsp
		<img src="/fb/jtfdcr/pages/columbia_pw_adminiwii_ko2us.jpg" alt="jtfdc_protection_welcome"
			onclick="window.open('/jtfdc_stalkarounds.html');return false;"
			height=150 border=0>
		&nbsp &nbsp &nbsp &nbsp
<br><br> <br><br>
		<hr color=black>
		<hr color=linen>
		<hr color=black>
	<h1>jtfdc_stalkarounds jtfdc_20190516_0800_byrd_seagrist_dog_n_officers_bell_n_p</h1>
	<h2>adverse possession</h2>
		<img src="/fb/who2jail/pages/1.jpg" alt="who2jail"
			onclick="window.open('/fb/who2jail');return false;"
			height=150 border=0>
		&nbsp &nbsp &nbsp &nbsp 
		<img src="/imgs/btn/byrdbell..png" alt="jtfdc_20190516_0822_byrdbell_mp4"
			onclick="window.open('/byrdbell.mp4');return false;"
			height=150 border=0>
		&nbsp &nbsp 
		<img src="/imgs/btn/byrdbell1.png" alt="jtfdc_20190516_0822_byrdbell_mp4"
			onclick="window.open('/byrdbell1.mp4');return false;"
			height=100 width=100 border=0>
		&nbsp &nbsp 
		<img src="/imgs/btn/byrdbell2.png" alt="jtfdc_20190516_0822_byrdbell_mp4"
			onclick="window.open('/byrdbell2.mp4');return false;"
			height=75 width=75 border=0>
		&nbsp &nbsp 
		<img src="/imgs/btn/byrdbell3.png" alt="jtfdc_20190516_0822_byrdbell_mp4"
			onclick="window.open('/byrdbell3.mp4');return false;"
			height=50 width=50 border=0>
		&nbsp &nbsp &nbsp &nbsp 
		<img src="/fb/law/jkwiiv_byrdbell/pages/1.jpg" alt="jkwiiv_byrdbell"
			onclick="window.open('/fb/law/jkwiiv/byrdbell');return false;"
			height=150 border=0>


		<hr color=black>
		<hr color=linen>
		<hr color=black>

		<img src="/fb/jtfdc/pages/1.jpg" alt="fb/jtfdc"
			onclick="window.open('/fb/jtfdc/');return false;"
			height=200 border=0>
		&nbsp &nbsp &nbsp &nbsp
		<img src="/fb/jtfdcr/pages/1.jpg" alt="fb/jtfdcr"
			onclick="window.open('/fb/jtfdcr');return false;"
			height=200 border=0>
		&nbsp &nbsp &nbsp &nbsp
		<img src="/fb/jtfinc/pages/1.jpg" alt="fb/jtfdcr"
			onclick="window.open('/fb/jtfinc');return false;"
			height=100 border=0>
		&nbsp &nbsp &nbsp &nbsp
		&nbsp &nbsp &nbsp &nbsp
		<img src="/fb/stlc/pages/1.jpg" alt="fb/stlc"
			onclick="window.open('/fb/stlc/');return false;"
			height=200 border=0>
		<br><br> <br><br>
		<hr color=goldenrod>
		<hr color=goldenrod>
		<hr color=goldenrod>
		<img src="/fb/law/sl/pages/1.jpg" alt="fb/law/sl"
			onclick="window.open('/fb/law/sl/');return false;"
			height=200 border=0>
		&nbsp &nbsp &nbsp &nbsp
		<img src="/fb/law/tc/pages/1.jpg" alt="fb/law/tc"
			onclick="window.open('/fb/law/tc/');return false;"
			height=200 border=0>
		&nbsp &nbsp &nbsp &nbsp
		<img src="/fb/law/tc/kk/pages/1.jpg" alt="fb/law/tc/kk"
			onclick="window.open('/fb/law/tc/kk');return false;"
			height=150 border=0>
		&nbsp &nbsp &nbsp &nbsp
		<img src="/fb/law/tc/db/pages/1.jpg" alt="fb/law/tc/db"
			onclick="window.open('/fb/law/tc/db');return false;"
			height=150 border=0>
		&nbsp &nbsp &nbsp &nbsp
		&nbsp &nbsp &nbsp &nbsp
		<img src="/fb/law/law_law501/pages/1.jpg" alt="fb/law/law_law501"
			onclick="window.open('/fb/law/law_law501/');return false;"
			height=150 border=0>
		&nbsp &nbsp &nbsp &nbsp
		<img src="/imgs/links/law_lawson_terry.jpg" alt="law_lawson_terry"
			onclick="window.open('https://www.legaldirectories.com/Lawson-Terry-L-Jr-513853-Atty.aspx');return false;"
			height=100 border=0>
		&nbsp &nbsp &nbsp &nbsp
		<img src="/imgs/us/cohen_alan_w_twitter.png" alt="cohen_alan_w"
			onclick="window.open('https://twitter.com/AlanWCohenEsq');return false;"
			height=100 border=0>
		&nbsp &nbsp &nbsp &nbsp
		<img src="/imgs/btn/btn_law_mccloskey.png" alt="mccloskeylaw"
			onclick="window.open('https://www.mccloskeylaw.com');return false;"
			height=150 border=0>
		&nbsp &nbsp &nbsp &nbsp
		<img src="/imgs/btn/btn_law_kodner_watkins.png" alt="law_kodner_watkins"
			onclick="window.open('https://www.kwklaw.net');return false;"
			height=150 border=0>
		&nbsp &nbsp &nbsp &nbsp
<!--
		<img src="/imgs/links/law_riezmanberger.jpg" alt="riezmanberger.com/"
			onclick="window.open('https://www.riezmanberger.com/');return false;"
			height=100 border=0>
		&nbsp &nbsp &nbsp &nbsp
	-->
		<br>
		<hr color=linen>
		<h1>riezmanberger - tyler_connor - jtfinc v jsk</h1>
		<img src="/imgs/hats/hatclass_white1.png" alt="hatclass_white1"
			onclick="window.open('/imgs/hats/hatclass_white1.png');return false;"
			height=100 border=0>
		&nbsp &nbsp &nbsp &nbsp
		<img src="/imgs/links/law_riezmanberger_connor_tyler.jpg" alt="riezmanberger.com/"
			onclick="window.open('https://www.riezmanberger.com/attorney-p-tyler-connor.html ');return false;"
			height=100 border=0>
		&nbsp &nbsp &nbsp &nbsp
		<img src="/imgs/hats/hatclass_white2.png" alt="hatclass_white2"
			onclick="window.open('/imgs/hats/hatclass_white2.png');return false;"
			height=100 border=0>
		<hr color=linen>
		<br>
		<hr color=darkslategray>
		<h1>castle doctrine law.cornell.edu</h1>
		<h2>byrdbell v jkwii</h2>
		<img src="/imgs/links/wiki_castle_doctrine.jpg" 
			alt="law_cornell_edu_castle_doctrin/"
			onclick="window.open('https://en.wikipedia.org/wiki/Castle_doctrine');return false;"
			height=100 border=0>
		&nbsp &nbsp &nbsp &nbsp
		<img src="/imgs/links/law_cornell_edu_castle_doctrine.jpg" 
			alt="law_cornell_edu_castle_doctrine"
			onclick="window.open('https://www.law.cornell.edu/wex/castle_doctrine');return false;"
			height=100 border=0>

		<br>
		<hr color=linen>
<h2>20200818_1800_trial7_judge_concannon_byrdbell_v_jkwii</h2>
<h3>judge_daniel_brown</h3>
<h3>judge_craig_j_concannon</h3>
<h3>judge_celeste_e_endicott</h3>
		<img src="/fb/jtfdcr/imgs/stlc_municipal_court_judges.jpg" 
			alt="stl_municiple_court_judges"
			onclick="window.open('https://www.stlouisco.com/Law-and-Public-Safety/Municipal-Courts/Judges/JudgeCraigJConcannon'); return false;"
			height=100 border=0>
		&nbsp &nbsp &nbsp &nbsp
		&nbsp &nbsp &nbsp &nbsp
		<img src="/fb/jtfdcr/imgs/judge_concannon_craig_j.jpg" 
			alt="20200818_1800_trial7_honorable_judge_concannon_byrdbell_v_jkwii"
			onclick="window.open('https://www.stlouisco.com/Law-and-Public-Safety/Municipal-Courts/Judges/Judge-Craig-J-Concannon'); return false;"
			height=100 border=0>
		&nbsp &nbsp &nbsp &nbsp

		<img src="/fb/jtfdcr/imgs/law_craigjconcannon_fb.jpg" 
			alt="law_concannon_facebook"
			onclidk="window.open('https://www.facebook.com/LawOfficeOfCraigJConcannon/'); return false;"
			height=100 border=0>
		&nbsp &nbsp &nbsp &nbsp

		<img src="/fb/jtfdcr/imgs/law_craigjconcannon.jpg" 
			alt="law_concannon"
			onclidk="window.open('https://www.facebook.com/LawOfficeOfCraigJConcannon/'); return false;"
			height=100 border=0>
		&nbsp &nbsp &nbsp &nbsp

		<img src="/fb/jtfdcr/imgs/law_craigjconcannon_about.jpg" 
			alt="law_concannon_about"
			onclidk="window.open('https://www.linkedin.com/in/craig-concannon-64aa2119'); return false;"
			height=100 border=0>
		&nbsp &nbsp &nbsp &nbsp

		<img src="/fb/jtfdcr/imgs/law_craigjconcannon_about.jpg" 
			alt="law_concannon_about"
			onclidk="window.open('https://www.linkedin.com/in/craig-concannon-64aa2119'); return false;"
			height=100 border=0>
		&nbsp &nbsp &nbsp &nbsp
		<img src="/fb/jtfdcr/imgs/stlc_20160404_ferguson_journos_judge_discretion.jpg" 
			alt="stlc_20160404_ferguson_journos_judge_discretion"
			onclidk="window.open('https://www.courthousenews.com/arrested-journos-claim-judge-abused-discretion/'); return false;"
			height=100 border=0>
		&nbsp &nbsp &nbsp &nbsp

<br>
<hr color=linen>
		<img src="/fb/law/jkwii_v_byrdbell/pages/1.jpg" 
			alt="law_20200818_1800_trial7_judge_concannon_byrdbell_v_jkwii"
			onclidk="window.open('/fb/law/jkwii_v_byrdbell'); return false;"
			height=100 border=0>
<br>
<hr color=linen>
		<img src="/imgs/links/law_fritzlawstl.jpg" 
			alt="fritzlawstl"
			onclick="window.open('https://fritzlawstl.com');return false;"
			height=100 border=0>
		&nbsp &nbsp &nbsp &nbsp
		<img src="/imgs/links/law_fritzlawstl_john_p_fritz.jpg" 
			alt="law_fritzlawstl_john_p_fritz"
			onclick="window.open('https://fritzlawstl.com/attorneys/john-fritz');return false;"
			height=100 border=0>
		<br>
		<hr color=linen>
		<img src="/imgs/links/law_klar_izsak_stenger.jpg" 
			alt="lawsaintlouis_klar_izsak_stenger"
			onclick="window.open('https://www.lawsaintlouis.com');return false;"
			height=100 border=0>
		&nbsp &nbsp &nbsp &nbsp
		<img src="/imgs/links/law_kis_michael_p_singer_iii.jpg" 
			alt="kis_michael_p_singer_iii/"
			onclick="window.open('https://www.lawsaintlouis.com/michael-p-singer-iii.html');return false;"
			height=100 border=0>
		<br>
		<hr color=linen>
		<img src="/imgs/links/law_bellonlawgroup.jpg" 
			alt="bellon_law_group"
			onclick="window.open('https://www.bellonlawgroup.com');return false;"
			height=100 border=0>
		&nbsp &nbsp &nbsp &nbsp
		<img src="/imgs/links/law_bellonlawgroup_sarah_brown.jpg" 
			alt="bellonlawgroup_susan_brown"
			onclick="window.open('https://www.bellonlawgroup.com/attorney-profiles.html');return false;"
			height=100 border=0>
		<br>
	<hr color=linen>
		<img src="/imgs/links/law_jennifer_alterrieken.jpg" 
			alt="law_jennifer_alter-rieken"
			onclick="window.open('https://jenalterlaw.com');return false;"
			height=100 border=0>
		&nbsp &nbsp &nbsp &nbsp

		<img src="/imgs/links/law_korner.jpg" 
			alt="law_korner"
			onclick="window.open('https://kornerlaw.com');return false;"
			height=100 border=0>
		&nbsp &nbsp &nbsp &nbsp
		<br>
		<img src="/imgs/links/law_dowd_bennett.jpg" 
			alt="law_dowd_bennett"
			onclick="window.open('https://www.dowdbennett.com/attorneys/');return false;"
			height=100 border=0>
		&nbsp &nbsp &nbsp &nbsp
		<img src="/imgs/links/law_dowd_bennett_gabriel_e_gore.jpg" 
			alt="law_dowd_bennett_gabriel_e_gore"
			onclick="window.open('https://www.dowdbennett.com/attorneys/gabriel-gore/');return false;"
			height=100 border=0>
		&nbsp &nbsp &nbsp &nbsp
		<br>

https://www.dowdbennett.com/attorneys/

	<hr color=linen>
	<br>

		<br>
		<hr color=darkslategray>



		<img src="/fb/law/law_keuhlig_alexander/pages/1.jpg"
			alt="/fb/law/law_keuhlig_alexander/pages/1.jpg"
			onclick="window.open('/fb/law/law_keuhlig_alexander/pages/1.jpg');return false;"
			height=200 border=0>

		&nbsp &nbsp &nbsp &nbsp

		<br><br><br><br>

		<hr color=linen>
		<hr color=linen>
		<img src="/fb/law/law_cohen_alan/pages/1.jpg" alt="fb/law/law_cohen_alan"
			onclick="window.open('/fb/law/law_cohen_alan');return false;"
			height=100 border=0>
		&nbsp &nbsp &nbsp &nbsp
		<img src="/fb/law/law_keuhlig_alexander/pages/1.jpg" alt="fb/law/keuhlig_alexander"
			onclick="window.open('/fb/law/law_keuhlig_alexander');return false;"
			height=100 border=0>
		&nbsp &nbsp &nbsp &nbsp
		<img src="/fb/law/law_walters_alan/pages/1.jpg" alt="fb/law/keyhlig_alexander"
			onclick="window.open('/fb/law/law_walters_alan');return false;"
			height=100 border=0>
		&nbsp &nbsp &nbsp &nbsp
		<img src="/fb/law/law_elster_henry/pages/1.jpg" alt="fb/law/keyhlig_alexander"
			onclick="window.open('/fb/law/law_elster_henry');return false;"
			height=100 border=0>
		&nbsp &nbsp &nbsp &nbsp
		<img src="/fb/law/law_smith_brown/pages/1.jpg" alt="fb/law/keyhlig_alexander"
			onclick="window.open('/fb/law/law_smith_brown');return false;"
			height=100 border=0>
		&nbsp &nbsp &nbsp &nbsp
		<img src="/fb/law/law_korein_tillery/pages/1.jpg" alt="fb/law/keyhlig_alexander"
			onclick="window.open('/fb/law/law_korein_tillery');return false;"
			height=100 border=0>
		<br><br><br><br>
		<hr color=darkslategray>
		<hr color=darkslategray>
		<img src="/imgs/hats/hatreflect_white1.png"
			alt="hatreflect_white1"
			onclick="window.open('/imgs/hats/hatreflect_white1.png');return false;"
			height=50 border=0>
		&nbsp &nbsp &nbsp &nbsp
		<img src="/imgs/us/law_dolley_kellyj.png" alt="/fb/law/law_dolly"
			onclick="window.open('/fb/law/law_dolly/');return false;"
			height=200 border=0>
		&nbsp &nbsp &nbsp &nbsp
		<img src="/imgs/hats/hatreflect_white2.png"
			alt="hatreflect_white2"
			onclick="window.open('/imgs/hats/hatreflect_white2.png');return false;"
			height=50 border=0>
		<br>
		<hr color=linen>
		<hr color=darkslategray>

		<img src="/imgs/hats/hatreflect_black1.png"
			alt="hatreflect_black1"
			onclick="window.open('/imgs/hats/hatw_reflection.png');return false;"
			height=50 border=0>

		<img src="/imgs/us/law_cohen_nathan_s.png" alt="fb/law/law_cohen_nathan_s"
			onclick="window.open('/fb/law/law_cohen_nathan');return false;"
			height=100 border=0>
		&nbsp &nbsp &nbsp &nbsp
		<img src="/imgs/us/lawdonovan.png" alt="lawdonovan.com"
			onclick="window.open('http://lawdonovan.com');return false;"
			height=200 border=0>
		&nbsp &nbsp &nbsp &nbsp
		<img src="/imgs/hats/hatreflect_black2.png"
			alt="hatreflect_black2"
			onclick="window.open('/imgs/hats/hatw_reflection.png');return false;"
			height=50 border=0>

		<hr color=darkslategray>
		<hr color=darkslategray>



		<hr color=red>
		<hr color=white>
		<hr color=blue>
		<div id="div_fb_law" >
			<h1>div_fb_law</h1>
			</div>
		<hr color=white>
		<br><br><br><br>
		<a href=# onclick="fb_law('');return false;" class="popover" target=_blank>
               	        <img id="img_fb_law" src="/imgs/btn/kob.png"  border=0>
               	        <span><img id="img_fb_law2" src="/imgs/btn/btn_fb_law.png" height=250 border=0 ></span>
               	        </a>
		<br><br><br><br>
		<br><br><br><br>
		<hr color=red>
		<hr color=white>
		<hr color=blue>

		<br><br><br><br>
		<div id="div_fb_links">
			<h1>div_fb_links</h1>
			</div>
		<br><br><br><br>
		<hr color=white>
		
		<a href=# onclick="show_fb_links('pop');return false;" class="popover" target=_blank> 
               	        <img src="/fb/imgs/tn/tn_fb_cartoon_shelf1.png" border=0>
               	        <span><img src="/fb/imgs/tn/tn_fb_cartoon_stackwalk1.png" width=200></span>
               	        </a>
		<a href=# onclick="show_fb_links('');return false;" class="popover" target=_blank> 
               	        <img src="/fb/imgs/tn/tn_fb_cartoon_shelf2.png" border=0>
               	        <span><img src="/fb/imgs/tn/tn_fb_cartoon_stackwalk2.png" width=200></span>
               	        </a>
		<br><br><br><br>
		<br><br><br><br>
		<br><br><br><br>
		<hr color=white>
		<hr color=red>
		<hr color=white>
		<hr color=blue>


		<hr color=red>
		<hr color=white>
		<hr color=blue>
		<div id="div_jtfdc_stalkarounds_head" >
<hr color=pink>
<hr color=pink>
<hr color=pink>
<h1>pre 43 anniversary / july4 reindependence day stalkarounds</h1>
<hr color=pink>
<hr color=pink>
<hr color=pink>
<hr color=black>
<hr color=black>
	<hr color=darkslategray>

	<img src="/fb/jtfdcr/imgs/jtfdc_20200704_0000_gazibo_privatedrive_keepout_IMG_9434_800.png"
		alt="jtfdc_20200704_0000_gazibo_privatedrive_keepout_IMG_9434_800.png"
		onclick="window.open('/fb/jtfdcr/imgs/jtfdc_20200704_0000_gazibo_privatedrive_keepout_IMG_9434_800.png');return false;"
		height=200 border=0>
	&nbsp &nbsp &nbsp &nbsp
	<img src="/fb/jtfdcr/imgs/jtfdc_20200704_0000_privatedrive_notrespassing_IMG_9437.jpg"
		alt="jtfdc_20200704_0000_privatedrive_notrespassing_IMG_9437.jpg"
		onclick="window.open('/fb/jtfdcr/imgs/jtfdc_20200704_0000_privatedrive_notrespassing_IMG_9437.jpg');return false;"
		height=200 border=0>
	&nbsp &nbsp &nbsp &nbsp
	<img src="/fb/jtfdcr/pages/jtfdc_keepout_covd19.jpg"
		alt="jtfdc_keepout_covd19.jpg"
		onclick="window.open('/fb/jtfdcr/pages/jtfdc_keepout_covd19.jpg');return false;"
		height=200 border=0>
	&nbsp &nbsp &nbsp &nbsp

	<img src="/fb/jtfdcr/imgs/IMG_5611_jtfdc_original_notrespassing_willbeprosecuted.jpg"
		alt="IMG_5611_jtfdc_original_notrespassing_willbeprosecuted.jpg"
		onclick="window.open('/fb/jtfdcr/imgs/IMG_5611_jtfdc_original_notrespassing_willbeprosecuted.jpg');return false;"
		height=200 border=0>
	<br><br><br><br>
<hr color=darkslategray>
<hr color=darkslategray>
<h1>jtfdc stalkarounds</h1>
<hr color=darkslategray>
<br>



	<h1>div_jtfdc_stalkarounds</h1>
	<hr color=goldenrod>
	<hr color=goldenrod>
	<hr color=goldenrod>
	<img src="/imgs/btn/koeye_jtfdc_stalkarounds.png" alt="div_zpid"
		onclick="window.open('/index_jtfdc_stalkarounds.html'); return false;"
		height=100 border=0>
	<br>
	<hr color=goldenrod>
	<hr color=goldenrod>
	<hr color=goldenrod>


		<div id="div_jtfdc_stalkarounds" >
			<h1>div_jtfdc_stalkarounds</h1>
			</div>

		<hr color=white>
		<br><br><br><br>
		<a href=# onclick="jtfdc_stalkarounds('');return false;" class="popover" target=_blank>
               	        <img id="img_jtfdc_stalkarounds" src="/imgs/btn/kob.png"  border=0>
               	        <span><img id="img_jtfdc_stalkarounds2" src="/imgs/btn/btn_jtfdc_stalkarounds.png" height=250 border=0 ></span>
               	        </a>
		<br><br><br><br>
		<br><br><br><br>
		<hr color=red>
		<hr color=white>
		<hr color=blue>

		<br><br><br><br>
		<div id="div_jtfdc_stalkarounds_links">
			<h1>div_jtfdc_stalkarounds_links</h1>
			</div>
		<br><br><br><br>
		<hr color=white>
		
		<a href=# onclick="show_jtfdc_stalkarounds_links('pop');return false;" class="popover" target=_blank> 
               	        <img src="/fb/imgs/tn/tn_fb_cartoon_shelf1.png" border=0>
               	        <span><img src="/fb/imgs/tn/tn_fb_cartoon_stackwalk1.png" width=200></span>
               	        </a>
		<a href=# onclick="show_jtfdc_stalkarounds_links('');return false;" class="popover" target=_blank> 
               	        <img src="/fb/imgs/tn/tn_fb_cartoon_shelf2.png" border=0>
               	        <span><img src="/fb/imgs/tn/tn_fb_cartoon_stackwalk2.png" width=200></span>
               	        </a>
		<br><br><br><br>
		<br><br><br><br>
		<br><br><br><br>
		<hr color=white>
		<hr color=red>
		<hr color=white>
		<hr color=blue>





<!--
	<iframe src="/jsdoit_clock.html" height=100 border=0 draggable="true" frameborder="0" scrolling="yes" ></iframe>
	<iframe src="/jsdoit_sailboat.html"  height=100 border=0 draggable="true" frameborder="0" scrolling="yes" ></iframe>
	<iframe id="myframe_neave_wobble" src="/index_neave_wobble.html" width="300" height="200" frameborder="0" scrolling="yes"></iframe>
	<iframe id="myframe_neave_wobble" src="/index_neave_wobble.html" width="600" height="200" frameborder="0" scrolling="yes"></iframe>
	-->
	<br><br>
	<hr color="blue">
	<iframe id="myframe_neave_im" src="/index_neave_im.html" width="700" height="200" frameborder="0" scrolling="yes"></iframe>
	<hr color="blue">
	<br><br>
	<hr color="red">
	<hr color="white">
	<hr color="blue">
	<hr color="blue">
	<hr color="white">
	<hr color="red">
	<br><br>
	<img src="/imgs/jsdoit/jsdoit_clock.png" onclick="window.open('/jsdoit_clock.html');return false;" height=100 border=0 draggable="true" >
	<img src="/imgs/jsdoit/jsdoit_sailboat.png" onclick="window.open('/jsdoit_sailboat.html');return false;" height=100 border=0 draggable="true" >
	<img src="/imgs/jsdoit/jsdoit_shoo.png" onclick="window.open('/jsdoit_shoo.html');return false;" 
		height=100 border=0 draggable="true" >
		&nbsp &nbsp &nbsp
	<img src="/imgs/jsdoit/jsdoit_shoot.png" onclick="window.open('/jsdoit_shoot.html');return false;" 
		height=100 border=0 draggable="true" >
		&nbsp &nbsp &nbsp
	<br><br><br><br>
	<img src="/imgs/jsdoit/jsdoit.png" onclick="window.open('/jsdoit.html');return false;" 
		height=100 border=0 draggable="true" >
	<img src="/imgs/jsdoit/jsdoit_kokbdm.png" onclick="window.open('/svc/kokbdm/index.html');return false;" 
		height=100 border=0 draggable="true" frameborder="0" scrolling="yes" ></iframe>
	<hr color=black>
	<hr color=darkslategray>
	<hr color=slategray>
	<br><br><br>



<!--	<center> -->
	<br><br><br><br>
	<div id="div_kov_w" ><h1>div_kov_w</h1></div>
	<br><br><br><br>
	<div id="div_divs" ><h1>div_divs</h1>
		<img src="/imgs/btn/koeye_handhither.gif" onclick="koshow('divs'); return false;"
			draggable="true" height=50 >
		<img src="/imgs/btn/koeyeb_divs.png" onclick="koshow('divs'); return false;"
			draggable="true" height=50 >
		</div id="div_divs_tail">
	<br><br><br><br>
	<div id="div_kovs" ><h1>div_kovs</h1>
		<img src="/imgs/btn/koeye_handhither.gif" onclick="koshow('kovs'); return false;"
			draggable="true" height=50 >
		<img src="/imgs/btn/koeyeb_kovs.png" onclick="koshow('kovs'); return false;"
			draggable="true" height=50 >
		</div id="div_kovs_tail">
	<br><br><br><br>
	<div id="div_yt" ><h1>div_yt</h1>
		bug hunting
		<br>
<!--
		<img src="/imgs/btn/koeye_handhither.gif" onclick="koshow('yt'); return false;"
			draggable="true" height=50 >
		-->
		<img src="/imgs/btn/koeyeb_yt.png" onclick="koshow('yt'); return false;"
			draggable="true" height=25 >
		</div id="div_yt_tail">



	<div id="div_bb_w"><h1>div_bb_w</h1>
	<hr color=white>
	<hr color=black>
<!--	<canvas id="canvas_anim" color="darkslategray" onclick="window.open('/?canvas'); return false;"  -->
	<canvas id="canvas_anim" onclick="window.open('/todays.html?id=jtfdc_202004'); return false;" height=400 witdh=400 draggable="true"></canvas>
	<hr color=black>
	<hr color=white>
	<hr color=white>
	<hr color=black>
<!--	<canvas id="canvas_wiibb" color="darkslategray" onclick="window.open('/?canvas'); return false;"  
		height=600 width=2000 draggable="true"></canvas>
	-->
<!--

	<canvas id="canvas_bbwii" onclick="window.open('/todays.html?id=jtfdc_202004'); return false;" height=650 witdh=2000 draggable="true"></canvas>
	<hr color=black>
	<hr color=white>
	<hr color=yellow>
	<canvas id="canvas_blobs" onclick="window.open('/blobs.html?id=jtfdc_202004'); return false;" height=650 witdh=2000 draggable="true"></canvas>
	<hr color=white>
	<hr color=black>
	-->
<!--
	<canvas id="canvas" color="darkslategray" onclick="window.open('/?canvas'); return false;" 
		height=600 width=2000 draggable="true"></canvas>
	-->
	<canvas id="canvas" color="darkslategray" onclick="window.open('/todays.html?id=jtfdcr_202004'); return false;" 
		height=600 width=2000 draggable="true"></canvas>
	<hr color=black>
	<hr color=white>
	</div id="div_bb_w_tail">

	<div id="div_hl_w">
		<hr color=red>
		<hr color=white>
		<hr color=blue>
		<img src="/fb/jtfdc/pages/jtfdc_keepout_covd_eagles.jpg" height=900
			alt = "jtfdcr_keepout_covid_lockdown_eagles"
			onclick="window.open('/todays.html?id=20200413');return false;"
			width=1200 border=0>
		<br>
		<hr color=black>
		<hr color=red>
		<hr color=black>
		<img src="/fb/med/imgs/cdc_coronavirus_disease_2019.png" 
			onclick="window.open('http://cdc.gov');return false;"
			width=1200 border=0>
		<hr color=blue>
		<hr color=white>
		<hr color=red>


	<details id="details_w">
		<summary>details_w</summary>
		<h1> something small enough to escape casual notice</h1>
		<pre>
		global pandemic lockdown
		shelter in place

		<h1>our home - our private court - our business</h1>
		<pre>
		private court markers need to be 
		restored/returned/replaced

		- sawhorse with stop and private property signs
		- pair of our stolen/siezed 500 lb cement eagles
		- pair of our stolen/siezed survallence cameras

		who delegated authority to 
		prohibit and obstruct
		our attempts to comply with
		national "shelter in place/lockdown" orders

			
		gang of insane neigbors declare 
		- our private court est 1978 
		- our private driveway 300 feet offroad since 2001
		- our easement to our back yard and shared barn 

		thier public turnaround and commons
		thier private dog pony club
		all thier friends support thier taking

		people should live your own lives
		please just leave us alone

		</pre>

		
		defford court has its own 
		internal issues disputes to resolve with 

		the haslekassldorfers

		our donutvanloaw showhorned 
		sisterhouse neigbors 

		ignore the severe and impending damage 
		thier unapproved mini-shed installation has caused.
			- the 300 foot sinkhole under our driveway
			- collapsing barn wall from erosion mud 
			- denial of service to our own back yard

		needs to end
			dogs / easement blockage / 
			setups and  fake police calls


		still working 
		making wonderful things happen

		does a falling tree make a sound
		if your not thier to hear it?
		yes

		"build it and they will come"
		working on my party dress - nowhere to go

		jkwii @hi_risk 
		</pre>
		<img src="/fb/jtfdc/pages/1.jpg" onclick="window.open('/fb/jtfdc/'); return false;" border=0 height=100>
		</details>

	<img src="/imgs/btn/ko.png" onclick="window.open('http://ko2.us');return false;" >
	<img src="/imgs/btn/koeye_jitsi.png" onclick="window.open('https://meet.jit.si/ko2us'); return false;" border=0 >
	<img src="/imgs/btn/koeye_duckduckgo.png" onclick="window.open('http://duckduckgo.com');return false;" >
	<img src="/imgs/btn/koeye_dailymail.png" onclick="window.open('http://dailymail.co.uk');return false;" >
	<img src="/imgs/btn/koeye_zerohedge.png" onclick="window.open('http://zerohedge.com');return false;" >
	<img src="/imgs/btn/koeye_youtube.png" onclick="window.open('http://youtube.com');return false;" >
	<img src="/imgs/btn/koeye_mars.png" onclick="window.open('https://mars.nasa.gov/msl/multimedia/raw-images/?order=sol+desc%2Cinstrument_sort+asc%2Csample_type_sort+asc%2C+date_taken+desc&per_page=50&page=0&mission=msl');return false;" >
	<img src="/imgs/btn/ok.png" onclick="window.open('http://ko1.us');return false;" >
	<hr color=red>
	<hr color=white>
	<hr color=blue>


<!--	<img src="/imgs/btn/koeye_handhither.gif" onclick="startup_canvas(''); return false" height=50 border=0 > -->
<!--	<img src="/imgs/btn/koeye_handhither.gif" onclick="dttm(''); return false" height=50 border=0 > -->

<!--
	<div id="div_buttons_hideshow_w" >
		<h1>div_buttons_hideshow_w</h1>
		<img src="/imgs/btn/kop23.png" width=200 height=80 onclick="script_hideshow('alloff');return false;" >
		<canvas id="canvas_button_alloff_w" width=200 height=80 onclick="script_hideshow('alloff');return false;" ></canvas>
		<img src="/imgs/btn/kop23.png" width=200 height=80 onclick="script_hideshow('allon');return false;" >
		<canvas id="canvas_button_allon_w" width=200 height=80 onclick="script_hideshow('allon');return false;" ></canvas>
		<br>
		<img src="/imgs/btn/kop23.png" width=200 height=80 onclick="script_hideshow('head');return false;" >
		<canvas id="canvas_button_head_w" width=200 height=80 onclick="script_hideshow('head');return false;" ></canvas>
		<img src="/imgs/btn/kop23.png" width=200 height=80 onclick="script_hideshow('head');return false;" >
		<canvas id="canvas_button_setup_w" width=200 height=80  onclick="script_hideshow('setup');return false;"></canvas>
		<img src="/imgs/btn/kop23.png" width=200 height=80 onclick="script_hideshow('head');return false;" >
		<canvas id="canvas_button_hunt_w" width=200 height=80  onclick="script_hideshow('hunt');return false;"></canvas>
		<img src="/imgs/btn/kop23.png" width=200 height=80 onclick="script_hideshow('tag');return false;" >
		<canvas id="canvas_button_tag_w" width=200 height=80  onclick="script_hideshow('tag');return false;"></canvas>
		<img src="/imgs/btn/kop23.png" width=200 height=80 onclick="script_hideshow('swarm');return false;" >
		<canvas id="canvas_button_swarm_w" width=200 height=80  onclick="script_hideshow('swarm');return false;"></canvas>
		<img src="/imgs/btn/kop23.png" width=200 height=80 onclick="script_hideshow('tail');return false;" >
		<canvas id="canvas_button_tail_w" width=200 height=80  onclick="script_hideshow('tail');return false;"></canvas>
	-->
		</div>
	<hr color=yellow>
	<hr color=red>

<!--
	<div id="div_buttons_hideshow_b" ><h1>div_buttons_hideshow_b</h1></div>
	<div id="div_buttons_hideshow_w" ><h1>div_buttons_hideshow_w</h1></div>
	<div id="div_buttons_hideshow_m" ><h1>div_buttons_hideshow_m</h1></div>
	-->

	<canvas id="canvas_button_alloff_w"></canvas>
	<canvas id="canvas_button_alltoggle_w"></canvas>
	<canvas id="canvas_button_head_w"></canvas>
<!--
	<canvas id="canvas_button_setup_w"></canvas>
	<canvas id="canvas_button_av_w"></canvas>
	<canvas id="canvas_button_fb_w"></canvas>
	<canvas id="canvas_button_sl_w"></canvas>
	<canvas id="canvas_button_tl_w"></canvas>
	<canvas id="canvas_button_yt_w"></canvas>
	<canvas id="canvas_button_zm_w"></canvas>
	-->

<!--
	<hr color=white>
	<hr color=black>
	<canvas id="canvas" color="darkslategray" onclick="window.open('/?canvas'); return false;" 
		height=600 width=2000 draggable="true"></canvas>
	<hr color=black>
	<hr color=white>
	-->

	<canvas id="canvas_w" onclick="window.open('/?canvas_w'); return false;" height=200 witdh=400 draggable="true"></canvas>
	<canvas id="canvas_b" onclick="window.open('/?canvas_b'); return false;" height=400 witdh=200 draggable="true"></canvas>
	<hr color=white>
	<hr color=black>

	<div id="div_msg_w" >
		<h1>div_msg_w<h2>
		</div>
	<hr color=black>
	<hr color=white>

<!--	<img src="/imgs/btn/koeye_handhither.gif" onclick="startup(''); return false" > -->
<!--	<img src="/imgs/btn/koeye_handhither.gif" onclick="script_hideshow('alloff'); return false" > -->

	<hr color=white>
	<hr color=black>
	<div id="div_log_w" ><h1>div_log_w</h1></div>
	<br><br><br><br>
	<hr color=blue>
	<hr color=white>
	<hr color=red>
	<br><br><br><br>


<!--
jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj
	<div id="div_fblink" >
		<h1>div_fblink</h1>
		<hr color=red>
		<img src="/imgs/btn/koeye_handhither.gif" onclick="show_kolists('');return false;"
			height=200 >
		<hr color=red>
		</div>
	<div id="div_fb_w" ><h1>div_fb_w</h1>
		<div id="canvas_fb">
		<div class="zoom-icon zoom-icon-in"></div>
			<div class="magazine-viewport">
				<div class="container">
					<div class="magazine">
				<!-- Next button -->
				<div ignore="1" class="next-button"></div>
				<!-- Previous button -->
				<div ignore="1" class="previous-button"></div>
				</div>
			</div>
		</div>
	-->

<!-- Thumbnails -->
<!--
	<div id="div_tn"></div>
	<div class="thumbnails" >
		<div>
			<ul>
			<li class="i">
				<img src="pages/tn/tn_1.png" width="76" height="100" class="page-1">
				<span>1</span>
				</li>
			<li class="d">
				<img src="pages/tn/tn_2.png" width="76" height="100" class="page-2">
				<img src="pages/tn/tn_3.png" width="76" height="100" class="page-3">
				<span>2-3</span>
				</li>
			<li class="d">
				<img src="pages/tn/tn_4.png" width="76" height="100" class="page-4">
				<img src="pages/tn/tn_5.png" width="76" height="100" class="page-5">
				<span>4-5</span>
				</li>
			<li class="d">
				<img src="pages/tn/tn_6.png" width="76" height="100" class="page-6">
				<img src="pages/tn/tn_7.png" width="76" height="100" class="page-7">
				<span>6-7</span>
				</li>
			<li class="d">
				<img src="pages/tn/tn_8.png" width="76" height="100" class="page-8">
				<img src="pages/tn/tn_9.png" width="76" height="100" class="page-9">
				<span>8-9</span>
				</li>
			<li class="d">
				<img src="pages/tn/tn_10.png" width="76" height="100" class="page-10">
				<img src="pages/tn/tn_11.png" width="76" height="100" class="page-11">
				<span>10-11</span>
				</li>
			<li class="d">
				<img src="pages/tn/tn_12.png" width="76" height="100" class="page-12">
				<img src="pages/tn/tn_13.png" width="76" height="100" class="page-13">
				<span>12-13</span>
				</li>
			<li class="d">
				<img src="pages/tn/tn_14.png" width="76" height="100" class="page-14">
				<img src="pages/tn/tn_15.png" width="76" height="100" class="page-15">
				<span>14-15</span>
				</li>
			<li class="d">
				<img src="pages/tn/tn_16.png" width="76" height="100" class="page-14">
				<img src="pages/tn/tn_17.png" width="76" height="100" class="page-15">
				<span>16-17</span>
				</li>
			<li class="i">
				<img src="pages/tn/tn_18.png" width="76" height="100" class="page-16">
				<span>18</span>
				</li>
			<ul>
			<div>	</div>
		</div>
	</div>
	</div id="div_fb_w_tail" >
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
	-->



	<br><br><br><br>
	<br><br><br><br>
	<br><br><br><br>



<hr color="white">
<hr color="pink">
<div id="div_happyeaster" >
<h1>div_happyeaster</h1>
<hr color="white">
<hr color="pink">

	<hr color=white>
	<hr color=pink>
	<hr color=red>
	<hr color=pink>
	<hr color=white>
<!--
	<script id="script_youtubeapi">
		function youtube_api(args) {
			var ytid = "WhWc3b3KhnY";
			$data = file_get_contents("https://www.googleapis.com/youtube/v3/videos?key=YOUR_API_KEY&part=snippet&id="+ytid);
			$json = json_decode($data);
			var_dump($json->items[0]->snippet->thumbnails);
			}
		</script>
	-->

	<div id="div_yt_w" draggable="true" ><h1>div_yt_w</h1>
	<img src="https://img.youtube.com/vi/2Q3y3Cre1-k/default.jpg"
		alt="yt_kitt_avril"
		onclick="window.open('https://www.youtube.com/watch?v=2Q3y3Cre1-k');return false;"
			); return false;"
		height=200 border=0 >  


	<img src="https://img.youtube.com/vi/WhWc3b3KhnY/default.jpg"
		alt="yt_spring"
		onclick="window.open('https://www.youtube.com/watch?v=WhWc3b3KhnY');return false;"
			); return false;"
		height=200 border=0 >  
	&nbsp &nbsp &nbsp &nbsp


	<img src="https://img.youtube.com/vi/7fjTY_ABMj0/default.jpg"
		alt="yt_morrison_2008"
			onclick="window.open('https://www.youtube.com/watch?v=7fjTY_ABMj0&list=PL7919B9B0B051C6A8&index=1'); return false;"
			); return false;"
		height=200 border=0 >  
	&nbsp &nbsp &nbsp &nbsp

	<img src="https://img.youtube.com/vi/IAaLzP1U4nc/default.jpg"
		alt="yt_first_of_spring"
		onclick="window.open('https://www.youtube.com/watch?v=IAaLzP1U4nc');return false;"
			); return false;"
		height=200 border=0 >  

	<img src="https://img.youtube.com/vi/T2fLsCPd1-I/default.jpg"
		alt="yt_chillicothe_1938"
		onclick="window.open('https://www.youtube.com/watch?v=T2fLsCPd1-I');return false;"
			); return false;"
		height=200 border=0 >  
	<br><br>

<!--
	<img src="https://img.youtube.com/vi/QEcTjhUN_7U/default.jpg"
		alt="yt_harold_loyd_safty"
		onclick="window.open('https://www.youtube.com/watch?v=QEcTjhUN_7U');return false;"
			); return false;"
		height=100 border=0 >  
	&nbsp &nbsp &nbsp &nbsp	
-->

<!--
	<img src="/imgs/btn/kobubbleb_avril.png"
		alt="test2_mp4 /index1_avril.mp4"
		onclick="window.open('/index1_avril.mp4');return false;"
			); return false;"
		height=200 border=0 >  
	-->


	&nbsp &nbsp &nbsp &nbsp
	<br><br>
	<hr color=green>
	<img src="/imgs/btn/kobubbleb.png"
		alt="videobox_avril /index1_avril.mp4"
		onclick="window.open('/av/show_videobox.html?avid=/index1_avril.mp4');return false;"
			); return false;"
		height=100 border=0 >  
	&nbsp &nbsp &nbsp &nbsp


<!-- twins	<img src="/imgs/gif/eggs/giphy_eggs_03.gif" height=100> -->
<!--	<img src="/imgs/gif/eggs/giphy_eggs_03.gif" height=200 -->
<hr color=black>
		<img src="http://ka12/fb/jtfdcr/pages/columbia_pw_adminiwii_ko2us.jpg" alt="jtfdc_protection_welcome"
			onclick="window.open('/jtfdc_stalkarounds.html');return false;"
			height=150 border=0>
		<br>
<hr color=black>

	<div id="div_jtfdc_stalkarounds">
		<h1>jtfdc_stalkarounds</h1>
		</div>



	<script id="script_jtfdc_stalkarounds">

		function jtfdc_stalkarounds(args) {
//			alert( "BUGS_6700 jtfdc_stalkarounds args="+args );

kolists['jtfdc_stalkarounds'] = 
`/kb/jtfdcr/vid/jtfdc_stalkarounds/tn_jtfdc_20200714_2006_stalkaroundup_whtchvy_ladies_LG5ZOE_IMG_9402.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/tn_jtfdc_20200714_1815_stalkaround_jtfcerememaybe_allbelongs2us_jkwii_notthese3_IMG_9364.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200714_2006_stalkaroundup_whtchvy_ladies_LG5ZOE_IMG_9402.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200714_2006_stalkaroundup_whtchvy_ladies_LG5ZOE_IMG_9402.mp3
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200714_2006_stalkaroundup_whtchvy_ladies_LG5ZOE_IMG_9402.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200714_1937_stalkaround_clothestruck_2nd_complaint_IMG_9393.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200714_1937_stalkaround_clothestruck_2nd_complaint_IMG_9393.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200714_1815_stalkaround_jtfcerememaybe_allbelongs2us_jkwii_notthese3_IMG_9364.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200714_1815_stalkaround_jtfcerememaybe_allbelongs2us_jkwii_notthese3_IMG_9364.mp3
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200714_1815_stalkaround_jtfcerememaybe_allbelongs2us_jkwii_notthese3_IMG_9364.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200714_1812_jtf32_backin_whtsuv_n_trailer_IMG_9372.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200714_1812_backoutnice_shyltlredcar_ko2us_IMG_9359.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200714_1801_backoutniceup_cycleguy.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200714_1616l_backoutnice_shyltlred_jkwii_ko2us_IMG9360.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200714_1616_Istalkaround_clothestruck_complaint_n_back_MG_9338.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200714_1616_Istalkaround_clothestruck_complaint_n_back_MG_9338.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200714_1615_stalkaround_clownvan_IMG_9349 .mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200714_1615_downnice_yellocar_IMG_9354.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200714_1615_backoutnice_ltlred_ko2us_IMG_9359.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200714_1539_stalkaround_clowntruck.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200714_1539_stalkaround_clowntruck.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200714_1520_stalkaroundup_speeding_tlsilverltlwagon_gamer.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1100_stalkaroundsup_three_IMG_8838.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1100_stalkaroundsup_three_IMG_8840.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1100_stalkaroundsup_three_IMG_8844.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1100_stalkaroundsup_three_IMG_8848.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1100_stalkaroundsup_three_IMG_8849.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1100_stalkaroundsup_three_IMG_8850.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200703_1100_stalkaroundsup_three_IMG_8853.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/tn_jtfdc_20200625_1530_IMG_8428_jtf30_trustee_jtfinc_dues4us.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/tn_jtfdc_20200625_1530_IMG_8474_stalkaroundup_drkcar_lady.mp4
/kb/jtfdc_stalkarounds/tn_jtfdc_20200625_1530_IMG_8491_stalkaround_oldguy_GDT99_vw.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200514_1830_stalkaroundup_shydrkltlcar.mp4|/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200514_1830_stalkaroundup_shydrkltlcar.png
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200514_1505_deer.png|/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200514/jtfdc_20200514_1505_deer.png
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200514_1748_stalkaroundup_gemini_truckntrailer_househunting.mp4|/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200514_1748_stalkaroundup_gemini_truckntrailer_househunting.png
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200514_1412_stalkaroundacross_silverwagon.mp4|/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200514_1412_stalkaroundacross_silverwagon.png
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200514_1400_stalkaroundup_acrossin_shnyredcar.mp4|/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200514_1400_stalkaroundup_acrossin_shnyredcar.png
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200512_1130_stalkaroundup_slowlurk_shnywhtsuv_marked.mp4|/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200512_1130_stalkaroundup_slowlurk_shnywhtsuv_marked.png
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200506_1338_stalkaroundacross_shyredpickup_crunch.mp4|/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200505_1606_stalkaround_drklong_suv.mp4|/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200506_1338_stalkaroundacross_shyredpickup_crunch.png
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200506_1302_stalkaroundup_ltldrkshnycar.mp4|/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200506_1302_stalkaroundup_ltldrkshnycar.png
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200505_1606_stalkaround_drklong_suv.mp4|/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200505_1606_stalkaroaund_drklong_suv.png
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200505_1606_stalkaroaund_drklong_suv.mp4|/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200505_1608_jjtf32in_donutvanlaw_stalkaroundup_silverwagon.png
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_202020505_11614_stalkaround_cyclegynhat.mp4|/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_202020505_11614_stalkaround_cyclegynhat.png
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200504__0950_stalkaround_police_sqrbak_jkwiigoin_terror.mp4|/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200504__0950_stalkaround_police_sqrbak_jkwiigoin_terror.jpg
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200503_0810_stalkaroundacross_dogs2.mp4|/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200503_0810_stalkaroundacross_dogs2.jpg
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200503_1656_stalkaoundacross_shiygrey_cpl.mp4|/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200503_1656_stalkaoundacross_shiygrey_cpl.jpg
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200503_1815_jtf30_doogys_allin.mp4|/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200503_1815_jtf30_doogys_allin.jpg
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200503_1816_stalkaround_drksqrbak.mp4|/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200503_1816_stalkaround_drksqrbak.jpg
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200503_1825_stalkaroudup_shyredcpl.mp4|/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200503_1825_stalkaroudup_shyredcpl.jpg
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200503_1825_stalkaroundup_shinysilverguy.mp4|/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200503_1825_stalkaroundup_shinysilverguy.jpg
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200503_1905_stalkaroudacross_ltlsilvrguy.mp4|/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200503_1905_stalkaroudacross_ltlsilvrguy.jpg
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200503_2011_stalaround_acrosss_ltlwhtcarguy.mp4|/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200503_2011_stalaround_acrosss_ltlwhtcarguy.jpg
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200502_1124_stalkaroundsup_fedex_gigglegirls.mp4|/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200502_1124_stalkaroundsup_fedex_gigglegirls.jpg
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200501_2012_stalkaround_jtf31_bigups_crunch.mp4|/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200501_2012_stalkaround_jtf31_bigups_crunch.jpg
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200501_0051_stalkaroundup_owl_n_rumblepickup.mp4|/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200501_0051_stalkaroundup_owl_rumblepickup.jpg
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200328_0920_jkwii_chapelwakers_tomazy_got2hell_lures.mp4|/kb/jtfdcr/vid/jtfdc_stalkarounds/chapelcrosswalkers.gif|/kb/jtfdcr/vid/jtfdc_stalkarounds/chapelcrosswakers.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200423_1423_stalkaroundup_speeding_amazon_stalk.mp4|/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200423_1423_stalkaroundup_speeding_amazon_stalk.jpg
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200424_1833_stalkaroundup_longflatbed_truck.mp4|/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200424_1833_stalkaroundup_longflatbed_truck.jpg
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200424_1850_stalkaroundup_speedy_bigtruckvan.mp4|/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200424_1850_stalkaroundup_speedy_bigtruckvan.jpg
/kb/jtfdcr/vid/jtfdc_kids/jtfdc_20200411_1538_ks.mp4|/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200411_1538_ks.jpg
# /kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200327_1532_stalkaround_jtf30_yellowcycler_fu_fu_fu.mp4|/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200327_1532_stalkaround_jtf30_yellowcycler_fu_fu_fu.jpg`;


kolists['jtfdc_stalkarounds_20200503'] = `
/kb/jtfdcr/vid/jtfdc_stalkarounds/tn_jtfdc_20200714_2006_stalkaroundup_whtchvy_ladies_LG5ZOE_IMG_9402.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/tn_jtfdc_20200714_1815_stalkaround_jtfcerememaybe_allbelongs2us_jkwii_notthese3_IMG_9364.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200714_2006_stalkaroundup_whtchvy_ladies_LG5ZOE_IMG_9402.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200714_2006_stalkaroundup_whtchvy_ladies_LG5ZOE_IMG_9402.mp3
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200714_2006_stalkaroundup_whtchvy_ladies_LG5ZOE_IMG_9402.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200714_1937_stalkaround_clothestruck_2nd_complaint_IMG_9393.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200714_1937_stalkaround_clothestruck_2nd_complaint_IMG_9393.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200714_1815_stalkaround_jtfcerememaybe_allbelongs2us_jkwii_notthese3_IMG_9364.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200714_1815_stalkaround_jtfcerememaybe_allbelongs2us_jkwii_notthese3_IMG_9364.mp3
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200714_1815_stalkaround_jtfcerememaybe_allbelongs2us_jkwii_notthese3_IMG_9364.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200714_1812_jtf32_backin_whtsuv_n_trailer_IMG_9372.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200714_1812_backoutnice_shyltlredcar_ko2us_IMG_9359.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200714_1801_backoutniceup_cycleguy.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200714_1616l_backoutnice_shyltlred_jkwii_ko2us_IMG9360.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200714_1616_Istalkaround_clothestruck_complaint_n_back_MG_9338.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200714_1616_Istalkaround_clothestruck_complaint_n_back_MG_9338.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200714_1615_stalkaround_clownvan_IMG_9349 .mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200714_1615_downnice_yellocar_IMG_9354.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200714_1615_backoutnice_ltlred_ko2us_IMG_9359.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200714_1539_stalkaround_clowntruck.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200714_1539_stalkaround_clowntruck.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200714_1520_stalkaroundup_speeding_tlsilverltlwagon_gamer.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200503_0810_stalkaroundacross_dogs2.mp4|/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200503_0810_stalkaroundacross_dogs2.jpg
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200503_0810_stalkaroundacross_dogs2.mp4|/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200503_0810_stalkaroundacross_dogs2.jpg
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200503_1656_stalkaoundacross_shiygrey_cpl.mp4|/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200503_1656_stalkaoundacross_shiygrey_cpl.jpg
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200503_1815_jtf30_doogys_allin.mp4|/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200503_1815_jtf30_doogys_allin.jpg
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200503_1816_stalkaround_drksqrbak.mp4|/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200503_1816_stalkaround_drksqrbak.jpg
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200503_1825_stalkaroudup_shyredcpl.mp4|/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200503_1825_stalkaroudup_shyredcpl.jpg
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200503_1825_stalkaroundup_shinysilverguy.mp4|/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200503_1825_stalkaroundup_shinysilverguy.jpg
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200503_1905_stalkaroudacross_ltlsilvrguy.mp4|/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200503_1905_stalkaroudacross_ltlsilvrguy.jpg
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200503_2011_stalaround_acrosss_ltlwhtcarguy.mp4|/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200503_2011_stalaround_acrosss_ltlwhtcarguy.jpg
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200502_1124_stalkaroundsup_fedex_gigglegirls.mp4|/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200502_1124_stalkaroundsup_fedex_gigglegirls.jpg
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200501_2012_stalkaround_jtf31_bigups_crunch.mp4|/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200501_2012_stalkaround_jtf31_bigups_crunch.jpg
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200501_0051_stalkaroundup_owl_n_rumblepickup.mp4|/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200501_0051_stalkaroundup_owl_rumblepickup.jpg
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200328_0920_jkwii_chapelwakers_tomazy_got2hell_lures.mp4|/kb/jtfdcr/vid/jtfdc_stalkarounds/chapelcrosswalkers.gif|/kb/jtfdcr/vid/jtfdc_stalkarounds/chapelcrosswakers.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200423_1423_stalkaroundup_speeding_amazon_stalk.mp4|/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200423_1423_stalkaroundup_speeding_amazon_stalk.jpg
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200424_1833_stalkaroundup_longflatbed_truck.mp4|/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200424_1833_stalkaroundup_longflatbed_truck.jpg
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200424_1850_stalkaroundup_speedy_bigtruckvan.mp4|/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200424_1850_stalkaroundup_speedy_bigtruckvan.jpg
/kb/jtfdcr/vid/jtfdc_kids/jtfdc_20200411_1538_ks.mp4|/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200411_1538_ks.jpg
# /kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200327_1532_stalkaround_jtf30_yellowcycler_fu_fu_fu.mp4|/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200327_1532_stalkaround_jtf30_yellowcycler_fu_fu_fu.jpg
`;


			if( document.getElementById('div_jtfdc_stalkarounds')) {
				if( document.getElementById('div_jtfdc_stalkarounds').style.display == "inline" ) {
					document.getElementById('div_jtfdc_stalkarounds').style.display == "none" );
					if( document.getElementById('img_jtfdc_stalkarounds')) {
						document.getElementById('img_jtfdc_stalkarounds').src="/imgs/btn/kob.png";
						}
					if( document.getElementById('img_jtfdc_stalkarounds2')) {
						document.getElementById('img_jtfdc_stalkarounds2').src="/imgs/btn/btn_jtfdc_stalkarounds.png";
						}
					return(args);
					}
				if( document.getElementById('div_jtfdc_stalkarounds').style.display == "none" ) {
					document.getElementById('div_jtfdc_stalkarounds').style.display == "inline" );
					if( document.getElementById('img_jtfdc_stalkarounds')) {
						document.getElementById('img_jtfdc_stalkarounds').src="/imgs/btn/kow.png";
						}
					if( document.getElementById('img_jtfdc_stalkarounds2')) {
						document.getElementById('img_jtfdc_stalkarounds2').src="/imgs/btn/kob.png";
						}
					return(args);
					}
				}


//			alert( "BUGS_6851 jtfdc_stalkarounds kolists_jtfdc_stalkarounds="+kolists['jtfdc_stalkarounds'] );
			jaxurl="/txt/jtfdc_stalkarounds.txt";
			if( filecheck(jaxurl)) {
				jax(jaxurl);
				kolists['jtfdc_stalkarounds']=kolists['jax'];
//				alert( "BUGS_6852 jtfdc_stalkarounds kolists_jtfdc_stalkarounds="+kolists['jtfdc_stalkarounds'] );
				}
			kolists['jtfdc_stalkarounds']=kolists['jax'];
			alert( "BUGS_6853 jtfdc_stalkarounds kolists_jtfdc_stalkarounds="+kolists['jtfdc_stalkarounds'] );
			htmout = '';
			list=kolists['jtfdc_stalkarounds'].split("\n");
			htmout += '<div id="div_jtfdc_stalkarounds" >';
			htmout += '	<h1>div_jtfdc_stalkarounds</h1>';
			for( j=0; j<list.length; j++ ) {
				line=list[j];
				if( line=="" ) { continue; }
				if( /^#/.test(line)) { continue; }			
				src_mp4=line;
				src_tn=src_mp4.replace(".mp4",".jpg");
//				pipelen=line.split("|");
				src_mp4=line.split("|")[0];
				src_tn=line.split("|")[1];
				title=j+" "+src_mp4;
				title=title.replace(".mp4","");
				title=title.replace("/kb/","");

//				alert( "BUGS_5370 src_mp4="+src_mp4 );
//				alert( "BUGS_5370 src_tn="+src_tn );
//				if(! filecheck(src_mp4)) {
//					alert( "BUGS_5370 NOTFOUND src_mp4="+src_mp4 );
//					src_mp4="/kb/vid/notfound.mp4";
//					}
//				if(! filecheck(src_tn)) {
//					src_tn="/imgs/notfound.gif";
//					}

				htmout += '	<h2>'+title+'</h2>';
				htmout += '	<img src="'+src_tn+'" ';
				htmout += '	onclick="window.open(\''+src_mp4+'\'); return false;" ';
				htmout += '	height=100 border=0 draggable="true" >';
				htmout += '	<br>';
//				alert( "BUGS_5371 jtfdc_stalkarounds htmout="+htmout );
//				alert( "BUGS_5372 jtfdc_stalkarounds htmout="+htmout );
				}
			htmout += '	</div>';
			htmout += '<hr color=black>';
			htmout += '<hr color=white>';
			htmout += '<br><br><br><br>';

			divid="div_jtfdc_stalkarounds";
			if( document.getElementById(divid)) {
//				alert( "BUGS_5380 DIV_FOUND jtfdc_stalkarounds htmout="+htmout );
				document.getElementById(divid).innerHTML=htmout;
				}
//			alert( "BUGS_5390 jtfdc_stalkarounds htmout="+htmout );
			}

		</script>








	<img src="/imgs/btn/kobubblew.png"
		alt="videobox_chillicothe"
		onclick="window.open('/av/show_videobox_chillicothe.html?avid=/kb/vid/jkwii/jtfdcchillicothe_ohio_the_good_old_days_1938_looking_back.mp4');return false;"
			); return false;"
		height=100 border=0 >  
	&nbsp &nbsp &nbsp &nbsp


<!--
	<img src="/imgs/btn/kobubblew_avril.png"
		alt="chillicothe_ohio_good_old_days_1938_looking_back"
		onclick="window.open(
'/kb/vid/jkwii/jtfdcchillicothe_ohio_the_good_old_days_1938_looking_back.mp4'
			); return false;"
		height=200 border=0 >  
	-->

		</div id="div_yt_w_tail"  >


	<hr color=white>
	<hr color=pink>
	<hr color=red>
	<hr color=pink>
<!--	</div id="div_unknown_tail"> -->
	<hr color=white>
	<hr color=pink>

	<div id="div_body_w" draggable="true" ><h1>div_body_w</h1>
<img src="/fb/heart/pages/1.jpg" alt="heart" onclick="window.open('/fb/heart/');return false;" 
height=100 border=0 >  
&nbsp &nbsp &nbsp

<img src="/gm/imgs/btn/btn_chapelofthecross.png" alt="chapelofthecross" onclick="window.open('https://www.chapelofthecross.org/');return false;" 
height=100 border=0 >
&nbsp &nbsp &nbsp

<!-- <img src="/imgs/gif/eggs/giphy_eggs_01.gif" alt="gm" onclick="window.open('/gm/gm_eggs.html');return false;"  -->
<img src="/fb/birthday/pages/1.jpg" alt="fb/birthday" onclick="window.open('/fb/birthday/');return false;" 
height=200 border=0 >
&nbsp &nbsp &nbsp
<img src="/imgs/btn/jsdoit.png" alt="jsdoit" onclick="window.open('/jsdoit.html');return false;" 
height=200 border=0 >
&nbsp &nbsp &nbsp
<img src="/fb/birthday/pages/1.jpg" alt="fb/birthday" onclick="window.open('/fb/birthday/');return false;" 
height=200 border=0 >
&nbsp &nbsp &nbsp
		<img src="/imgs/btn/koeye_blobs.png" alt="koeye_blobs"
			onclick="window.open('/blob.html');return false;"
			height=200 border=0>
&nbsp &nbsp &nbsp

<img src="/imgs/gif/eggs/giphy_eggs_03.gif" alt="gm" onclick="window.open('/gm/gm_eggs.html');return false;" 
height=200 border=0 >
&nbsp &nbsp &nbsp

<img src="/gm/imgs/btn/btn_latterdaysaints_stl.png" alt="latterdaysaints" onclick="window.open('https://www.facebook.com/pages/LDS-Temple-St-Louis-MO/161979377153524');return false;" 
height=100 border=0 >
&nbsp &nbsp &nbsp

<img src="/fb/soul/pages/1.jpg" alt="heart" onclick="window.open('/fb/soul/');return false;" 
height=100 border=0 >  
&nbsp &nbsp &nbsp
<hr color="pink">
<hr color="white">
	</div id="div_body_w_tail" >







<hr color="pink">
<hr color="white">

	<div id="div_jtfdcr_w" draggable="true" >
		<div id="div_jtfdcr_dot_dot_dot" >
			<br>
			<hr color="black">
			<hr color="black">
			<hr color="black">
			<br>
			<h1>jtfdcr_dot_dot_dot ... </h1>
			<h2> 20200408 ... 20200328</h2>
			<hr color=black>
			<hr color=yellow>
			<hr color=black>



	<img src="/fb/med/imgs/cdc_banner.png" height=100  onclick="window.open('http://cdc.gov');return false;" >
	<hr color=black>
	<hr color=yellow>
	<hr color=black>
	<br>

	<h1>defford court report 20200326-20200330_0900</h1>
	<h3>20200326_1830 offroad shiny white suv medmask</h3>

<!--	<img src="/kb/jtfdcr/vid/jtfdc_stalkarounds_tiny/tn_jtfdc_20200327_1532_stalkaround_jtf30_yellowcycler_fu_fu_fu.png" -->
<!--	<img src="/gm/imgs/btn/btn_cycle.png" -->
	<img src="/imgs/btn/kobubble.png"
		alt="jtfdc_20200327_1532_stalkaround_jtf30_yellowcycler_fu_fu_fu"
		onclick="window.open(
'/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200327_1532_stalkaround_jtf30_yellowcycler_fu_fu_fu.mp4'
				); return false;"
		height=100 border=0 >  

	<img src="/fb/donutvanlaw/pages/1.jpg"
		alt="jtf32_donutvanlaw" onclick="window.open(
'/fb/donutvanlaw/'
		);return false;"
		height=100 border=0 >  
	&nbsp &nbsp &nbsp
	
	<img src="https://img.youtube.com/vi/Oo4KXZVApsQ/default.jpg"
		alt="yt_spring"
		onclick="window.open('https://www.youtube.com/watch?v=Oo4KXZVApsQ');return false;"
			); return false;"
		height=200 border=0 >  




<img src="/fb/soul/pages/koeye_faithchurch.png"
		alt="faithchurch" onclick="window.open( 'http://faithchurch.com'
		);return false;"
		height=100 border=0 >  
	&nbsp &nbsp &nbsp

<img src="/imgs/btn/koeye_todays"
		alt="todays" onclick="window.open( '/todays.html?id=20200413'
		);return false;"
		height=100 border=0 >  
	&nbsp &nbsp &nbsp

<img src="/kb/jtfdcr/vid/jtfdc_20170529_memorialday_tiny/jtfdc_20170529_0703_00028_memorialday_jkwii_jtf30_doogy.png"
		alt="tourdedonut_stl" onclick="window.open( '/holidays.html?id=jtfdc_20170529_memorialday'
		);return false;"
		height=100 border=0 >  
	&nbsp &nbsp &nbsp
	
	<img src="/gm/imgs/btn/btn_tourdedonut_stl.png"
		alt="tourdedonut_stl" onclick="window.open( 'http://www.tourdedonut.org/'
		);return false;"
		height=100 border=0 >  
	&nbsp &nbsp &nbsp
	

	<img src="/gm/imgs/btn/btn_bebikeclub.png"
		alt="bebikeclub" onclick="window.open(
'https://www.bebikeclub.org/'
		);return false;"
		height=100 border=0 >  
	&nbsp &nbsp &nbsp
	
<!--
btn_tourdedonut.org
http://www.tourdedonut.org/
	-->


	<h3>20200328_0928 chapel_of_the_crosswalkers jtf4- "hi mr_T says jkwii"
"go to hell" says mr_T back to wii"
		</h3>

	<details id="detail_crosswalkers">
		<h2>detail_crosswalkers</h2>
		<pre>
			satruday 9:28	
			two mature woman strangers appear
			wander into our private 3 house court
			explore our obstructed barn/backyard easement

			curious

			what are you two here to see
			apparently your not here for me 

			looking familiar they searched back through time
			we all discover together thier old friend of mine
			
			old friends from our old church
			all three kids attended there	
			well before this corona scare

			invited the ladies for a quick tour
			appear they were here as mr_T lures

			from over the hill 
			mr_T speeds into our court

			"hi mr_T" but no reply

			"is this man bothering you ladies"
			failed new police incident schedules to report
			"go to hell" mr_T only retort
			

			curious

			old time neighbors from our youth
			are just the one who have forgotten the truth

			jkwii@hi_risk
			</pre>
		</details>

<!--		<img src="/kb/jtfdcr/vid/jtfdc_stalkarounds_tiny/tn_jtfdc_20200328_0920_jkwii_chapelwakers_tomazy_got2hell_lures.png" -->
<!--		'/kb/jtfdcr/vid/jtfdc_stalkarounds_tiny/tn_jtfdc_20200328_0920_jkwii_chapelwakers_tomazy_got2hell_lures.mp4' -->
<!--		<img src="/gm/imgs/btn/btn_chapelcrosswalkers.png" -->
		<img src="/imgs/btn/kobubble.png"
			alt="/kb/jtfdcr/vid/jtfdc_stalkarounds_tiny/tn_jtfdc_20200328_0920_jkwii_chapelwakers_tomazy_got2hell_lures.mp4"
			onclick="window.open(
'/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200328_0920_jkwii_chapelwakers_tomazy_got2hell_lures.mp4'
				); return false;"
			height=100 border=0 >  
			&nbsp &nbsp &nbsp
	
		<img src="/fb/byrdpucker/pages/1.jpg"
			alt="jtf39_byrdpucker" onclick="window.open(
'/fb/byrdpucker'
			);return false;"
			height=100 border=0 >  
		&nbsp &nbsp &nbsp

		<img src="/gm/imgs/btn/btn_ks_contractors.png"
			alt="fb_ks_contractors_stl" onclick="window.open('https://ksgcstl.com');return false;"
			height=80 border=0 >  
		&nbsp &nbsp &nbsp

		<img src="/gm/imgs/btn/btn_fb_ks_contractors.png"
			alt="fb_ks_contractors" onclick="window.open( 'https://www.facebook.com/K.T.Contracting85/photos/a.647903691927784/1407436845974461/?type=1&theater');return false;"
			height=80 border=0 >  
		&nbsp &nbsp &nbsp

		<img src="/gm/imgs/btn/btn_fb_sk_contractors.png"
			alt="fb_ks_contractors" onclick="window.open(
'https://www.facebook.com/skcontractors4344/'
			);return false;"
			height=80 border=0 >  
		&nbsp &nbsp &nbsp

		<img src="/gm/imgs/btn/btn_cardinalcontractors_stl.png"
			alt="cardinalcontractors_stl" onclick="window.open(
'https://cardinalcontractorsllc.com/'
			);return false;"
			height=80 border=0 >  
		&nbsp &nbsp &nbsp

		<img src="/gm/imgs/btn/btn_fb_cardinalcontractors_stl.png"
			alt="fb_cardinalcontractors_stl" onclick="window.open(
'https://www.facebook.com/cardinalroof/'
			);return false;"
			height=80 border=0 >  
		&nbsp &nbsp &nbsp

		<img src="/gm/imgs/btn/btn_alberici.png"
			alt="alberici" onclick="window.open( 'https://alberici.com/');return false;"
			height=80 border=0 >  
		&nbsp &nbsp &nbsp

		<img src="/gm/imgs/btn/btn_fb_alberici.png"
			alt="fb_alberici" onclick="window.open( 'https://www.facebook.com/AlbericiConstructors');return false;"
			height=80 border=0 >  
		&nbsp &nbsp &nbsp
	<br>
	<hr color=blue>
	<hr color=lightblue>
		<img src="/imgs/links/biz_bistatepool.jpg" 
			alt="bistatepool"
			onclick="window.open('https://bistatepool.com');return false;"
			height=100 border=0>
	<hr color=lightblue>
	<hr color=blue>

	<br><br>
		<img src="/imgs/btn/kobubble.png"
			alt="jtfdc_20200328_2235_stalkarounup_xmaslite_rumble_truck" onclick="window.open(
'/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200328_2235_stalkarounup_xmaslite_rumble_truck.mp4'
			);return false;"
			height=80 border=0 >  
		</div>

		</div id="div_jtfdcr_w_tail" >

	<hr color=red>
	<hr color=white>
	<hr color=blue>


	
	<hr color=black>





	<h1>- = +</h1>
	<img src="/imgs/btn/koeye_alloff.png" onclick="window.open('/mobmin.html');return false;" >
	<img src="/imgs/btn/koeye.png" onclick="window.open('/');return false;" > 
	<img src="/imgs/btn/btn_gm.png" onclick="window.open('/gm/');return false;" height=100 > 
	<img src="/imgs/gif/view/giphy_view19.gif" onclick="window.open('/mob_vu.html');return false;" height=100 > 
	<img src="/imgs/btn/koeye.png" onclick="window.open('/');return false;" > 
	<img src="/imgs/btn/koeye_allon.png" onclick="window.open('/mobmax.html');return false;" >
	<hr color=black>
	<hr color=blue>
	<hr color=white>
	<hr color=red>
	<h1>- = +</h1>
	<img src="/ko1/pages/1.jpg" onclick="window.open('http://ko1.us');return false;" border=0 height=100 >
	<img src="/fb/konet/pages/1.jpg" onclick="window.open('http://konet.org');return false;" border=0 height=100 >
	<img src="/fb/iperms/pages/1.jpg" onclick="window.open('http://iperms.com');return false;"  border=0 height=100 >
	<hr color=blue>
	<hr color=white>
	<hr color=red>
	<br><br>	
	<hr color=pink>	
	<hr color=pink>	
	<hr color=pink>	
	<h2>- + =</h2>
	<img src="/gm/pages/1.jpg" onclick="window.open('/gm/');return false;" height=100 border=0 >
	<img src="/fb/operation/pages/1.jpg" onclick="window.open('/fb/operation/');return false;" height=100 border=0 >
	<img src="/fb/kitiworks/pages/1.jpg" onclick="window.open('/fb/kitiworks/');return false;" height=100 border=0 >
	<img src="/fb/pastryroad/pages/1.jpg" onclick="window.open('/fb/pastryroad/');return false;" height=100 border=0 >
	<img src="/fb/jkwii/pages/1.jpg" onclick="window.open('/fb/jkwii/');return false;" height=100 border=0 >
	<img src="/fb/jtfdc/pages/1.jpg" onclick="window.open('/fb/jtfdc/');return false;" height=100 border=0 >
	<img src="/fb/kt/pages/1.jpg" onclick="window.open('/fb/kt/');return false;" target=_blank border=0 height=100>
	<hr color=pink>	
	<hr color=pink>	
	<hr color=pink>	
	
	<hr color=white>
	<hr color=black>
	<h2>- = +</h2>
	<img src="/fb/birthday/pages/1.jpg" onclick="window.open('/fb/birthday/');return false;" height=100 border=0  >
	<img src="/fb/neuz/pages/1.jpg" onclick="window.open('/fb/neuz/');return false;" height=100 border=0  >
	<img src="/fb/law/pages/1.jpg" onclick="window.open('/fb/law/');return false;" height=100 border=0 >
	<img src="/fb/med/pages/1.jpg" onclick="window.open('/fb/med/');return false;" height=100 border=0  >
	<img src="/fb/gov/pages/1.jpg" onclick="window.open('/fb/gov/');return false;" height=100 border=0  >
	<img src="/fb/iperms/pages/1.jpg" onclick="window.open('/fb/iperms/');return false;" height=100 border=0  >
	<img src="/fb/pages/1.jpg" onclick="window.open('/fb/');return false;" height=100 border=0  >
	<img src="/fb/jtfdc/pages/1.jpg" onclick="window.open('/fb/jtfdc/');return false;" height=100 border=0 >
	<img src="/fb/konet/pages/1.jpg" onclick="window.open('/fb/konet/');return false;" height=100 border=0 >
	<img src="/fb/gofunwii/pages/1.jpg" onclick="window.open('/fb/gofunwii/');return false;" height=100 border=0  >
	<hr color=black>
	<hr color=white>
	<hr color=white>
	<hr color=black>
<!--
	<h3>h3</h3>
	<canvas id="canvas_b" onclick="window.open('/?q=b'); return false;" color=black ></canvas>
	<canvas id="canvas_w" onclick="window.open('/?q=w'); return false;" color=white ></canvas>
	<canvas id="canvas_m" onclick="window.open('/?q=m'); return false;" color=maize ></canvas>
	-->
	<hr color=white>
	<hr color=black>
	<hr color=white>
	<hr color=black>
	<hr color=black>
	<hr color=white>
	<hr color=red>
	<hr color=blue>
<!--
	<img src="/imgs/btn/koeye_handhither.gif" onclick="document.location.href='/?handhither'; return false;">	
	-->


<hr color=yellow>
<hr color=black>
<hr color=yellow>
<hr color=black>
<hr color=yellow>
<!--
	<style id="style_videobox">
//		div {
		div_video {
			position: absolute;
			top: 50%;
			transform: translate(-50%,-50%);
			width: 480px;
			height: 380px;
			border-radius: 10px;
			background-color: #eee;
			background-image: linear-gradient(to bottom, rgba(0,0,0,0), rgba(0,0,0,0.1));
			}

		.hidden {left: -50%;}
		.showing {left: 50%;}

//		div video {
		div_video video {
			display: block;
			width: 400px;
			margin: 40px auto;
			}

		</style>
	-->

	<hr color=red>
	<hr color=white>
	<hr color=blue>
<!--
	<button>Display video</button>
	<div_video id="div_videobox" class="hidden">
		<video id="video_videobox">
		        <source src="/index1_avril.mp4" type="video/mp4">
			<source src="/index1_avril.webm" type="video/webm">
			<p>access_logged <a href="/index1_avril.mp4"></a>.</p>
			</video>
		</div>
	-->
	<hr color=red>
	<hr color=white>
	<hr color=blue>


	<button id="button" ></button>
	<div id="div" ><h1>div</h1></div>
	<video id="video" ></video>
	<script id="script_videobox">
		function videobox(args) {
			const btn = document.querySelector('button');
			const videoBox = document.querySelector('div');
			const video = document.querySelector('video');

			btn.onclick = function() {
			videoBox.setAttribute('class','showing');
	
			videoBox.onclick = function() {
				videoBox.setAttribute('class','hidden');
				};

			video.onclick = function(e) {
				e.stopPropagation();
				video.play();
				};
			}
		</script>



	<div id="div_yt_b" draggable="true><h1>div_yt_b</h1>
	<hr color=black>
	<hr color=white>
	<img src="/imgs/btn/kobubble.png"
		alt="leonard_cohen_slow_mp4"
		onclick="window.open('/kb/vid/jkwii/jkwiileonard_cohen_slow_audio.mp4');return false;"
			); return false;"
		height=100 border=0 >  
	&nbsp &nbsp &nbsp &nbsp
	<img src="/imgs/btn/kobubble.png"
		alt="test3_htm /kb/vid/jkwii/jkwiileonard_cohen_slow_audio.mp4"
		onclick="window.open('/av/show_videobox_slow.html?avid=/kb/vid/jkwii/jkwiileonard_cohen_slow_audio.mp4');return false;"
			); return false;"
		height=50 border=0 >  
	<hr color=white>
	<hr color=black>
	</div id="div_yt_b" draggable="true>


		<div id="div_tail">
			<h2>div_tail</h2>

				<a href="/notes.txt" target=_blank><img src=/imgs/gif/notes/giphy_notes10.gif height=100 border=0 alt="notes.txt"></a>
				<a href="/mobmin.html" class="popover" target=_blank>
					<img src="/imgs/btn/giphy_phone01.gif" width=100 height=100>
					</a>
				<a href="/index2big4most.html" class="popover" target=_blank>
					<img src="/imgs/btn/giphy_mouse01.gif" width=100 height=100>
					</a>

				<a href="/mobmax.html" class="popover" target=_blank>
					<img src="/imgs/btn/giphy_phone01.gif" width=100 height=100>
					</a>
				<a href="/find_jtfdc_mp4.txt" target=_blank>
					<img src=/imgs/gif/notes/giphy_notes08.gif height=100 border=0 alt="find_jtfdc_mp4">
					</a>
				</div>
			</div>


	<hr color=red>
	<hr color=red>
	<hr color=white>
	<hr color=blue>
	<div id="div_dd_w" draggable="true" ><h1>div_dd_w</h1>
	<div id="div_drop" ondrop="dropw1(event)" ondragover="allowDrop(event)">
		<img src="/gm/imgs/bg/bg_steel_linear.png" height=100 width=600>
		</div>
	<div id="div_drop0" ondrop="dropw1(event)" ondragover="allowDrop(event)">
		<img src="/gm/imgs/bg/bg_frax4d01.png" height=100 width=600>
		</div>
	<div id="div_drop1" ondrop="dropw1(event)" ondragover="allowDrop(event)">
		<img src="/gm/imgs/bg/bg_newton04a.png" height=100 width=600>
		</div>
	<div id="div_drop2" ondrop="dropw1(event)" ondragover="allowDrop(event)">
		<img src="/gm/imgs/bg/bg_newton04b.png" height=100 width=600>
		</div>



	<div id="div_dropw" ondrop="dropw(event)" ondragover="allowDrop(event)">
		<img src="/gm/imgs/bg/bg_newton06.png" height=100 width=600>
		</div>
	<div id="div_dropb" ondrop="dropb(event)" ondragover="allowDrop(event)">
		<img src="/gm/imgs/bg/bg_newton06a.png" height=100 width=600>
		</div>
	<div id="div_dropw1" ondrop="dropw1(event)" ondragover="allowDrop(event)">
		<img src="/gm/imgs/bg/bg_newton06b.png" height=100 width=600>
		</div>
	<div id="div_dropb1" ondrop="dropb1(event)" ondragover="allowDrop(event)">
		<img src="/gm/imgs/bg/bg_newton07a.png" height=100 width=600>
		</div>
	<div id="div_dropw2" ondrop="dropw2(event)" ondragover="allowDrop(event)">
		<img src="/gm/imgs/bg/bg_newton07b.png" height=100 width=600>
		</div>
	<div id="div_dropb2" ondrop="dropb2(event)" ondragover="allowDrop(event)">
		<img src="/gm/imgs/bg/bg_background1.png" height=100 width=600>
		</div>
	<hr color=red>
	<hr color=red>
	<hr color=red>
	<hr color=red>
	<img id="img_drop" src="/gm/imgs/btn/ko.png" ondrop="dropb2(event)" ondragover="allowDrop(event)" height=50>
	<img id="img_drop0" src="/gm/imgs/btn/koeye.png" ondrop="dropb2(event)" ondragover="allowDrop(event)" height=50>
	<img id="img_drop1" src="/gm/imgs/btn/koeyew.png" ondrop="dropb2(event)" ondragover="allowDrop(event)" height=50>
	<img id="img_drop2" src="/gm/imgs/btn/koeyeb.png" ondrop="dropb2(event)" ondragover="allowDrop(event)" height=50>
	<img id="img_dropw" src="/gm/imgs/btn/kiw.png" ondrop="dropb2(event)" ondragover="allowDrop(event)" height=50>
	<img id="img_dropb" src="/gm/imgs/btn/kib.png" ondrop="dropb2(event)" ondragover="allowDrop(event)" height=50>
	<br>
	<br>
	<img id="drag12" src="/imgs/btn/kop12.png" draggable="true" ondragstart="drag(event)" height=50 >
	<img id="drag13" src="/imgs/btn/kop23.png" draggable="true" ondragstart="drag(event)" height=50 >
	<img id="drag14" src="/imgs/btn/kop34.png" draggable="true" ondragstart="drag(event)" height=50 >
<!--	<img id="drag15" src="/imgs/btn/kop14.png" draggable="true" ondragstart="drag(event)" height=50 >  -->
	<br>
	<img id="img_dropw1" src="/gm/imgs/btn/kop12.png" ondrop="dropb2(event)" ondragover="allowDrop(event)" height=50>
<!--	<img id="img_dropb1" src="/gm/imgs/btn/kop23.png" ondrop="dropb2(event)" ondragover="allowDrop(event)" height=50> -->
	<img id="img_dropb2" src="/gm/imgs/btn/kop14.png" ondrop="dropb2(event)" ondragover="allowDrop(event)" height=50>
	<img id="img_dropw2" src="/gm/imgs/btn/kop34.png" ondrop="dropb2(event)" ondragover="allowDrop(event)" height=50>

	<hr color=white>
	<img id="drag1" src="/imgs/btn/ko.png" draggable="true" ondragstart="drag(event)" height=50 >
	<img id="drag3" src="/imgs/btn/koeye.png" draggable="true" ondragstart="drag(event)" height=50 >
	<img id="drag4" src="/imgs/btn/koeyeb.png" draggable="true" ondragstart="drag(event)" height=50 >
	<img id="drag5" src="/imgs/btn/koeyew.png" draggable="true" ondragstart="drag(event)" height=50 >
	<img id="drag2" src="/imgs/btn/ok.png" draggable="true" ondragstart="drag(event)" height=50 >
	<br>
	<br>
	<img id="drag8" src="/imgs/btn/kop1.png" draggable="true" ondragstart="drag(event)" height=50 >
	<img id="drag9" src="/imgs/btn/kop2.png" draggable="true" ondragstart="drag(event)" height=50 >
	<img id="drag10" src="/imgs/btn/kop3.png" draggable="true" ondragstart="drag(event)" height=50 >
	<img id="drag11" src="/imgs/btn/kop4.png" draggable="true" ondragstart="drag(event)" height=50 >
	<br>
	<img id="drag16" src="/imgs/btn/kop1234.png" draggable="true" ondragstart="drag(event)" height=50 >
	</div id="div_dd_tail_w"  >
	
	<script id="script_drop">
		function drop(e) {
//			var e_id=e.getAttribute('id');
//			var eid = e.attribute("id");
//			var e_id=e.getAttribute("id");
			alert( "MSG_1000 drop e="+e);
			}
		function drop0(e) {
			alert( "MSG_1000 drop0 e="+e);
			}
		function drop1(e) {
			alert( "MSG_1000 drop1 e="+e);
			}
		function drop2(e) {
			alert( "MSG_1000 drop2 e="+e);
			}
		function dropb(e) {
			alert( "MSG_1000 dropb e="+e);
			}
		function dropw(e) {
			alert( "MSG_1000 dropw e="+e);
			}
		function dropb1(e) {
			alert( "MSG_1000 drob1 e="+e);
			}
		function dropw1(e) {
			alert( "MSG_1000 dropw1 e="+e);
			}
		function dropb2(e) {
			alert( "MSG_1000 dropb2 e="+e);
			}
		function dropw2(e) {
			alert( "MSG_1000 dropw2 e="+e);
			}
		</script>
	

	<div id="div_form" hidden>
		<h1>div_form</h1>
		<form id="form" >
			<div id="div_form_fname">
				<label for="fname">First name: </label>
				<input id="fname" type="text">
				</div>
			<div id="div_form_lname">
				<label for="lname">Last name: </label>
				<input id="lname" type="text">
				</div>
			<div id="div_form_submit">
				<input id="submit" type="submit">
				</div>
			</form>
		<p></p>
		</div>

	<script id="script_form">
		const form = document.querySelector('form');
		const fname = document.getElementById('fname');
		const lname = document.getElementById('lname');
		const para = document.querySelector('p');

		form.onsubmit = function(e) {
			if (fname.value === '' || lname.value === '') {
				e.preventDefault();
				para.textContent = 'both';
				}
			}
		</script>


<!--	</center> -->
	<div id="div_btn_hideshow_b" ><h3>div_btn_hideshow_b</h3></div>
	<div id="div_buttons_hideshow_b"><h3>div_buttons_hideshow_b</h3></div>

	<div id="div_kogrids_b"></div>


<!--	<script src='/fb/extras/jquery.min.1.7.js'></script>	-->
<!--	<script src='/fb/extras/modnizr.2.5.3.min.js'></script>	-->
<!--	<script src='/fb/lib/hash.js'></script>	-->
<!--	<script src='/fb/lib/turn_html4.js'></script> -->
<!--	<script src='/fb/lib/zoom.js'></script>	-->
<!--	<script src='/fb/html/magazine/js/magazine.js'></script>	-->
<!--	<script src='data:/text/plain;base64,LyoKICogTWFnYXppbmUgc2FtcGxlCiovCgpmdW5jdGlvbiBhZGRQYWdlKHBhZ2UsIGJvb2spIHsKCgl2YXIgaWQsIHBhZ2VzID0gYm9vay50dXJuKCdwYWdlcycpOwoKCS8vIENyZWF0ZSBhIG5ldyBlbGVtZW50IGZvciB0aGlzIHBhZ2UKCXZhciBlbGVtZW50ID0gJCgnPGRpdiAvPicsIHt9KTsKCgkvLyBBZGQgdGhlIHBhZ2UgdG8gdGhlIGZsaXBib29rCglpZiAoYm9vay50dXJuKCdhZGRQYWdlJywgZWxlbWVudCwgcGFnZSkpIHsKCgkJLy8gQWRkIHRoZSBpbml0aWFsIEhUTUwKCQkvLyBJdCB3aWxsIGNvbnRhaW4gYSBsb2FkZXIgaW5kaWNhdG9yIGFuZCBhIGdyYWRpZW50CgkJZWxlbWVudC5odG1sKCc8ZGl2IGNsYXNzPSJncmFkaWVudCI+PC9kaXY+PGRpdiBjbGFzcz0ibG9hZGVyIj48L2Rpdj4nKTsKCgkJLy8gTG9hZCB0aGUgcGFnZQoJCWxvYWRQYWdlKHBhZ2UsIGVsZW1lbnQpOwoJfQoKfQoKZnVuY3Rpb24gbG9hZFBhZ2UocGFnZSwgcGFnZUVsZW1lbnQpIHsKCgkvLyBDcmVhdGUgYW4gaW1hZ2UgZWxlbWVudAoKCXZhciBpbWcgPSAkKCc8aW1nIC8+Jyk7CgoJaW1nLm1vdXNlZG93bihmdW5jdGlvbihlKSB7CgkJZS5wcmV2ZW50RGVmYXVsdCgpOwoJfSk7CgoJaW1nLmxvYWQoZnVuY3Rpb24oKSB7CgkJCgkJLy8gU2V0IHRoZSBzaXplCgkJJCh0aGlzKS5jc3Moe3dpZHRoOiAnMTAwJScsIGhlaWdodDogJzEwMCUnfSk7CgoJCS8vIEFkZCB0aGUgaW1hZ2UgdG8gdGhlIHBhZ2UgYWZ0ZXIgbG9hZGVkCgoJCSQodGhpcykuYXBwZW5kVG8ocGFnZUVsZW1lbnQpOwoKCQkvLyBSZW1vdmUgdGhlIGxvYWRlciBpbmRpY2F0b3IKCQkKCQlwYWdlRWxlbWVudC5maW5kKCcubG9hZGVyJykucmVtb3ZlKCk7Cgl9KTsKCgkvLyBMb2FkIHRoZSBwYWdlCgoJaW1nLmF0dHIoJ3NyYycsICdwYWdlcy8nICsgIHBhZ2UgKyAnLmpwZycpOwoKCWxvYWRSZWdpb25zKHBhZ2UsIHBhZ2VFbGVtZW50KTsKCn0KCi8vIFpvb20gaW4gLyBab29tIG91dAoKZnVuY3Rpb24gem9vbVRvKGV2ZW50KSB7CgoJCXNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CgkJCWlmICgkKCcubWFnYXppbmUtdmlld3BvcnQnKS5kYXRhKCkucmVnaW9uQ2xpY2tlZCkgewoJCQkJJCgnLm1hZ2F6aW5lLXZpZXdwb3J0JykuZGF0YSgpLnJlZ2lvbkNsaWNrZWQgPSBmYWxzZTsKCQkJfSBlbHNlIHsKCQkJCWlmICgkKCcubWFnYXppbmUtdmlld3BvcnQnKS56b29tKCd2YWx1ZScpPT0xKSB7CgkJCQkJJCgnLm1hZ2F6aW5lLXZpZXdwb3J0Jykuem9vbSgnem9vbUluJywgZXZlbnQpOwoJCQkJfSBlbHNlIHsKCQkJCQkkKCcubWFnYXppbmUtdmlld3BvcnQnKS56b29tKCd6b29tT3V0Jyk7CgkJCQl9CgkJCX0KCQl9LCAxKTsKCn0KCgoKLy8gTG9hZCByZWdpb25zCgpmdW5jdGlvbiBsb2FkUmVnaW9ucyhwYWdlLCBlbGVtZW50KSB7CgoJJC5nZXRKU09OKCdwYWdlcy8nK3BhZ2UrJy1yZWdpb25zLmpzb24nKS4KCQlkb25lKGZ1bmN0aW9uKGRhdGEpIHsKCgkJCSQuZWFjaChkYXRhLCBmdW5jdGlvbihrZXksIHJlZ2lvbikgewoJCQkJYWRkUmVnaW9uKHJlZ2lvbiwgZWxlbWVudCk7CgkJCX0pOwoJCX0pOwp9CgovLyBBZGQgcmVnaW9uCgpmdW5jdGlvbiBhZGRSZWdpb24ocmVnaW9uLCBwYWdlRWxlbWVudCkgewoJCgl2YXIgcmVnID0gJCgnPGRpdiAvPicsIHsnY2xhc3MnOiAncmVnaW9uICAnICsgcmVnaW9uWydjbGFzcyddfSksCgkJb3B0aW9ucyA9ICQoJy5tYWdhemluZScpLnR1cm4oJ29wdGlvbnMnKSwKCQlwYWdlV2lkdGggPSBvcHRpb25zLndpZHRoLzIsCgkJcGFnZUhlaWdodCA9IG9wdGlvbnMuaGVpZ2h0OwoKCXJlZy5jc3MoewoJCXRvcDogTWF0aC5yb3VuZChyZWdpb24ueS9wYWdlSGVpZ2h0KjEwMCkrJyUnLAoJCWxlZnQ6IE1hdGgucm91bmQocmVnaW9uLngvcGFnZVdpZHRoKjEwMCkrJyUnLAoJCXdpZHRoOiBNYXRoLnJvdW5kKHJlZ2lvbi53aWR0aC9wYWdlV2lkdGgqMTAwKSsnJScsCgkJaGVpZ2h0OiBNYXRoLnJvdW5kKHJlZ2lvbi5oZWlnaHQvcGFnZUhlaWdodCoxMDApKyclJwoJfSkuYXR0cigncmVnaW9uLWRhdGEnLCAkLnBhcmFtKHJlZ2lvbi5kYXRhfHwnJykpOwoKCglyZWcuYXBwZW5kVG8ocGFnZUVsZW1lbnQpOwp9CgovLyBQcm9jZXNzIGNsaWNrIG9uIGEgcmVnaW9uCgpmdW5jdGlvbiByZWdpb25DbGljayhldmVudCkgewoKCXZhciByZWdpb24gPSAkKGV2ZW50LnRhcmdldCk7CgoJaWYgKHJlZ2lvbi5oYXNDbGFzcygncmVnaW9uJykpIHsKCgkJJCgnLm1hZ2F6aW5lLXZpZXdwb3J0JykuZGF0YSgpLnJlZ2lvbkNsaWNrZWQgPSB0cnVlOwoJCQoJCXNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CgkJCSQoJy5tYWdhemluZS12aWV3cG9ydCcpLmRhdGEoKS5yZWdpb25DbGlja2VkID0gZmFsc2U7CgkJfSwgMTAwKTsKCQkKCQl2YXIgcmVnaW9uVHlwZSA9ICQudHJpbShyZWdpb24uYXR0cignY2xhc3MnKS5yZXBsYWNlKCdyZWdpb24nLCAnJykpOwoKCQlyZXR1cm4gcHJvY2Vzc1JlZ2lvbihyZWdpb24sIHJlZ2lvblR5cGUpOwoKCX0KCn0KCi8vIFByb2Nlc3MgdGhlIGRhdGEgb2YgZXZlcnkgcmVnaW9uCgpmdW5jdGlvbiBwcm9jZXNzUmVnaW9uKHJlZ2lvbiwgcmVnaW9uVHlwZSkgewoKCWRhdGEgPSBkZWNvZGVQYXJhbXMocmVnaW9uLmF0dHIoJ3JlZ2lvbi1kYXRhJykpOwoKCXN3aXRjaCAocmVnaW9uVHlwZSkgewoJCWNhc2UgJ2xpbmsnIDoKCgkJCXdpbmRvdy5vcGVuKGRhdGEudXJsKTsKCgkJYnJlYWs7CgkJY2FzZSAnem9vbScgOgoKCQkJdmFyIHJlZ2lvbk9mZnNldCA9IHJlZ2lvbi5vZmZzZXQoKSwKCQkJCXZpZXdwb3J0T2Zmc2V0ID0gJCgnLm1hZ2F6aW5lLXZpZXdwb3J0Jykub2Zmc2V0KCksCgkJCQlwb3MgPSB7CgkJCQkJeDogcmVnaW9uT2Zmc2V0LmxlZnQtdmlld3BvcnRPZmZzZXQubGVmdCwKCQkJCQl5OiByZWdpb25PZmZzZXQudG9wLXZpZXdwb3J0T2Zmc2V0LnRvcAoJCQkJfTsKCgkJCSQoJy5tYWdhemluZS12aWV3cG9ydCcpLnpvb20oJ3pvb21JbicsIHBvcyk7CgoJCWJyZWFrOwoJCWNhc2UgJ3RvLXBhZ2UnIDoKCgkJCSQoJy5tYWdhemluZScpLnR1cm4oJ3BhZ2UnLCBkYXRhLnBhZ2UpOwoKCQlicmVhazsKCX0KCn0KCi8vIExvYWQgbGFyZ2UgcGFnZQoKZnVuY3Rpb24gbG9hZExhcmdlUGFnZShwYWdlLCBwYWdlRWxlbWVudCkgewoJCgl2YXIgaW1nID0gJCgnPGltZyAvPicpOwoKCWltZy5sb2FkKGZ1bmN0aW9uKCkgewoKCQl2YXIgcHJldkltZyA9IHBhZ2VFbGVtZW50LmZpbmQoJ2ltZycpOwoJCSQodGhpcykuY3NzKHt3aWR0aDogJzEwMCUnLCBoZWlnaHQ6ICcxMDAlJ30pOwoJCSQodGhpcykuYXBwZW5kVG8ocGFnZUVsZW1lbnQpOwoJCXByZXZJbWcucmVtb3ZlKCk7CgkJCgl9KTsKCgkvLyBMb2FkbmV3IHBhZ2UKCQoJaW1nLmF0dHIoJ3NyYycsICdwYWdlcy8nICsgIHBhZ2UgKyAnLWxhcmdlLmpwZycpOwp9CgovLyBMb2FkIHNtYWxsIHBhZ2UKCmZ1bmN0aW9uIGxvYWRTbWFsbFBhZ2UocGFnZSwgcGFnZUVsZW1lbnQpIHsKCQoJdmFyIGltZyA9IHBhZ2VFbGVtZW50LmZpbmQoJ2ltZycpOwoKCWltZy5jc3Moe3dpZHRoOiAnMTAwJScsIGhlaWdodDogJzEwMCUnfSk7CgoJaW1nLnVuYmluZCgnbG9hZCcpOwoJLy8gTG9hZG5ldyBwYWdlCgoJaW1nLmF0dHIoJ3NyYycsICdwYWdlcy8nICsgIHBhZ2UgKyAnLmpwZycpOwp9CgovLyBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD0xMjg0ODgKCmZ1bmN0aW9uIGlzQ2hyb21lKCkgewoKCXJldHVybiBuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ0Nocm9tZScpIT0tMTsKCn0KCmZ1bmN0aW9uIGRpc2FibGVDb250cm9scyhwYWdlKSB7CgkJaWYgKHBhZ2U9PTEpCgkJCSQoJy5wcmV2aW91cy1idXR0b24nKS5oaWRlKCk7CgkJZWxzZQoJCQkkKCcucHJldmlvdXMtYnV0dG9uJykuc2hvdygpOwoJCQkJCQoJCWlmIChwYWdlPT0kKCcubWFnYXppbmUnKS50dXJuKCdwYWdlcycpKQoJCQkkKCcubmV4dC1idXR0b24nKS5oaWRlKCk7CgkJZWxzZQoJCQkkKCcubmV4dC1idXR0b24nKS5zaG93KCk7Cn0KCi8vIFNldCB0aGUgd2lkdGggYW5kIGhlaWdodCBmb3IgdGhlIHZpZXdwb3J0CgpmdW5jdGlvbiByZXNpemVWaWV3cG9ydCgpIHsKCgl2YXIgd2lkdGggPSAkKHdpbmRvdykud2lkdGgoKSwKCQloZWlnaHQgPSAkKHdpbmRvdykuaGVpZ2h0KCksCgkJb3B0aW9ucyA9ICQoJy5tYWdhemluZScpLnR1cm4oJ29wdGlvbnMnKTsKCgkkKCcubWFnYXppbmUnKS5yZW1vdmVDbGFzcygnYW5pbWF0ZWQnKTsKCgkkKCcubWFnYXppbmUtdmlld3BvcnQnKS5jc3MoewoJCXdpZHRoOiB3aWR0aCwKCQloZWlnaHQ6IGhlaWdodAoJfSkuCgl6b29tKCdyZXNpemUnKTsKCgoJaWYgKCQoJy5tYWdhemluZScpLnR1cm4oJ3pvb20nKT09MSkgewoJCXZhciBib3VuZCA9IGNhbGN1bGF0ZUJvdW5kKHsKCQkJd2lkdGg6IG9wdGlvbnMud2lkdGgsCgkJCWhlaWdodDogb3B0aW9ucy5oZWlnaHQsCgkJCWJvdW5kV2lkdGg6IE1hdGgubWluKG9wdGlvbnMud2lkdGgsIHdpZHRoKSwKCQkJYm91bmRIZWlnaHQ6IE1hdGgubWluKG9wdGlvbnMuaGVpZ2h0LCBoZWlnaHQpCgkJfSk7CgoJCWlmIChib3VuZC53aWR0aCUyIT09MCkKCQkJYm91bmQud2lkdGgtPTE7CgoJCQkKCQlpZiAoYm91bmQud2lkdGghPSQoJy5tYWdhemluZScpLndpZHRoKCkgfHwgYm91bmQuaGVpZ2h0IT0kKCcubWFnYXppbmUnKS5oZWlnaHQoKSkgewoKCQkJJCgnLm1hZ2F6aW5lJykudHVybignc2l6ZScsIGJvdW5kLndpZHRoLCBib3VuZC5oZWlnaHQpOwoKCQkJaWYgKCQoJy5tYWdhemluZScpLnR1cm4oJ3BhZ2UnKT09MSkKCQkJCSQoJy5tYWdhemluZScpLnR1cm4oJ3BlZWwnLCAnYnInKTsKCgkJCSQoJy5uZXh0LWJ1dHRvbicpLmNzcyh7aGVpZ2h0OiBib3VuZC5oZWlnaHQsIGJhY2tncm91bmRQb3NpdGlvbjogJy0zOHB4ICcrKGJvdW5kLmhlaWdodC8yLTMyLzIpKydweCd9KTsKCQkJJCgnLnByZXZpb3VzLWJ1dHRvbicpLmNzcyh7aGVpZ2h0OiBib3VuZC5oZWlnaHQsIGJhY2tncm91bmRQb3NpdGlvbjogJy00cHggJysoYm91bmQuaGVpZ2h0LzItMzIvMikrJ3B4J30pOwoJCX0KCgkJJCgnLm1hZ2F6aW5lJykuY3NzKHt0b3A6IC1ib3VuZC5oZWlnaHQvMiwgbGVmdDogLWJvdW5kLndpZHRoLzJ9KTsKCX0KCgl2YXIgbWFnYXppbmVPZmZzZXQgPSAkKCcubWFnYXppbmUnKS5vZmZzZXQoKSwKCQlib3VuZEggPSBoZWlnaHQgLSBtYWdhemluZU9mZnNldC50b3AgLSAkKCcubWFnYXppbmUnKS5oZWlnaHQoKSwKCQltYXJnaW5Ub3AgPSAoYm91bmRIIC0gJCgnLnRodW1ibmFpbHMgPiBkaXYnKS5oZWlnaHQoKSkgLyAyOwoKCWlmIChtYXJnaW5Ub3A8MCkgewoJCSQoJy50aHVtYm5haWxzJykuY3NzKHtoZWlnaHQ6MX0pOwoJfSBlbHNlIHsKCQkkKCcudGh1bWJuYWlscycpLmNzcyh7aGVpZ2h0OiBib3VuZEh9KTsKCQkkKCcudGh1bWJuYWlscyA+IGRpdicpLmNzcyh7bWFyZ2luVG9wOiBtYXJnaW5Ub3B9KTsKCX0KCglpZiAobWFnYXppbmVPZmZzZXQudG9wPCQoJy5tYWRlJykuaGVpZ2h0KCkpCgkJJCgnLm1hZGUnKS5oaWRlKCk7CgllbHNlCgkJJCgnLm1hZGUnKS5zaG93KCk7CgoJJCgnLm1hZ2F6aW5lJykuYWRkQ2xhc3MoJ2FuaW1hdGVkJyk7CgkKfQoKCi8vIE51bWJlciBvZiB2aWV3cyBpbiBhIGZsaXBib29rCgpmdW5jdGlvbiBudW1iZXJPZlZpZXdzKGJvb2spIHsKCXJldHVybiBib29rLnR1cm4oJ3BhZ2VzJykgLyAyICsgMTsKfQoKLy8gQ3VycmVudCB2aWV3IGluIGEgZmxpcGJvb2sKCmZ1bmN0aW9uIGdldFZpZXdOdW1iZXIoYm9vaywgcGFnZSkgewoJcmV0dXJuIHBhcnNlSW50KChwYWdlIHx8IGJvb2sudHVybigncGFnZScpKS8yICsgMSwgMTApOwp9CgpmdW5jdGlvbiBtb3ZlQmFyKHllcykgewoJaWYgKE1vZGVybml6ciAmJiBNb2Rlcm5penIuY3NzdHJhbnNmb3JtcykgewoJCSQoJyNzbGlkZXIgLnVpLXNsaWRlci1oYW5kbGUnKS5jc3Moe3pJbmRleDogeWVzID8gLTEgOiAxMDAwMH0pOwoJfQp9CgpmdW5jdGlvbiBzZXRQcmV2aWV3KHZpZXcpIHsKCgl2YXIgcHJldmlld1dpZHRoID0gMTEyLAoJCXByZXZpZXdIZWlnaHQgPSA3MywKCQlwcmV2aWV3U3JjID0gJ3BhZ2VzL3ByZXZpZXcuanBnJywKCQlwcmV2aWV3ID0gJChfdGh1bWJQcmV2aWV3LmNoaWxkcmVuKCc6Zmlyc3QnKSksCgkJbnVtUGFnZXMgPSAodmlldz09MSB8fCB2aWV3PT0kKCcjc2xpZGVyJykuc2xpZGVyKCdvcHRpb24nLCAnbWF4JykpID8gMSA6IDIsCgkJd2lkdGggPSAobnVtUGFnZXM9PTEpID8gcHJldmlld1dpZHRoLzIgOiBwcmV2aWV3V2lkdGg7CgoJX3RodW1iUHJldmlldy4KCQlhZGRDbGFzcygnbm8tdHJhbnNpdGlvbicpLgoJCWNzcyh7d2lkdGg6IHdpZHRoICsgMTUsCgkJCWhlaWdodDogcHJldmlld0hlaWdodCArIDE1LAoJCQl0b3A6IC1wcmV2aWV3SGVpZ2h0IC0gMzAsCgkJCWxlZnQ6ICgkKCQoJyNzbGlkZXInKS5jaGlsZHJlbignOmZpcnN0JykpLndpZHRoKCkgLSB3aWR0aCAtIDE1KS8yCgkJfSk7CgoJcHJldmlldy5jc3MoewoJCXdpZHRoOiB3aWR0aCwKCQloZWlnaHQ6IHByZXZpZXdIZWlnaHQKCX0pOwoKCWlmIChwcmV2aWV3LmNzcygnYmFja2dyb3VuZC1pbWFnZScpPT09JycgfHwKCQlwcmV2aWV3LmNzcygnYmFja2dyb3VuZC1pbWFnZScpPT0nbm9uZScpIHsKCgkJcHJldmlldy5jc3Moe2JhY2tncm91bmRJbWFnZTogJ3VybCgnICsgcHJldmlld1NyYyArICcpJ30pOwoKCQlzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7CgkJCV90aHVtYlByZXZpZXcucmVtb3ZlQ2xhc3MoJ25vLXRyYW5zaXRpb24nKTsKCQl9LCAwKTsKCgl9CgoJcHJldmlldy5jc3Moe2JhY2tncm91bmRQb3NpdGlvbjoKCQknMHB4IC0nKygodmlldy0xKSpwcmV2aWV3SGVpZ2h0KSsncHgnCgl9KTsKfQoKLy8gV2lkdGggb2YgdGhlIGZsaXBib29rIHdoZW4gem9vbWVkIGluCgpmdW5jdGlvbiBsYXJnZU1hZ2F6aW5lV2lkdGgoKSB7CgkKCXJldHVybiAyMjE0OwoKfQoKLy8gZGVjb2RlIFVSTCBQYXJhbWV0ZXJzCgpmdW5jdGlvbiBkZWNvZGVQYXJhbXMoZGF0YSkgewoKCXZhciBwYXJ0cyA9IGRhdGEuc3BsaXQoJyYnKSwgZCwgb2JqID0ge307CgoJZm9yICh2YXIgaSA9MDsgaTxwYXJ0cy5sZW5ndGg7IGkrKykgewoJCWQgPSBwYXJ0c1tpXS5zcGxpdCgnPScpOwoJCW9ialtkZWNvZGVVUklDb21wb25lbnQoZFswXSldID0gZGVjb2RlVVJJQ29tcG9uZW50KGRbMV0pOwoJfQoKCXJldHVybiBvYmo7Cn0KCi8vIENhbGN1bGF0ZSB0aGUgd2lkdGggYW5kIGhlaWdodCBvZiBhIHNxdWFyZSB3aXRoaW4gYW5vdGhlciBzcXVhcmUKCmZ1bmN0aW9uIGNhbGN1bGF0ZUJvdW5kKGQpIHsKCQoJdmFyIGJvdW5kID0ge3dpZHRoOiBkLndpZHRoLCBoZWlnaHQ6IGQuaGVpZ2h0fTsKCglpZiAoYm91bmQud2lkdGg+ZC5ib3VuZFdpZHRoIHx8IGJvdW5kLmhlaWdodD5kLmJvdW5kSGVpZ2h0KSB7CgkJCgkJdmFyIHJlbCA9IGJvdW5kLndpZHRoL2JvdW5kLmhlaWdodDsKCgkJaWYgKGQuYm91bmRXaWR0aC9yZWw+ZC5ib3VuZEhlaWdodCAmJiBkLmJvdW5kSGVpZ2h0KnJlbDw9ZC5ib3VuZFdpZHRoKSB7CgkJCQoJCQlib3VuZC53aWR0aCA9IE1hdGgucm91bmQoZC5ib3VuZEhlaWdodCpyZWwpOwoJCQlib3VuZC5oZWlnaHQgPSBkLmJvdW5kSGVpZ2h0OwoKCQl9IGVsc2UgewoJCQkKCQkJYm91bmQud2lkdGggPSBkLmJvdW5kV2lkdGg7CgkJCWJvdW5kLmhlaWdodCA9IE1hdGgucm91bmQoZC5ib3VuZFdpZHRoL3JlbCk7CgkJCgkJfQoJfQoJCQoJcmV0dXJuIGJvdW5kOwp9'></script> -->

	<script id="fb_extras_jquery_min_17_js" src='data:/text/plain;base64,LyohIGpRdWVyeSB2MS43IGpxdWVyeS5jb20gfCBqcXVlcnkub3JnL2xpY2Vuc2UgKi8KKGZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gY0EoYSl7cmV0dXJuIGYuaXNXaW5kb3coYSk/YTphLm5vZGVUeXBlPT09OT9hLmRlZmF1bHRWaWV3fHxhLnBhcmVudFdpbmRvdzohMX1mdW5jdGlvbiBjeChhKXtpZighY21bYV0pe3ZhciBiPWMuYm9keSxkPWYoIjwiK2ErIj4iKS5hcHBlbmRUbyhiKSxlPWQuY3NzKCJkaXNwbGF5Iik7ZC5yZW1vdmUoKTtpZihlPT09Im5vbmUifHxlPT09IiIpe2NufHwoY249Yy5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKSxjbi5mcmFtZUJvcmRlcj1jbi53aWR0aD1jbi5oZWlnaHQ9MCksYi5hcHBlbmRDaGlsZChjbik7aWYoIWNvfHwhY24uY3JlYXRlRWxlbWVudCljbz0oY24uY29udGVudFdpbmRvd3x8Y24uY29udGVudERvY3VtZW50KS5kb2N1bWVudCxjby53cml0ZSgoYy5jb21wYXRNb2RlPT09IkNTUzFDb21wYXQiPyI8IWRvY3R5cGUgaHRtbD4iOiIiKSsiPGh0bWw+PGJvZHk+IiksY28uY2xvc2UoKTtkPWNvLmNyZWF0ZUVsZW1lbnQoYSksY28uYm9keS5hcHBlbmRDaGlsZChkKSxlPWYuY3NzKGQsImRpc3BsYXkiKSxiLnJlbW92ZUNoaWxkKGNuKX1jbVthXT1lfXJldHVybiBjbVthXX1mdW5jdGlvbiBjdyhhLGIpe3ZhciBjPXt9O2YuZWFjaChjcy5jb25jYXQuYXBwbHkoW10sY3Muc2xpY2UoMCxiKSksZnVuY3Rpb24oKXtjW3RoaXNdPWF9KTtyZXR1cm4gY31mdW5jdGlvbiBjdigpe2N0PWJ9ZnVuY3Rpb24gY3UoKXtzZXRUaW1lb3V0KGN2LDApO3JldHVybiBjdD1mLm5vdygpfWZ1bmN0aW9uIGNsKCl7dHJ5e3JldHVybiBuZXcgYS5BY3RpdmVYT2JqZWN0KCJNaWNyb3NvZnQuWE1MSFRUUCIpfWNhdGNoKGIpe319ZnVuY3Rpb24gY2soKXt0cnl7cmV0dXJuIG5ldyBhLlhNTEh0dHBSZXF1ZXN0fWNhdGNoKGIpe319ZnVuY3Rpb24gY2UoYSxjKXthLmRhdGFGaWx0ZXImJihjPWEuZGF0YUZpbHRlcihjLGEuZGF0YVR5cGUpKTt2YXIgZD1hLmRhdGFUeXBlcyxlPXt9LGcsaCxpPWQubGVuZ3RoLGosaz1kWzBdLGwsbSxuLG8scDtmb3IoZz0xO2c8aTtnKyspe2lmKGc9PT0xKWZvcihoIGluIGEuY29udmVydGVycyl0eXBlb2YgaD09InN0cmluZyImJihlW2gudG9Mb3dlckNhc2UoKV09YS5jb252ZXJ0ZXJzW2hdKTtsPWssaz1kW2ddO2lmKGs9PT0iKiIpaz1sO2Vsc2UgaWYobCE9PSIqIiYmbCE9PWspe209bCsiICIrayxuPWVbbV18fGVbIiogIitrXTtpZighbil7cD1iO2ZvcihvIGluIGUpe2o9by5zcGxpdCgiICIpO2lmKGpbMF09PT1sfHxqWzBdPT09IioiKXtwPWVbalsxXSsiICIra107aWYocCl7bz1lW29dLG89PT0hMD9uPXA6cD09PSEwJiYobj1vKTticmVha319fX0hbiYmIXAmJmYuZXJyb3IoIk5vIGNvbnZlcnNpb24gZnJvbSAiK20ucmVwbGFjZSgiICIsIiB0byAiKSksbiE9PSEwJiYoYz1uP24oYyk6cChvKGMpKSl9fXJldHVybiBjfWZ1bmN0aW9uIGNkKGEsYyxkKXt2YXIgZT1hLmNvbnRlbnRzLGY9YS5kYXRhVHlwZXMsZz1hLnJlc3BvbnNlRmllbGRzLGgsaSxqLGs7Zm9yKGkgaW4gZylpIGluIGQmJihjW2dbaV1dPWRbaV0pO3doaWxlKGZbMF09PT0iKiIpZi5zaGlmdCgpLGg9PT1iJiYoaD1hLm1pbWVUeXBlfHxjLmdldFJlc3BvbnNlSGVhZGVyKCJjb250ZW50LXR5cGUiKSk7aWYoaClmb3IoaSBpbiBlKWlmKGVbaV0mJmVbaV0udGVzdChoKSl7Zi51bnNoaWZ0KGkpO2JyZWFrfWlmKGZbMF1pbiBkKWo9ZlswXTtlbHNle2ZvcihpIGluIGQpe2lmKCFmWzBdfHxhLmNvbnZlcnRlcnNbaSsiICIrZlswXV0pe2o9aTticmVha31rfHwoaz1pKX1qPWp8fGt9aWYoail7aiE9PWZbMF0mJmYudW5zaGlmdChqKTtyZXR1cm4gZFtqXX19ZnVuY3Rpb24gY2MoYSxiLGMsZCl7aWYoZi5pc0FycmF5KGIpKWYuZWFjaChiLGZ1bmN0aW9uKGIsZSl7Y3x8YkcudGVzdChhKT9kKGEsZSk6Y2MoYSsiWyIrKHR5cGVvZiBlPT0ib2JqZWN0Inx8Zi5pc0FycmF5KGUpP2I6IiIpKyJdIixlLGMsZCl9KTtlbHNlIGlmKCFjJiZiIT1udWxsJiZ0eXBlb2YgYj09Im9iamVjdCIpZm9yKHZhciBlIGluIGIpY2MoYSsiWyIrZSsiXSIsYltlXSxjLGQpO2Vsc2UgZChhLGIpfWZ1bmN0aW9uIGNiKGEsYyl7dmFyIGQsZSxnPWYuYWpheFNldHRpbmdzLmZsYXRPcHRpb25zfHx7fTtmb3IoZCBpbiBjKWNbZF0hPT1iJiYoKGdbZF0/YTplfHwoZT17fSkpW2RdPWNbZF0pO2UmJmYuZXh0ZW5kKCEwLGEsZSl9ZnVuY3Rpb24gY2EoYSxjLGQsZSxmLGcpe2Y9Znx8Yy5kYXRhVHlwZXNbMF0sZz1nfHx7fSxnW2ZdPSEwO3ZhciBoPWFbZl0saT0wLGo9aD9oLmxlbmd0aDowLGs9YT09PWJWLGw7Zm9yKDtpPGomJihrfHwhbCk7aSsrKWw9aFtpXShjLGQsZSksdHlwZW9mIGw9PSJzdHJpbmciJiYoIWt8fGdbbF0/bD1iOihjLmRhdGFUeXBlcy51bnNoaWZ0KGwpLGw9Y2EoYSxjLGQsZSxsLGcpKSk7KGt8fCFsKSYmIWdbIioiXSYmKGw9Y2EoYSxjLGQsZSwiKiIsZykpO3JldHVybiBsfWZ1bmN0aW9uIGJfKGEpe3JldHVybiBmdW5jdGlvbihiLGMpe3R5cGVvZiBiIT0ic3RyaW5nIiYmKGM9YixiPSIqIik7aWYoZi5pc0Z1bmN0aW9uKGMpKXt2YXIgZD1iLnRvTG93ZXJDYXNlKCkuc3BsaXQoYlIpLGU9MCxnPWQubGVuZ3RoLGgsaSxqO2Zvcig7ZTxnO2UrKyloPWRbZV0saj0vXlwrLy50ZXN0KGgpLGomJihoPWguc3Vic3RyKDEpfHwiKiIpLGk9YVtoXT1hW2hdfHxbXSxpW2o/InVuc2hpZnQiOiJwdXNoIl0oYyl9fX1mdW5jdGlvbiBiRShhLGIsYyl7dmFyIGQ9Yj09PSJ3aWR0aCI/YS5vZmZzZXRXaWR0aDphLm9mZnNldEhlaWdodCxlPWI9PT0id2lkdGgiP2J6OmJBO2lmKGQ+MCl7YyE9PSJib3JkZXIiJiZmLmVhY2goZSxmdW5jdGlvbigpe2N8fChkLT1wYXJzZUZsb2F0KGYuY3NzKGEsInBhZGRpbmciK3RoaXMpKXx8MCksYz09PSJtYXJnaW4iP2QrPXBhcnNlRmxvYXQoZi5jc3MoYSxjK3RoaXMpKXx8MDpkLT1wYXJzZUZsb2F0KGYuY3NzKGEsImJvcmRlciIrdGhpcysiV2lkdGgiKSl8fDB9KTtyZXR1cm4gZCsicHgifWQ9YkIoYSxiLGIpO2lmKGQ8MHx8ZD09bnVsbClkPWEuc3R5bGVbYl18fDA7ZD1wYXJzZUZsb2F0KGQpfHwwLGMmJmYuZWFjaChlLGZ1bmN0aW9uKCl7ZCs9cGFyc2VGbG9hdChmLmNzcyhhLCJwYWRkaW5nIit0aGlzKSl8fDAsYyE9PSJwYWRkaW5nIiYmKGQrPXBhcnNlRmxvYXQoZi5jc3MoYSwiYm9yZGVyIit0aGlzKyJXaWR0aCIpKXx8MCksYz09PSJtYXJnaW4iJiYoZCs9cGFyc2VGbG9hdChmLmNzcyhhLGMrdGhpcykpfHwwKX0pO3JldHVybiBkKyJweCJ9ZnVuY3Rpb24gYnIoYSxiKXtiLnNyYz9mLmFqYXgoe3VybDpiLnNyYyxhc3luYzohMSxkYXRhVHlwZToic2NyaXB0In0pOmYuZ2xvYmFsRXZhbCgoYi50ZXh0fHxiLnRleHRDb250ZW50fHxiLmlubmVySFRNTHx8IiIpLnJlcGxhY2UoYmksIi8qJDAqLyIpKSxiLnBhcmVudE5vZGUmJmIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChiKX1mdW5jdGlvbiBicShhKXt2YXIgYj0oYS5ub2RlTmFtZXx8IiIpLnRvTG93ZXJDYXNlKCk7Yj09PSJpbnB1dCI/YnAoYSk6YiE9PSJzY3JpcHQiJiZ0eXBlb2YgYS5nZXRFbGVtZW50c0J5VGFnTmFtZSE9InVuZGVmaW5lZCImJmYuZ3JlcChhLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpLGJwKX1mdW5jdGlvbiBicChhKXtpZihhLnR5cGU9PT0iY2hlY2tib3gifHxhLnR5cGU9PT0icmFkaW8iKWEuZGVmYXVsdENoZWNrZWQ9YS5jaGVja2VkfWZ1bmN0aW9uIGJvKGEpe3JldHVybiB0eXBlb2YgYS5nZXRFbGVtZW50c0J5VGFnTmFtZSE9InVuZGVmaW5lZCI/YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpOnR5cGVvZiBhLnF1ZXJ5U2VsZWN0b3JBbGwhPSJ1bmRlZmluZWQiP2EucXVlcnlTZWxlY3RvckFsbCgiKiIpOltdfWZ1bmN0aW9uIGJuKGEsYil7dmFyIGM7aWYoYi5ub2RlVHlwZT09PTEpe2IuY2xlYXJBdHRyaWJ1dGVzJiZiLmNsZWFyQXR0cmlidXRlcygpLGIubWVyZ2VBdHRyaWJ1dGVzJiZiLm1lcmdlQXR0cmlidXRlcyhhKSxjPWIubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtpZihjPT09Im9iamVjdCIpYi5vdXRlckhUTUw9YS5vdXRlckhUTUw7ZWxzZSBpZihjIT09ImlucHV0Inx8YS50eXBlIT09ImNoZWNrYm94IiYmYS50eXBlIT09InJhZGlvIil7aWYoYz09PSJvcHRpb24iKWIuc2VsZWN0ZWQ9YS5kZWZhdWx0U2VsZWN0ZWQ7ZWxzZSBpZihjPT09ImlucHV0Inx8Yz09PSJ0ZXh0YXJlYSIpYi5kZWZhdWx0VmFsdWU9YS5kZWZhdWx0VmFsdWV9ZWxzZSBhLmNoZWNrZWQmJihiLmRlZmF1bHRDaGVja2VkPWIuY2hlY2tlZD1hLmNoZWNrZWQpLGIudmFsdWUhPT1hLnZhbHVlJiYoYi52YWx1ZT1hLnZhbHVlKTtiLnJlbW92ZUF0dHJpYnV0ZShmLmV4cGFuZG8pfX1mdW5jdGlvbiBibShhLGIpe2lmKGIubm9kZVR5cGU9PT0xJiYhIWYuaGFzRGF0YShhKSl7dmFyIGMsZCxlLGc9Zi5fZGF0YShhKSxoPWYuX2RhdGEoYixnKSxpPWcuZXZlbnRzO2lmKGkpe2RlbGV0ZSBoLmhhbmRsZSxoLmV2ZW50cz17fTtmb3IoYyBpbiBpKWZvcihkPTAsZT1pW2NdLmxlbmd0aDtkPGU7ZCsrKWYuZXZlbnQuYWRkKGIsYysoaVtjXVtkXS5uYW1lc3BhY2U/Ii4iOiIiKStpW2NdW2RdLm5hbWVzcGFjZSxpW2NdW2RdLGlbY11bZF0uZGF0YSl9aC5kYXRhJiYoaC5kYXRhPWYuZXh0ZW5kKHt9LGguZGF0YSkpfX1mdW5jdGlvbiBibChhLGIpe3JldHVybiBmLm5vZGVOYW1lKGEsInRhYmxlIik/YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGJvZHkiKVswXXx8YS5hcHBlbmRDaGlsZChhLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGJvZHkiKSk6YX1mdW5jdGlvbiBYKGEpe3ZhciBiPVkuc3BsaXQoIiAiKSxjPWEuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO2lmKGMuY3JlYXRlRWxlbWVudCl3aGlsZShiLmxlbmd0aCljLmNyZWF0ZUVsZW1lbnQoYi5wb3AoKSk7cmV0dXJuIGN9ZnVuY3Rpb24gVyhhLGIsYyl7Yj1ifHwwO2lmKGYuaXNGdW5jdGlvbihiKSlyZXR1cm4gZi5ncmVwKGEsZnVuY3Rpb24oYSxkKXt2YXIgZT0hIWIuY2FsbChhLGQsYSk7cmV0dXJuIGU9PT1jfSk7aWYoYi5ub2RlVHlwZSlyZXR1cm4gZi5ncmVwKGEsZnVuY3Rpb24oYSxkKXtyZXR1cm4gYT09PWI9PT1jfSk7aWYodHlwZW9mIGI9PSJzdHJpbmciKXt2YXIgZD1mLmdyZXAoYSxmdW5jdGlvbihhKXtyZXR1cm4gYS5ub2RlVHlwZT09PTF9KTtpZihSLnRlc3QoYikpcmV0dXJuIGYuZmlsdGVyKGIsZCwhYyk7Yj1mLmZpbHRlcihiLGQpfXJldHVybiBmLmdyZXAoYSxmdW5jdGlvbihhLGQpe3JldHVybiBmLmluQXJyYXkoYSxiKT49MD09PWN9KX1mdW5jdGlvbiBWKGEpe3JldHVybiFhfHwhYS5wYXJlbnROb2RlfHxhLnBhcmVudE5vZGUubm9kZVR5cGU9PT0xMX1mdW5jdGlvbiBOKCl7cmV0dXJuITB9ZnVuY3Rpb24gTSgpe3JldHVybiExfWZ1bmN0aW9uIG4oYSxiLGMpe3ZhciBkPWIrImRlZmVyIixlPWIrInF1ZXVlIixnPWIrIm1hcmsiLGg9Zi5fZGF0YShhLGQpO2gmJihjPT09InF1ZXVlInx8IWYuX2RhdGEoYSxlKSkmJihjPT09Im1hcmsifHwhZi5fZGF0YShhLGcpKSYmc2V0VGltZW91dChmdW5jdGlvbigpeyFmLl9kYXRhKGEsZSkmJiFmLl9kYXRhKGEsZykmJihmLnJlbW92ZURhdGEoYSxkLCEwKSxoLmZpcmUoKSl9LDApfWZ1bmN0aW9uIG0oYSl7Zm9yKHZhciBiIGluIGEpe2lmKGI9PT0iZGF0YSImJmYuaXNFbXB0eU9iamVjdChhW2JdKSljb250aW51ZTtpZihiIT09InRvSlNPTiIpcmV0dXJuITF9cmV0dXJuITB9ZnVuY3Rpb24gbChhLGMsZCl7aWYoZD09PWImJmEubm9kZVR5cGU9PT0xKXt2YXIgZT0iZGF0YS0iK2MucmVwbGFjZShrLCItJDEiKS50b0xvd2VyQ2FzZSgpO2Q9YS5nZXRBdHRyaWJ1dGUoZSk7aWYodHlwZW9mIGQ9PSJzdHJpbmciKXt0cnl7ZD1kPT09InRydWUiPyEwOmQ9PT0iZmFsc2UiPyExOmQ9PT0ibnVsbCI/bnVsbDpmLmlzTnVtZXJpYyhkKT9wYXJzZUZsb2F0KGQpOmoudGVzdChkKT9mLnBhcnNlSlNPTihkKTpkfWNhdGNoKGcpe31mLmRhdGEoYSxjLGQpfWVsc2UgZD1ifXJldHVybiBkfWZ1bmN0aW9uIGgoYSl7dmFyIGI9Z1thXT17fSxjLGQ7YT1hLnNwbGl0KC9ccysvKTtmb3IoYz0wLGQ9YS5sZW5ndGg7YzxkO2MrKyliW2FbY11dPSEwO3JldHVybiBifXZhciBjPWEuZG9jdW1lbnQsZD1hLm5hdmlnYXRvcixlPWEubG9jYXRpb24sZj1mdW5jdGlvbigpe2Z1bmN0aW9uIEsoKXtpZighZS5pc1JlYWR5KXt0cnl7Yy5kb2N1bWVudEVsZW1lbnQuZG9TY3JvbGwoImxlZnQiKX1jYXRjaChhKXtzZXRUaW1lb3V0KEssMSk7cmV0dXJufWUucmVhZHkoKX19dmFyIGU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IGUuZm4uaW5pdChhLGIsaCl9LGY9YS5qUXVlcnksZz1hLiQsaCxpPS9eKD86W14jPF0qKDxbXHdcV10rPilbXj5dKiR8IyhbXHdcLV0qKSQpLyxqPS9cUy8saz0vXlxzKy8sbD0vXHMrJC8sbT0vXGQvLG49L148KFx3KylccypcLz8+KD86PFwvXDE+KT8kLyxvPS9eW1xdLDp7fVxzXSokLyxwPS9cXCg/OlsiXFxcL2JmbnJ0XXx1WzAtOWEtZkEtRl17NH0pL2cscT0vIlteIlxcXG5ccl0qInx0cnVlfGZhbHNlfG51bGx8LT9cZCsoPzpcLlxkKik/KD86W2VFXVsrXC1dP1xkKyk/L2cscj0vKD86Xnw6fCwpKD86XHMqXFspKy9nLHM9Lyh3ZWJraXQpWyBcL10oW1x3Ll0rKS8sdD0vKG9wZXJhKSg/Oi4qdmVyc2lvbik/WyBcL10oW1x3Ll0rKS8sdT0vKG1zaWUpIChbXHcuXSspLyx2PS8obW96aWxsYSkoPzouKj8gcnY6KFtcdy5dKykpPy8sdz0vLShbYS16XXxbMC05XSkvaWcseD0vXi1tcy0vLHk9ZnVuY3Rpb24oYSxiKXtyZXR1cm4oYisiIikudG9VcHBlckNhc2UoKX0sej1kLnVzZXJBZ2VudCxBLEIsQyxEPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsRT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LEY9QXJyYXkucHJvdG90eXBlLnB1c2gsRz1BcnJheS5wcm90b3R5cGUuc2xpY2UsSD1TdHJpbmcucHJvdG90eXBlLnRyaW0sST1BcnJheS5wcm90b3R5cGUuaW5kZXhPZixKPXt9O2UuZm49ZS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmUsaW5pdDpmdW5jdGlvbihhLGQsZil7dmFyIGcsaCxqLGs7aWYoIWEpcmV0dXJuIHRoaXM7aWYoYS5ub2RlVHlwZSl7dGhpcy5jb250ZXh0PXRoaXNbMF09YSx0aGlzLmxlbmd0aD0xO3JldHVybiB0aGlzfWlmKGE9PT0iYm9keSImJiFkJiZjLmJvZHkpe3RoaXMuY29udGV4dD1jLHRoaXNbMF09Yy5ib2R5LHRoaXMuc2VsZWN0b3I9YSx0aGlzLmxlbmd0aD0xO3JldHVybiB0aGlzfWlmKHR5cGVvZiBhPT0ic3RyaW5nIil7YS5jaGFyQXQoMCkhPT0iPCJ8fGEuY2hhckF0KGEubGVuZ3RoLTEpIT09Ij4ifHxhLmxlbmd0aDwzP2c9aS5leGVjKGEpOmc9W251bGwsYSxudWxsXTtpZihnJiYoZ1sxXXx8IWQpKXtpZihnWzFdKXtkPWQgaW5zdGFuY2VvZiBlP2RbMF06ZCxrPWQ/ZC5vd25lckRvY3VtZW50fHxkOmMsaj1uLmV4ZWMoYSksaj9lLmlzUGxhaW5PYmplY3QoZCk/KGE9W2MuY3JlYXRlRWxlbWVudChqWzFdKV0sZS5mbi5hdHRyLmNhbGwoYSxkLCEwKSk6YT1bay5jcmVhdGVFbGVtZW50KGpbMV0pXTooaj1lLmJ1aWxkRnJhZ21lbnQoW2dbMV1dLFtrXSksYT0oai5jYWNoZWFibGU/ZS5jbG9uZShqLmZyYWdtZW50KTpqLmZyYWdtZW50KS5jaGlsZE5vZGVzKTtyZXR1cm4gZS5tZXJnZSh0aGlzLGEpfWg9Yy5nZXRFbGVtZW50QnlJZChnWzJdKTtpZihoJiZoLnBhcmVudE5vZGUpe2lmKGguaWQhPT1nWzJdKXJldHVybiBmLmZpbmQoYSk7dGhpcy5sZW5ndGg9MSx0aGlzWzBdPWh9dGhpcy5jb250ZXh0PWMsdGhpcy5zZWxlY3Rvcj1hO3JldHVybiB0aGlzfXJldHVybiFkfHxkLmpxdWVyeT8oZHx8ZikuZmluZChhKTp0aGlzLmNvbnN0cnVjdG9yKGQpLmZpbmQoYSl9aWYoZS5pc0Z1bmN0aW9uKGEpKXJldHVybiBmLnJlYWR5KGEpO2Euc2VsZWN0b3IhPT1iJiYodGhpcy5zZWxlY3Rvcj1hLnNlbGVjdG9yLHRoaXMuY29udGV4dD1hLmNvbnRleHQpO3JldHVybiBlLm1ha2VBcnJheShhLHRoaXMpfSxzZWxlY3RvcjoiIixqcXVlcnk6IjEuNyIsbGVuZ3RoOjAsc2l6ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmxlbmd0aH0sdG9BcnJheTpmdW5jdGlvbigpe3JldHVybiBHLmNhbGwodGhpcywwKX0sZ2V0OmZ1bmN0aW9uKGEpe3JldHVybiBhPT1udWxsP3RoaXMudG9BcnJheSgpOmE8MD90aGlzW3RoaXMubGVuZ3RoK2FdOnRoaXNbYV19LHB1c2hTdGFjazpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcy5jb25zdHJ1Y3RvcigpO2UuaXNBcnJheShhKT9GLmFwcGx5KGQsYSk6ZS5tZXJnZShkLGEpLGQucHJldk9iamVjdD10aGlzLGQuY29udGV4dD10aGlzLmNvbnRleHQsYj09PSJmaW5kIj9kLnNlbGVjdG9yPXRoaXMuc2VsZWN0b3IrKHRoaXMuc2VsZWN0b3I/IiAiOiIiKStjOmImJihkLnNlbGVjdG9yPXRoaXMuc2VsZWN0b3IrIi4iK2IrIigiK2MrIikiKTtyZXR1cm4gZH0sZWFjaDpmdW5jdGlvbihhLGIpe3JldHVybiBlLmVhY2godGhpcyxhLGIpfSxyZWFkeTpmdW5jdGlvbihhKXtlLmJpbmRSZWFkeSgpLEIuYWRkKGEpO3JldHVybiB0aGlzfSxlcTpmdW5jdGlvbihhKXtyZXR1cm4gYT09PS0xP3RoaXMuc2xpY2UoYSk6dGhpcy5zbGljZShhLCthKzEpfSxmaXJzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVxKDApfSxsYXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEoLTEpfSxzbGljZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB1c2hTdGFjayhHLmFwcGx5KHRoaXMsYXJndW1lbnRzKSwic2xpY2UiLEcuY2FsbChhcmd1bWVudHMpLmpvaW4oIiwiKSl9LG1hcDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soZS5tYXAodGhpcyxmdW5jdGlvbihiLGMpe3JldHVybiBhLmNhbGwoYixjLGIpfSkpfSxlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcmV2T2JqZWN0fHx0aGlzLmNvbnN0cnVjdG9yKG51bGwpfSxwdXNoOkYsc29ydDpbXS5zb3J0LHNwbGljZTpbXS5zcGxpY2V9LGUuZm4uaW5pdC5wcm90b3R5cGU9ZS5mbixlLmV4dGVuZD1lLmZuLmV4dGVuZD1mdW5jdGlvbigpe3ZhciBhLGMsZCxmLGcsaCxpPWFyZ3VtZW50c1swXXx8e30saj0xLGs9YXJndW1lbnRzLmxlbmd0aCxsPSExO3R5cGVvZiBpPT0iYm9vbGVhbiImJihsPWksaT1hcmd1bWVudHNbMV18fHt9LGo9MiksdHlwZW9mIGkhPSJvYmplY3QiJiYhZS5pc0Z1bmN0aW9uKGkpJiYoaT17fSksaz09PWomJihpPXRoaXMsLS1qKTtmb3IoO2o8aztqKyspaWYoKGE9YXJndW1lbnRzW2pdKSE9bnVsbClmb3IoYyBpbiBhKXtkPWlbY10sZj1hW2NdO2lmKGk9PT1mKWNvbnRpbnVlO2wmJmYmJihlLmlzUGxhaW5PYmplY3QoZil8fChnPWUuaXNBcnJheShmKSkpPyhnPyhnPSExLGg9ZCYmZS5pc0FycmF5KGQpP2Q6W10pOmg9ZCYmZS5pc1BsYWluT2JqZWN0KGQpP2Q6e30saVtjXT1lLmV4dGVuZChsLGgsZikpOmYhPT1iJiYoaVtjXT1mKX1yZXR1cm4gaX0sZS5leHRlbmQoe25vQ29uZmxpY3Q6ZnVuY3Rpb24oYil7YS4kPT09ZSYmKGEuJD1nKSxiJiZhLmpRdWVyeT09PWUmJihhLmpRdWVyeT1mKTtyZXR1cm4gZX0saXNSZWFkeTohMSxyZWFkeVdhaXQ6MSxob2xkUmVhZHk6ZnVuY3Rpb24oYSl7YT9lLnJlYWR5V2FpdCsrOmUucmVhZHkoITApfSxyZWFkeTpmdW5jdGlvbihhKXtpZihhPT09ITAmJiEtLWUucmVhZHlXYWl0fHxhIT09ITAmJiFlLmlzUmVhZHkpe2lmKCFjLmJvZHkpcmV0dXJuIHNldFRpbWVvdXQoZS5yZWFkeSwxKTtlLmlzUmVhZHk9ITA7aWYoYSE9PSEwJiYtLWUucmVhZHlXYWl0PjApcmV0dXJuO0IuZmlyZVdpdGgoYyxbZV0pLGUuZm4udHJpZ2dlciYmZShjKS50cmlnZ2VyKCJyZWFkeSIpLnVuYmluZCgicmVhZHkiKX19LGJpbmRSZWFkeTpmdW5jdGlvbigpe2lmKCFCKXtCPWUuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpO2lmKGMucmVhZHlTdGF0ZT09PSJjb21wbGV0ZSIpcmV0dXJuIHNldFRpbWVvdXQoZS5yZWFkeSwxKTtpZihjLmFkZEV2ZW50TGlzdGVuZXIpYy5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixDLCExKSxhLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGUucmVhZHksITEpO2Vsc2UgaWYoYy5hdHRhY2hFdmVudCl7Yy5hdHRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIixDKSxhLmF0dGFjaEV2ZW50KCJvbmxvYWQiLGUucmVhZHkpO3ZhciBiPSExO3RyeXtiPWEuZnJhbWVFbGVtZW50PT1udWxsfWNhdGNoKGQpe31jLmRvY3VtZW50RWxlbWVudC5kb1Njcm9sbCYmYiYmSygpfX19LGlzRnVuY3Rpb246ZnVuY3Rpb24oYSl7cmV0dXJuIGUudHlwZShhKT09PSJmdW5jdGlvbiJ9LGlzQXJyYXk6QXJyYXkuaXNBcnJheXx8ZnVuY3Rpb24oYSl7cmV0dXJuIGUudHlwZShhKT09PSJhcnJheSJ9LGlzV2luZG93OmZ1bmN0aW9uKGEpe3JldHVybiBhJiZ0eXBlb2YgYT09Im9iamVjdCImJiJzZXRJbnRlcnZhbCJpbiBhfSxpc051bWVyaWM6ZnVuY3Rpb24oYSl7cmV0dXJuIGEhPW51bGwmJm0udGVzdChhKSYmIWlzTmFOKGEpfSx0eXBlOmZ1bmN0aW9uKGEpe3JldHVybiBhPT1udWxsP1N0cmluZyhhKTpKW0QuY2FsbChhKV18fCJvYmplY3QifSxpc1BsYWluT2JqZWN0OmZ1bmN0aW9uKGEpe2lmKCFhfHxlLnR5cGUoYSkhPT0ib2JqZWN0Inx8YS5ub2RlVHlwZXx8ZS5pc1dpbmRvdyhhKSlyZXR1cm4hMTt0cnl7aWYoYS5jb25zdHJ1Y3RvciYmIUUuY2FsbChhLCJjb25zdHJ1Y3RvciIpJiYhRS5jYWxsKGEuY29uc3RydWN0b3IucHJvdG90eXBlLCJpc1Byb3RvdHlwZU9mIikpcmV0dXJuITF9Y2F0Y2goYyl7cmV0dXJuITF9dmFyIGQ7Zm9yKGQgaW4gYSk7cmV0dXJuIGQ9PT1ifHxFLmNhbGwoYSxkKX0saXNFbXB0eU9iamVjdDpmdW5jdGlvbihhKXtmb3IodmFyIGIgaW4gYSlyZXR1cm4hMTtyZXR1cm4hMH0sZXJyb3I6ZnVuY3Rpb24oYSl7dGhyb3cgYX0scGFyc2VKU09OOmZ1bmN0aW9uKGIpe2lmKHR5cGVvZiBiIT0ic3RyaW5nInx8IWIpcmV0dXJuIG51bGw7Yj1lLnRyaW0oYik7aWYoYS5KU09OJiZhLkpTT04ucGFyc2UpcmV0dXJuIGEuSlNPTi5wYXJzZShiKTtpZihvLnRlc3QoYi5yZXBsYWNlKHAsIkAiKS5yZXBsYWNlKHEsIl0iKS5yZXBsYWNlKHIsIiIpKSlyZXR1cm4obmV3IEZ1bmN0aW9uKCJyZXR1cm4gIitiKSkoKTtlLmVycm9yKCJJbnZhbGlkIEpTT046ICIrYil9LHBhcnNlWE1MOmZ1bmN0aW9uKGMpe3ZhciBkLGY7dHJ5e2EuRE9NUGFyc2VyPyhmPW5ldyBET01QYXJzZXIsZD1mLnBhcnNlRnJvbVN0cmluZyhjLCJ0ZXh0L3htbCIpKTooZD1uZXcgQWN0aXZlWE9iamVjdCgiTWljcm9zb2Z0LlhNTERPTSIpLGQuYXN5bmM9ImZhbHNlIixkLmxvYWRYTUwoYykpfWNhdGNoKGcpe2Q9Yn0oIWR8fCFkLmRvY3VtZW50RWxlbWVudHx8ZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgicGFyc2VyZXJyb3IiKS5sZW5ndGgpJiZlLmVycm9yKCJJbnZhbGlkIFhNTDogIitjKTtyZXR1cm4gZH0sbm9vcDpmdW5jdGlvbigpe30sZ2xvYmFsRXZhbDpmdW5jdGlvbihiKXtiJiZqLnRlc3QoYikmJihhLmV4ZWNTY3JpcHR8fGZ1bmN0aW9uKGIpe2EuZXZhbC5jYWxsKGEsYil9KShiKX0sY2FtZWxDYXNlOmZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoeCwibXMtIikucmVwbGFjZSh3LHkpfSxub2RlTmFtZTpmdW5jdGlvbihhLGIpe3JldHVybiBhLm5vZGVOYW1lJiZhLm5vZGVOYW1lLnRvVXBwZXJDYXNlKCk9PT1iLnRvVXBwZXJDYXNlKCl9LGVhY2g6ZnVuY3Rpb24oYSxjLGQpe3ZhciBmLGc9MCxoPWEubGVuZ3RoLGk9aD09PWJ8fGUuaXNGdW5jdGlvbihhKTtpZihkKXtpZihpKXtmb3IoZiBpbiBhKWlmKGMuYXBwbHkoYVtmXSxkKT09PSExKWJyZWFrfWVsc2UgZm9yKDtnPGg7KWlmKGMuYXBwbHkoYVtnKytdLGQpPT09ITEpYnJlYWt9ZWxzZSBpZihpKXtmb3IoZiBpbiBhKWlmKGMuY2FsbChhW2ZdLGYsYVtmXSk9PT0hMSlicmVha31lbHNlIGZvcig7ZzxoOylpZihjLmNhbGwoYVtnXSxnLGFbZysrXSk9PT0hMSlicmVhaztyZXR1cm4gYX0sdHJpbTpIP2Z1bmN0aW9uKGEpe3JldHVybiBhPT1udWxsPyIiOkguY2FsbChhKX06ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PW51bGw/IiI6KGErIiIpLnJlcGxhY2UoaywiIikucmVwbGFjZShsLCIiKX0sbWFrZUFycmF5OmZ1bmN0aW9uKGEsYil7dmFyIGM9Ynx8W107aWYoYSE9bnVsbCl7dmFyIGQ9ZS50eXBlKGEpO2EubGVuZ3RoPT1udWxsfHxkPT09InN0cmluZyJ8fGQ9PT0iZnVuY3Rpb24ifHxkPT09InJlZ2V4cCJ8fGUuaXNXaW5kb3coYSk/Ri5jYWxsKGMsYSk6ZS5tZXJnZShjLGEpfXJldHVybiBjfSxpbkFycmF5OmZ1bmN0aW9uKGEsYixjKXt2YXIgZDtpZihiKXtpZihJKXJldHVybiBJLmNhbGwoYixhLGMpO2Q9Yi5sZW5ndGgsYz1jP2M8MD9NYXRoLm1heCgwLGQrYyk6YzowO2Zvcig7YzxkO2MrKylpZihjIGluIGImJmJbY109PT1hKXJldHVybiBjfXJldHVybi0xfSxtZXJnZTpmdW5jdGlvbihhLGMpe3ZhciBkPWEubGVuZ3RoLGU9MDtpZih0eXBlb2YgYy5sZW5ndGg9PSJudW1iZXIiKWZvcih2YXIgZj1jLmxlbmd0aDtlPGY7ZSsrKWFbZCsrXT1jW2VdO2Vsc2Ugd2hpbGUoY1tlXSE9PWIpYVtkKytdPWNbZSsrXTthLmxlbmd0aD1kO3JldHVybiBhfSxncmVwOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1bXSxlO2M9ISFjO2Zvcih2YXIgZj0wLGc9YS5sZW5ndGg7ZjxnO2YrKyllPSEhYihhW2ZdLGYpLGMhPT1lJiZkLnB1c2goYVtmXSk7cmV0dXJuIGR9LG1hcDpmdW5jdGlvbihhLGMsZCl7dmFyIGYsZyxoPVtdLGk9MCxqPWEubGVuZ3RoLGs9YSBpbnN0YW5jZW9mIGV8fGohPT1iJiZ0eXBlb2Ygaj09Im51bWJlciImJihqPjAmJmFbMF0mJmFbai0xXXx8aj09PTB8fGUuaXNBcnJheShhKSk7aWYoaylmb3IoO2k8ajtpKyspZj1jKGFbaV0saSxkKSxmIT1udWxsJiYoaFtoLmxlbmd0aF09Zik7ZWxzZSBmb3IoZyBpbiBhKWY9YyhhW2ddLGcsZCksZiE9bnVsbCYmKGhbaC5sZW5ndGhdPWYpO3JldHVybiBoLmNvbmNhdC5hcHBseShbXSxoKX0sZ3VpZDoxLHByb3h5OmZ1bmN0aW9uKGEsYyl7aWYodHlwZW9mIGM9PSJzdHJpbmciKXt2YXIgZD1hW2NdO2M9YSxhPWR9aWYoIWUuaXNGdW5jdGlvbihhKSlyZXR1cm4gYjt2YXIgZj1HLmNhbGwoYXJndW1lbnRzLDIpLGc9ZnVuY3Rpb24oKXtyZXR1cm4gYS5hcHBseShjLGYuY29uY2F0KEcuY2FsbChhcmd1bWVudHMpKSl9O2cuZ3VpZD1hLmd1aWQ9YS5ndWlkfHxnLmd1aWR8fGUuZ3VpZCsrO3JldHVybiBnfSxhY2Nlc3M6ZnVuY3Rpb24oYSxjLGQsZixnLGgpe3ZhciBpPWEubGVuZ3RoO2lmKHR5cGVvZiBjPT0ib2JqZWN0Iil7Zm9yKHZhciBqIGluIGMpZS5hY2Nlc3MoYSxqLGNbal0sZixnLGQpO3JldHVybiBhfWlmKGQhPT1iKXtmPSFoJiZmJiZlLmlzRnVuY3Rpb24oZCk7Zm9yKHZhciBrPTA7azxpO2srKylnKGFba10sYyxmP2QuY2FsbChhW2tdLGssZyhhW2tdLGMpKTpkLGgpO3JldHVybiBhfXJldHVybiBpP2coYVswXSxjKTpifSxub3c6ZnVuY3Rpb24oKXtyZXR1cm4obmV3IERhdGUpLmdldFRpbWUoKX0sdWFNYXRjaDpmdW5jdGlvbihhKXthPWEudG9Mb3dlckNhc2UoKTt2YXIgYj1zLmV4ZWMoYSl8fHQuZXhlYyhhKXx8dS5leGVjKGEpfHxhLmluZGV4T2YoImNvbXBhdGlibGUiKTwwJiZ2LmV4ZWMoYSl8fFtdO3JldHVybnticm93c2VyOmJbMV18fCIiLHZlcnNpb246YlsyXXx8IjAifX0sc3ViOmZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShiLGMpe3JldHVybiBuZXcgYS5mbi5pbml0KGIsYyl9ZS5leHRlbmQoITAsYSx0aGlzKSxhLnN1cGVyY2xhc3M9dGhpcyxhLmZuPWEucHJvdG90eXBlPXRoaXMoKSxhLmZuLmNvbnN0cnVjdG9yPWEsYS5zdWI9dGhpcy5zdWIsYS5mbi5pbml0PWZ1bmN0aW9uKGQsZil7ZiYmZiBpbnN0YW5jZW9mIGUmJiEoZiBpbnN0YW5jZW9mIGEpJiYoZj1hKGYpKTtyZXR1cm4gZS5mbi5pbml0LmNhbGwodGhpcyxkLGYsYil9LGEuZm4uaW5pdC5wcm90b3R5cGU9YS5mbjt2YXIgYj1hKGMpO3JldHVybiBhfSxicm93c2VyOnt9fSksZS5lYWNoKCJCb29sZWFuIE51bWJlciBTdHJpbmcgRnVuY3Rpb24gQXJyYXkgRGF0ZSBSZWdFeHAgT2JqZWN0Ii5zcGxpdCgiICIpLGZ1bmN0aW9uKGEsYil7SlsiW29iamVjdCAiK2IrIl0iXT1iLnRvTG93ZXJDYXNlKCl9KSxBPWUudWFNYXRjaCh6KSxBLmJyb3dzZXImJihlLmJyb3dzZXJbQS5icm93c2VyXT0hMCxlLmJyb3dzZXIudmVyc2lvbj1BLnZlcnNpb24pLGUuYnJvd3Nlci53ZWJraXQmJihlLmJyb3dzZXIuc2FmYXJpPSEwKSxqLnRlc3QoIsKgIikmJihrPS9eW1xzXHhBMF0rLyxsPS9bXHNceEEwXSskLyksaD1lKGMpLGMuYWRkRXZlbnRMaXN0ZW5lcj9DPWZ1bmN0aW9uKCl7Yy5yZW1vdmVFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixDLCExKSxlLnJlYWR5KCl9OmMuYXR0YWNoRXZlbnQmJihDPWZ1bmN0aW9uKCl7Yy5yZWFkeVN0YXRlPT09ImNvbXBsZXRlIiYmKGMuZGV0YWNoRXZlbnQoIm9ucmVhZHlzdGF0ZWNoYW5nZSIsQyksZS5yZWFkeSgpKX0pLHR5cGVvZiBkZWZpbmU9PSJmdW5jdGlvbiImJmRlZmluZS5hbWQmJmRlZmluZS5hbWQualF1ZXJ5JiZkZWZpbmUoImpxdWVyeSIsW10sZnVuY3Rpb24oKXtyZXR1cm4gZX0pO3JldHVybiBlfSgpLGc9e307Zi5DYWxsYmFja3M9ZnVuY3Rpb24oYSl7YT1hP2dbYV18fGgoYSk6e307dmFyIGM9W10sZD1bXSxlLGksaixrLGwsbT1mdW5jdGlvbihiKXt2YXIgZCxlLGcsaCxpO2ZvcihkPTAsZT1iLmxlbmd0aDtkPGU7ZCsrKWc9YltkXSxoPWYudHlwZShnKSxoPT09ImFycmF5Ij9tKGcpOmg9PT0iZnVuY3Rpb24iJiYoIWEudW5pcXVlfHwhby5oYXMoZykpJiZjLnB1c2goZyl9LG49ZnVuY3Rpb24oYixmKXtmPWZ8fFtdLGU9IWEubWVtb3J5fHxbYixmXSxpPSEwLGw9anx8MCxqPTAsaz1jLmxlbmd0aDtmb3IoO2MmJmw8aztsKyspaWYoY1tsXS5hcHBseShiLGYpPT09ITEmJmEuc3RvcE9uRmFsc2Upe2U9ITA7YnJlYWt9aT0hMSxjJiYoYS5vbmNlP2U9PT0hMD9vLmRpc2FibGUoKTpjPVtdOmQmJmQubGVuZ3RoJiYoZT1kLnNoaWZ0KCksby5maXJlV2l0aChlWzBdLGVbMV0pKSl9LG89e2FkZDpmdW5jdGlvbigpe2lmKGMpe3ZhciBhPWMubGVuZ3RoO20oYXJndW1lbnRzKSxpP2s9Yy5sZW5ndGg6ZSYmZSE9PSEwJiYoaj1hLG4oZVswXSxlWzFdKSl9cmV0dXJuIHRoaXN9LHJlbW92ZTpmdW5jdGlvbigpe2lmKGMpe3ZhciBiPWFyZ3VtZW50cyxkPTAsZT1iLmxlbmd0aDtmb3IoO2Q8ZTtkKyspZm9yKHZhciBmPTA7ZjxjLmxlbmd0aDtmKyspaWYoYltkXT09PWNbZl0pe2kmJmY8PWsmJihrLS0sZjw9bCYmbC0tKSxjLnNwbGljZShmLS0sMSk7aWYoYS51bmlxdWUpYnJlYWt9fXJldHVybiB0aGlzfSxoYXM6ZnVuY3Rpb24oYSl7aWYoYyl7dmFyIGI9MCxkPWMubGVuZ3RoO2Zvcig7YjxkO2IrKylpZihhPT09Y1tiXSlyZXR1cm4hMH1yZXR1cm4hMX0sZW1wdHk6ZnVuY3Rpb24oKXtjPVtdO3JldHVybiB0aGlzfSxkaXNhYmxlOmZ1bmN0aW9uKCl7Yz1kPWU9YjtyZXR1cm4gdGhpc30sZGlzYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hY30sbG9jazpmdW5jdGlvbigpe2Q9YiwoIWV8fGU9PT0hMCkmJm8uZGlzYWJsZSgpO3JldHVybiB0aGlzfSxsb2NrZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hZH0sZmlyZVdpdGg6ZnVuY3Rpb24oYixjKXtkJiYoaT9hLm9uY2V8fGQucHVzaChbYixjXSk6KCFhLm9uY2V8fCFlKSYmbihiLGMpKTtyZXR1cm4gdGhpc30sZmlyZTpmdW5jdGlvbigpe28uZmlyZVdpdGgodGhpcyxhcmd1bWVudHMpO3JldHVybiB0aGlzfSxmaXJlZDpmdW5jdGlvbigpe3JldHVybiEhZX19O3JldHVybiBvfTt2YXIgaT1bXS5zbGljZTtmLmV4dGVuZCh7RGVmZXJyZWQ6ZnVuY3Rpb24oYSl7dmFyIGI9Zi5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksYz1mLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSxkPWYuQ2FsbGJhY2tzKCJtZW1vcnkiKSxlPSJwZW5kaW5nIixnPXtyZXNvbHZlOmIscmVqZWN0OmMsbm90aWZ5OmR9LGg9e2RvbmU6Yi5hZGQsZmFpbDpjLmFkZCxwcm9ncmVzczpkLmFkZCxzdGF0ZTpmdW5jdGlvbigpe3JldHVybiBlfSxpc1Jlc29sdmVkOmIuZmlyZWQsaXNSZWplY3RlZDpjLmZpcmVkLHRoZW46ZnVuY3Rpb24oYSxiLGMpe2kuZG9uZShhKS5mYWlsKGIpLnByb2dyZXNzKGMpO3JldHVybiB0aGlzfSxhbHdheXM6ZnVuY3Rpb24oKXtyZXR1cm4gaS5kb25lLmFwcGx5KGksYXJndW1lbnRzKS5mYWlsLmFwcGx5KGksYXJndW1lbnRzKX0scGlwZTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGYuRGVmZXJyZWQoZnVuY3Rpb24oZCl7Zi5lYWNoKHtkb25lOlthLCJyZXNvbHZlIl0sZmFpbDpbYiwicmVqZWN0Il0scHJvZ3Jlc3M6W2MsIm5vdGlmeSJdfSxmdW5jdGlvbihhLGIpe3ZhciBjPWJbMF0sZT1iWzFdLGc7Zi5pc0Z1bmN0aW9uKGMpP2lbYV0oZnVuY3Rpb24oKXtnPWMuYXBwbHkodGhpcyxhcmd1bWVudHMpLGcmJmYuaXNGdW5jdGlvbihnLnByb21pc2UpP2cucHJvbWlzZSgpLnRoZW4oZC5yZXNvbHZlLGQucmVqZWN0LGQubm90aWZ5KTpkW2UrIldpdGgiXSh0aGlzPT09aT9kOnRoaXMsW2ddKX0pOmlbYV0oZFtlXSl9KX0pLnByb21pc2UoKX0scHJvbWlzZTpmdW5jdGlvbihhKXtpZihhPT1udWxsKWE9aDtlbHNlIGZvcih2YXIgYiBpbiBoKWFbYl09aFtiXTtyZXR1cm4gYX19LGk9aC5wcm9taXNlKHt9KSxqO2ZvcihqIGluIGcpaVtqXT1nW2pdLmZpcmUsaVtqKyJXaXRoIl09Z1tqXS5maXJlV2l0aDtpLmRvbmUoZnVuY3Rpb24oKXtlPSJyZXNvbHZlZCJ9LGMuZGlzYWJsZSxkLmxvY2spLmZhaWwoZnVuY3Rpb24oKXtlPSJyZWplY3RlZCJ9LGIuZGlzYWJsZSxkLmxvY2spLGEmJmEuY2FsbChpLGkpO3JldHVybiBpfSx3aGVuOmZ1bmN0aW9uKGEpe2Z1bmN0aW9uIG0oYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe2VbYV09YXJndW1lbnRzLmxlbmd0aD4xP2kuY2FsbChhcmd1bWVudHMsMCk6YixqLm5vdGlmeVdpdGgoayxlKX19ZnVuY3Rpb24gbChhKXtyZXR1cm4gZnVuY3Rpb24oYyl7YlthXT1hcmd1bWVudHMubGVuZ3RoPjE/aS5jYWxsKGFyZ3VtZW50cywwKTpjLC0tZ3x8ai5yZXNvbHZlV2l0aChqLGIpfX12YXIgYj1pLmNhbGwoYXJndW1lbnRzLDApLGM9MCxkPWIubGVuZ3RoLGU9QXJyYXkoZCksZz1kLGg9ZCxqPWQ8PTEmJmEmJmYuaXNGdW5jdGlvbihhLnByb21pc2UpP2E6Zi5EZWZlcnJlZCgpLGs9ai5wcm9taXNlKCk7aWYoZD4xKXtmb3IoO2M8ZDtjKyspYltjXSYmYltjXS5wcm9taXNlJiZmLmlzRnVuY3Rpb24oYltjXS5wcm9taXNlKT9iW2NdLnByb21pc2UoKS50aGVuKGwoYyksai5yZWplY3QsbShjKSk6LS1nO2d8fGoucmVzb2x2ZVdpdGgoaixiKX1lbHNlIGohPT1hJiZqLnJlc29sdmVXaXRoKGosZD9bYV06W10pO3JldHVybiBrfX0pLGYuc3VwcG9ydD1mdW5jdGlvbigpe3ZhciBhPWMuY3JlYXRlRWxlbWVudCgiZGl2IiksYj1jLmRvY3VtZW50RWxlbWVudCxkLGUsZyxoLGksaixrLGwsbSxuLG8scCxxLHIscyx0LHU7YS5zZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIsInQiKSxhLmlubmVySFRNTD0iICAgPGxpbmsvPjx0YWJsZT48L3RhYmxlPjxhIGhyZWY9Jy9hJyBzdHlsZT0ndG9wOjFweDtmbG9hdDpsZWZ0O29wYWNpdHk6LjU1Oyc+YTwvYT48aW5wdXQgdHlwZT0nY2hlY2tib3gnLz48bmF2PjwvbmF2PiIsZD1hLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIiksZT1hLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJhIilbMF07aWYoIWR8fCFkLmxlbmd0aHx8IWUpcmV0dXJue307Zz1jLmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpLGg9Zy5hcHBlbmRDaGlsZChjLmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpKSxpPWEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlucHV0IilbMF0saz17bGVhZGluZ1doaXRlc3BhY2U6YS5maXJzdENoaWxkLm5vZGVUeXBlPT09Myx0Ym9keTohYS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGJvZHkiKS5sZW5ndGgsaHRtbFNlcmlhbGl6ZTohIWEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKS5sZW5ndGgsc3R5bGU6L3RvcC8udGVzdChlLmdldEF0dHJpYnV0ZSgic3R5bGUiKSksaHJlZk5vcm1hbGl6ZWQ6ZS5nZXRBdHRyaWJ1dGUoImhyZWYiKT09PSIvYSIsb3BhY2l0eTovXjAuNTUvLnRlc3QoZS5zdHlsZS5vcGFjaXR5KSxjc3NGbG9hdDohIWUuc3R5bGUuY3NzRmxvYXQsdW5rbm93bkVsZW1zOiEhYS5nZXRFbGVtZW50c0J5VGFnTmFtZSgibmF2IikubGVuZ3RoLGNoZWNrT246aS52YWx1ZT09PSJvbiIsb3B0U2VsZWN0ZWQ6aC5zZWxlY3RlZCxnZXRTZXRBdHRyaWJ1dGU6YS5jbGFzc05hbWUhPT0idCIsZW5jdHlwZTohIWMuY3JlYXRlRWxlbWVudCgiZm9ybSIpLmVuY3R5cGUsc3VibWl0QnViYmxlczohMCxjaGFuZ2VCdWJibGVzOiEwLGZvY3VzaW5CdWJibGVzOiExLGRlbGV0ZUV4cGFuZG86ITAsbm9DbG9uZUV2ZW50OiEwLGlubGluZUJsb2NrTmVlZHNMYXlvdXQ6ITEsc2hyaW5rV3JhcEJsb2NrczohMSxyZWxpYWJsZU1hcmdpblJpZ2h0OiEwfSxpLmNoZWNrZWQ9ITAsay5ub0Nsb25lQ2hlY2tlZD1pLmNsb25lTm9kZSghMCkuY2hlY2tlZCxnLmRpc2FibGVkPSEwLGsub3B0RGlzYWJsZWQ9IWguZGlzYWJsZWQ7dHJ5e2RlbGV0ZSBhLnRlc3R9Y2F0Y2godil7ay5kZWxldGVFeHBhbmRvPSExfSFhLmFkZEV2ZW50TGlzdGVuZXImJmEuYXR0YWNoRXZlbnQmJmEuZmlyZUV2ZW50JiYoYS5hdHRhY2hFdmVudCgib25jbGljayIsZnVuY3Rpb24oKXtrLm5vQ2xvbmVFdmVudD0hMX0pLGEuY2xvbmVOb2RlKCEwKS5maXJlRXZlbnQoIm9uY2xpY2siKSksaT1jLmNyZWF0ZUVsZW1lbnQoImlucHV0IiksaS52YWx1ZT0idCIsaS5zZXRBdHRyaWJ1dGUoInR5cGUiLCJyYWRpbyIpLGsucmFkaW9WYWx1ZT1pLnZhbHVlPT09InQiLGkuc2V0QXR0cmlidXRlKCJjaGVja2VkIiwiY2hlY2tlZCIpLGEuYXBwZW5kQ2hpbGQoaSksbD1jLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxsLmFwcGVuZENoaWxkKGEubGFzdENoaWxkKSxrLmNoZWNrQ2xvbmU9bC5jbG9uZU5vZGUoITApLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmNoZWNrZWQsYS5pbm5lckhUTUw9IiIsYS5zdHlsZS53aWR0aD1hLnN0eWxlLnBhZGRpbmdMZWZ0PSIxcHgiLG09Yy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdLG89Yy5jcmVhdGVFbGVtZW50KG0/ImRpdiI6ImJvZHkiKSxwPXt2aXNpYmlsaXR5OiJoaWRkZW4iLHdpZHRoOjAsaGVpZ2h0OjAsYm9yZGVyOjAsbWFyZ2luOjAsYmFja2dyb3VuZDoibm9uZSJ9LG0mJmYuZXh0ZW5kKHAse3Bvc2l0aW9uOiJhYnNvbHV0ZSIsbGVmdDoiLTk5OXB4Iix0b3A6Ii05OTlweCJ9KTtmb3IodCBpbiBwKW8uc3R5bGVbdF09cFt0XTtvLmFwcGVuZENoaWxkKGEpLG49bXx8YixuLmluc2VydEJlZm9yZShvLG4uZmlyc3RDaGlsZCksay5hcHBlbmRDaGVja2VkPWkuY2hlY2tlZCxrLmJveE1vZGVsPWEub2Zmc2V0V2lkdGg9PT0yLCJ6b29tImluIGEuc3R5bGUmJihhLnN0eWxlLmRpc3BsYXk9ImlubGluZSIsYS5zdHlsZS56b29tPTEsay5pbmxpbmVCbG9ja05lZWRzTGF5b3V0PWEub2Zmc2V0V2lkdGg9PT0yLGEuc3R5bGUuZGlzcGxheT0iIixhLmlubmVySFRNTD0iPGRpdiBzdHlsZT0nd2lkdGg6NHB4Oyc+PC9kaXY+IixrLnNocmlua1dyYXBCbG9ja3M9YS5vZmZzZXRXaWR0aCE9PTIpLGEuaW5uZXJIVE1MPSI8dGFibGU+PHRyPjx0ZCBzdHlsZT0ncGFkZGluZzowO2JvcmRlcjowO2Rpc3BsYXk6bm9uZSc+PC90ZD48dGQ+dDwvdGQ+PC90cj48L3RhYmxlPiIscT1hLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZCIpLHU9cVswXS5vZmZzZXRIZWlnaHQ9PT0wLHFbMF0uc3R5bGUuZGlzcGxheT0iIixxWzFdLnN0eWxlLmRpc3BsYXk9Im5vbmUiLGsucmVsaWFibGVIaWRkZW5PZmZzZXRzPXUmJnFbMF0ub2Zmc2V0SGVpZ2h0PT09MCxhLmlubmVySFRNTD0iIixjLmRlZmF1bHRWaWV3JiZjLmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUmJihqPWMuY3JlYXRlRWxlbWVudCgiZGl2Iiksai5zdHlsZS53aWR0aD0iMCIsai5zdHlsZS5tYXJnaW5SaWdodD0iMCIsYS5hcHBlbmRDaGlsZChqKSxrLnJlbGlhYmxlTWFyZ2luUmlnaHQ9KHBhcnNlSW50KChjLmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoaixudWxsKXx8e21hcmdpblJpZ2h0OjB9KS5tYXJnaW5SaWdodCwxMCl8fDApPT09MCk7aWYoYS5hdHRhY2hFdmVudClmb3IodCBpbntzdWJtaXQ6MSxjaGFuZ2U6MSxmb2N1c2luOjF9KXM9Im9uIit0LHU9cyBpbiBhLHV8fChhLnNldEF0dHJpYnV0ZShzLCJyZXR1cm47IiksdT10eXBlb2YgYVtzXT09ImZ1bmN0aW9uIiksa1t0KyJCdWJibGVzIl09dTtmKGZ1bmN0aW9uKCl7dmFyIGEsYixkLGUsZyxoLGk9MSxqPSJwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7d2lkdGg6MXB4O2hlaWdodDoxcHg7bWFyZ2luOjA7IixsPSJ2aXNpYmlsaXR5OmhpZGRlbjtib3JkZXI6MDsiLG49InN0eWxlPSciK2orImJvcmRlcjo1cHggc29saWQgIzAwMDtwYWRkaW5nOjA7JyIscD0iPGRpdiAiK24rIj48ZGl2PjwvZGl2PjwvZGl2PiIrIjx0YWJsZSAiK24rIiBjZWxscGFkZGluZz0nMCcgY2VsbHNwYWNpbmc9JzAnPiIrIjx0cj48dGQ+PC90ZD48L3RyPjwvdGFibGU+IjttPWMuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXTshbXx8KGE9Yy5jcmVhdGVFbGVtZW50KCJkaXYiKSxhLnN0eWxlLmNzc1RleHQ9bCsid2lkdGg6MDtoZWlnaHQ6MDtwb3NpdGlvbjpzdGF0aWM7dG9wOjA7bWFyZ2luLXRvcDoiK2krInB4IixtLmluc2VydEJlZm9yZShhLG0uZmlyc3RDaGlsZCksbz1jLmNyZWF0ZUVsZW1lbnQoImRpdiIpLG8uc3R5bGUuY3NzVGV4dD1qK2wsby5pbm5lckhUTUw9cCxhLmFwcGVuZENoaWxkKG8pLGI9by5maXJzdENoaWxkLGQ9Yi5maXJzdENoaWxkLGc9Yi5uZXh0U2libGluZy5maXJzdENoaWxkLmZpcnN0Q2hpbGQsaD17ZG9lc05vdEFkZEJvcmRlcjpkLm9mZnNldFRvcCE9PTUsZG9lc0FkZEJvcmRlckZvclRhYmxlQW5kQ2VsbHM6Zy5vZmZzZXRUb3A9PT01fSxkLnN0eWxlLnBvc2l0aW9uPSJmaXhlZCIsZC5zdHlsZS50b3A9IjIwcHgiLGguZml4ZWRQb3NpdGlvbj1kLm9mZnNldFRvcD09PTIwfHxkLm9mZnNldFRvcD09PTE1LGQuc3R5bGUucG9zaXRpb249ZC5zdHlsZS50b3A9IiIsYi5zdHlsZS5vdmVyZmxvdz0iaGlkZGVuIixiLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSIsaC5zdWJ0cmFjdHNCb3JkZXJGb3JPdmVyZmxvd05vdFZpc2libGU9ZC5vZmZzZXRUb3A9PT0tNSxoLmRvZXNOb3RJbmNsdWRlTWFyZ2luSW5Cb2R5T2Zmc2V0PW0ub2Zmc2V0VG9wIT09aSxtLnJlbW92ZUNoaWxkKGEpLG89YT1udWxsLGYuZXh0ZW5kKGssaCkpfSksby5pbm5lckhUTUw9IiIsbi5yZW1vdmVDaGlsZChvKSxvPWw9Zz1oPW09aj1hPWk9bnVsbDtyZXR1cm4ga30oKSxmLmJveE1vZGVsPWYuc3VwcG9ydC5ib3hNb2RlbDt2YXIgaj0vXig/Olx7LipcfXxcWy4qXF0pJC8saz0vKFtBLVpdKS9nO2YuZXh0ZW5kKHtjYWNoZTp7fSx1dWlkOjAsZXhwYW5kbzoialF1ZXJ5IisoZi5mbi5qcXVlcnkrTWF0aC5yYW5kb20oKSkucmVwbGFjZSgvXEQvZywiIiksbm9EYXRhOntlbWJlZDohMCxvYmplY3Q6ImNsc2lkOkQyN0NEQjZFLUFFNkQtMTFjZi05NkI4LTQ0NDU1MzU0MDAwMCIsYXBwbGV0OiEwfSxoYXNEYXRhOmZ1bmN0aW9uKGEpe2E9YS5ub2RlVHlwZT9mLmNhY2hlW2FbZi5leHBhbmRvXV06YVtmLmV4cGFuZG9dO3JldHVybiEhYSYmIW0oYSl9LGRhdGE6ZnVuY3Rpb24oYSxjLGQsZSl7aWYoISFmLmFjY2VwdERhdGEoYSkpe3ZhciBnLGgsaSxqPWYuZXhwYW5kbyxrPXR5cGVvZiBjPT0ic3RyaW5nIixsPWEubm9kZVR5cGUsbT1sP2YuY2FjaGU6YSxuPWw/YVtmLmV4cGFuZG9dOmFbZi5leHBhbmRvXSYmZi5leHBhbmRvLG89Yz09PSJldmVudHMiO2lmKCghbnx8IW1bbl18fCFvJiYhZSYmIW1bbl0uZGF0YSkmJmsmJmQ9PT1iKXJldHVybjtufHwobD9hW2YuZXhwYW5kb109bj0rK2YudXVpZDpuPWYuZXhwYW5kbyksbVtuXXx8KG1bbl09e30sbHx8KG1bbl0udG9KU09OPWYubm9vcCkpO2lmKHR5cGVvZiBjPT0ib2JqZWN0Inx8dHlwZW9mIGM9PSJmdW5jdGlvbiIpZT9tW25dPWYuZXh0ZW5kKG1bbl0sYyk6bVtuXS5kYXRhPWYuZXh0ZW5kKG1bbl0uZGF0YSxjKTtnPWg9bVtuXSxlfHwoaC5kYXRhfHwoaC5kYXRhPXt9KSxoPWguZGF0YSksZCE9PWImJihoW2YuY2FtZWxDYXNlKGMpXT1kKTtpZihvJiYhaFtjXSlyZXR1cm4gZy5ldmVudHM7az8oaT1oW2NdLGk9PW51bGwmJihpPWhbZi5jYW1lbENhc2UoYyldKSk6aT1oO3JldHVybiBpfX0scmVtb3ZlRGF0YTpmdW5jdGlvbihhLGIsYyl7aWYoISFmLmFjY2VwdERhdGEoYSkpe3ZhciBkLGUsZyxoPWYuZXhwYW5kbyxpPWEubm9kZVR5cGUsaj1pP2YuY2FjaGU6YSxrPWk/YVtmLmV4cGFuZG9dOmYuZXhwYW5kbztpZighaltrXSlyZXR1cm47aWYoYil7ZD1jP2pba106altrXS5kYXRhO2lmKGQpe2YuaXNBcnJheShiKT9iPWI6YiBpbiBkP2I9W2JdOihiPWYuY2FtZWxDYXNlKGIpLGIgaW4gZD9iPVtiXTpiPWIuc3BsaXQoIiAiKSk7Zm9yKGU9MCxnPWIubGVuZ3RoO2U8ZztlKyspZGVsZXRlIGRbYltlXV07aWYoIShjP206Zi5pc0VtcHR5T2JqZWN0KShkKSlyZXR1cm59fWlmKCFjKXtkZWxldGUgaltrXS5kYXRhO2lmKCFtKGpba10pKXJldHVybn1mLnN1cHBvcnQuZGVsZXRlRXhwYW5kb3x8IWouc2V0SW50ZXJ2YWw/ZGVsZXRlIGpba106altrXT1udWxsLGkmJihmLnN1cHBvcnQuZGVsZXRlRXhwYW5kbz9kZWxldGUgYVtmLmV4cGFuZG9dOmEucmVtb3ZlQXR0cmlidXRlP2EucmVtb3ZlQXR0cmlidXRlKGYuZXhwYW5kbyk6YVtmLmV4cGFuZG9dPW51bGwpfX0sX2RhdGE6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBmLmRhdGEoYSxiLGMsITApfSxhY2NlcHREYXRhOmZ1bmN0aW9uKGEpe2lmKGEubm9kZU5hbWUpe3ZhciBiPWYubm9EYXRhW2Eubm9kZU5hbWUudG9Mb3dlckNhc2UoKV07aWYoYilyZXR1cm4gYiE9PSEwJiZhLmdldEF0dHJpYnV0ZSgiY2xhc3NpZCIpPT09Yn1yZXR1cm4hMH19KSxmLmZuLmV4dGVuZCh7ZGF0YTpmdW5jdGlvbihhLGMpe3ZhciBkLGUsZyxoPW51bGw7aWYodHlwZW9mIGE9PSJ1bmRlZmluZWQiKXtpZih0aGlzLmxlbmd0aCl7aD1mLmRhdGEodGhpc1swXSk7aWYodGhpc1swXS5ub2RlVHlwZT09PTEmJiFmLl9kYXRhKHRoaXNbMF0sInBhcnNlZEF0dHJzIikpe2U9dGhpc1swXS5hdHRyaWJ1dGVzO2Zvcih2YXIgaT0wLGo9ZS5sZW5ndGg7aTxqO2krKylnPWVbaV0ubmFtZSxnLmluZGV4T2YoImRhdGEtIik9PT0wJiYoZz1mLmNhbWVsQ2FzZShnLnN1YnN0cmluZyg1KSksbCh0aGlzWzBdLGcsaFtnXSkpO2YuX2RhdGEodGhpc1swXSwicGFyc2VkQXR0cnMiLCEwKX19cmV0dXJuIGh9aWYodHlwZW9mIGE9PSJvYmplY3QiKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtmLmRhdGEodGhpcyxhKX0pO2Q9YS5zcGxpdCgiLiIpLGRbMV09ZFsxXT8iLiIrZFsxXToiIjtpZihjPT09Yil7aD10aGlzLnRyaWdnZXJIYW5kbGVyKCJnZXREYXRhIitkWzFdKyIhIixbZFswXV0pLGg9PT1iJiZ0aGlzLmxlbmd0aCYmKGg9Zi5kYXRhKHRoaXNbMF0sYSksaD1sKHRoaXNbMF0sYSxoKSk7cmV0dXJuIGg9PT1iJiZkWzFdP3RoaXMuZGF0YShkWzBdKTpofXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYj1mKHRoaXMpLGU9W2RbMF0sY107Yi50cmlnZ2VySGFuZGxlcigic2V0RGF0YSIrZFsxXSsiISIsZSksZi5kYXRhKHRoaXMsYSxjKSxiLnRyaWdnZXJIYW5kbGVyKCJjaGFuZ2VEYXRhIitkWzFdKyIhIixlKX0pfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtmLnJlbW92ZURhdGEodGhpcyxhKX0pfX0pLGYuZXh0ZW5kKHtfbWFyazpmdW5jdGlvbihhLGIpe2EmJihiPShifHwiZngiKSsibWFyayIsZi5fZGF0YShhLGIsKGYuX2RhdGEoYSxiKXx8MCkrMSkpfSxfdW5tYXJrOmZ1bmN0aW9uKGEsYixjKXthIT09ITAmJihjPWIsYj1hLGE9ITEpO2lmKGIpe2M9Y3x8ImZ4Ijt2YXIgZD1jKyJtYXJrIixlPWE/MDooZi5fZGF0YShiLGQpfHwxKS0xO2U/Zi5fZGF0YShiLGQsZSk6KGYucmVtb3ZlRGF0YShiLGQsITApLG4oYixjLCJtYXJrIikpfX0scXVldWU6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkO2lmKGEpe2I9KGJ8fCJmeCIpKyJxdWV1ZSIsZD1mLl9kYXRhKGEsYiksYyYmKCFkfHxmLmlzQXJyYXkoYyk/ZD1mLl9kYXRhKGEsYixmLm1ha2VBcnJheShjKSk6ZC5wdXNoKGMpKTtyZXR1cm4gZHx8W119fSxkZXF1ZXVlOmZ1bmN0aW9uKGEsYil7Yj1ifHwiZngiO3ZhciBjPWYucXVldWUoYSxiKSxkPWMuc2hpZnQoKSxlPXt9O2Q9PT0iaW5wcm9ncmVzcyImJihkPWMuc2hpZnQoKSksZCYmKGI9PT0iZngiJiZjLnVuc2hpZnQoImlucHJvZ3Jlc3MiKSxmLl9kYXRhKGEsYisiLnJ1biIsZSksZC5jYWxsKGEsZnVuY3Rpb24oKXtmLmRlcXVldWUoYSxiKX0sZSkpLGMubGVuZ3RofHwoZi5yZW1vdmVEYXRhKGEsYisicXVldWUgIitiKyIucnVuIiwhMCksbihhLGIsInF1ZXVlIikpfX0pLGYuZm4uZXh0ZW5kKHtxdWV1ZTpmdW5jdGlvbihhLGMpe3R5cGVvZiBhIT0ic3RyaW5nIiYmKGM9YSxhPSJmeCIpO2lmKGM9PT1iKXJldHVybiBmLnF1ZXVlKHRoaXNbMF0sYSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPWYucXVldWUodGhpcyxhLGMpO2E9PT0iZngiJiZiWzBdIT09ImlucHJvZ3Jlc3MiJiZmLmRlcXVldWUodGhpcyxhKX0pfSxkZXF1ZXVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtmLmRlcXVldWUodGhpcyxhKX0pfSxkZWxheTpmdW5jdGlvbihhLGIpe2E9Zi5meD9mLmZ4LnNwZWVkc1thXXx8YTphLGI9Ynx8ImZ4IjtyZXR1cm4gdGhpcy5xdWV1ZShiLGZ1bmN0aW9uKGIsYyl7dmFyIGQ9c2V0VGltZW91dChiLGEpO2Muc3RvcD1mdW5jdGlvbigpe2NsZWFyVGltZW91dChkKX19KX0sY2xlYXJRdWV1ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5xdWV1ZShhfHwiZngiLFtdKX0scHJvbWlzZTpmdW5jdGlvbihhLGMpe2Z1bmN0aW9uIG0oKXstLWh8fGQucmVzb2x2ZVdpdGgoZSxbZV0pfXR5cGVvZiBhIT0ic3RyaW5nIiYmKGM9YSxhPWIpLGE9YXx8ImZ4Ijt2YXIgZD1mLkRlZmVycmVkKCksZT10aGlzLGc9ZS5sZW5ndGgsaD0xLGk9YSsiZGVmZXIiLGo9YSsicXVldWUiLGs9YSsibWFyayIsbDt3aGlsZShnLS0paWYobD1mLmRhdGEoZVtnXSxpLGIsITApfHwoZi5kYXRhKGVbZ10saixiLCEwKXx8Zi5kYXRhKGVbZ10sayxiLCEwKSkmJmYuZGF0YShlW2ddLGksZi5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksITApKWgrKyxsLmFkZChtKTttKCk7cmV0dXJuIGQucHJvbWlzZSgpfX0pO3ZhciBvPS9bXG5cdFxyXS9nLHA9L1xzKy8scT0vXHIvZyxyPS9eKD86YnV0dG9ufGlucHV0KSQvaSxzPS9eKD86YnV0dG9ufGlucHV0fG9iamVjdHxzZWxlY3R8dGV4dGFyZWEpJC9pLHQ9L15hKD86cmVhKT8kL2ksdT0vXig/OmF1dG9mb2N1c3xhdXRvcGxheXxhc3luY3xjaGVja2VkfGNvbnRyb2xzfGRlZmVyfGRpc2FibGVkfGhpZGRlbnxsb29wfG11bHRpcGxlfG9wZW58cmVhZG9ubHl8cmVxdWlyZWR8c2NvcGVkfHNlbGVjdGVkKSQvaSx2PWYuc3VwcG9ydC5nZXRTZXRBdHRyaWJ1dGUsdyx4LHk7Zi5mbi5leHRlbmQoe2F0dHI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZi5hY2Nlc3ModGhpcyxhLGIsITAsZi5hdHRyKX0scmVtb3ZlQXR0cjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Zi5yZW1vdmVBdHRyKHRoaXMsYSl9KX0scHJvcDpmdW5jdGlvbihhLGIpe3JldHVybiBmLmFjY2Vzcyh0aGlzLGEsYiwhMCxmLnByb3ApfSxyZW1vdmVQcm9wOmZ1bmN0aW9uKGEpe2E9Zi5wcm9wRml4W2FdfHxhO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt0cnl7dGhpc1thXT1iLGRlbGV0ZSB0aGlzW2FdfWNhdGNoKGMpe319KX0sYWRkQ2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZyxoLGk7aWYoZi5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYil7Zih0aGlzKS5hZGRDbGFzcyhhLmNhbGwodGhpcyxiLHRoaXMuY2xhc3NOYW1lKSl9KTtpZihhJiZ0eXBlb2YgYT09InN0cmluZyIpe2I9YS5zcGxpdChwKTtmb3IoYz0wLGQ9dGhpcy5sZW5ndGg7YzxkO2MrKyl7ZT10aGlzW2NdO2lmKGUubm9kZVR5cGU9PT0xKWlmKCFlLmNsYXNzTmFtZSYmYi5sZW5ndGg9PT0xKWUuY2xhc3NOYW1lPWE7ZWxzZXtnPSIgIitlLmNsYXNzTmFtZSsiICI7Zm9yKGg9MCxpPWIubGVuZ3RoO2g8aTtoKyspfmcuaW5kZXhPZigiICIrYltoXSsiICIpfHwoZys9YltoXSsiICIpO2UuY2xhc3NOYW1lPWYudHJpbShnKX19fXJldHVybiB0aGlzfSxyZW1vdmVDbGFzczpmdW5jdGlvbihhKXt2YXIgYyxkLGUsZyxoLGksajtpZihmLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXtmKHRoaXMpLnJlbW92ZUNsYXNzKGEuY2FsbCh0aGlzLGIsdGhpcy5jbGFzc05hbWUpKX0pO2lmKGEmJnR5cGVvZiBhPT0ic3RyaW5nInx8YT09PWIpe2M9KGF8fCIiKS5zcGxpdChwKTtmb3IoZD0wLGU9dGhpcy5sZW5ndGg7ZDxlO2QrKyl7Zz10aGlzW2RdO2lmKGcubm9kZVR5cGU9PT0xJiZnLmNsYXNzTmFtZSlpZihhKXtoPSgiICIrZy5jbGFzc05hbWUrIiAiKS5yZXBsYWNlKG8sIiAiKTtmb3IoaT0wLGo9Yy5sZW5ndGg7aTxqO2krKyloPWgucmVwbGFjZSgiICIrY1tpXSsiICIsIiAiKTtnLmNsYXNzTmFtZT1mLnRyaW0oaCl9ZWxzZSBnLmNsYXNzTmFtZT0iIn19cmV0dXJuIHRoaXN9LHRvZ2dsZUNsYXNzOmZ1bmN0aW9uKGEsYil7dmFyIGM9dHlwZW9mIGEsZD10eXBlb2YgYj09ImJvb2xlYW4iO2lmKGYuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGMpe2YodGhpcykudG9nZ2xlQ2xhc3MoYS5jYWxsKHRoaXMsYyx0aGlzLmNsYXNzTmFtZSxiKSxiKX0pO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtpZihjPT09InN0cmluZyIpe3ZhciBlLGc9MCxoPWYodGhpcyksaT1iLGo9YS5zcGxpdChwKTt3aGlsZShlPWpbZysrXSlpPWQ/aTohaC5oYXNDbGFzcyhlKSxoW2k/ImFkZENsYXNzIjoicmVtb3ZlQ2xhc3MiXShlKX1lbHNlIGlmKGM9PT0idW5kZWZpbmVkInx8Yz09PSJib29sZWFuIil0aGlzLmNsYXNzTmFtZSYmZi5fZGF0YSh0aGlzLCJfX2NsYXNzTmFtZV9fIix0aGlzLmNsYXNzTmFtZSksdGhpcy5jbGFzc05hbWU9dGhpcy5jbGFzc05hbWV8fGE9PT0hMT8iIjpmLl9kYXRhKHRoaXMsIl9fY2xhc3NOYW1lX18iKXx8IiJ9KX0saGFzQ2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGI9IiAiK2ErIiAiLGM9MCxkPXRoaXMubGVuZ3RoO2Zvcig7YzxkO2MrKylpZih0aGlzW2NdLm5vZGVUeXBlPT09MSYmKCIgIit0aGlzW2NdLmNsYXNzTmFtZSsiICIpLnJlcGxhY2UobywiICIpLmluZGV4T2YoYik+LTEpcmV0dXJuITA7cmV0dXJuITF9LHZhbDpmdW5jdGlvbihhKXt2YXIgYyxkLGUsZz10aGlzWzBdO2lmKCFhcmd1bWVudHMubGVuZ3RoKXtpZihnKXtjPWYudmFsSG9va3NbZy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXXx8Zi52YWxIb29rc1tnLnR5cGVdO2lmKGMmJiJnZXQiaW4gYyYmKGQ9Yy5nZXQoZywidmFsdWUiKSkhPT1iKXJldHVybiBkO2Q9Zy52YWx1ZTtyZXR1cm4gdHlwZW9mIGQ9PSJzdHJpbmciP2QucmVwbGFjZShxLCIiKTpkPT1udWxsPyIiOmR9cmV0dXJuIGJ9ZT1mLmlzRnVuY3Rpb24oYSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihkKXt2YXIgZz1mKHRoaXMpLGg7aWYodGhpcy5ub2RlVHlwZT09PTEpe2U/aD1hLmNhbGwodGhpcyxkLGcudmFsKCkpOmg9YSxoPT1udWxsP2g9IiI6dHlwZW9mIGg9PSJudW1iZXIiP2grPSIiOmYuaXNBcnJheShoKSYmKGg9Zi5tYXAoaCxmdW5jdGlvbihhKXtyZXR1cm4gYT09bnVsbD8iIjphKyIifSkpLGM9Zi52YWxIb29rc1t0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldfHxmLnZhbEhvb2tzW3RoaXMudHlwZV07aWYoIWN8fCEoInNldCJpbiBjKXx8Yy5zZXQodGhpcyxoLCJ2YWx1ZSIpPT09Yil0aGlzLnZhbHVlPWh9fSl9fSksZi5leHRlbmQoe3ZhbEhvb2tzOntvcHRpb246e2dldDpmdW5jdGlvbihhKXt2YXIgYj1hLmF0dHJpYnV0ZXMudmFsdWU7cmV0dXJuIWJ8fGIuc3BlY2lmaWVkP2EudmFsdWU6YS50ZXh0fX0sc2VsZWN0OntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZz1hLnNlbGVjdGVkSW5kZXgsaD1bXSxpPWEub3B0aW9ucyxqPWEudHlwZT09PSJzZWxlY3Qtb25lIjtpZihnPDApcmV0dXJuIG51bGw7Yz1qP2c6MCxkPWo/ZysxOmkubGVuZ3RoO2Zvcig7YzxkO2MrKyl7ZT1pW2NdO2lmKGUuc2VsZWN0ZWQmJihmLnN1cHBvcnQub3B0RGlzYWJsZWQ/IWUuZGlzYWJsZWQ6ZS5nZXRBdHRyaWJ1dGUoImRpc2FibGVkIik9PT1udWxsKSYmKCFlLnBhcmVudE5vZGUuZGlzYWJsZWR8fCFmLm5vZGVOYW1lKGUucGFyZW50Tm9kZSwib3B0Z3JvdXAiKSkpe2I9ZihlKS52YWwoKTtpZihqKXJldHVybiBiO2gucHVzaChiKX19aWYoaiYmIWgubGVuZ3RoJiZpLmxlbmd0aClyZXR1cm4gZihpW2ddKS52YWwoKTtyZXR1cm4gaH0sc2V0OmZ1bmN0aW9uKGEsYil7dmFyIGM9Zi5tYWtlQXJyYXkoYik7ZihhKS5maW5kKCJvcHRpb24iKS5lYWNoKGZ1bmN0aW9uKCl7dGhpcy5zZWxlY3RlZD1mLmluQXJyYXkoZih0aGlzKS52YWwoKSxjKT49MH0pLGMubGVuZ3RofHwoYS5zZWxlY3RlZEluZGV4PS0xKTtyZXR1cm4gY319fSxhdHRyRm46e3ZhbDohMCxjc3M6ITAsaHRtbDohMCx0ZXh0OiEwLGRhdGE6ITAsd2lkdGg6ITAsaGVpZ2h0OiEwLG9mZnNldDohMH0sYXR0cjpmdW5jdGlvbihhLGMsZCxlKXt2YXIgZyxoLGksaj1hLm5vZGVUeXBlO2lmKCFhfHxqPT09M3x8aj09PTh8fGo9PT0yKXJldHVybiBiO2lmKGUmJmMgaW4gZi5hdHRyRm4pcmV0dXJuIGYoYSlbY10oZCk7aWYoISgiZ2V0QXR0cmlidXRlImluIGEpKXJldHVybiBmLnByb3AoYSxjLGQpO2k9aiE9PTF8fCFmLmlzWE1MRG9jKGEpLGkmJihjPWMudG9Mb3dlckNhc2UoKSxoPWYuYXR0ckhvb2tzW2NdfHwodS50ZXN0KGMpP3g6dykpO2lmKGQhPT1iKXtpZihkPT09bnVsbCl7Zi5yZW1vdmVBdHRyKGEsYyk7cmV0dXJuIGJ9aWYoaCYmInNldCJpbiBoJiZpJiYoZz1oLnNldChhLGQsYykpIT09YilyZXR1cm4gZzthLnNldEF0dHJpYnV0ZShjLCIiK2QpO3JldHVybiBkfWlmKGgmJiJnZXQiaW4gaCYmaSYmKGc9aC5nZXQoYSxjKSkhPT1udWxsKXJldHVybiBnO2c9YS5nZXRBdHRyaWJ1dGUoYyk7cmV0dXJuIGc9PT1udWxsP2I6Z30scmVtb3ZlQXR0cjpmdW5jdGlvbihhLGIpe3ZhciBjLGQsZSxnLGg9MDtpZihhLm5vZGVUeXBlPT09MSl7ZD0oYnx8IiIpLnNwbGl0KHApLGc9ZC5sZW5ndGg7Zm9yKDtoPGc7aCsrKWU9ZFtoXS50b0xvd2VyQ2FzZSgpLGM9Zi5wcm9wRml4W2VdfHxlLGYuYXR0cihhLGUsIiIpLGEucmVtb3ZlQXR0cmlidXRlKHY/ZTpjKSx1LnRlc3QoZSkmJmMgaW4gYSYmKGFbY109ITEpfX0sYXR0ckhvb2tzOnt0eXBlOntzZXQ6ZnVuY3Rpb24oYSxiKXtpZihyLnRlc3QoYS5ub2RlTmFtZSkmJmEucGFyZW50Tm9kZSlmLmVycm9yKCJ0eXBlIHByb3BlcnR5IGNhbid0IGJlIGNoYW5nZWQiKTtlbHNlIGlmKCFmLnN1cHBvcnQucmFkaW9WYWx1ZSYmYj09PSJyYWRpbyImJmYubm9kZU5hbWUoYSwiaW5wdXQiKSl7dmFyIGM9YS52YWx1ZTthLnNldEF0dHJpYnV0ZSgidHlwZSIsYiksYyYmKGEudmFsdWU9Yyk7cmV0dXJuIGJ9fX0sdmFsdWU6e2dldDpmdW5jdGlvbihhLGIpe2lmKHcmJmYubm9kZU5hbWUoYSwiYnV0dG9uIikpcmV0dXJuIHcuZ2V0KGEsYik7cmV0dXJuIGIgaW4gYT9hLnZhbHVlOm51bGx9LHNldDpmdW5jdGlvbihhLGIsYyl7aWYodyYmZi5ub2RlTmFtZShhLCJidXR0b24iKSlyZXR1cm4gdy5zZXQoYSxiLGMpO2EudmFsdWU9Yn19fSxwcm9wRml4Ont0YWJpbmRleDoidGFiSW5kZXgiLHJlYWRvbmx5OiJyZWFkT25seSIsImZvciI6Imh0bWxGb3IiLCJjbGFzcyI6ImNsYXNzTmFtZSIsbWF4bGVuZ3RoOiJtYXhMZW5ndGgiLGNlbGxzcGFjaW5nOiJjZWxsU3BhY2luZyIsY2VsbHBhZGRpbmc6ImNlbGxQYWRkaW5nIixyb3dzcGFuOiJyb3dTcGFuIixjb2xzcGFuOiJjb2xTcGFuIix1c2VtYXA6InVzZU1hcCIsZnJhbWVib3JkZXI6ImZyYW1lQm9yZGVyIixjb250ZW50ZWRpdGFibGU6ImNvbnRlbnRFZGl0YWJsZSJ9LHByb3A6ZnVuY3Rpb24oYSxjLGQpe3ZhciBlLGcsaCxpPWEubm9kZVR5cGU7aWYoIWF8fGk9PT0zfHxpPT09OHx8aT09PTIpcmV0dXJuIGI7aD1pIT09MXx8IWYuaXNYTUxEb2MoYSksaCYmKGM9Zi5wcm9wRml4W2NdfHxjLGc9Zi5wcm9wSG9va3NbY10pO3JldHVybiBkIT09Yj9nJiYic2V0ImluIGcmJihlPWcuc2V0KGEsZCxjKSkhPT1iP2U6YVtjXT1kOmcmJiJnZXQiaW4gZyYmKGU9Zy5nZXQoYSxjKSkhPT1udWxsP2U6YVtjXX0scHJvcEhvb2tzOnt0YWJJbmRleDp7Z2V0OmZ1bmN0aW9uKGEpe3ZhciBjPWEuZ2V0QXR0cmlidXRlTm9kZSgidGFiaW5kZXgiKTtyZXR1cm4gYyYmYy5zcGVjaWZpZWQ/cGFyc2VJbnQoYy52YWx1ZSwxMCk6cy50ZXN0KGEubm9kZU5hbWUpfHx0LnRlc3QoYS5ub2RlTmFtZSkmJmEuaHJlZj8wOmJ9fX19KSxmLmF0dHJIb29rcy50YWJpbmRleD1mLnByb3BIb29rcy50YWJJbmRleCx4PXtnZXQ6ZnVuY3Rpb24oYSxjKXt2YXIgZCxlPWYucHJvcChhLGMpO3JldHVybiBlPT09ITB8fHR5cGVvZiBlIT0iYm9vbGVhbiImJihkPWEuZ2V0QXR0cmlidXRlTm9kZShjKSkmJmQubm9kZVZhbHVlIT09ITE/Yy50b0xvd2VyQ2FzZSgpOmJ9LHNldDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ7Yj09PSExP2YucmVtb3ZlQXR0cihhLGMpOihkPWYucHJvcEZpeFtjXXx8YyxkIGluIGEmJihhW2RdPSEwKSxhLnNldEF0dHJpYnV0ZShjLGMudG9Mb3dlckNhc2UoKSkpO3JldHVybiBjfX0sdnx8KHk9e25hbWU6ITAsaWQ6ITB9LHc9Zi52YWxIb29rcy5idXR0b249e2dldDpmdW5jdGlvbihhLGMpe3ZhciBkO2Q9YS5nZXRBdHRyaWJ1dGVOb2RlKGMpO3JldHVybiBkJiYoeVtjXT9kLm5vZGVWYWx1ZSE9PSIiOmQuc3BlY2lmaWVkKT9kLm5vZGVWYWx1ZTpifSxzZXQ6ZnVuY3Rpb24oYSxiLGQpe3ZhciBlPWEuZ2V0QXR0cmlidXRlTm9kZShkKTtlfHwoZT1jLmNyZWF0ZUF0dHJpYnV0ZShkKSxhLnNldEF0dHJpYnV0ZU5vZGUoZSkpO3JldHVybiBlLm5vZGVWYWx1ZT1iKyIifX0sZi5hdHRySG9va3MudGFiaW5kZXguc2V0PXcuc2V0LGYuZWFjaChbIndpZHRoIiwiaGVpZ2h0Il0sZnVuY3Rpb24oYSxiKXtmLmF0dHJIb29rc1tiXT1mLmV4dGVuZChmLmF0dHJIb29rc1tiXSx7c2V0OmZ1bmN0aW9uKGEsYyl7aWYoYz09PSIiKXthLnNldEF0dHJpYnV0ZShiLCJhdXRvIik7cmV0dXJuIGN9fX0pfSksZi5hdHRySG9va3MuY29udGVudGVkaXRhYmxlPXtnZXQ6dy5nZXQsc2V0OmZ1bmN0aW9uKGEsYixjKXtiPT09IiImJihiPSJmYWxzZSIpLHcuc2V0KGEsYixjKX19KSxmLnN1cHBvcnQuaHJlZk5vcm1hbGl6ZWR8fGYuZWFjaChbImhyZWYiLCJzcmMiLCJ3aWR0aCIsImhlaWdodCJdLGZ1bmN0aW9uKGEsYyl7Zi5hdHRySG9va3NbY109Zi5leHRlbmQoZi5hdHRySG9va3NbY10se2dldDpmdW5jdGlvbihhKXt2YXIgZD1hLmdldEF0dHJpYnV0ZShjLDIpO3JldHVybiBkPT09bnVsbD9iOmR9fSl9KSxmLnN1cHBvcnQuc3R5bGV8fChmLmF0dHJIb29rcy5zdHlsZT17Z2V0OmZ1bmN0aW9uKGEpe3JldHVybiBhLnN0eWxlLmNzc1RleHQudG9Mb3dlckNhc2UoKXx8Yn0sc2V0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuc3R5bGUuY3NzVGV4dD0iIitifX0pLGYuc3VwcG9ydC5vcHRTZWxlY3RlZHx8KGYucHJvcEhvb2tzLnNlbGVjdGVkPWYuZXh0ZW5kKGYucHJvcEhvb2tzLnNlbGVjdGVkLHtnZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5wYXJlbnROb2RlO2ImJihiLnNlbGVjdGVkSW5kZXgsYi5wYXJlbnROb2RlJiZiLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCk7cmV0dXJuIG51bGx9fSkpLGYuc3VwcG9ydC5lbmN0eXBlfHwoZi5wcm9wRml4LmVuY3R5cGU9ImVuY29kaW5nIiksZi5zdXBwb3J0LmNoZWNrT258fGYuZWFjaChbInJhZGlvIiwiY2hlY2tib3giXSxmdW5jdGlvbigpe2YudmFsSG9va3NbdGhpc109e2dldDpmdW5jdGlvbihhKXtyZXR1cm4gYS5nZXRBdHRyaWJ1dGUoInZhbHVlIik9PT1udWxsPyJvbiI6YS52YWx1ZX19fSksZi5lYWNoKFsicmFkaW8iLCJjaGVja2JveCJdLGZ1bmN0aW9uKCl7Zi52YWxIb29rc1t0aGlzXT1mLmV4dGVuZChmLnZhbEhvb2tzW3RoaXNdLHtzZXQ6ZnVuY3Rpb24oYSxiKXtpZihmLmlzQXJyYXkoYikpcmV0dXJuIGEuY2hlY2tlZD1mLmluQXJyYXkoZihhKS52YWwoKSxiKT49MH19KX0pO3ZhciB6PS9cLiguKikkLyxBPS9eKD86dGV4dGFyZWF8aW5wdXR8c2VsZWN0KSQvaSxCPS9cLi9nLEM9LyAvZyxEPS9bXlx3XHMufGBdL2csRT0vXihbXlwuXSopPyg/OlwuKC4rKSk/JC8sRj0vXGJob3ZlcihcLlxTKyk/LyxHPS9ea2V5LyxIPS9eKD86bW91c2V8Y29udGV4dG1lbnUpfGNsaWNrLyxJPS9eKFx3KikoPzojKFtcd1wtXSspKT8oPzpcLihbXHdcLV0rKSk/JC8sSj1mdW5jdGlvbihhKXt2YXIgYj1JLmV4ZWMoYSk7YiYmCihiWzFdPShiWzFdfHwiIikudG9Mb3dlckNhc2UoKSxiWzNdPWJbM10mJm5ldyBSZWdFeHAoIig/Ol58XFxzKSIrYlszXSsiKD86XFxzfCQpIikpO3JldHVybiBifSxLPWZ1bmN0aW9uKGEsYil7cmV0dXJuKCFiWzFdfHxhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1iWzFdKSYmKCFiWzJdfHxhLmlkPT09YlsyXSkmJighYlszXXx8YlszXS50ZXN0KGEuY2xhc3NOYW1lKSl9LEw9ZnVuY3Rpb24oYSl7cmV0dXJuIGYuZXZlbnQuc3BlY2lhbC5ob3Zlcj9hOmEucmVwbGFjZShGLCJtb3VzZWVudGVyJDEgbW91c2VsZWF2ZSQxIil9O2YuZXZlbnQ9e2FkZDpmdW5jdGlvbihhLGMsZCxlLGcpe3ZhciBoLGksaixrLGwsbSxuLG8scCxxLHIscztpZighKGEubm9kZVR5cGU9PT0zfHxhLm5vZGVUeXBlPT09OHx8IWN8fCFkfHwhKGg9Zi5fZGF0YShhKSkpKXtkLmhhbmRsZXImJihwPWQsZD1wLmhhbmRsZXIpLGQuZ3VpZHx8KGQuZ3VpZD1mLmd1aWQrKyksaj1oLmV2ZW50cyxqfHwoaC5ldmVudHM9aj17fSksaT1oLmhhbmRsZSxpfHwoaC5oYW5kbGU9aT1mdW5jdGlvbihhKXtyZXR1cm4gdHlwZW9mIGYhPSJ1bmRlZmluZWQiJiYoIWF8fGYuZXZlbnQudHJpZ2dlcmVkIT09YS50eXBlKT9mLmV2ZW50LmRpc3BhdGNoLmFwcGx5KGkuZWxlbSxhcmd1bWVudHMpOmJ9LGkuZWxlbT1hKSxjPUwoYykuc3BsaXQoIiAiKTtmb3Ioaz0wO2s8Yy5sZW5ndGg7aysrKXtsPUUuZXhlYyhjW2tdKXx8W10sbT1sWzFdLG49KGxbMl18fCIiKS5zcGxpdCgiLiIpLnNvcnQoKSxzPWYuZXZlbnQuc3BlY2lhbFttXXx8e30sbT0oZz9zLmRlbGVnYXRlVHlwZTpzLmJpbmRUeXBlKXx8bSxzPWYuZXZlbnQuc3BlY2lhbFttXXx8e30sbz1mLmV4dGVuZCh7dHlwZTptLG9yaWdUeXBlOmxbMV0sZGF0YTplLGhhbmRsZXI6ZCxndWlkOmQuZ3VpZCxzZWxlY3RvcjpnLG5hbWVzcGFjZTpuLmpvaW4oIi4iKX0scCksZyYmKG8ucXVpY2s9SihnKSwhby5xdWljayYmZi5leHByLm1hdGNoLlBPUy50ZXN0KGcpJiYoby5pc1Bvc2l0aW9uYWw9ITApKSxyPWpbbV07aWYoIXIpe3I9alttXT1bXSxyLmRlbGVnYXRlQ291bnQ9MDtpZighcy5zZXR1cHx8cy5zZXR1cC5jYWxsKGEsZSxuLGkpPT09ITEpYS5hZGRFdmVudExpc3RlbmVyP2EuYWRkRXZlbnRMaXN0ZW5lcihtLGksITEpOmEuYXR0YWNoRXZlbnQmJmEuYXR0YWNoRXZlbnQoIm9uIittLGkpfXMuYWRkJiYocy5hZGQuY2FsbChhLG8pLG8uaGFuZGxlci5ndWlkfHwoby5oYW5kbGVyLmd1aWQ9ZC5ndWlkKSksZz9yLnNwbGljZShyLmRlbGVnYXRlQ291bnQrKywwLG8pOnIucHVzaChvKSxmLmV2ZW50Lmdsb2JhbFttXT0hMH1hPW51bGx9fSxnbG9iYWw6e30scmVtb3ZlOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWYuaGFzRGF0YShhKSYmZi5fZGF0YShhKSxnLGgsaSxqLGssbCxtLG4sbyxwLHE7aWYoISFlJiYhIShtPWUuZXZlbnRzKSl7Yj1MKGJ8fCIiKS5zcGxpdCgiICIpO2ZvcihnPTA7ZzxiLmxlbmd0aDtnKyspe2g9RS5leGVjKGJbZ10pfHxbXSxpPWhbMV0saj1oWzJdO2lmKCFpKXtqPWo/Ii4iK2o6IiI7Zm9yKGwgaW4gbSlmLmV2ZW50LnJlbW92ZShhLGwraixjLGQpO3JldHVybn1uPWYuZXZlbnQuc3BlY2lhbFtpXXx8e30saT0oZD9uLmRlbGVnYXRlVHlwZTpuLmJpbmRUeXBlKXx8aSxwPW1baV18fFtdLGs9cC5sZW5ndGgsaj1qP25ldyBSZWdFeHAoIihefFxcLikiK2ouc3BsaXQoIi4iKS5zb3J0KCkuam9pbigiXFwuKD86LipcXC4pPyIpKyIoXFwufCQpIik6bnVsbDtpZihjfHxqfHxkfHxuLnJlbW92ZSlmb3IobD0wO2w8cC5sZW5ndGg7bCsrKXtxPXBbbF07aWYoIWN8fGMuZ3VpZD09PXEuZ3VpZClpZighanx8ai50ZXN0KHEubmFtZXNwYWNlKSlpZighZHx8ZD09PXEuc2VsZWN0b3J8fGQ9PT0iKioiJiZxLnNlbGVjdG9yKXAuc3BsaWNlKGwtLSwxKSxxLnNlbGVjdG9yJiZwLmRlbGVnYXRlQ291bnQtLSxuLnJlbW92ZSYmbi5yZW1vdmUuY2FsbChhLHEpfWVsc2UgcC5sZW5ndGg9MDtwLmxlbmd0aD09PTAmJmshPT1wLmxlbmd0aCYmKCghbi50ZWFyZG93bnx8bi50ZWFyZG93bi5jYWxsKGEsaik9PT0hMSkmJmYucmVtb3ZlRXZlbnQoYSxpLGUuaGFuZGxlKSxkZWxldGUgbVtpXSl9Zi5pc0VtcHR5T2JqZWN0KG0pJiYobz1lLmhhbmRsZSxvJiYoby5lbGVtPW51bGwpLGYucmVtb3ZlRGF0YShhLFsiZXZlbnRzIiwiaGFuZGxlIl0sITApKX19LGN1c3RvbUV2ZW50OntnZXREYXRhOiEwLHNldERhdGE6ITAsY2hhbmdlRGF0YTohMH0sdHJpZ2dlcjpmdW5jdGlvbihjLGQsZSxnKXtpZighZXx8ZS5ub2RlVHlwZSE9PTMmJmUubm9kZVR5cGUhPT04KXt2YXIgaD1jLnR5cGV8fGMsaT1bXSxqLGssbCxtLG4sbyxwLHEscixzO2guaW5kZXhPZigiISIpPj0wJiYoaD1oLnNsaWNlKDAsLTEpLGs9ITApLGguaW5kZXhPZigiLiIpPj0wJiYoaT1oLnNwbGl0KCIuIiksaD1pLnNoaWZ0KCksaS5zb3J0KCkpO2lmKCghZXx8Zi5ldmVudC5jdXN0b21FdmVudFtoXSkmJiFmLmV2ZW50Lmdsb2JhbFtoXSlyZXR1cm47Yz10eXBlb2YgYz09Im9iamVjdCI/Y1tmLmV4cGFuZG9dP2M6bmV3IGYuRXZlbnQoaCxjKTpuZXcgZi5FdmVudChoKSxjLnR5cGU9aCxjLmlzVHJpZ2dlcj0hMCxjLmV4Y2x1c2l2ZT1rLGMubmFtZXNwYWNlPWkuam9pbigiLiIpLGMubmFtZXNwYWNlX3JlPWMubmFtZXNwYWNlP25ldyBSZWdFeHAoIihefFxcLikiK2kuam9pbigiXFwuKD86LipcXC4pPyIpKyIoXFwufCQpIik6bnVsbCxvPWguaW5kZXhPZigiOiIpPDA/Im9uIitoOiIiLChnfHwhZSkmJmMucHJldmVudERlZmF1bHQoKTtpZighZSl7aj1mLmNhY2hlO2ZvcihsIGluIGopaltsXS5ldmVudHMmJmpbbF0uZXZlbnRzW2hdJiZmLmV2ZW50LnRyaWdnZXIoYyxkLGpbbF0uaGFuZGxlLmVsZW0sITApO3JldHVybn1jLnJlc3VsdD1iLGMudGFyZ2V0fHwoYy50YXJnZXQ9ZSksZD1kIT1udWxsP2YubWFrZUFycmF5KGQpOltdLGQudW5zaGlmdChjKSxwPWYuZXZlbnQuc3BlY2lhbFtoXXx8e307aWYocC50cmlnZ2VyJiZwLnRyaWdnZXIuYXBwbHkoZSxkKT09PSExKXJldHVybjtyPVtbZSxwLmJpbmRUeXBlfHxoXV07aWYoIWcmJiFwLm5vQnViYmxlJiYhZi5pc1dpbmRvdyhlKSl7cz1wLmRlbGVnYXRlVHlwZXx8aCxuPW51bGw7Zm9yKG09ZS5wYXJlbnROb2RlO207bT1tLnBhcmVudE5vZGUpci5wdXNoKFttLHNdKSxuPW07biYmbj09PWUub3duZXJEb2N1bWVudCYmci5wdXNoKFtuLmRlZmF1bHRWaWV3fHxuLnBhcmVudFdpbmRvd3x8YSxzXSl9Zm9yKGw9MDtsPHIubGVuZ3RoO2wrKyl7bT1yW2xdWzBdLGMudHlwZT1yW2xdWzFdLHE9KGYuX2RhdGEobSwiZXZlbnRzIil8fHt9KVtjLnR5cGVdJiZmLl9kYXRhKG0sImhhbmRsZSIpLHEmJnEuYXBwbHkobSxkKSxxPW8mJm1bb10scSYmZi5hY2NlcHREYXRhKG0pJiZxLmFwcGx5KG0sZCk7aWYoYy5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKWJyZWFrfWMudHlwZT1oLGMuaXNEZWZhdWx0UHJldmVudGVkKCl8fCghcC5fZGVmYXVsdHx8cC5fZGVmYXVsdC5hcHBseShlLm93bmVyRG9jdW1lbnQsZCk9PT0hMSkmJihoIT09ImNsaWNrInx8IWYubm9kZU5hbWUoZSwiYSIpKSYmZi5hY2NlcHREYXRhKGUpJiZvJiZlW2hdJiYoaCE9PSJmb2N1cyImJmghPT0iYmx1ciJ8fGMudGFyZ2V0Lm9mZnNldFdpZHRoIT09MCkmJiFmLmlzV2luZG93KGUpJiYobj1lW29dLG4mJihlW29dPW51bGwpLGYuZXZlbnQudHJpZ2dlcmVkPWgsZVtoXSgpLGYuZXZlbnQudHJpZ2dlcmVkPWIsbiYmKGVbb109bikpO3JldHVybiBjLnJlc3VsdH19LGRpc3BhdGNoOmZ1bmN0aW9uKGMpe2M9Zi5ldmVudC5maXgoY3x8YS5ldmVudCk7dmFyIGQ9KGYuX2RhdGEodGhpcywiZXZlbnRzIil8fHt9KVtjLnR5cGVdfHxbXSxlPWQuZGVsZWdhdGVDb3VudCxnPVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLDApLGg9IWMuZXhjbHVzaXZlJiYhYy5uYW1lc3BhY2UsaT0oZi5ldmVudC5zcGVjaWFsW2MudHlwZV18fHt9KS5oYW5kbGUsaj1bXSxrLGwsbSxuLG8scCxxLHIscyx0LHU7Z1swXT1jLGMuZGVsZWdhdGVUYXJnZXQ9dGhpcztpZihlJiYhYy50YXJnZXQuZGlzYWJsZWQmJighYy5idXR0b258fGMudHlwZSE9PSJjbGljayIpKWZvcihtPWMudGFyZ2V0O20hPXRoaXM7bT1tLnBhcmVudE5vZGV8fHRoaXMpe289e30scT1bXTtmb3Ioaz0wO2s8ZTtrKyspcj1kW2tdLHM9ci5zZWxlY3Rvcix0PW9bc10sci5pc1Bvc2l0aW9uYWw/dD0odHx8KG9bc109ZihzKSkpLmluZGV4KG0pPj0wOnQ9PT1iJiYodD1vW3NdPXIucXVpY2s/SyhtLHIucXVpY2spOmYobSkuaXMocykpLHQmJnEucHVzaChyKTtxLmxlbmd0aCYmai5wdXNoKHtlbGVtOm0sbWF0Y2hlczpxfSl9ZC5sZW5ndGg+ZSYmai5wdXNoKHtlbGVtOnRoaXMsbWF0Y2hlczpkLnNsaWNlKGUpfSk7Zm9yKGs9MDtrPGoubGVuZ3RoJiYhYy5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpO2srKyl7cD1qW2tdLGMuY3VycmVudFRhcmdldD1wLmVsZW07Zm9yKGw9MDtsPHAubWF0Y2hlcy5sZW5ndGgmJiFjLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkKCk7bCsrKXtyPXAubWF0Y2hlc1tsXTtpZihofHwhYy5uYW1lc3BhY2UmJiFyLm5hbWVzcGFjZXx8Yy5uYW1lc3BhY2VfcmUmJmMubmFtZXNwYWNlX3JlLnRlc3Qoci5uYW1lc3BhY2UpKWMuZGF0YT1yLmRhdGEsYy5oYW5kbGVPYmo9cixuPShpfHxyLmhhbmRsZXIpLmFwcGx5KHAuZWxlbSxnKSxuIT09YiYmKGMucmVzdWx0PW4sbj09PSExJiYoYy5wcmV2ZW50RGVmYXVsdCgpLGMuc3RvcFByb3BhZ2F0aW9uKCkpKX19cmV0dXJuIGMucmVzdWx0fSxwcm9wczoiYXR0ckNoYW5nZSBhdHRyTmFtZSByZWxhdGVkTm9kZSBzcmNFbGVtZW50IGFsdEtleSBidWJibGVzIGNhbmNlbGFibGUgY3RybEtleSBjdXJyZW50VGFyZ2V0IGV2ZW50UGhhc2UgbWV0YUtleSByZWxhdGVkVGFyZ2V0IHNoaWZ0S2V5IHRhcmdldCB0aW1lU3RhbXAgdmlldyB3aGljaCIuc3BsaXQoIiAiKSxmaXhIb29rczp7fSxrZXlIb29rczp7cHJvcHM6ImNoYXIgY2hhckNvZGUga2V5IGtleUNvZGUiLnNwbGl0KCIgIiksZmlsdGVyOmZ1bmN0aW9uKGEsYil7YS53aGljaD09bnVsbCYmKGEud2hpY2g9Yi5jaGFyQ29kZSE9bnVsbD9iLmNoYXJDb2RlOmIua2V5Q29kZSk7cmV0dXJuIGF9fSxtb3VzZUhvb2tzOntwcm9wczoiYnV0dG9uIGJ1dHRvbnMgY2xpZW50WCBjbGllbnRZIGZyb21FbGVtZW50IG9mZnNldFggb2Zmc2V0WSBwYWdlWCBwYWdlWSBzY3JlZW5YIHNjcmVlblkgdG9FbGVtZW50IHdoZWVsRGVsdGEiLnNwbGl0KCIgIiksZmlsdGVyOmZ1bmN0aW9uKGEsZCl7dmFyIGUsZixnLGg9ZC5idXR0b24saT1kLmZyb21FbGVtZW50O2EucGFnZVg9PW51bGwmJmQuY2xpZW50WCE9bnVsbCYmKGU9YS50YXJnZXQub3duZXJEb2N1bWVudHx8YyxmPWUuZG9jdW1lbnRFbGVtZW50LGc9ZS5ib2R5LGEucGFnZVg9ZC5jbGllbnRYKyhmJiZmLnNjcm9sbExlZnR8fGcmJmcuc2Nyb2xsTGVmdHx8MCktKGYmJmYuY2xpZW50TGVmdHx8ZyYmZy5jbGllbnRMZWZ0fHwwKSxhLnBhZ2VZPWQuY2xpZW50WSsoZiYmZi5zY3JvbGxUb3B8fGcmJmcuc2Nyb2xsVG9wfHwwKS0oZiYmZi5jbGllbnRUb3B8fGcmJmcuY2xpZW50VG9wfHwwKSksIWEucmVsYXRlZFRhcmdldCYmaSYmKGEucmVsYXRlZFRhcmdldD1pPT09YS50YXJnZXQ/ZC50b0VsZW1lbnQ6aSksIWEud2hpY2gmJmghPT1iJiYoYS53aGljaD1oJjE/MTpoJjI/MzpoJjQ/MjowKTtyZXR1cm4gYX19LGZpeDpmdW5jdGlvbihhKXtpZihhW2YuZXhwYW5kb10pcmV0dXJuIGE7dmFyIGQsZSxnPWEsaD1mLmV2ZW50LmZpeEhvb2tzW2EudHlwZV18fHt9LGk9aC5wcm9wcz90aGlzLnByb3BzLmNvbmNhdChoLnByb3BzKTp0aGlzLnByb3BzO2E9Zi5FdmVudChnKTtmb3IoZD1pLmxlbmd0aDtkOyllPWlbLS1kXSxhW2VdPWdbZV07YS50YXJnZXR8fChhLnRhcmdldD1nLnNyY0VsZW1lbnR8fGMpLGEudGFyZ2V0Lm5vZGVUeXBlPT09MyYmKGEudGFyZ2V0PWEudGFyZ2V0LnBhcmVudE5vZGUpLGEubWV0YUtleT09PWImJihhLm1ldGFLZXk9YS5jdHJsS2V5KTtyZXR1cm4gaC5maWx0ZXI/aC5maWx0ZXIoYSxnKTphfSxzcGVjaWFsOntyZWFkeTp7c2V0dXA6Zi5iaW5kUmVhZHl9LGZvY3VzOntkZWxlZ2F0ZVR5cGU6ImZvY3VzaW4iLG5vQnViYmxlOiEwfSxibHVyOntkZWxlZ2F0ZVR5cGU6ImZvY3Vzb3V0Iixub0J1YmJsZTohMH0sYmVmb3JldW5sb2FkOntzZXR1cDpmdW5jdGlvbihhLGIsYyl7Zi5pc1dpbmRvdyh0aGlzKSYmKHRoaXMub25iZWZvcmV1bmxvYWQ9Yyl9LHRlYXJkb3duOmZ1bmN0aW9uKGEsYil7dGhpcy5vbmJlZm9yZXVubG9hZD09PWImJih0aGlzLm9uYmVmb3JldW5sb2FkPW51bGwpfX19LHNpbXVsYXRlOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWYuZXh0ZW5kKG5ldyBmLkV2ZW50LGMse3R5cGU6YSxpc1NpbXVsYXRlZDohMCxvcmlnaW5hbEV2ZW50Ont9fSk7ZD9mLmV2ZW50LnRyaWdnZXIoZSxudWxsLGIpOmYuZXZlbnQuZGlzcGF0Y2guY2FsbChiLGUpLGUuaXNEZWZhdWx0UHJldmVudGVkKCkmJmMucHJldmVudERlZmF1bHQoKX19LGYuZXZlbnQuaGFuZGxlPWYuZXZlbnQuZGlzcGF0Y2gsZi5yZW1vdmVFdmVudD1jLnJlbW92ZUV2ZW50TGlzdGVuZXI/ZnVuY3Rpb24oYSxiLGMpe2EucmVtb3ZlRXZlbnRMaXN0ZW5lciYmYS5yZW1vdmVFdmVudExpc3RlbmVyKGIsYywhMSl9OmZ1bmN0aW9uKGEsYixjKXthLmRldGFjaEV2ZW50JiZhLmRldGFjaEV2ZW50KCJvbiIrYixjKX0sZi5FdmVudD1mdW5jdGlvbihhLGIpe2lmKCEodGhpcyBpbnN0YW5jZW9mIGYuRXZlbnQpKXJldHVybiBuZXcgZi5FdmVudChhLGIpO2EmJmEudHlwZT8odGhpcy5vcmlnaW5hbEV2ZW50PWEsdGhpcy50eXBlPWEudHlwZSx0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1hLmRlZmF1bHRQcmV2ZW50ZWR8fGEucmV0dXJuVmFsdWU9PT0hMXx8YS5nZXRQcmV2ZW50RGVmYXVsdCYmYS5nZXRQcmV2ZW50RGVmYXVsdCgpP046TSk6dGhpcy50eXBlPWEsYiYmZi5leHRlbmQodGhpcyxiKSx0aGlzLnRpbWVTdGFtcD1hJiZhLnRpbWVTdGFtcHx8Zi5ub3coKSx0aGlzW2YuZXhwYW5kb109ITB9LGYuRXZlbnQucHJvdG90eXBlPXtwcmV2ZW50RGVmYXVsdDpmdW5jdGlvbigpe3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPU47dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50OyFhfHwoYS5wcmV2ZW50RGVmYXVsdD9hLnByZXZlbnREZWZhdWx0KCk6YS5yZXR1cm5WYWx1ZT0hMSl9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3RoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9Tjt2YXIgYT10aGlzLm9yaWdpbmFsRXZlbnQ7IWF8fChhLnN0b3BQcm9wYWdhdGlvbiYmYS5zdG9wUHJvcGFnYXRpb24oKSxhLmNhbmNlbEJ1YmJsZT0hMCl9LHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3RoaXMuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ9Tix0aGlzLnN0b3BQcm9wYWdhdGlvbigpfSxpc0RlZmF1bHRQcmV2ZW50ZWQ6TSxpc1Byb3BhZ2F0aW9uU3RvcHBlZDpNLGlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOk19LGYuZWFjaCh7bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCJ9LGZ1bmN0aW9uKGEsYil7Zi5ldmVudC5zcGVjaWFsW2FdPWYuZXZlbnQuc3BlY2lhbFtiXT17ZGVsZWdhdGVUeXBlOmIsYmluZFR5cGU6YixoYW5kbGU6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcyxjPWEucmVsYXRlZFRhcmdldCxkPWEuaGFuZGxlT2JqLGU9ZC5zZWxlY3RvcixnLGg7aWYoIWN8fGQub3JpZ1R5cGU9PT1hLnR5cGV8fGMhPT1iJiYhZi5jb250YWlucyhiLGMpKWc9YS50eXBlLGEudHlwZT1kLm9yaWdUeXBlLGg9ZC5oYW5kbGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxhLnR5cGU9ZztyZXR1cm4gaH19fSksZi5zdXBwb3J0LnN1Ym1pdEJ1YmJsZXN8fChmLmV2ZW50LnNwZWNpYWwuc3VibWl0PXtzZXR1cDpmdW5jdGlvbigpe2lmKGYubm9kZU5hbWUodGhpcywiZm9ybSIpKXJldHVybiExO2YuZXZlbnQuYWRkKHRoaXMsImNsaWNrLl9zdWJtaXQga2V5cHJlc3MuX3N1Ym1pdCIsZnVuY3Rpb24oYSl7dmFyIGM9YS50YXJnZXQsZD1mLm5vZGVOYW1lKGMsImlucHV0Iil8fGYubm9kZU5hbWUoYywiYnV0dG9uIik/Yy5mb3JtOmI7ZCYmIWQuX3N1Ym1pdF9hdHRhY2hlZCYmKGYuZXZlbnQuYWRkKGQsInN1Ym1pdC5fc3VibWl0IixmdW5jdGlvbihhKXt0aGlzLnBhcmVudE5vZGUmJmYuZXZlbnQuc2ltdWxhdGUoInN1Ym1pdCIsdGhpcy5wYXJlbnROb2RlLGEsITApfSksZC5fc3VibWl0X2F0dGFjaGVkPSEwKX0pfSx0ZWFyZG93bjpmdW5jdGlvbigpe2lmKGYubm9kZU5hbWUodGhpcywiZm9ybSIpKXJldHVybiExO2YuZXZlbnQucmVtb3ZlKHRoaXMsIi5fc3VibWl0Iil9fSksZi5zdXBwb3J0LmNoYW5nZUJ1YmJsZXN8fChmLmV2ZW50LnNwZWNpYWwuY2hhbmdlPXtzZXR1cDpmdW5jdGlvbigpe2lmKEEudGVzdCh0aGlzLm5vZGVOYW1lKSl7aWYodGhpcy50eXBlPT09ImNoZWNrYm94Inx8dGhpcy50eXBlPT09InJhZGlvIilmLmV2ZW50LmFkZCh0aGlzLCJwcm9wZXJ0eWNoYW5nZS5fY2hhbmdlIixmdW5jdGlvbihhKXthLm9yaWdpbmFsRXZlbnQucHJvcGVydHlOYW1lPT09ImNoZWNrZWQiJiYodGhpcy5fanVzdF9jaGFuZ2VkPSEwKX0pLGYuZXZlbnQuYWRkKHRoaXMsImNsaWNrLl9jaGFuZ2UiLGZ1bmN0aW9uKGEpe3RoaXMuX2p1c3RfY2hhbmdlZCYmKHRoaXMuX2p1c3RfY2hhbmdlZD0hMSxmLmV2ZW50LnNpbXVsYXRlKCJjaGFuZ2UiLHRoaXMsYSwhMCkpfSk7cmV0dXJuITF9Zi5ldmVudC5hZGQodGhpcywiYmVmb3JlYWN0aXZhdGUuX2NoYW5nZSIsZnVuY3Rpb24oYSl7dmFyIGI9YS50YXJnZXQ7QS50ZXN0KGIubm9kZU5hbWUpJiYhYi5fY2hhbmdlX2F0dGFjaGVkJiYoZi5ldmVudC5hZGQoYiwiY2hhbmdlLl9jaGFuZ2UiLGZ1bmN0aW9uKGEpe3RoaXMucGFyZW50Tm9kZSYmIWEuaXNTaW11bGF0ZWQmJmYuZXZlbnQuc2ltdWxhdGUoImNoYW5nZSIsdGhpcy5wYXJlbnROb2RlLGEsITApfSksYi5fY2hhbmdlX2F0dGFjaGVkPSEwKX0pfSxoYW5kbGU6ZnVuY3Rpb24oYSl7dmFyIGI9YS50YXJnZXQ7aWYodGhpcyE9PWJ8fGEuaXNTaW11bGF0ZWR8fGEuaXNUcmlnZ2VyfHxiLnR5cGUhPT0icmFkaW8iJiZiLnR5cGUhPT0iY2hlY2tib3giKXJldHVybiBhLmhhbmRsZU9iai5oYW5kbGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sdGVhcmRvd246ZnVuY3Rpb24oKXtmLmV2ZW50LnJlbW92ZSh0aGlzLCIuX2NoYW5nZSIpO3JldHVybiBBLnRlc3QodGhpcy5ub2RlTmFtZSl9fSksZi5zdXBwb3J0LmZvY3VzaW5CdWJibGVzfHxmLmVhY2goe2ZvY3VzOiJmb2N1c2luIixibHVyOiJmb2N1c291dCJ9LGZ1bmN0aW9uKGEsYil7dmFyIGQ9MCxlPWZ1bmN0aW9uKGEpe2YuZXZlbnQuc2ltdWxhdGUoYixhLnRhcmdldCxmLmV2ZW50LmZpeChhKSwhMCl9O2YuZXZlbnQuc3BlY2lhbFtiXT17c2V0dXA6ZnVuY3Rpb24oKXtkKys9PT0wJiZjLmFkZEV2ZW50TGlzdGVuZXIoYSxlLCEwKX0sdGVhcmRvd246ZnVuY3Rpb24oKXstLWQ9PT0wJiZjLnJlbW92ZUV2ZW50TGlzdGVuZXIoYSxlLCEwKX19fSksZi5mbi5leHRlbmQoe29uOmZ1bmN0aW9uKGEsYyxkLGUsZyl7dmFyIGgsaTtpZih0eXBlb2YgYT09Im9iamVjdCIpe3R5cGVvZiBjIT0ic3RyaW5nIiYmKGQ9YyxjPWIpO2ZvcihpIGluIGEpdGhpcy5vbihpLGMsZCxhW2ldLGcpO3JldHVybiB0aGlzfWQ9PW51bGwmJmU9PW51bGw/KGU9YyxkPWM9Yik6ZT09bnVsbCYmKHR5cGVvZiBjPT0ic3RyaW5nIj8oZT1kLGQ9Yik6KGU9ZCxkPWMsYz1iKSk7aWYoZT09PSExKWU9TTtlbHNlIGlmKCFlKXJldHVybiB0aGlzO2c9PT0xJiYoaD1lLGU9ZnVuY3Rpb24oYSl7ZigpLm9mZihhKTtyZXR1cm4gaC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGUuZ3VpZD1oLmd1aWR8fChoLmd1aWQ9Zi5ndWlkKyspKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Zi5ldmVudC5hZGQodGhpcyxhLGUsZCxjKX0pfSxvbmU6ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIHRoaXMub24uY2FsbCh0aGlzLGEsYixjLGQsMSl9LG9mZjpmdW5jdGlvbihhLGMsZCl7aWYoYSYmYS5wcmV2ZW50RGVmYXVsdCYmYS5oYW5kbGVPYmope3ZhciBlPWEuaGFuZGxlT2JqO2YoYS5kZWxlZ2F0ZVRhcmdldCkub2ZmKGUubmFtZXNwYWNlP2UudHlwZSsiLiIrZS5uYW1lc3BhY2U6ZS50eXBlLGUuc2VsZWN0b3IsZS5oYW5kbGVyKTtyZXR1cm4gdGhpc31pZih0eXBlb2YgYT09Im9iamVjdCIpe2Zvcih2YXIgZyBpbiBhKXRoaXMub2ZmKGcsYyxhW2ddKTtyZXR1cm4gdGhpc31pZihjPT09ITF8fHR5cGVvZiBjPT0iZnVuY3Rpb24iKWQ9YyxjPWI7ZD09PSExJiYoZD1NKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Zi5ldmVudC5yZW1vdmUodGhpcyxhLGQsYyl9KX0sYmluZDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMub24oYSxudWxsLGIsYyl9LHVuYmluZDpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm9mZihhLG51bGwsYil9LGxpdmU6ZnVuY3Rpb24oYSxiLGMpe2YodGhpcy5jb250ZXh0KS5vbihhLHRoaXMuc2VsZWN0b3IsYixjKTtyZXR1cm4gdGhpc30sZGllOmZ1bmN0aW9uKGEsYil7Zih0aGlzLmNvbnRleHQpLm9mZihhLHRoaXMuc2VsZWN0b3J8fCIqKiIsYik7cmV0dXJuIHRoaXN9LGRlbGVnYXRlOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLm9uKGIsYSxjLGQpfSx1bmRlbGVnYXRlOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD09MT90aGlzLm9mZihhLCIqKiIpOnRoaXMub2ZmKGIsYSxjKX0sdHJpZ2dlcjpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtmLmV2ZW50LnRyaWdnZXIoYSxiLHRoaXMpfSl9LHRyaWdnZXJIYW5kbGVyOmZ1bmN0aW9uKGEsYil7aWYodGhpc1swXSlyZXR1cm4gZi5ldmVudC50cmlnZ2VyKGEsYix0aGlzWzBdLCEwKX0sdG9nZ2xlOmZ1bmN0aW9uKGEpe3ZhciBiPWFyZ3VtZW50cyxjPWEuZ3VpZHx8Zi5ndWlkKyssZD0wLGU9ZnVuY3Rpb24oYyl7dmFyIGU9KGYuX2RhdGEodGhpcywibGFzdFRvZ2dsZSIrYS5ndWlkKXx8MCklZDtmLl9kYXRhKHRoaXMsImxhc3RUb2dnbGUiK2EuZ3VpZCxlKzEpLGMucHJldmVudERlZmF1bHQoKTtyZXR1cm4gYltlXS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fCExfTtlLmd1aWQ9Yzt3aGlsZShkPGIubGVuZ3RoKWJbZCsrXS5ndWlkPWM7cmV0dXJuIHRoaXMuY2xpY2soZSl9LGhvdmVyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMubW91c2VlbnRlcihhKS5tb3VzZWxlYXZlKGJ8fGEpfX0pLGYuZWFjaCgiYmx1ciBmb2N1cyBmb2N1c2luIGZvY3Vzb3V0IGxvYWQgcmVzaXplIHNjcm9sbCB1bmxvYWQgY2xpY2sgZGJsY2xpY2sgbW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBlcnJvciBjb250ZXh0bWVudSIuc3BsaXQoIiAiKSxmdW5jdGlvbihhLGIpe2YuZm5bYl09ZnVuY3Rpb24oYSxjKXtjPT1udWxsJiYoYz1hLGE9bnVsbCk7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MD90aGlzLmJpbmQoYixhLGMpOnRoaXMudHJpZ2dlcihiKX0sZi5hdHRyRm4mJihmLmF0dHJGbltiXT0hMCksRy50ZXN0KGIpJiYoZi5ldmVudC5maXhIb29rc1tiXT1mLmV2ZW50LmtleUhvb2tzKSxILnRlc3QoYikmJihmLmV2ZW50LmZpeEhvb2tzW2JdPWYuZXZlbnQubW91c2VIb29rcyl9KSxmdW5jdGlvbigpe2Z1bmN0aW9uIHgoYSxiLGMsZSxmLGcpe2Zvcih2YXIgaD0wLGk9ZS5sZW5ndGg7aDxpO2grKyl7dmFyIGo9ZVtoXTtpZihqKXt2YXIgaz0hMTtqPWpbYV07d2hpbGUoail7aWYoaltkXT09PWMpe2s9ZVtqLnNpenNldF07YnJlYWt9aWYoai5ub2RlVHlwZT09PTEpe2d8fChqW2RdPWMsai5zaXpzZXQ9aCk7aWYodHlwZW9mIGIhPSJzdHJpbmciKXtpZihqPT09Yil7az0hMDticmVha319ZWxzZSBpZihtLmZpbHRlcihiLFtqXSkubGVuZ3RoPjApe2s9ajticmVha319aj1qW2FdfWVbaF09a319fWZ1bmN0aW9uIHcoYSxiLGMsZSxmLGcpe2Zvcih2YXIgaD0wLGk9ZS5sZW5ndGg7aDxpO2grKyl7dmFyIGo9ZVtoXTtpZihqKXt2YXIgaz0hMTtqPWpbYV07d2hpbGUoail7aWYoaltkXT09PWMpe2s9ZVtqLnNpenNldF07YnJlYWt9ai5ub2RlVHlwZT09PTEmJiFnJiYoaltkXT1jLGouc2l6c2V0PWgpO2lmKGoubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWIpe2s9ajticmVha31qPWpbYV19ZVtoXT1rfX19dmFyIGE9LygoPzpcKCg/OlwoW14oKV0rXCl8W14oKV0rKStcKXxcWyg/OlxbW15cW1xdXSpcXXxbJyJdW14nIl0qWyciXXxbXlxbXF0nIl0rKStcXXxcXC58W14gPit+LChcW1xcXSspK3xbPit+XSkoXHMqLFxzKik/KCg/Oi58XHJ8XG4pKikvZyxkPSJzaXpjYWNoZSIrKE1hdGgucmFuZG9tKCkrIiIpLnJlcGxhY2UoIi4iLCIiKSxlPTAsZz1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLGg9ITEsaT0hMCxqPS9cXC9nLGs9L1xyXG4vZyxsPS9cVy87WzAsMF0uc29ydChmdW5jdGlvbigpe2k9ITE7cmV0dXJuIDB9KTt2YXIgbT1mdW5jdGlvbihiLGQsZSxmKXtlPWV8fFtdLGQ9ZHx8Yzt2YXIgaD1kO2lmKGQubm9kZVR5cGUhPT0xJiZkLm5vZGVUeXBlIT09OSlyZXR1cm5bXTtpZighYnx8dHlwZW9mIGIhPSJzdHJpbmciKXJldHVybiBlO3ZhciBpLGosayxsLG4scSxyLHQsdT0hMCx2PW0uaXNYTUwoZCksdz1bXSx4PWI7ZG97YS5leGVjKCIiKSxpPWEuZXhlYyh4KTtpZihpKXt4PWlbM10sdy5wdXNoKGlbMV0pO2lmKGlbMl0pe2w9aVszXTticmVha319fXdoaWxlKGkpO2lmKHcubGVuZ3RoPjEmJnAuZXhlYyhiKSlpZih3Lmxlbmd0aD09PTImJm8ucmVsYXRpdmVbd1swXV0paj15KHdbMF0rd1sxXSxkLGYpO2Vsc2V7aj1vLnJlbGF0aXZlW3dbMF1dP1tkXTptKHcuc2hpZnQoKSxkKTt3aGlsZSh3Lmxlbmd0aCliPXcuc2hpZnQoKSxvLnJlbGF0aXZlW2JdJiYoYis9dy5zaGlmdCgpKSxqPXkoYixqLGYpfWVsc2V7IWYmJncubGVuZ3RoPjEmJmQubm9kZVR5cGU9PT05JiYhdiYmby5tYXRjaC5JRC50ZXN0KHdbMF0pJiYhby5tYXRjaC5JRC50ZXN0KHdbdy5sZW5ndGgtMV0pJiYobj1tLmZpbmQody5zaGlmdCgpLGQsdiksZD1uLmV4cHI/bS5maWx0ZXIobi5leHByLG4uc2V0KVswXTpuLnNldFswXSk7aWYoZCl7bj1mP3tleHByOncucG9wKCksc2V0OnMoZil9Om0uZmluZCh3LnBvcCgpLHcubGVuZ3RoPT09MSYmKHdbMF09PT0ifiJ8fHdbMF09PT0iKyIpJiZkLnBhcmVudE5vZGU/ZC5wYXJlbnROb2RlOmQsdiksaj1uLmV4cHI/bS5maWx0ZXIobi5leHByLG4uc2V0KTpuLnNldCx3Lmxlbmd0aD4wP2s9cyhqKTp1PSExO3doaWxlKHcubGVuZ3RoKXE9dy5wb3AoKSxyPXEsby5yZWxhdGl2ZVtxXT9yPXcucG9wKCk6cT0iIixyPT1udWxsJiYocj1kKSxvLnJlbGF0aXZlW3FdKGsscix2KX1lbHNlIGs9dz1bXX1rfHwoaz1qKSxrfHxtLmVycm9yKHF8fGIpO2lmKGcuY2FsbChrKT09PSJbb2JqZWN0IEFycmF5XSIpaWYoIXUpZS5wdXNoLmFwcGx5KGUsayk7ZWxzZSBpZihkJiZkLm5vZGVUeXBlPT09MSlmb3IodD0wO2tbdF0hPW51bGw7dCsrKWtbdF0mJihrW3RdPT09ITB8fGtbdF0ubm9kZVR5cGU9PT0xJiZtLmNvbnRhaW5zKGQsa1t0XSkpJiZlLnB1c2goalt0XSk7ZWxzZSBmb3IodD0wO2tbdF0hPW51bGw7dCsrKWtbdF0mJmtbdF0ubm9kZVR5cGU9PT0xJiZlLnB1c2goalt0XSk7ZWxzZSBzKGssZSk7bCYmKG0obCxoLGUsZiksbS51bmlxdWVTb3J0KGUpKTtyZXR1cm4gZX07bS51bmlxdWVTb3J0PWZ1bmN0aW9uKGEpe2lmKHUpe2g9aSxhLnNvcnQodSk7aWYoaClmb3IodmFyIGI9MTtiPGEubGVuZ3RoO2IrKylhW2JdPT09YVtiLTFdJiZhLnNwbGljZShiLS0sMSl9cmV0dXJuIGF9LG0ubWF0Y2hlcz1mdW5jdGlvbihhLGIpe3JldHVybiBtKGEsbnVsbCxudWxsLGIpfSxtLm1hdGNoZXNTZWxlY3Rvcj1mdW5jdGlvbihhLGIpe3JldHVybiBtKGIsbnVsbCxudWxsLFthXSkubGVuZ3RoPjB9LG0uZmluZD1mdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmLGcsaCxpO2lmKCFhKXJldHVybltdO2ZvcihlPTAsZj1vLm9yZGVyLmxlbmd0aDtlPGY7ZSsrKXtoPW8ub3JkZXJbZV07aWYoZz1vLmxlZnRNYXRjaFtoXS5leGVjKGEpKXtpPWdbMV0sZy5zcGxpY2UoMSwxKTtpZihpLnN1YnN0cihpLmxlbmd0aC0xKSE9PSJcXCIpe2dbMV09KGdbMV18fCIiKS5yZXBsYWNlKGosIiIpLGQ9by5maW5kW2hdKGcsYixjKTtpZihkIT1udWxsKXthPWEucmVwbGFjZShvLm1hdGNoW2hdLCIiKTticmVha319fX1kfHwoZD10eXBlb2YgYi5nZXRFbGVtZW50c0J5VGFnTmFtZSE9InVuZGVmaW5lZCI/Yi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpOltdKTtyZXR1cm57c2V0OmQsZXhwcjphfX0sbS5maWx0ZXI9ZnVuY3Rpb24oYSxjLGQsZSl7dmFyIGYsZyxoLGksaixrLGwsbixwLHE9YSxyPVtdLHM9Yyx0PWMmJmNbMF0mJm0uaXNYTUwoY1swXSk7d2hpbGUoYSYmYy5sZW5ndGgpe2ZvcihoIGluIG8uZmlsdGVyKWlmKChmPW8ubGVmdE1hdGNoW2hdLmV4ZWMoYSkpIT1udWxsJiZmWzJdKXtrPW8uZmlsdGVyW2hdLGw9ZlsxXSxnPSExLGYuc3BsaWNlKDEsMSk7aWYobC5zdWJzdHIobC5sZW5ndGgtMSk9PT0iXFwiKWNvbnRpbnVlO3M9PT1yJiYocj1bXSk7aWYoby5wcmVGaWx0ZXJbaF0pe2Y9by5wcmVGaWx0ZXJbaF0oZixzLGQscixlLHQpO2lmKCFmKWc9aT0hMDtlbHNlIGlmKGY9PT0hMCljb250aW51ZX1pZihmKWZvcihuPTA7KGo9c1tuXSkhPW51bGw7bisrKWomJihpPWsoaixmLG4scykscD1lXmksZCYmaSE9bnVsbD9wP2c9ITA6c1tuXT0hMTpwJiYoci5wdXNoKGopLGc9ITApKTtpZihpIT09Yil7ZHx8KHM9ciksYT1hLnJlcGxhY2Uoby5tYXRjaFtoXSwiIik7aWYoIWcpcmV0dXJuW107YnJlYWt9fWlmKGE9PT1xKWlmKGc9PW51bGwpbS5lcnJvcihhKTtlbHNlIGJyZWFrO3E9YX1yZXR1cm4gc30sbS5lcnJvcj1mdW5jdGlvbihhKXt0aHJvdyJTeW50YXggZXJyb3IsIHVucmVjb2duaXplZCBleHByZXNzaW9uOiAiK2F9O3ZhciBuPW0uZ2V0VGV4dD1mdW5jdGlvbihhKXt2YXIgYixjLGQ9YS5ub2RlVHlwZSxlPSIiO2lmKGQpe2lmKGQ9PT0xKXtpZih0eXBlb2YgYS50ZXh0Q29udGVudD09InN0cmluZyIpcmV0dXJuIGEudGV4dENvbnRlbnQ7aWYodHlwZW9mIGEuaW5uZXJUZXh0PT0ic3RyaW5nIilyZXR1cm4gYS5pbm5lclRleHQucmVwbGFjZShrLCIiKTtmb3IoYT1hLmZpcnN0Q2hpbGQ7YTthPWEubmV4dFNpYmxpbmcpZSs9bihhKX1lbHNlIGlmKGQ9PT0zfHxkPT09NClyZXR1cm4gYS5ub2RlVmFsdWV9ZWxzZSBmb3IoYj0wO2M9YVtiXTtiKyspYy5ub2RlVHlwZSE9PTgmJihlKz1uKGMpKTtyZXR1cm4gZX0sbz1tLnNlbGVjdG9ycz17b3JkZXI6WyJJRCIsIk5BTUUiLCJUQUciXSxtYXRjaDp7SUQ6LyMoKD86W1x3XHUwMGMwLVx1RkZGRlwtXXxcXC4pKykvLENMQVNTOi9cLigoPzpbXHdcdTAwYzAtXHVGRkZGXC1dfFxcLikrKS8sTkFNRTovXFtuYW1lPVsnIl0qKCg/Oltcd1x1MDBjMC1cdUZGRkZcLV18XFwuKSspWyciXSpcXS8sQVRUUjovXFtccyooKD86W1x3XHUwMGMwLVx1RkZGRlwtXXxcXC4pKylccyooPzooXFM/PSlccyooPzooWyciXSkoLio/KVwzfCgjPyg/Oltcd1x1MDBjMC1cdUZGRkZcLV18XFwuKSopfCl8KVxzKlxdLyxUQUc6L14oKD86W1x3XHUwMGMwLVx1RkZGRlwqXC1dfFxcLikrKS8sQ0hJTEQ6Lzoob25seXxudGh8bGFzdHxmaXJzdCktY2hpbGQoPzpcKFxzKihldmVufG9kZHwoPzpbK1wtXT9cZCt8KD86WytcLV0/XGQqKT9uXHMqKD86WytcLV1ccypcZCspPykpXHMqXCkpPy8sUE9TOi86KG50aHxlcXxndHxsdHxmaXJzdHxsYXN0fGV2ZW58b2RkKSg/OlwoKFxkKilcKSk/KD89W15cLV18JCkvLFBTRVVETzovOigoPzpbXHdcdTAwYzAtXHVGRkZGXC1dfFxcLikrKSg/OlwoKFsnIl0/KSgoPzpcKFteXCldK1wpfFteXChcKV0qKSspXDJcKSk/L30sbGVmdE1hdGNoOnt9LGF0dHJNYXA6eyJjbGFzcyI6ImNsYXNzTmFtZSIsImZvciI6Imh0bWxGb3IifSxhdHRySGFuZGxlOntocmVmOmZ1bmN0aW9uKGEpe3JldHVybiBhLmdldEF0dHJpYnV0ZSgiaHJlZiIpfSx0eXBlOmZ1bmN0aW9uKGEpe3JldHVybiBhLmdldEF0dHJpYnV0ZSgidHlwZSIpfX0scmVsYXRpdmU6eyIrIjpmdW5jdGlvbihhLGIpe3ZhciBjPXR5cGVvZiBiPT0ic3RyaW5nIixkPWMmJiFsLnRlc3QoYiksZT1jJiYhZDtkJiYoYj1iLnRvTG93ZXJDYXNlKCkpO2Zvcih2YXIgZj0wLGc9YS5sZW5ndGgsaDtmPGc7ZisrKWlmKGg9YVtmXSl7d2hpbGUoKGg9aC5wcmV2aW91c1NpYmxpbmcpJiZoLm5vZGVUeXBlIT09MSk7YVtmXT1lfHxoJiZoLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1iP2h8fCExOmg9PT1ifWUmJm0uZmlsdGVyKGIsYSwhMCl9LCI+IjpmdW5jdGlvbihhLGIpe3ZhciBjLGQ9dHlwZW9mIGI9PSJzdHJpbmciLGU9MCxmPWEubGVuZ3RoO2lmKGQmJiFsLnRlc3QoYikpe2I9Yi50b0xvd2VyQ2FzZSgpO2Zvcig7ZTxmO2UrKyl7Yz1hW2VdO2lmKGMpe3ZhciBnPWMucGFyZW50Tm9kZTthW2VdPWcubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWI/ZzohMX19fWVsc2V7Zm9yKDtlPGY7ZSsrKWM9YVtlXSxjJiYoYVtlXT1kP2MucGFyZW50Tm9kZTpjLnBhcmVudE5vZGU9PT1iKTtkJiZtLmZpbHRlcihiLGEsITApfX0sIiI6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGY9ZSsrLGc9eDt0eXBlb2YgYj09InN0cmluZyImJiFsLnRlc3QoYikmJihiPWIudG9Mb3dlckNhc2UoKSxkPWIsZz13KSxnKCJwYXJlbnROb2RlIixiLGYsYSxkLGMpfSwifiI6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGY9ZSsrLGc9eDt0eXBlb2YgYj09InN0cmluZyImJiFsLnRlc3QoYikmJihiPWIudG9Mb3dlckNhc2UoKSxkPWIsZz13KSxnKCJwcmV2aW91c1NpYmxpbmciLGIsZixhLGQsYyl9fSxmaW5kOntJRDpmdW5jdGlvbihhLGIsYyl7aWYodHlwZW9mIGIuZ2V0RWxlbWVudEJ5SWQhPSJ1bmRlZmluZWQiJiYhYyl7dmFyIGQ9Yi5nZXRFbGVtZW50QnlJZChhWzFdKTtyZXR1cm4gZCYmZC5wYXJlbnROb2RlP1tkXTpbXX19LE5BTUU6ZnVuY3Rpb24oYSxiKXtpZih0eXBlb2YgYi5nZXRFbGVtZW50c0J5TmFtZSE9InVuZGVmaW5lZCIpe3ZhciBjPVtdLGQ9Yi5nZXRFbGVtZW50c0J5TmFtZShhWzFdKTtmb3IodmFyIGU9MCxmPWQubGVuZ3RoO2U8ZjtlKyspZFtlXS5nZXRBdHRyaWJ1dGUoIm5hbWUiKT09PWFbMV0mJmMucHVzaChkW2VdKTtyZXR1cm4gYy5sZW5ndGg9PT0wP251bGw6Y319LFRBRzpmdW5jdGlvbihhLGIpe2lmKHR5cGVvZiBiLmdldEVsZW1lbnRzQnlUYWdOYW1lIT0idW5kZWZpbmVkIilyZXR1cm4gYi5nZXRFbGVtZW50c0J5VGFnTmFtZShhWzFdKX19LHByZUZpbHRlcjp7Q0xBU1M6ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2E9IiAiK2FbMV0ucmVwbGFjZShqLCIiKSsiICI7aWYoZilyZXR1cm4gYTtmb3IodmFyIGc9MCxoOyhoPWJbZ10pIT1udWxsO2crKyloJiYoZV4oaC5jbGFzc05hbWUmJigiICIraC5jbGFzc05hbWUrIiAiKS5yZXBsYWNlKC9bXHRcblxyXS9nLCIgIikuaW5kZXhPZihhKT49MCk/Y3x8ZC5wdXNoKGgpOmMmJihiW2ddPSExKSk7cmV0dXJuITF9LElEOmZ1bmN0aW9uKGEpe3JldHVybiBhWzFdLnJlcGxhY2UoaiwiIil9LFRBRzpmdW5jdGlvbihhLGIpe3JldHVybiBhWzFdLnJlcGxhY2UoaiwiIikudG9Mb3dlckNhc2UoKX0sQ0hJTEQ6ZnVuY3Rpb24oYSl7aWYoYVsxXT09PSJudGgiKXthWzJdfHxtLmVycm9yKGFbMF0pLGFbMl09YVsyXS5yZXBsYWNlKC9eXCt8XHMqL2csIiIpO3ZhciBiPS8oLT8pKFxkKikoPzpuKFsrXC1dP1xkKikpPy8uZXhlYyhhWzJdPT09ImV2ZW4iJiYiMm4ifHxhWzJdPT09Im9kZCImJiIybisxInx8IS9cRC8udGVzdChhWzJdKSYmIjBuKyIrYVsyXXx8YVsyXSk7YVsyXT1iWzFdKyhiWzJdfHwxKS0wLGFbM109YlszXS0wfWVsc2UgYVsyXSYmbS5lcnJvcihhWzBdKTthWzBdPWUrKztyZXR1cm4gYX0sQVRUUjpmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9YVsxXT1hWzFdLnJlcGxhY2UoaiwiIik7IWYmJm8uYXR0ck1hcFtnXSYmKGFbMV09by5hdHRyTWFwW2ddKSxhWzRdPShhWzRdfHxhWzVdfHwiIikucmVwbGFjZShqLCIiKSxhWzJdPT09In49IiYmKGFbNF09IiAiK2FbNF0rIiAiKTtyZXR1cm4gYX0sUFNFVURPOmZ1bmN0aW9uKGIsYyxkLGUsZil7aWYoYlsxXT09PSJub3QiKWlmKChhLmV4ZWMoYlszXSl8fCIiKS5sZW5ndGg+MXx8L15cdy8udGVzdChiWzNdKSliWzNdPW0oYlszXSxudWxsLG51bGwsYyk7ZWxzZXt2YXIgZz1tLmZpbHRlcihiWzNdLGMsZCwhMF5mKTtkfHxlLnB1c2guYXBwbHkoZSxnKTtyZXR1cm4hMX1lbHNlIGlmKG8ubWF0Y2guUE9TLnRlc3QoYlswXSl8fG8ubWF0Y2guQ0hJTEQudGVzdChiWzBdKSlyZXR1cm4hMDtyZXR1cm4gYn0sUE9TOmZ1bmN0aW9uKGEpe2EudW5zaGlmdCghMCk7cmV0dXJuIGF9fSxmaWx0ZXJzOntlbmFibGVkOmZ1bmN0aW9uKGEpe3JldHVybiBhLmRpc2FibGVkPT09ITEmJmEudHlwZSE9PSJoaWRkZW4ifSxkaXNhYmxlZDpmdW5jdGlvbihhKXtyZXR1cm4gYS5kaXNhYmxlZD09PSEwfSxjaGVja2VkOmZ1bmN0aW9uKGEpe3JldHVybiBhLmNoZWNrZWQ9PT0hMH0sc2VsZWN0ZWQ6ZnVuY3Rpb24oYSl7YS5wYXJlbnROb2RlJiZhLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleDtyZXR1cm4gYS5zZWxlY3RlZD09PSEwfSxwYXJlbnQ6ZnVuY3Rpb24oYSl7cmV0dXJuISFhLmZpcnN0Q2hpbGR9LGVtcHR5OmZ1bmN0aW9uKGEpe3JldHVybiFhLmZpcnN0Q2hpbGR9LGhhczpmdW5jdGlvbihhLGIsYyl7cmV0dXJuISFtKGNbM10sYSkubGVuZ3RofSxoZWFkZXI6ZnVuY3Rpb24oYSl7cmV0dXJuL2hcZC9pLnRlc3QoYS5ub2RlTmFtZSl9LHRleHQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5nZXRBdHRyaWJ1dGUoInR5cGUiKSxjPWEudHlwZTtyZXR1cm4gYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09ImlucHV0IiYmInRleHQiPT09YyYmKGI9PT1jfHxiPT09bnVsbCl9LHJhZGlvOmZ1bmN0aW9uKGEpe3JldHVybiBhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT0iaW5wdXQiJiYicmFkaW8iPT09YS50eXBlfSxjaGVja2JveDpmdW5jdGlvbihhKXtyZXR1cm4gYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09ImlucHV0IiYmImNoZWNrYm94Ij09PWEudHlwZX0sZmlsZTpmdW5jdGlvbihhKXtyZXR1cm4gYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09ImlucHV0IiYmImZpbGUiPT09YS50eXBlfSxwYXNzd29yZDpmdW5jdGlvbihhKXtyZXR1cm4gYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09ImlucHV0IiYmInBhc3N3b3JkIj09PWEudHlwZX0sc3VibWl0OmZ1bmN0aW9uKGEpe3ZhciBiPWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4oYj09PSJpbnB1dCJ8fGI9PT0iYnV0dG9uIikmJiJzdWJtaXQiPT09YS50eXBlfSxpbWFnZTpmdW5jdGlvbihhKXtyZXR1cm4gYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09ImlucHV0IiYmImltYWdlIj09PWEudHlwZX0scmVzZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybihiPT09ImlucHV0Inx8Yj09PSJidXR0b24iKSYmInJlc2V0Ij09PWEudHlwZX0sYnV0dG9uOmZ1bmN0aW9uKGEpe3ZhciBiPWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4gYj09PSJpbnB1dCImJiJidXR0b24iPT09YS50eXBlfHxiPT09ImJ1dHRvbiJ9LGlucHV0OmZ1bmN0aW9uKGEpe3JldHVybi9pbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uL2kudGVzdChhLm5vZGVOYW1lKX0sZm9jdXM6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1hLm93bmVyRG9jdW1lbnQuYWN0aXZlRWxlbWVudH19LHNldEZpbHRlcnM6e2ZpcnN0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIGI9PT0wfSxsYXN0OmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBiPT09ZC5sZW5ndGgtMX0sZXZlbjpmdW5jdGlvbihhLGIpe3JldHVybiBiJTI9PT0wfSxvZGQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYiUyPT09MX0sbHQ6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBiPGNbM10tMH0sZ3Q6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBiPmNbM10tMH0sbnRoOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gY1szXS0wPT09Yn0sZXE6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBjWzNdLTA9PT1ifX0sZmlsdGVyOntQU0VVRE86ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9YlsxXSxmPW8uZmlsdGVyc1tlXTtpZihmKXJldHVybiBmKGEsYyxiLGQpO2lmKGU9PT0iY29udGFpbnMiKXJldHVybihhLnRleHRDb250ZW50fHxhLmlubmVyVGV4dHx8bihbYV0pfHwiIikuaW5kZXhPZihiWzNdKT49MDtpZihlPT09Im5vdCIpe3ZhciBnPWJbM107Zm9yKHZhciBoPTAsaT1nLmxlbmd0aDtoPGk7aCsrKWlmKGdbaF09PT1hKXJldHVybiExO3JldHVybiEwfW0uZXJyb3IoZSl9LENISUxEOmZ1bmN0aW9uKGEsYil7dmFyIGMsZSxmLGcsaCxpLGosaz1iWzFdLGw9YTtzd2l0Y2goayl7Y2FzZSJvbmx5IjpjYXNlImZpcnN0Ijp3aGlsZShsPWwucHJldmlvdXNTaWJsaW5nKWlmKGwubm9kZVR5cGU9PT0xKXJldHVybiExO2lmKGs9PT0iZmlyc3QiKXJldHVybiEwO2w9YTtjYXNlImxhc3QiOndoaWxlKGw9bC5uZXh0U2libGluZylpZihsLm5vZGVUeXBlPT09MSlyZXR1cm4hMTtyZXR1cm4hMDtjYXNlIm50aCI6Yz1iWzJdLGU9YlszXTtpZihjPT09MSYmZT09PTApcmV0dXJuITA7Zj1iWzBdLGc9YS5wYXJlbnROb2RlO2lmKGcmJihnW2RdIT09Znx8IWEubm9kZUluZGV4KSl7aT0wO2ZvcihsPWcuZmlyc3RDaGlsZDtsO2w9bC5uZXh0U2libGluZylsLm5vZGVUeXBlPT09MSYmKGwubm9kZUluZGV4PSsraSk7Z1tkXT1mfWo9YS5ub2RlSW5kZXgtZTtyZXR1cm4gYz09PTA/aj09PTA6aiVjPT09MCYmai9jPj0wfX0sSUQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5ub2RlVHlwZT09PTEmJmEuZ2V0QXR0cmlidXRlKCJpZCIpPT09Yn0sVEFHOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGI9PT0iKiImJmEubm9kZVR5cGU9PT0xfHwhIWEubm9kZU5hbWUmJmEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWJ9LENMQVNTOmZ1bmN0aW9uKGEsYil7cmV0dXJuKCIgIisoYS5jbGFzc05hbWV8fGEuZ2V0QXR0cmlidXRlKCJjbGFzcyIpKSsiICIpLmluZGV4T2YoYik+LTF9LEFUVFI6ZnVuY3Rpb24oYSxiKXt2YXIgYz1iWzFdLGQ9bS5hdHRyP20uYXR0cihhLGMpOm8uYXR0ckhhbmRsZVtjXT9vLmF0dHJIYW5kbGVbY10oYSk6YVtjXSE9bnVsbD9hW2NdOmEuZ2V0QXR0cmlidXRlKGMpLGU9ZCsiIixmPWJbMl0sZz1iWzRdO3JldHVybiBkPT1udWxsP2Y9PT0iIT0iOiFmJiZtLmF0dHI/ZCE9bnVsbDpmPT09Ij0iP2U9PT1nOmY9PT0iKj0iP2UuaW5kZXhPZihnKT49MDpmPT09In49Ij8oIiAiK2UrIiAiKS5pbmRleE9mKGcpPj0wOmc/Zj09PSIhPSI/ZSE9PWc6Zj09PSJePSI/ZS5pbmRleE9mKGcpPT09MDpmPT09IiQ9Ij9lLnN1YnN0cihlLmxlbmd0aC1nLmxlbmd0aCk9PT1nOmY9PT0ifD0iP2U9PT1nfHxlLnN1YnN0cigwLGcubGVuZ3RoKzEpPT09ZysiLSI6ITE6ZSYmZCE9PSExfSxQT1M6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9YlsyXSxmPW8uc2V0RmlsdGVyc1tlXTtpZihmKXJldHVybiBmKGEsYyxiLGQpfX19LHA9by5tYXRjaC5QT1MscT1mdW5jdGlvbihhLGIpe3JldHVybiJcXCIrKGItMCsxKX07Zm9yKHZhciByIGluIG8ubWF0Y2gpby5tYXRjaFtyXT1uZXcgUmVnRXhwKG8ubWF0Y2hbcl0uc291cmNlKy8oPyFbXlxbXSpcXSkoPyFbXlwoXSpcKSkvLnNvdXJjZSksby5sZWZ0TWF0Y2hbcl09bmV3IFJlZ0V4cCgvKF4oPzoufFxyfFxuKSo/KS8uc291cmNlK28ubWF0Y2hbcl0uc291cmNlLnJlcGxhY2UoL1xcKFxkKykvZyxxKSk7dmFyIHM9ZnVuY3Rpb24oYSxiKXthPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGEsMCk7aWYoYil7Yi5wdXNoLmFwcGx5KGIsYSk7cmV0dXJuIGJ9cmV0dXJuIGF9O3RyeXtBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChjLmRvY3VtZW50RWxlbWVudC5jaGlsZE5vZGVzLDApWzBdLm5vZGVUeXBlfWNhdGNoKHQpe3M9ZnVuY3Rpb24oYSxiKXt2YXIgYz0wLGQ9Ynx8W107aWYoZy5jYWxsKGEpPT09IltvYmplY3QgQXJyYXldIilBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShkLGEpO2Vsc2UgaWYodHlwZW9mIGEubGVuZ3RoPT0ibnVtYmVyIilmb3IodmFyIGU9YS5sZW5ndGg7YzxlO2MrKylkLnB1c2goYVtjXSk7ZWxzZSBmb3IoO2FbY107YysrKWQucHVzaChhW2NdKTtyZXR1cm4gZH19dmFyIHUsdjtjLmRvY3VtZW50RWxlbWVudC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbj91PWZ1bmN0aW9uKGEsYil7aWYoYT09PWIpe2g9ITA7cmV0dXJuIDB9aWYoIWEuY29tcGFyZURvY3VtZW50UG9zaXRpb258fCFiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKXJldHVybiBhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uPy0xOjE7cmV0dXJuIGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYikmND8tMToxfToodT1mdW5jdGlvbihhLGIpe2lmKGE9PT1iKXtoPSEwO3JldHVybiAwfWlmKGEuc291cmNlSW5kZXgmJmIuc291cmNlSW5kZXgpcmV0dXJuIGEuc291cmNlSW5kZXgtYi5zb3VyY2VJbmRleDt2YXIgYyxkLGU9W10sZj1bXSxnPWEucGFyZW50Tm9kZSxpPWIucGFyZW50Tm9kZSxqPWc7aWYoZz09PWkpcmV0dXJuIHYoYSxiKTtpZighZylyZXR1cm4tMTtpZighaSlyZXR1cm4gMTt3aGlsZShqKWUudW5zaGlmdChqKSxqPWoucGFyZW50Tm9kZTtqPWk7d2hpbGUoailmLnVuc2hpZnQoaiksaj1qLnBhcmVudE5vZGU7Yz1lLmxlbmd0aCxkPWYubGVuZ3RoO2Zvcih2YXIgaz0wO2s8YyYmazxkO2srKylpZihlW2tdIT09ZltrXSlyZXR1cm4gdihlW2tdLGZba10pO3JldHVybiBrPT09Yz92KGEsZltrXSwtMSk6dihlW2tdLGIsMSl9LHY9ZnVuY3Rpb24oYSxiLGMpe2lmKGE9PT1iKXJldHVybiBjO3ZhciBkPWEubmV4dFNpYmxpbmc7d2hpbGUoZCl7aWYoZD09PWIpcmV0dXJuLTE7ZD1kLm5leHRTaWJsaW5nfXJldHVybiAxfSksZnVuY3Rpb24oKXt2YXIgYT1jLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGQ9InNjcmlwdCIrKG5ldyBEYXRlKS5nZXRUaW1lKCksZT1jLmRvY3VtZW50RWxlbWVudDthLmlubmVySFRNTD0iPGEgbmFtZT0nIitkKyInLz4iLGUuaW5zZXJ0QmVmb3JlKGEsZS5maXJzdENoaWxkKSxjLmdldEVsZW1lbnRCeUlkKGQpJiYoby5maW5kLklEPWZ1bmN0aW9uKGEsYyxkKXtpZih0eXBlb2YgYy5nZXRFbGVtZW50QnlJZCE9InVuZGVmaW5lZCImJiFkKXt2YXIgZT1jLmdldEVsZW1lbnRCeUlkKGFbMV0pO3JldHVybiBlP2UuaWQ9PT1hWzFdfHx0eXBlb2YgZS5nZXRBdHRyaWJ1dGVOb2RlIT0idW5kZWZpbmVkIiYmZS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpLm5vZGVWYWx1ZT09PWFbMV0/W2VdOmI6W119fSxvLmZpbHRlci5JRD1mdW5jdGlvbihhLGIpe3ZhciBjPXR5cGVvZiBhLmdldEF0dHJpYnV0ZU5vZGUhPSJ1bmRlZmluZWQiJiZhLmdldEF0dHJpYnV0ZU5vZGUoImlkIik7cmV0dXJuIGEubm9kZVR5cGU9PT0xJiZjJiZjLm5vZGVWYWx1ZT09PWJ9KSxlLnJlbW92ZUNoaWxkKGEpLGU9YT1udWxsfSgpLGZ1bmN0aW9uKCl7dmFyIGE9Yy5jcmVhdGVFbGVtZW50KCJkaXYiKTthLmFwcGVuZENoaWxkKGMuY3JlYXRlQ29tbWVudCgiIikpLGEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKS5sZW5ndGg+MCYmKG8uZmluZC5UQUc9ZnVuY3Rpb24oYSxiKXt2YXIgYz1iLmdldEVsZW1lbnRzQnlUYWdOYW1lKGFbMV0pO2lmKGFbMV09PT0iKiIpe3ZhciBkPVtdO2Zvcih2YXIgZT0wO2NbZV07ZSsrKWNbZV0ubm9kZVR5cGU9PT0xJiZkLnB1c2goY1tlXSk7Yz1kfXJldHVybiBjfSksYS5pbm5lckhUTUw9IjxhIGhyZWY9JyMnPjwvYT4iLGEuZmlyc3RDaGlsZCYmdHlwZW9mIGEuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUhPSJ1bmRlZmluZWQiJiZhLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJocmVmIikhPT0iIyImJihvLmF0dHJIYW5kbGUuaHJlZj1mdW5jdGlvbihhKXtyZXR1cm4gYS5nZXRBdHRyaWJ1dGUoImhyZWYiLDIpfSksYT1udWxsfSgpLGMucXVlcnlTZWxlY3RvckFsbCYmZnVuY3Rpb24oKXt2YXIgYT1tLGI9Yy5jcmVhdGVFbGVtZW50KCJkaXYiKSxkPSJfX3NpenpsZV9fIjtiLmlubmVySFRNTD0iPHAgY2xhc3M9J1RFU1QnPjwvcD4iO2lmKCFiLnF1ZXJ5U2VsZWN0b3JBbGx8fGIucXVlcnlTZWxlY3RvckFsbCgiLlRFU1QiKS5sZW5ndGghPT0wKXttPWZ1bmN0aW9uKGIsZSxmLGcpe2U9ZXx8YztpZighZyYmIW0uaXNYTUwoZSkpe3ZhciBoPS9eKFx3KyQpfF5cLihbXHdcLV0rJCl8XiMoW1x3XC1dKyQpLy5leGVjKGIpO2lmKGgmJihlLm5vZGVUeXBlPT09MXx8ZS5ub2RlVHlwZT09PTkpKXtpZihoWzFdKXJldHVybiBzKGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYiksZik7aWYoaFsyXSYmby5maW5kLkNMQVNTJiZlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUpcmV0dXJuIHMoZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGhbMl0pLGYpfWlmKGUubm9kZVR5cGU9PT05KXtpZihiPT09ImJvZHkiJiZlLmJvZHkpcmV0dXJuIHMoW2UuYm9keV0sZik7aWYoaCYmaFszXSl7dmFyIGk9ZS5nZXRFbGVtZW50QnlJZChoWzNdKTtpZighaXx8IWkucGFyZW50Tm9kZSlyZXR1cm4gcyhbXSxmKTtpZihpLmlkPT09aFszXSlyZXR1cm4gcyhbaV0sZil9dHJ5e3JldHVybiBzKGUucXVlcnlTZWxlY3RvckFsbChiKSxmKX1jYXRjaChqKXt9fWVsc2UgaWYoZS5ub2RlVHlwZT09PTEmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSE9PSJvYmplY3QiKXt2YXIgaz1lLGw9ZS5nZXRBdHRyaWJ1dGUoImlkIiksbj1sfHxkLHA9ZS5wYXJlbnROb2RlLHE9L15ccypbK35dLy50ZXN0KGIpO2w/bj1uLnJlcGxhY2UoLycvZywiXFwkJiIpOmUuc2V0QXR0cmlidXRlKCJpZCIsbikscSYmcCYmKGU9ZS5wYXJlbnROb2RlKTt0cnl7aWYoIXF8fHApcmV0dXJuIHMoZS5xdWVyeVNlbGVjdG9yQWxsKCJbaWQ9JyIrbisiJ10gIitiKSxmKX1jYXRjaChyKXt9ZmluYWxseXtsfHxrLnJlbW92ZUF0dHJpYnV0ZSgiaWQiKX19fXJldHVybiBhKGIsZSxmLGcpfTtmb3IodmFyIGUgaW4gYSltW2VdPWFbZV07Yj1udWxsfX0oKSxmdW5jdGlvbigpe3ZhciBhPWMuZG9jdW1lbnRFbGVtZW50LGI9YS5tYXRjaGVzU2VsZWN0b3J8fGEubW96TWF0Y2hlc1NlbGVjdG9yfHxhLndlYmtpdE1hdGNoZXNTZWxlY3Rvcnx8YS5tc01hdGNoZXNTZWxlY3RvcjtpZihiKXt2YXIgZD0hYi5jYWxsKGMuY3JlYXRlRWxlbWVudCgiZGl2IiksImRpdiIpLGU9ITE7dHJ5e2IuY2FsbChjLmRvY3VtZW50RWxlbWVudCwiW3Rlc3QhPScnXTpzaXp6bGUiKX1jYXRjaChmKXtlPSEwfW0ubWF0Y2hlc1NlbGVjdG9yPWZ1bmN0aW9uKGEsYyl7Yz1jLnJlcGxhY2UoL1w9XHMqKFteJyJcXV0qKVxzKlxdL2csIj0nJDEnXSIpO2lmKCFtLmlzWE1MKGEpKXRyeXtpZihlfHwhby5tYXRjaC5QU0VVRE8udGVzdChjKSYmIS8hPS8udGVzdChjKSl7dmFyIGY9Yi5jYWxsKGEsYyk7aWYoZnx8IWR8fGEuZG9jdW1lbnQmJmEuZG9jdW1lbnQubm9kZVR5cGUhPT0xMSlyZXR1cm4gZn19Y2F0Y2goZyl7fXJldHVybiBtKGMsbnVsbCxudWxsLFthXSkubGVuZ3RoPjB9fX0oKSxmdW5jdGlvbigpe3ZhciBhPWMuY3JlYXRlRWxlbWVudCgiZGl2Iik7YS5pbm5lckhUTUw9IjxkaXYgY2xhc3M9J3Rlc3QgZSc+PC9kaXY+PGRpdiBjbGFzcz0ndGVzdCc+PC9kaXY+IjtpZighIWEuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmYS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJlIikubGVuZ3RoIT09MCl7YS5sYXN0Q2hpbGQuY2xhc3NOYW1lPSJlIjtpZihhLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImUiKS5sZW5ndGg9PT0xKXJldHVybjtvLm9yZGVyLnNwbGljZSgxLDAsIkNMQVNTIiksby5maW5kLkNMQVNTPWZ1bmN0aW9uKGEsYixjKXtpZih0eXBlb2YgYi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lIT0idW5kZWZpbmVkIiYmIWMpcmV0dXJuIGIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShhWzFdKX0sYT1udWxsfX0oKSxjLmRvY3VtZW50RWxlbWVudC5jb250YWlucz9tLmNvbnRhaW5zPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEhPT1iJiYoYS5jb250YWlucz9hLmNvbnRhaW5zKGIpOiEwKX06Yy5kb2N1bWVudEVsZW1lbnQuY29tcGFyZURvY3VtZW50UG9zaXRpb24/bS5jb250YWlucz1mdW5jdGlvbihhLGIpe3JldHVybiEhKGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYikmMTYpfTptLmNvbnRhaW5zPWZ1bmN0aW9uKCl7cmV0dXJuITF9LG0uaXNYTUw9ZnVuY3Rpb24oYSl7dmFyIGI9KGE/YS5vd25lckRvY3VtZW50fHxhOjApLmRvY3VtZW50RWxlbWVudDtyZXR1cm4gYj9iLm5vZGVOYW1lIT09IkhUTUwiOiExfTt2YXIgeT1mdW5jdGlvbihhLGIsYyl7dmFyIGQsZT1bXSxmPSIiLGc9Yi5ub2RlVHlwZT9bYl06Yjt3aGlsZShkPW8ubWF0Y2guUFNFVURPLmV4ZWMoYSkpZis9ZFswXSxhPWEucmVwbGFjZShvLm1hdGNoLlBTRVVETywiIik7YT1vLnJlbGF0aXZlW2FdP2ErIioiOmE7Zm9yKHZhciBoPTAsaT1nLmxlbmd0aDtoPGk7aCsrKW0oYSxnW2hdLGUsYyk7cmV0dXJuIG0uZmlsdGVyKGYsZSl9O20uYXR0cj1mLmF0dHIsbS5zZWxlY3RvcnMuYXR0ck1hcD17fSxmLmZpbmQ9bSxmLmV4cHI9bS5zZWxlY3RvcnMsZi5leHByWyI6Il09Zi5leHByLmZpbHRlcnMsZi51bmlxdWU9bS51bmlxdWVTb3J0LGYudGV4dD1tLmdldFRleHQsZi5pc1hNTERvYz1tLmlzWE1MLGYuY29udGFpbnM9bS5jb250YWluc30oKTt2YXIgTz0vVW50aWwkLyxQPS9eKD86cGFyZW50c3xwcmV2VW50aWx8cHJldkFsbCkvLFE9LywvLFI9L14uW146I1xbXC4sXSokLyxTPUFycmF5LnByb3RvdHlwZS5zbGljZSxUPWYuZXhwci5tYXRjaC5QT1MsVT17Y2hpbGRyZW46ITAsY29udGVudHM6ITAsbmV4dDohMCxwcmV2OiEwfTtmLmZuLmV4dGVuZCh7ZmluZDpmdW5jdGlvbihhKXt2YXIgYj10aGlzLGMsZDtpZih0eXBlb2YgYSE9InN0cmluZyIpcmV0dXJuIGYoYSkuZmlsdGVyKGZ1bmN0aW9uKCl7Zm9yKGM9MCxkPWIubGVuZ3RoO2M8ZDtjKyspaWYoZi5jb250YWlucyhiW2NdLHRoaXMpKXJldHVybiEwfSk7dmFyIGU9dGhpcy5wdXNoU3RhY2soIiIsImZpbmQiLGEpLGcsaCxpO2ZvcihjPTAsZD10aGlzLmxlbmd0aDtjPGQ7YysrKXtnPWUubGVuZ3RoLGYuZmluZChhLHRoaXNbY10sZSk7aWYoYz4wKWZvcihoPWc7aDxlLmxlbmd0aDtoKyspZm9yKGk9MDtpPGc7aSsrKWlmKGVbaV09PT1lW2hdKXtlLnNwbGljZShoLS0sMSk7YnJlYWt9fXJldHVybiBlfSxoYXM6ZnVuY3Rpb24oYSl7dmFyIGI9ZihhKTtyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oKXtmb3IodmFyIGE9MCxjPWIubGVuZ3RoO2E8YzthKyspaWYoZi5jb250YWlucyh0aGlzLGJbYV0pKXJldHVybiEwfSl9LG5vdDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soVyh0aGlzLGEsITEpLCJub3QiLGEpfSxmaWx0ZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKFcodGhpcyxhLCEwKSwiZmlsdGVyIixhKX0saXM6ZnVuY3Rpb24oYSl7cmV0dXJuISFhJiYodHlwZW9mIGE9PSJzdHJpbmciP1QudGVzdChhKT9mKGEsdGhpcy5jb250ZXh0KS5pbmRleCh0aGlzWzBdKT49MDpmLmZpbHRlcihhLHRoaXMpLmxlbmd0aD4wOnRoaXMuZmlsdGVyKGEpLmxlbmd0aD4wKX0sY2xvc2VzdDpmdW5jdGlvbihhLGIpe3ZhciBjPVtdLGQsZSxnPXRoaXNbMF07aWYoZi5pc0FycmF5KGEpKXt2YXIgaD0xO3doaWxlKGcmJmcub3duZXJEb2N1bWVudCYmZyE9PWIpe2ZvcihkPTA7ZDxhLmxlbmd0aDtkKyspZihnKS5pcyhhW2RdKSYmYy5wdXNoKHtzZWxlY3RvcjphW2RdLGVsZW06ZyxsZXZlbDpofSk7Zz1nLnBhcmVudE5vZGUsaCsrfXJldHVybiBjfXZhciBpPVQudGVzdChhKXx8dHlwZW9mIGEhPSJzdHJpbmciP2YoYSxifHx0aGlzLmNvbnRleHQpOjA7Zm9yKGQ9MCxlPXRoaXMubGVuZ3RoO2Q8ZTtkKyspe2c9dGhpc1tkXTt3aGlsZShnKXtpZihpP2kuaW5kZXgoZyk+LTE6Zi5maW5kLm1hdGNoZXNTZWxlY3RvcihnLGEpKXtjLnB1c2goZyk7YnJlYWt9Zz1nLnBhcmVudE5vZGU7aWYoIWd8fCFnLm93bmVyRG9jdW1lbnR8fGc9PT1ifHxnLm5vZGVUeXBlPT09MTEpYnJlYWt9fWM9Yy5sZW5ndGg+MT9mLnVuaXF1ZShjKTpjO3JldHVybiB0aGlzLnB1c2hTdGFjayhjLCJjbG9zZXN0IixhKX0saW5kZXg6ZnVuY3Rpb24oYSl7aWYoIWEpcmV0dXJuIHRoaXNbMF0mJnRoaXNbMF0ucGFyZW50Tm9kZT90aGlzLnByZXZBbGwoKS5sZW5ndGg6LTE7aWYodHlwZW9mIGE9PSJzdHJpbmciKXJldHVybiBmLmluQXJyYXkodGhpc1swXSxmKGEpKTtyZXR1cm4gZi5pbkFycmF5KGEuanF1ZXJ5P2FbMF06YSx0aGlzKX0sYWRkOmZ1bmN0aW9uKGEsYil7dmFyIGM9dHlwZW9mIGE9PSJzdHJpbmciP2YoYSxiKTpmLm1ha2VBcnJheShhJiZhLm5vZGVUeXBlP1thXTphKSxkPWYubWVyZ2UodGhpcy5nZXQoKSxjKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2soVihjWzBdKXx8VihkWzBdKT9kOmYudW5pcXVlKGQpKX0sYW5kU2VsZjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmFkZCh0aGlzLnByZXZPYmplY3QpfX0pLGYuZWFjaCh7cGFyZW50OmZ1bmN0aW9uKGEpe3ZhciBiPWEucGFyZW50Tm9kZTtyZXR1cm4gYiYmYi5ub2RlVHlwZSE9PTExP2I6bnVsbH0scGFyZW50czpmdW5jdGlvbihhKXtyZXR1cm4gZi5kaXIoYSwicGFyZW50Tm9kZSIpfSxwYXJlbnRzVW50aWw6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBmLmRpcihhLCJwYXJlbnROb2RlIixjKX0sbmV4dDpmdW5jdGlvbihhKXtyZXR1cm4gZi5udGgoYSwyLCJuZXh0U2libGluZyIpfSxwcmV2OmZ1bmN0aW9uKGEpe3JldHVybiBmLm50aChhLDIsInByZXZpb3VzU2libGluZyIpfSxuZXh0QWxsOmZ1bmN0aW9uKGEpe3JldHVybiBmLmRpcihhLCJuZXh0U2libGluZyIpfSxwcmV2QWxsOmZ1bmN0aW9uKGEpe3JldHVybiBmLmRpcihhLCJwcmV2aW91c1NpYmxpbmciKX0sbmV4dFVudGlsOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gZi5kaXIoYSwibmV4dFNpYmxpbmciLGMpfSxwcmV2VW50aWw6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBmLmRpcihhLCJwcmV2aW91c1NpYmxpbmciLGMpfSxzaWJsaW5nczpmdW5jdGlvbihhKXtyZXR1cm4gZi5zaWJsaW5nKGEucGFyZW50Tm9kZS5maXJzdENoaWxkLGEpfSxjaGlsZHJlbjpmdW5jdGlvbihhKXtyZXR1cm4gZi5zaWJsaW5nKGEuZmlyc3RDaGlsZCl9LGNvbnRlbnRzOmZ1bmN0aW9uKGEpe3JldHVybiBmLm5vZGVOYW1lKGEsImlmcmFtZSIpP2EuY29udGVudERvY3VtZW50fHxhLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ6Zi5tYWtlQXJyYXkoYS5jaGlsZE5vZGVzKX19LGZ1bmN0aW9uKGEsYil7Zi5mblthXT1mdW5jdGlvbihjLGQpe3ZhciBlPWYubWFwKHRoaXMsYixjKSxnPVMuY2FsbChhcmd1bWVudHMpO08udGVzdChhKXx8KGQ9YyksZCYmdHlwZW9mIGQ9PSJzdHJpbmciJiYoZT1mLmZpbHRlcihkLGUpKSxlPXRoaXMubGVuZ3RoPjEmJiFVW2FdP2YudW5pcXVlKGUpOmUsKHRoaXMubGVuZ3RoPjF8fFEudGVzdChkKSkmJlAudGVzdChhKSYmKGU9ZS5yZXZlcnNlKCkpO3JldHVybiB0aGlzLnB1c2hTdGFjayhlLGEsZy5qb2luKCIsIikpfX0pLGYuZXh0ZW5kKHtmaWx0ZXI6ZnVuY3Rpb24oYSxiLGMpe2MmJihhPSI6bm90KCIrYSsiKSIpO3JldHVybiBiLmxlbmd0aD09PTE/Zi5maW5kLm1hdGNoZXNTZWxlY3RvcihiWzBdLGEpP1tiWzBdXTpbXTpmLmZpbmQubWF0Y2hlcyhhLGIpfSxkaXI6ZnVuY3Rpb24oYSxjLGQpe3ZhciBlPVtdLGc9YVtjXTt3aGlsZShnJiZnLm5vZGVUeXBlIT09OSYmKGQ9PT1ifHxnLm5vZGVUeXBlIT09MXx8IWYoZykuaXMoZCkpKWcubm9kZVR5cGU9PT0xJiZlLnB1c2goZyksZz1nW2NdO3JldHVybiBlfSxudGg6ZnVuY3Rpb24oYSxiLGMsZCl7Yj1ifHwxO3ZhciBlPTA7Zm9yKDthO2E9YVtjXSlpZihhLm5vZGVUeXBlPT09MSYmKytlPT09YilicmVhaztyZXR1cm4gYX0sc2libGluZzpmdW5jdGlvbihhLGIpe3ZhciBjPVtdO2Zvcig7YTthPWEubmV4dFNpYmxpbmcpYS5ub2RlVHlwZT09PTEmJmEhPT1iJiZjLnB1c2goYSk7cmV0dXJuIGN9fSk7dmFyIFk9ImFiYnIgYXJ0aWNsZSBhc2lkZSBhdWRpbyBjYW52YXMgZGF0YWxpc3QgZGV0YWlscyBmaWdjYXB0aW9uIGZpZ3VyZSBmb290ZXIgaGVhZGVyIGhncm91cCBtYXJrIG1ldGVyIG5hdiBvdXRwdXQgcHJvZ3Jlc3Mgc2VjdGlvbiBzdW1tYXJ5IHRpbWUgdmlkZW8iLFo9LyBqUXVlcnlcZCs9Iig/OlxkK3xudWxsKSIvZywkPS9eXHMrLyxfPS88KD8hYXJlYXxicnxjb2x8ZW1iZWR8aHJ8aW1nfGlucHV0fGxpbmt8bWV0YXxwYXJhbSkoKFtcdzpdKylbXj5dKilcLz4vaWcsYmE9LzwoW1x3Ol0rKS8sYmI9Lzx0Ym9keS9pLGJjPS88fCYjP1x3KzsvLGJkPS88KD86c2NyaXB0fHN0eWxlKS9pLGJlPS88KD86c2NyaXB0fG9iamVjdHxlbWJlZHxvcHRpb258c3R5bGUpL2ksYmY9bmV3IFJlZ0V4cCgiPCg/OiIrWS5yZXBsYWNlKCIgIiwifCIpKyIpIiwiaSIpLGJnPS9jaGVja2VkXHMqKD86W149XXw9XHMqLmNoZWNrZWQuKS9pLGJoPS9cLyhqYXZhfGVjbWEpc2NyaXB0L2ksYmk9L15ccyo8ISg/OlxbQ0RBVEFcW3xcLVwtKS8sYmo9e29wdGlvbjpbMSwiPHNlbGVjdCBtdWx0aXBsZT0nbXVsdGlwbGUnPiIsIjwvc2VsZWN0PiJdLGxlZ2VuZDpbMSwiPGZpZWxkc2V0PiIsIjwvZmllbGRzZXQ+Il0sdGhlYWQ6WzEsIjx0YWJsZT4iLCI8L3RhYmxlPiJdLHRyOlsyLCI8dGFibGU+PHRib2R5PiIsIjwvdGJvZHk+PC90YWJsZT4iXSx0ZDpbMywiPHRhYmxlPjx0Ym9keT48dHI+IiwiPC90cj48L3Rib2R5PjwvdGFibGU+Il0sY29sOlsyLCI8dGFibGU+PHRib2R5PjwvdGJvZHk+PGNvbGdyb3VwPiIsIjwvY29sZ3JvdXA+PC90YWJsZT4iXSxhcmVhOlsxLCI8bWFwPiIsIjwvbWFwPiJdLF9kZWZhdWx0OlswLCIiLCIiXX0sYms9WChjKTtiai5vcHRncm91cD1iai5vcHRpb24sYmoudGJvZHk9YmoudGZvb3Q9YmouY29sZ3JvdXA9YmouY2FwdGlvbj1iai50aGVhZCxiai50aD1iai50ZCxmLnN1cHBvcnQuaHRtbFNlcmlhbGl6ZXx8KGJqLl9kZWZhdWx0PVsxLCJkaXY8ZGl2PiIsIjwvZGl2PiJdKSxmLmZuLmV4dGVuZCh7dGV4dDpmdW5jdGlvbihhKXtpZihmLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXt2YXIgYz1mKHRoaXMpO2MudGV4dChhLmNhbGwodGhpcyxiLGMudGV4dCgpKSl9KTtpZih0eXBlb2YgYSE9Im9iamVjdCImJmEhPT1iKXJldHVybiB0aGlzLmVtcHR5KCkuYXBwZW5kKCh0aGlzWzBdJiZ0aGlzWzBdLm93bmVyRG9jdW1lbnR8fGMpLmNyZWF0ZVRleHROb2RlKGEpKTtyZXR1cm4gZi50ZXh0KHRoaXMpfSx3cmFwQWxsOmZ1bmN0aW9uKGEpe2lmKGYuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe2YodGhpcykud3JhcEFsbChhLmNhbGwodGhpcyxiKSl9KTtpZih0aGlzWzBdKXt2YXIgYj1mKGEsdGhpc1swXS5vd25lckRvY3VtZW50KS5lcSgwKS5jbG9uZSghMCk7dGhpc1swXS5wYXJlbnROb2RlJiZiLmluc2VydEJlZm9yZSh0aGlzWzBdKSxiLm1hcChmdW5jdGlvbigpe3ZhciBhPXRoaXM7d2hpbGUoYS5maXJzdENoaWxkJiZhLmZpcnN0Q2hpbGQubm9kZVR5cGU9PT0xKWE9YS5maXJzdENoaWxkO3JldHVybiBhfSkuYXBwZW5kKHRoaXMpfXJldHVybiB0aGlzfSx3cmFwSW5uZXI6ZnVuY3Rpb24oYSl7aWYoZi5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYil7Zih0aGlzKS53cmFwSW5uZXIoYS5jYWxsKHRoaXMsYikpfSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPWYodGhpcyksYz1iLmNvbnRlbnRzKCk7Yy5sZW5ndGg/Yy53cmFwQWxsKGEpOmIuYXBwZW5kKGEpfSl9LHdyYXA6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2YodGhpcykud3JhcEFsbChhKX0pfSx1bndyYXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJlbnQoKS5lYWNoKGZ1bmN0aW9uKCl7Zi5ub2RlTmFtZSh0aGlzLCJib2R5Iil8fGYodGhpcykucmVwbGFjZVdpdGgodGhpcy5jaGlsZE5vZGVzKX0pLmVuZCgpfSxhcHBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsITAsZnVuY3Rpb24oYSl7dGhpcy5ub2RlVHlwZT09PTEmJnRoaXMuYXBwZW5kQ2hpbGQoYSl9KX0scHJlcGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cywhMCxmdW5jdGlvbihhKXt0aGlzLm5vZGVUeXBlPT09MSYmdGhpcy5pbnNlcnRCZWZvcmUoYSx0aGlzLmZpcnN0Q2hpbGQpfSl9LGJlZm9yZTpmdW5jdGlvbigpe2lmKHRoaXNbMF0mJnRoaXNbMF0ucGFyZW50Tm9kZSlyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsITEsZnVuY3Rpb24oYSl7dGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLHRoaXMpfSk7aWYoYXJndW1lbnRzLmxlbmd0aCl7dmFyIGE9Zihhcmd1bWVudHNbMF0pO2EucHVzaC5hcHBseShhLHRoaXMudG9BcnJheSgpKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2soYSwiYmVmb3JlIixhcmd1bWVudHMpfX0sYWZ0ZXI6ZnVuY3Rpb24oKXtpZih0aGlzWzBdJiZ0aGlzWzBdLnBhcmVudE5vZGUpcmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLCExLGZ1bmN0aW9uKGEpe3RoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSx0aGlzLm5leHRTaWJsaW5nKX0pO2lmKGFyZ3VtZW50cy5sZW5ndGgpe3ZhciBhPXRoaXMucHVzaFN0YWNrKHRoaXMsImFmdGVyIgosYXJndW1lbnRzKTthLnB1c2guYXBwbHkoYSxmKGFyZ3VtZW50c1swXSkudG9BcnJheSgpKTtyZXR1cm4gYX19LHJlbW92ZTpmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0wLGQ7KGQ9dGhpc1tjXSkhPW51bGw7YysrKWlmKCFhfHxmLmZpbHRlcihhLFtkXSkubGVuZ3RoKSFiJiZkLm5vZGVUeXBlPT09MSYmKGYuY2xlYW5EYXRhKGQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKSksZi5jbGVhbkRhdGEoW2RdKSksZC5wYXJlbnROb2RlJiZkLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZCk7cmV0dXJuIHRoaXN9LGVtcHR5OmZ1bmN0aW9uKCl7Zm9yKHZhciBhPTAsYjsoYj10aGlzW2FdKSE9bnVsbDthKyspe2Iubm9kZVR5cGU9PT0xJiZmLmNsZWFuRGF0YShiLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikpO3doaWxlKGIuZmlyc3RDaGlsZCliLnJlbW92ZUNoaWxkKGIuZmlyc3RDaGlsZCl9cmV0dXJuIHRoaXN9LGNsb25lOmZ1bmN0aW9uKGEsYil7YT1hPT1udWxsPyExOmEsYj1iPT1udWxsP2E6YjtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gZi5jbG9uZSh0aGlzLGEsYil9KX0saHRtbDpmdW5jdGlvbihhKXtpZihhPT09YilyZXR1cm4gdGhpc1swXSYmdGhpc1swXS5ub2RlVHlwZT09PTE/dGhpc1swXS5pbm5lckhUTUwucmVwbGFjZShaLCIiKTpudWxsO2lmKHR5cGVvZiBhPT0ic3RyaW5nIiYmIWJkLnRlc3QoYSkmJihmLnN1cHBvcnQubGVhZGluZ1doaXRlc3BhY2V8fCEkLnRlc3QoYSkpJiYhYmpbKGJhLmV4ZWMoYSl8fFsiIiwiIl0pWzFdLnRvTG93ZXJDYXNlKCldKXthPWEucmVwbGFjZShfLCI8JDE+PC8kMj4iKTt0cnl7Zm9yKHZhciBjPTAsZD10aGlzLmxlbmd0aDtjPGQ7YysrKXRoaXNbY10ubm9kZVR5cGU9PT0xJiYoZi5jbGVhbkRhdGEodGhpc1tjXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpKSx0aGlzW2NdLmlubmVySFRNTD1hKX1jYXRjaChlKXt0aGlzLmVtcHR5KCkuYXBwZW5kKGEpfX1lbHNlIGYuaXNGdW5jdGlvbihhKT90aGlzLmVhY2goZnVuY3Rpb24oYil7dmFyIGM9Zih0aGlzKTtjLmh0bWwoYS5jYWxsKHRoaXMsYixjLmh0bWwoKSkpfSk6dGhpcy5lbXB0eSgpLmFwcGVuZChhKTtyZXR1cm4gdGhpc30scmVwbGFjZVdpdGg6ZnVuY3Rpb24oYSl7aWYodGhpc1swXSYmdGhpc1swXS5wYXJlbnROb2RlKXtpZihmLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXt2YXIgYz1mKHRoaXMpLGQ9Yy5odG1sKCk7Yy5yZXBsYWNlV2l0aChhLmNhbGwodGhpcyxiLGQpKX0pO3R5cGVvZiBhIT0ic3RyaW5nIiYmKGE9ZihhKS5kZXRhY2goKSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPXRoaXMubmV4dFNpYmxpbmcsYz10aGlzLnBhcmVudE5vZGU7Zih0aGlzKS5yZW1vdmUoKSxiP2YoYikuYmVmb3JlKGEpOmYoYykuYXBwZW5kKGEpfSl9cmV0dXJuIHRoaXMubGVuZ3RoP3RoaXMucHVzaFN0YWNrKGYoZi5pc0Z1bmN0aW9uKGEpP2EoKTphKSwicmVwbGFjZVdpdGgiLGEpOnRoaXN9LGRldGFjaDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5yZW1vdmUoYSwhMCl9LGRvbU1hbmlwOmZ1bmN0aW9uKGEsYyxkKXt2YXIgZSxnLGgsaSxqPWFbMF0saz1bXTtpZighZi5zdXBwb3J0LmNoZWNrQ2xvbmUmJmFyZ3VtZW50cy5sZW5ndGg9PT0zJiZ0eXBlb2Ygaj09InN0cmluZyImJmJnLnRlc3QoaikpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2YodGhpcykuZG9tTWFuaXAoYSxjLGQsITApfSk7aWYoZi5pc0Z1bmN0aW9uKGopKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oZSl7dmFyIGc9Zih0aGlzKTthWzBdPWouY2FsbCh0aGlzLGUsYz9nLmh0bWwoKTpiKSxnLmRvbU1hbmlwKGEsYyxkKX0pO2lmKHRoaXNbMF0pe2k9aiYmai5wYXJlbnROb2RlLGYuc3VwcG9ydC5wYXJlbnROb2RlJiZpJiZpLm5vZGVUeXBlPT09MTEmJmkuY2hpbGROb2Rlcy5sZW5ndGg9PT10aGlzLmxlbmd0aD9lPXtmcmFnbWVudDppfTplPWYuYnVpbGRGcmFnbWVudChhLHRoaXMsayksaD1lLmZyYWdtZW50LGguY2hpbGROb2Rlcy5sZW5ndGg9PT0xP2c9aD1oLmZpcnN0Q2hpbGQ6Zz1oLmZpcnN0Q2hpbGQ7aWYoZyl7Yz1jJiZmLm5vZGVOYW1lKGcsInRyIik7Zm9yKHZhciBsPTAsbT10aGlzLmxlbmd0aCxuPW0tMTtsPG07bCsrKWQuY2FsbChjP2JsKHRoaXNbbF0sZyk6dGhpc1tsXSxlLmNhY2hlYWJsZXx8bT4xJiZsPG4/Zi5jbG9uZShoLCEwLCEwKTpoKX1rLmxlbmd0aCYmZi5lYWNoKGssYnIpfXJldHVybiB0aGlzfX0pLGYuYnVpbGRGcmFnbWVudD1mdW5jdGlvbihhLGIsZCl7dmFyIGUsZyxoLGksaj1hWzBdO2ImJmJbMF0mJihpPWJbMF0ub3duZXJEb2N1bWVudHx8YlswXSksaS5jcmVhdGVEb2N1bWVudEZyYWdtZW50fHwoaT1jKSxhLmxlbmd0aD09PTEmJnR5cGVvZiBqPT0ic3RyaW5nIiYmai5sZW5ndGg8NTEyJiZpPT09YyYmai5jaGFyQXQoMCk9PT0iPCImJiFiZS50ZXN0KGopJiYoZi5zdXBwb3J0LmNoZWNrQ2xvbmV8fCFiZy50ZXN0KGopKSYmIWYuc3VwcG9ydC51bmtub3duRWxlbXMmJmJmLnRlc3QoaikmJihnPSEwLGg9Zi5mcmFnbWVudHNbal0saCYmaCE9PTEmJihlPWgpKSxlfHwoZT1pLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxmLmNsZWFuKGEsaSxlLGQpKSxnJiYoZi5mcmFnbWVudHNbal09aD9lOjEpO3JldHVybntmcmFnbWVudDplLGNhY2hlYWJsZTpnfX0sZi5mcmFnbWVudHM9e30sZi5lYWNoKHthcHBlbmRUbzoiYXBwZW5kIixwcmVwZW5kVG86InByZXBlbmQiLGluc2VydEJlZm9yZToiYmVmb3JlIixpbnNlcnRBZnRlcjoiYWZ0ZXIiLHJlcGxhY2VBbGw6InJlcGxhY2VXaXRoIn0sZnVuY3Rpb24oYSxiKXtmLmZuW2FdPWZ1bmN0aW9uKGMpe3ZhciBkPVtdLGU9ZihjKSxnPXRoaXMubGVuZ3RoPT09MSYmdGhpc1swXS5wYXJlbnROb2RlO2lmKGcmJmcubm9kZVR5cGU9PT0xMSYmZy5jaGlsZE5vZGVzLmxlbmd0aD09PTEmJmUubGVuZ3RoPT09MSl7ZVtiXSh0aGlzWzBdKTtyZXR1cm4gdGhpc31mb3IodmFyIGg9MCxpPWUubGVuZ3RoO2g8aTtoKyspe3ZhciBqPShoPjA/dGhpcy5jbG9uZSghMCk6dGhpcykuZ2V0KCk7ZihlW2hdKVtiXShqKSxkPWQuY29uY2F0KGopfXJldHVybiB0aGlzLnB1c2hTdGFjayhkLGEsZS5zZWxlY3Rvcil9fSksZi5leHRlbmQoe2Nsb25lOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hLmNsb25lTm9kZSghMCksZSxnLGg7aWYoKCFmLnN1cHBvcnQubm9DbG9uZUV2ZW50fHwhZi5zdXBwb3J0Lm5vQ2xvbmVDaGVja2VkKSYmKGEubm9kZVR5cGU9PT0xfHxhLm5vZGVUeXBlPT09MTEpJiYhZi5pc1hNTERvYyhhKSl7Ym4oYSxkKSxlPWJvKGEpLGc9Ym8oZCk7Zm9yKGg9MDtlW2hdOysraClnW2hdJiZibihlW2hdLGdbaF0pfWlmKGIpe2JtKGEsZCk7aWYoYyl7ZT1ibyhhKSxnPWJvKGQpO2ZvcihoPTA7ZVtoXTsrK2gpYm0oZVtoXSxnW2hdKX19ZT1nPW51bGw7cmV0dXJuIGR9LGNsZWFuOmZ1bmN0aW9uKGEsYixkLGUpe3ZhciBnO2I9Ynx8Yyx0eXBlb2YgYi5jcmVhdGVFbGVtZW50PT0idW5kZWZpbmVkIiYmKGI9Yi5vd25lckRvY3VtZW50fHxiWzBdJiZiWzBdLm93bmVyRG9jdW1lbnR8fGMpO3ZhciBoPVtdLGk7Zm9yKHZhciBqPTAsazsoaz1hW2pdKSE9bnVsbDtqKyspe3R5cGVvZiBrPT0ibnVtYmVyIiYmKGsrPSIiKTtpZighayljb250aW51ZTtpZih0eXBlb2Ygaz09InN0cmluZyIpaWYoIWJjLnRlc3Qoaykpaz1iLmNyZWF0ZVRleHROb2RlKGspO2Vsc2V7az1rLnJlcGxhY2UoXywiPCQxPjwvJDI+Iik7dmFyIGw9KGJhLmV4ZWMoayl8fFsiIiwiIl0pWzFdLnRvTG93ZXJDYXNlKCksbT1ialtsXXx8YmouX2RlZmF1bHQsbj1tWzBdLG89Yi5jcmVhdGVFbGVtZW50KCJkaXYiKTtiPT09Yz9iay5hcHBlbmRDaGlsZChvKTpYKGIpLmFwcGVuZENoaWxkKG8pLG8uaW5uZXJIVE1MPW1bMV0rayttWzJdO3doaWxlKG4tLSlvPW8ubGFzdENoaWxkO2lmKCFmLnN1cHBvcnQudGJvZHkpe3ZhciBwPWJiLnRlc3QoaykscT1sPT09InRhYmxlIiYmIXA/by5maXJzdENoaWxkJiZvLmZpcnN0Q2hpbGQuY2hpbGROb2RlczptWzFdPT09Ijx0YWJsZT4iJiYhcD9vLmNoaWxkTm9kZXM6W107Zm9yKGk9cS5sZW5ndGgtMTtpPj0wOy0taSlmLm5vZGVOYW1lKHFbaV0sInRib2R5IikmJiFxW2ldLmNoaWxkTm9kZXMubGVuZ3RoJiZxW2ldLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQocVtpXSl9IWYuc3VwcG9ydC5sZWFkaW5nV2hpdGVzcGFjZSYmJC50ZXN0KGspJiZvLmluc2VydEJlZm9yZShiLmNyZWF0ZVRleHROb2RlKCQuZXhlYyhrKVswXSksby5maXJzdENoaWxkKSxrPW8uY2hpbGROb2Rlc312YXIgcjtpZighZi5zdXBwb3J0LmFwcGVuZENoZWNrZWQpaWYoa1swXSYmdHlwZW9mIChyPWsubGVuZ3RoKT09Im51bWJlciIpZm9yKGk9MDtpPHI7aSsrKWJxKGtbaV0pO2Vsc2UgYnEoayk7ay5ub2RlVHlwZT9oLnB1c2goayk6aD1mLm1lcmdlKGgsayl9aWYoZCl7Zz1mdW5jdGlvbihhKXtyZXR1cm4hYS50eXBlfHxiaC50ZXN0KGEudHlwZSl9O2ZvcihqPTA7aFtqXTtqKyspaWYoZSYmZi5ub2RlTmFtZShoW2pdLCJzY3JpcHQiKSYmKCFoW2pdLnR5cGV8fGhbal0udHlwZS50b0xvd2VyQ2FzZSgpPT09InRleHQvamF2YXNjcmlwdCIpKWUucHVzaChoW2pdLnBhcmVudE5vZGU/aFtqXS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGhbal0pOmhbal0pO2Vsc2V7aWYoaFtqXS5ub2RlVHlwZT09PTEpe3ZhciBzPWYuZ3JlcChoW2pdLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKSxnKTtoLnNwbGljZS5hcHBseShoLFtqKzEsMF0uY29uY2F0KHMpKX1kLmFwcGVuZENoaWxkKGhbal0pfX1yZXR1cm4gaH0sY2xlYW5EYXRhOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZD1mLmNhY2hlLGU9Zi5ldmVudC5zcGVjaWFsLGc9Zi5zdXBwb3J0LmRlbGV0ZUV4cGFuZG87Zm9yKHZhciBoPTAsaTsoaT1hW2hdKSE9bnVsbDtoKyspe2lmKGkubm9kZU5hbWUmJmYubm9EYXRhW2kubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0pY29udGludWU7Yz1pW2YuZXhwYW5kb107aWYoYyl7Yj1kW2NdO2lmKGImJmIuZXZlbnRzKXtmb3IodmFyIGogaW4gYi5ldmVudHMpZVtqXT9mLmV2ZW50LnJlbW92ZShpLGopOmYucmVtb3ZlRXZlbnQoaSxqLGIuaGFuZGxlKTtiLmhhbmRsZSYmKGIuaGFuZGxlLmVsZW09bnVsbCl9Zz9kZWxldGUgaVtmLmV4cGFuZG9dOmkucmVtb3ZlQXR0cmlidXRlJiZpLnJlbW92ZUF0dHJpYnV0ZShmLmV4cGFuZG8pLGRlbGV0ZSBkW2NdfX19fSk7dmFyIGJzPS9hbHBoYVwoW14pXSpcKS9pLGJ0PS9vcGFjaXR5PShbXildKikvLGJ1PS8oW0EtWl18Xm1zKS9nLGJ2PS9eLT9cZCsoPzpweCk/JC9pLGJ3PS9eLT9cZC8sYng9L14oW1wtK10pPShbXC0rLlxkZV0rKS8sYnk9e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdmlzaWJpbGl0eToiaGlkZGVuIixkaXNwbGF5OiJibG9jayJ9LGJ6PVsiTGVmdCIsIlJpZ2h0Il0sYkE9WyJUb3AiLCJCb3R0b20iXSxiQixiQyxiRDtmLmZuLmNzcz1mdW5jdGlvbihhLGMpe2lmKGFyZ3VtZW50cy5sZW5ndGg9PT0yJiZjPT09YilyZXR1cm4gdGhpcztyZXR1cm4gZi5hY2Nlc3ModGhpcyxhLGMsITAsZnVuY3Rpb24oYSxjLGQpe3JldHVybiBkIT09Yj9mLnN0eWxlKGEsYyxkKTpmLmNzcyhhLGMpfSl9LGYuZXh0ZW5kKHtjc3NIb29rczp7b3BhY2l0eTp7Z2V0OmZ1bmN0aW9uKGEsYil7aWYoYil7dmFyIGM9YkIoYSwib3BhY2l0eSIsIm9wYWNpdHkiKTtyZXR1cm4gYz09PSIiPyIxIjpjfXJldHVybiBhLnN0eWxlLm9wYWNpdHl9fX0sY3NzTnVtYmVyOntmaWxsT3BhY2l0eTohMCxmb250V2VpZ2h0OiEwLGxpbmVIZWlnaHQ6ITAsb3BhY2l0eTohMCxvcnBoYW5zOiEwLHdpZG93czohMCx6SW5kZXg6ITAsem9vbTohMH0sY3NzUHJvcHM6eyJmbG9hdCI6Zi5zdXBwb3J0LmNzc0Zsb2F0PyJjc3NGbG9hdCI6InN0eWxlRmxvYXQifSxzdHlsZTpmdW5jdGlvbihhLGMsZCxlKXtpZighIWEmJmEubm9kZVR5cGUhPT0zJiZhLm5vZGVUeXBlIT09OCYmISFhLnN0eWxlKXt2YXIgZyxoLGk9Zi5jYW1lbENhc2UoYyksaj1hLnN0eWxlLGs9Zi5jc3NIb29rc1tpXTtjPWYuY3NzUHJvcHNbaV18fGk7aWYoZD09PWIpe2lmKGsmJiJnZXQiaW4gayYmKGc9ay5nZXQoYSwhMSxlKSkhPT1iKXJldHVybiBnO3JldHVybiBqW2NdfWg9dHlwZW9mIGQsaD09PSJzdHJpbmciJiYoZz1ieC5leGVjKGQpKSYmKGQ9KyhnWzFdKzEpKitnWzJdK3BhcnNlRmxvYXQoZi5jc3MoYSxjKSksaD0ibnVtYmVyIik7aWYoZD09bnVsbHx8aD09PSJudW1iZXIiJiZpc05hTihkKSlyZXR1cm47aD09PSJudW1iZXIiJiYhZi5jc3NOdW1iZXJbaV0mJihkKz0icHgiKTtpZigha3x8ISgic2V0ImluIGspfHwoZD1rLnNldChhLGQpKSE9PWIpdHJ5e2pbY109ZH1jYXRjaChsKXt9fX0sY3NzOmZ1bmN0aW9uKGEsYyxkKXt2YXIgZSxnO2M9Zi5jYW1lbENhc2UoYyksZz1mLmNzc0hvb2tzW2NdLGM9Zi5jc3NQcm9wc1tjXXx8YyxjPT09ImNzc0Zsb2F0IiYmKGM9ImZsb2F0Iik7aWYoZyYmImdldCJpbiBnJiYoZT1nLmdldChhLCEwLGQpKSE9PWIpcmV0dXJuIGU7aWYoYkIpcmV0dXJuIGJCKGEsYyl9LHN3YXA6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXt9O2Zvcih2YXIgZSBpbiBiKWRbZV09YS5zdHlsZVtlXSxhLnN0eWxlW2VdPWJbZV07Yy5jYWxsKGEpO2ZvcihlIGluIGIpYS5zdHlsZVtlXT1kW2VdfX0pLGYuY3VyQ1NTPWYuY3NzLGYuZWFjaChbImhlaWdodCIsIndpZHRoIl0sZnVuY3Rpb24oYSxiKXtmLmNzc0hvb2tzW2JdPXtnZXQ6ZnVuY3Rpb24oYSxjLGQpe3ZhciBlO2lmKGMpe2lmKGEub2Zmc2V0V2lkdGghPT0wKXJldHVybiBiRShhLGIsZCk7Zi5zd2FwKGEsYnksZnVuY3Rpb24oKXtlPWJFKGEsYixkKX0pO3JldHVybiBlfX0sc2V0OmZ1bmN0aW9uKGEsYil7aWYoIWJ2LnRlc3QoYikpcmV0dXJuIGI7Yj1wYXJzZUZsb2F0KGIpO2lmKGI+PTApcmV0dXJuIGIrInB4In19fSksZi5zdXBwb3J0Lm9wYWNpdHl8fChmLmNzc0hvb2tzLm9wYWNpdHk9e2dldDpmdW5jdGlvbihhLGIpe3JldHVybiBidC50ZXN0KChiJiZhLmN1cnJlbnRTdHlsZT9hLmN1cnJlbnRTdHlsZS5maWx0ZXI6YS5zdHlsZS5maWx0ZXIpfHwiIik/cGFyc2VGbG9hdChSZWdFeHAuJDEpLzEwMCsiIjpiPyIxIjoiIn0sc2V0OmZ1bmN0aW9uKGEsYil7dmFyIGM9YS5zdHlsZSxkPWEuY3VycmVudFN0eWxlLGU9Zi5pc051bWVyaWMoYik/ImFscGhhKG9wYWNpdHk9IitiKjEwMCsiKSI6IiIsZz1kJiZkLmZpbHRlcnx8Yy5maWx0ZXJ8fCIiO2Muem9vbT0xO2lmKGI+PTEmJmYudHJpbShnLnJlcGxhY2UoYnMsIiIpKT09PSIiKXtjLnJlbW92ZUF0dHJpYnV0ZSgiZmlsdGVyIik7aWYoZCYmIWQuZmlsdGVyKXJldHVybn1jLmZpbHRlcj1icy50ZXN0KGcpP2cucmVwbGFjZShicyxlKTpnKyIgIitlfX0pLGYoZnVuY3Rpb24oKXtmLnN1cHBvcnQucmVsaWFibGVNYXJnaW5SaWdodHx8KGYuY3NzSG9va3MubWFyZ2luUmlnaHQ9e2dldDpmdW5jdGlvbihhLGIpe3ZhciBjO2Yuc3dhcChhLHtkaXNwbGF5OiJpbmxpbmUtYmxvY2sifSxmdW5jdGlvbigpe2I/Yz1iQihhLCJtYXJnaW4tcmlnaHQiLCJtYXJnaW5SaWdodCIpOmM9YS5zdHlsZS5tYXJnaW5SaWdodH0pO3JldHVybiBjfX0pfSksYy5kZWZhdWx0VmlldyYmYy5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlJiYoYkM9ZnVuY3Rpb24oYSxjKXt2YXIgZCxlLGc7Yz1jLnJlcGxhY2UoYnUsIi0kMSIpLnRvTG93ZXJDYXNlKCk7aWYoIShlPWEub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldykpcmV0dXJuIGI7aWYoZz1lLmdldENvbXB1dGVkU3R5bGUoYSxudWxsKSlkPWcuZ2V0UHJvcGVydHlWYWx1ZShjKSxkPT09IiImJiFmLmNvbnRhaW5zKGEub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsYSkmJihkPWYuc3R5bGUoYSxjKSk7cmV0dXJuIGR9KSxjLmRvY3VtZW50RWxlbWVudC5jdXJyZW50U3R5bGUmJihiRD1mdW5jdGlvbihhLGIpe3ZhciBjLGQsZSxmPWEuY3VycmVudFN0eWxlJiZhLmN1cnJlbnRTdHlsZVtiXSxnPWEuc3R5bGU7Zj09PW51bGwmJmcmJihlPWdbYl0pJiYoZj1lKSwhYnYudGVzdChmKSYmYncudGVzdChmKSYmKGM9Zy5sZWZ0LGQ9YS5ydW50aW1lU3R5bGUmJmEucnVudGltZVN0eWxlLmxlZnQsZCYmKGEucnVudGltZVN0eWxlLmxlZnQ9YS5jdXJyZW50U3R5bGUubGVmdCksZy5sZWZ0PWI9PT0iZm9udFNpemUiPyIxZW0iOmZ8fDAsZj1nLnBpeGVsTGVmdCsicHgiLGcubGVmdD1jLGQmJihhLnJ1bnRpbWVTdHlsZS5sZWZ0PWQpKTtyZXR1cm4gZj09PSIiPyJhdXRvIjpmfSksYkI9YkN8fGJELGYuZXhwciYmZi5leHByLmZpbHRlcnMmJihmLmV4cHIuZmlsdGVycy5oaWRkZW49ZnVuY3Rpb24oYSl7dmFyIGI9YS5vZmZzZXRXaWR0aCxjPWEub2Zmc2V0SGVpZ2h0O3JldHVybiBiPT09MCYmYz09PTB8fCFmLnN1cHBvcnQucmVsaWFibGVIaWRkZW5PZmZzZXRzJiYoYS5zdHlsZSYmYS5zdHlsZS5kaXNwbGF5fHxmLmNzcyhhLCJkaXNwbGF5IikpPT09Im5vbmUifSxmLmV4cHIuZmlsdGVycy52aXNpYmxlPWZ1bmN0aW9uKGEpe3JldHVybiFmLmV4cHIuZmlsdGVycy5oaWRkZW4oYSl9KTt2YXIgYkY9LyUyMC9nLGJHPS9cW1xdJC8sYkg9L1xyP1xuL2csYkk9LyMuKiQvLGJKPS9eKC4qPyk6WyBcdF0qKFteXHJcbl0qKVxyPyQvbWcsYks9L14oPzpjb2xvcnxkYXRlfGRhdGV0aW1lfGRhdGV0aW1lLWxvY2FsfGVtYWlsfGhpZGRlbnxtb250aHxudW1iZXJ8cGFzc3dvcmR8cmFuZ2V8c2VhcmNofHRlbHx0ZXh0fHRpbWV8dXJsfHdlZWspJC9pLGJMPS9eKD86YWJvdXR8YXBwfGFwcFwtc3RvcmFnZXwuK1wtZXh0ZW5zaW9ufGZpbGV8cmVzfHdpZGdldCk6JC8sYk09L14oPzpHRVR8SEVBRCkkLyxiTj0vXlwvXC8vLGJPPS9cPy8sYlA9LzxzY3JpcHRcYltePF0qKD86KD8hPFwvc2NyaXB0Pik8W148XSopKjxcL3NjcmlwdD4vZ2ksYlE9L14oPzpzZWxlY3R8dGV4dGFyZWEpL2ksYlI9L1xzKy8sYlM9LyhbPyZdKV89W14mXSovLGJUPS9eKFtcd1wrXC5cLV0rOikoPzpcL1wvKFteXC8/IzpdKikoPzo6KFxkKykpPyk/LyxiVT1mLmZuLmxvYWQsYlY9e30sYlc9e30sYlgsYlksYlo9WyIqLyJdK1siKiJdO3RyeXtiWD1lLmhyZWZ9Y2F0Y2goYiQpe2JYPWMuY3JlYXRlRWxlbWVudCgiYSIpLGJYLmhyZWY9IiIsYlg9YlguaHJlZn1iWT1iVC5leGVjKGJYLnRvTG93ZXJDYXNlKCkpfHxbXSxmLmZuLmV4dGVuZCh7bG9hZDpmdW5jdGlvbihhLGMsZCl7aWYodHlwZW9mIGEhPSJzdHJpbmciJiZiVSlyZXR1cm4gYlUuYXBwbHkodGhpcyxhcmd1bWVudHMpO2lmKCF0aGlzLmxlbmd0aClyZXR1cm4gdGhpczt2YXIgZT1hLmluZGV4T2YoIiAiKTtpZihlPj0wKXt2YXIgZz1hLnNsaWNlKGUsYS5sZW5ndGgpO2E9YS5zbGljZSgwLGUpfXZhciBoPSJHRVQiO2MmJihmLmlzRnVuY3Rpb24oYyk/KGQ9YyxjPWIpOnR5cGVvZiBjPT0ib2JqZWN0IiYmKGM9Zi5wYXJhbShjLGYuYWpheFNldHRpbmdzLnRyYWRpdGlvbmFsKSxoPSJQT1NUIikpO3ZhciBpPXRoaXM7Zi5hamF4KHt1cmw6YSx0eXBlOmgsZGF0YVR5cGU6Imh0bWwiLGRhdGE6Yyxjb21wbGV0ZTpmdW5jdGlvbihhLGIsYyl7Yz1hLnJlc3BvbnNlVGV4dCxhLmlzUmVzb2x2ZWQoKSYmKGEuZG9uZShmdW5jdGlvbihhKXtjPWF9KSxpLmh0bWwoZz9mKCI8ZGl2PiIpLmFwcGVuZChjLnJlcGxhY2UoYlAsIiIpKS5maW5kKGcpOmMpKSxkJiZpLmVhY2goZCxbYyxiLGFdKX19KTtyZXR1cm4gdGhpc30sc2VyaWFsaXplOmZ1bmN0aW9uKCl7cmV0dXJuIGYucGFyYW0odGhpcy5zZXJpYWxpemVBcnJheSgpKX0sc2VyaWFsaXplQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbGVtZW50cz9mLm1ha2VBcnJheSh0aGlzLmVsZW1lbnRzKTp0aGlzfSkuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmFtZSYmIXRoaXMuZGlzYWJsZWQmJih0aGlzLmNoZWNrZWR8fGJRLnRlc3QodGhpcy5ub2RlTmFtZSl8fGJLLnRlc3QodGhpcy50eXBlKSl9KS5tYXAoZnVuY3Rpb24oYSxiKXt2YXIgYz1mKHRoaXMpLnZhbCgpO3JldHVybiBjPT1udWxsP251bGw6Zi5pc0FycmF5KGMpP2YubWFwKGMsZnVuY3Rpb24oYSxjKXtyZXR1cm57bmFtZTpiLm5hbWUsdmFsdWU6YS5yZXBsYWNlKGJILCJcclxuIil9fSk6e25hbWU6Yi5uYW1lLHZhbHVlOmMucmVwbGFjZShiSCwiXHJcbiIpfX0pLmdldCgpfX0pLGYuZWFjaCgiYWpheFN0YXJ0IGFqYXhTdG9wIGFqYXhDb21wbGV0ZSBhamF4RXJyb3IgYWpheFN1Y2Nlc3MgYWpheFNlbmQiLnNwbGl0KCIgIiksZnVuY3Rpb24oYSxiKXtmLmZuW2JdPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmJpbmQoYixhKX19KSxmLmVhY2goWyJnZXQiLCJwb3N0Il0sZnVuY3Rpb24oYSxjKXtmW2NdPWZ1bmN0aW9uKGEsZCxlLGcpe2YuaXNGdW5jdGlvbihkKSYmKGc9Z3x8ZSxlPWQsZD1iKTtyZXR1cm4gZi5hamF4KHt0eXBlOmMsdXJsOmEsZGF0YTpkLHN1Y2Nlc3M6ZSxkYXRhVHlwZTpnfSl9fSksZi5leHRlbmQoe2dldFNjcmlwdDpmdW5jdGlvbihhLGMpe3JldHVybiBmLmdldChhLGIsYywic2NyaXB0Iil9LGdldEpTT046ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBmLmdldChhLGIsYywianNvbiIpfSxhamF4U2V0dXA6ZnVuY3Rpb24oYSxiKXtiP2NiKGEsZi5hamF4U2V0dGluZ3MpOihiPWEsYT1mLmFqYXhTZXR0aW5ncyksY2IoYSxiKTtyZXR1cm4gYX0sYWpheFNldHRpbmdzOnt1cmw6YlgsaXNMb2NhbDpiTC50ZXN0KGJZWzFdKSxnbG9iYWw6ITAsdHlwZToiR0VUIixjb250ZW50VHlwZToiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIixwcm9jZXNzRGF0YTohMCxhc3luYzohMCxhY2NlcHRzOnt4bWw6ImFwcGxpY2F0aW9uL3htbCwgdGV4dC94bWwiLGh0bWw6InRleHQvaHRtbCIsdGV4dDoidGV4dC9wbGFpbiIsanNvbjoiYXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZhc2NyaXB0IiwiKiI6Ylp9LGNvbnRlbnRzOnt4bWw6L3htbC8saHRtbDovaHRtbC8sanNvbjovanNvbi99LHJlc3BvbnNlRmllbGRzOnt4bWw6InJlc3BvbnNlWE1MIix0ZXh0OiJyZXNwb25zZVRleHQifSxjb252ZXJ0ZXJzOnsiKiB0ZXh0IjphLlN0cmluZywidGV4dCBodG1sIjohMCwidGV4dCBqc29uIjpmLnBhcnNlSlNPTiwidGV4dCB4bWwiOmYucGFyc2VYTUx9LGZsYXRPcHRpb25zOntjb250ZXh0OiEwLHVybDohMH19LGFqYXhQcmVmaWx0ZXI6Yl8oYlYpLGFqYXhUcmFuc3BvcnQ6Yl8oYlcpLGFqYXg6ZnVuY3Rpb24oYSxjKXtmdW5jdGlvbiB3KGEsYyxsLG0pe2lmKHMhPT0yKXtzPTIscSYmY2xlYXJUaW1lb3V0KHEpLHA9YixuPW18fCIiLHYucmVhZHlTdGF0ZT1hPjA/NDowO3ZhciBvLHIsdSx3PWMseD1sP2NkKGQsdixsKTpiLHksejtpZihhPj0yMDAmJmE8MzAwfHxhPT09MzA0KXtpZihkLmlmTW9kaWZpZWQpe2lmKHk9di5nZXRSZXNwb25zZUhlYWRlcigiTGFzdC1Nb2RpZmllZCIpKWYubGFzdE1vZGlmaWVkW2tdPXk7aWYoej12LmdldFJlc3BvbnNlSGVhZGVyKCJFdGFnIikpZi5ldGFnW2tdPXp9aWYoYT09PTMwNCl3PSJub3Rtb2RpZmllZCIsbz0hMDtlbHNlIHRyeXtyPWNlKGQseCksdz0ic3VjY2VzcyIsbz0hMH1jYXRjaChBKXt3PSJwYXJzZXJlcnJvciIsdT1BfX1lbHNle3U9dztpZighd3x8YSl3PSJlcnJvciIsYTwwJiYoYT0wKX12LnN0YXR1cz1hLHYuc3RhdHVzVGV4dD0iIisoY3x8dyksbz9oLnJlc29sdmVXaXRoKGUsW3Isdyx2XSk6aC5yZWplY3RXaXRoKGUsW3Ysdyx1XSksdi5zdGF0dXNDb2RlKGopLGo9Yix0JiZnLnRyaWdnZXIoImFqYXgiKyhvPyJTdWNjZXNzIjoiRXJyb3IiKSxbdixkLG8/cjp1XSksaS5maXJlV2l0aChlLFt2LHddKSx0JiYoZy50cmlnZ2VyKCJhamF4Q29tcGxldGUiLFt2LGRdKSwtLWYuYWN0aXZlfHxmLmV2ZW50LnRyaWdnZXIoImFqYXhTdG9wIikpfX10eXBlb2YgYT09Im9iamVjdCImJihjPWEsYT1iKSxjPWN8fHt9O3ZhciBkPWYuYWpheFNldHVwKHt9LGMpLGU9ZC5jb250ZXh0fHxkLGc9ZSE9PWQmJihlLm5vZGVUeXBlfHxlIGluc3RhbmNlb2YgZik/ZihlKTpmLmV2ZW50LGg9Zi5EZWZlcnJlZCgpLGk9Zi5DYWxsYmFja3MoIm9uY2UgbWVtb3J5Iiksaj1kLnN0YXR1c0NvZGV8fHt9LGssbD17fSxtPXt9LG4sbyxwLHEscixzPTAsdCx1LHY9e3JlYWR5U3RhdGU6MCxzZXRSZXF1ZXN0SGVhZGVyOmZ1bmN0aW9uKGEsYil7aWYoIXMpe3ZhciBjPWEudG9Mb3dlckNhc2UoKTthPW1bY109bVtjXXx8YSxsW2FdPWJ9cmV0dXJuIHRoaXN9LGdldEFsbFJlc3BvbnNlSGVhZGVyczpmdW5jdGlvbigpe3JldHVybiBzPT09Mj9uOm51bGx9LGdldFJlc3BvbnNlSGVhZGVyOmZ1bmN0aW9uKGEpe3ZhciBjO2lmKHM9PT0yKXtpZighbyl7bz17fTt3aGlsZShjPWJKLmV4ZWMobikpb1tjWzFdLnRvTG93ZXJDYXNlKCldPWNbMl19Yz1vW2EudG9Mb3dlckNhc2UoKV19cmV0dXJuIGM9PT1iP251bGw6Y30sb3ZlcnJpZGVNaW1lVHlwZTpmdW5jdGlvbihhKXtzfHwoZC5taW1lVHlwZT1hKTtyZXR1cm4gdGhpc30sYWJvcnQ6ZnVuY3Rpb24oYSl7YT1hfHwiYWJvcnQiLHAmJnAuYWJvcnQoYSksdygwLGEpO3JldHVybiB0aGlzfX07aC5wcm9taXNlKHYpLHYuc3VjY2Vzcz12LmRvbmUsdi5lcnJvcj12LmZhaWwsdi5jb21wbGV0ZT1pLmFkZCx2LnN0YXR1c0NvZGU9ZnVuY3Rpb24oYSl7aWYoYSl7dmFyIGI7aWYoczwyKWZvcihiIGluIGEpaltiXT1baltiXSxhW2JdXTtlbHNlIGI9YVt2LnN0YXR1c10sdi50aGVuKGIsYil9cmV0dXJuIHRoaXN9LGQudXJsPSgoYXx8ZC51cmwpKyIiKS5yZXBsYWNlKGJJLCIiKS5yZXBsYWNlKGJOLGJZWzFdKyIvLyIpLGQuZGF0YVR5cGVzPWYudHJpbShkLmRhdGFUeXBlfHwiKiIpLnRvTG93ZXJDYXNlKCkuc3BsaXQoYlIpLGQuY3Jvc3NEb21haW49PW51bGwmJihyPWJULmV4ZWMoZC51cmwudG9Mb3dlckNhc2UoKSksZC5jcm9zc0RvbWFpbj0hKCFyfHxyWzFdPT1iWVsxXSYmclsyXT09YllbMl0mJihyWzNdfHwoclsxXT09PSJodHRwOiI/ODA6NDQzKSk9PShiWVszXXx8KGJZWzFdPT09Imh0dHA6Ij84MDo0NDMpKSkpLGQuZGF0YSYmZC5wcm9jZXNzRGF0YSYmdHlwZW9mIGQuZGF0YSE9InN0cmluZyImJihkLmRhdGE9Zi5wYXJhbShkLmRhdGEsZC50cmFkaXRpb25hbCkpLGNhKGJWLGQsYyx2KTtpZihzPT09MilyZXR1cm4hMTt0PWQuZ2xvYmFsLGQudHlwZT1kLnR5cGUudG9VcHBlckNhc2UoKSxkLmhhc0NvbnRlbnQ9IWJNLnRlc3QoZC50eXBlKSx0JiZmLmFjdGl2ZSsrPT09MCYmZi5ldmVudC50cmlnZ2VyKCJhamF4U3RhcnQiKTtpZighZC5oYXNDb250ZW50KXtkLmRhdGEmJihkLnVybCs9KGJPLnRlc3QoZC51cmwpPyImIjoiPyIpK2QuZGF0YSxkZWxldGUgZC5kYXRhKSxrPWQudXJsO2lmKGQuY2FjaGU9PT0hMSl7dmFyIHg9Zi5ub3coKSx5PWQudXJsLnJlcGxhY2UoYlMsIiQxXz0iK3gpO2QudXJsPXkrKHk9PT1kLnVybD8oYk8udGVzdChkLnVybCk/IiYiOiI/IikrIl89Iit4OiIiKX19KGQuZGF0YSYmZC5oYXNDb250ZW50JiZkLmNvbnRlbnRUeXBlIT09ITF8fGMuY29udGVudFR5cGUpJiZ2LnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsZC5jb250ZW50VHlwZSksZC5pZk1vZGlmaWVkJiYoaz1rfHxkLnVybCxmLmxhc3RNb2RpZmllZFtrXSYmdi5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Nb2RpZmllZC1TaW5jZSIsZi5sYXN0TW9kaWZpZWRba10pLGYuZXRhZ1trXSYmdi5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Ob25lLU1hdGNoIixmLmV0YWdba10pKSx2LnNldFJlcXVlc3RIZWFkZXIoIkFjY2VwdCIsZC5kYXRhVHlwZXNbMF0mJmQuYWNjZXB0c1tkLmRhdGFUeXBlc1swXV0/ZC5hY2NlcHRzW2QuZGF0YVR5cGVzWzBdXSsoZC5kYXRhVHlwZXNbMF0hPT0iKiI/IiwgIitiWisiOyBxPTAuMDEiOiIiKTpkLmFjY2VwdHNbIioiXSk7Zm9yKHUgaW4gZC5oZWFkZXJzKXYuc2V0UmVxdWVzdEhlYWRlcih1LGQuaGVhZGVyc1t1XSk7aWYoZC5iZWZvcmVTZW5kJiYoZC5iZWZvcmVTZW5kLmNhbGwoZSx2LGQpPT09ITF8fHM9PT0yKSl7di5hYm9ydCgpO3JldHVybiExfWZvcih1IGlue3N1Y2Nlc3M6MSxlcnJvcjoxLGNvbXBsZXRlOjF9KXZbdV0oZFt1XSk7cD1jYShiVyxkLGMsdik7aWYoIXApdygtMSwiTm8gVHJhbnNwb3J0Iik7ZWxzZXt2LnJlYWR5U3RhdGU9MSx0JiZnLnRyaWdnZXIoImFqYXhTZW5kIixbdixkXSksZC5hc3luYyYmZC50aW1lb3V0PjAmJihxPXNldFRpbWVvdXQoZnVuY3Rpb24oKXt2LmFib3J0KCJ0aW1lb3V0Iil9LGQudGltZW91dCkpO3RyeXtzPTEscC5zZW5kKGwsdyl9Y2F0Y2goeil7czwyP3coLTEseik6Zi5lcnJvcih6KX19cmV0dXJuIHZ9LHBhcmFtOmZ1bmN0aW9uKGEsYyl7dmFyIGQ9W10sZT1mdW5jdGlvbihhLGIpe2I9Zi5pc0Z1bmN0aW9uKGIpP2IoKTpiLGRbZC5sZW5ndGhdPWVuY29kZVVSSUNvbXBvbmVudChhKSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KGIpfTtjPT09YiYmKGM9Zi5hamF4U2V0dGluZ3MudHJhZGl0aW9uYWwpO2lmKGYuaXNBcnJheShhKXx8YS5qcXVlcnkmJiFmLmlzUGxhaW5PYmplY3QoYSkpZi5lYWNoKGEsZnVuY3Rpb24oKXtlKHRoaXMubmFtZSx0aGlzLnZhbHVlKX0pO2Vsc2UgZm9yKHZhciBnIGluIGEpY2MoZyxhW2ddLGMsZSk7cmV0dXJuIGQuam9pbigiJiIpLnJlcGxhY2UoYkYsIisiKX19KSxmLmV4dGVuZCh7YWN0aXZlOjAsbGFzdE1vZGlmaWVkOnt9LGV0YWc6e319KTt2YXIgY2Y9Zi5ub3coKSxjZz0vKFw9KVw/KCZ8JCl8XD9cPy9pO2YuYWpheFNldHVwKHtqc29ucDoiY2FsbGJhY2siLGpzb25wQ2FsbGJhY2s6ZnVuY3Rpb24oKXtyZXR1cm4gZi5leHBhbmRvKyJfIitjZisrfX0pLGYuYWpheFByZWZpbHRlcigianNvbiBqc29ucCIsZnVuY3Rpb24oYixjLGQpe3ZhciBlPWIuY29udGVudFR5cGU9PT0iYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIiYmdHlwZW9mIGIuZGF0YT09InN0cmluZyI7aWYoYi5kYXRhVHlwZXNbMF09PT0ianNvbnAifHxiLmpzb25wIT09ITEmJihjZy50ZXN0KGIudXJsKXx8ZSYmY2cudGVzdChiLmRhdGEpKSl7dmFyIGcsaD1iLmpzb25wQ2FsbGJhY2s9Zi5pc0Z1bmN0aW9uKGIuanNvbnBDYWxsYmFjayk/Yi5qc29ucENhbGxiYWNrKCk6Yi5qc29ucENhbGxiYWNrLGk9YVtoXSxqPWIudXJsLGs9Yi5kYXRhLGw9IiQxIitoKyIkMiI7Yi5qc29ucCE9PSExJiYoaj1qLnJlcGxhY2UoY2csbCksYi51cmw9PT1qJiYoZSYmKGs9ay5yZXBsYWNlKGNnLGwpKSxiLmRhdGE9PT1rJiYoais9KC9cPy8udGVzdChqKT8iJiI6Ij8iKStiLmpzb25wKyI9IitoKSkpLGIudXJsPWosYi5kYXRhPWssYVtoXT1mdW5jdGlvbihhKXtnPVthXX0sZC5hbHdheXMoZnVuY3Rpb24oKXthW2hdPWksZyYmZi5pc0Z1bmN0aW9uKGkpJiZhW2hdKGdbMF0pfSksYi5jb252ZXJ0ZXJzWyJzY3JpcHQganNvbiJdPWZ1bmN0aW9uKCl7Z3x8Zi5lcnJvcihoKyIgd2FzIG5vdCBjYWxsZWQiKTtyZXR1cm4gZ1swXX0sYi5kYXRhVHlwZXNbMF09Impzb24iO3JldHVybiJzY3JpcHQifX0pLGYuYWpheFNldHVwKHthY2NlcHRzOntzY3JpcHQ6InRleHQvamF2YXNjcmlwdCwgYXBwbGljYXRpb24vamF2YXNjcmlwdCwgYXBwbGljYXRpb24vZWNtYXNjcmlwdCwgYXBwbGljYXRpb24veC1lY21hc2NyaXB0In0sY29udGVudHM6e3NjcmlwdDovamF2YXNjcmlwdHxlY21hc2NyaXB0L30sY29udmVydGVyczp7InRleHQgc2NyaXB0IjpmdW5jdGlvbihhKXtmLmdsb2JhbEV2YWwoYSk7cmV0dXJuIGF9fX0pLGYuYWpheFByZWZpbHRlcigic2NyaXB0IixmdW5jdGlvbihhKXthLmNhY2hlPT09YiYmKGEuY2FjaGU9ITEpLGEuY3Jvc3NEb21haW4mJihhLnR5cGU9IkdFVCIsYS5nbG9iYWw9ITEpfSksZi5hamF4VHJhbnNwb3J0KCJzY3JpcHQiLGZ1bmN0aW9uKGEpe2lmKGEuY3Jvc3NEb21haW4pe3ZhciBkLGU9Yy5oZWFkfHxjLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF18fGMuZG9jdW1lbnRFbGVtZW50O3JldHVybntzZW5kOmZ1bmN0aW9uKGYsZyl7ZD1jLmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpLGQuYXN5bmM9ImFzeW5jIixhLnNjcmlwdENoYXJzZXQmJihkLmNoYXJzZXQ9YS5zY3JpcHRDaGFyc2V0KSxkLnNyYz1hLnVybCxkLm9ubG9hZD1kLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbihhLGMpe2lmKGN8fCFkLnJlYWR5U3RhdGV8fC9sb2FkZWR8Y29tcGxldGUvLnRlc3QoZC5yZWFkeVN0YXRlKSlkLm9ubG9hZD1kLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLGUmJmQucGFyZW50Tm9kZSYmZS5yZW1vdmVDaGlsZChkKSxkPWIsY3x8ZygyMDAsInN1Y2Nlc3MiKX0sZS5pbnNlcnRCZWZvcmUoZCxlLmZpcnN0Q2hpbGQpfSxhYm9ydDpmdW5jdGlvbigpe2QmJmQub25sb2FkKDAsMSl9fX19KTt2YXIgY2g9YS5BY3RpdmVYT2JqZWN0P2Z1bmN0aW9uKCl7Zm9yKHZhciBhIGluIGNqKWNqW2FdKDAsMSl9OiExLGNpPTAsY2o7Zi5hamF4U2V0dGluZ3MueGhyPWEuQWN0aXZlWE9iamVjdD9mdW5jdGlvbigpe3JldHVybiF0aGlzLmlzTG9jYWwmJmNrKCl8fGNsKCl9OmNrLGZ1bmN0aW9uKGEpe2YuZXh0ZW5kKGYuc3VwcG9ydCx7YWpheDohIWEsY29yczohIWEmJiJ3aXRoQ3JlZGVudGlhbHMiaW4gYX0pfShmLmFqYXhTZXR0aW5ncy54aHIoKSksZi5zdXBwb3J0LmFqYXgmJmYuYWpheFRyYW5zcG9ydChmdW5jdGlvbihjKXtpZighYy5jcm9zc0RvbWFpbnx8Zi5zdXBwb3J0LmNvcnMpe3ZhciBkO3JldHVybntzZW5kOmZ1bmN0aW9uKGUsZyl7dmFyIGg9Yy54aHIoKSxpLGo7Yy51c2VybmFtZT9oLm9wZW4oYy50eXBlLGMudXJsLGMuYXN5bmMsYy51c2VybmFtZSxjLnBhc3N3b3JkKTpoLm9wZW4oYy50eXBlLGMudXJsLGMuYXN5bmMpO2lmKGMueGhyRmllbGRzKWZvcihqIGluIGMueGhyRmllbGRzKWhbal09Yy54aHJGaWVsZHNbal07Yy5taW1lVHlwZSYmaC5vdmVycmlkZU1pbWVUeXBlJiZoLm92ZXJyaWRlTWltZVR5cGUoYy5taW1lVHlwZSksIWMuY3Jvc3NEb21haW4mJiFlWyJYLVJlcXVlc3RlZC1XaXRoIl0mJihlWyJYLVJlcXVlc3RlZC1XaXRoIl09IlhNTEh0dHBSZXF1ZXN0Iik7dHJ5e2ZvcihqIGluIGUpaC5zZXRSZXF1ZXN0SGVhZGVyKGosZVtqXSl9Y2F0Y2goayl7fWguc2VuZChjLmhhc0NvbnRlbnQmJmMuZGF0YXx8bnVsbCksZD1mdW5jdGlvbihhLGUpe3ZhciBqLGssbCxtLG47dHJ5e2lmKGQmJihlfHxoLnJlYWR5U3RhdGU9PT00KSl7ZD1iLGkmJihoLm9ucmVhZHlzdGF0ZWNoYW5nZT1mLm5vb3AsY2gmJmRlbGV0ZSBjaltpXSk7aWYoZSloLnJlYWR5U3RhdGUhPT00JiZoLmFib3J0KCk7ZWxzZXtqPWguc3RhdHVzLGw9aC5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSxtPXt9LG49aC5yZXNwb25zZVhNTCxuJiZuLmRvY3VtZW50RWxlbWVudCYmKG0ueG1sPW4pLG0udGV4dD1oLnJlc3BvbnNlVGV4dDt0cnl7az1oLnN0YXR1c1RleHR9Y2F0Y2gobyl7az0iIn0haiYmYy5pc0xvY2FsJiYhYy5jcm9zc0RvbWFpbj9qPW0udGV4dD8yMDA6NDA0Omo9PT0xMjIzJiYoaj0yMDQpfX19Y2F0Y2gocCl7ZXx8ZygtMSxwKX1tJiZnKGosayxtLGwpfSwhYy5hc3luY3x8aC5yZWFkeVN0YXRlPT09ND9kKCk6KGk9KytjaSxjaCYmKGNqfHwoY2o9e30sZihhKS51bmxvYWQoY2gpKSxjaltpXT1kKSxoLm9ucmVhZHlzdGF0ZWNoYW5nZT1kKX0sYWJvcnQ6ZnVuY3Rpb24oKXtkJiZkKDAsMSl9fX19KTt2YXIgY209e30sY24sY28sY3A9L14oPzp0b2dnbGV8c2hvd3xoaWRlKSQvLGNxPS9eKFsrXC1dPSk/KFtcZCsuXC1dKykoW2EteiVdKikkL2ksY3IsY3M9W1siaGVpZ2h0IiwibWFyZ2luVG9wIiwibWFyZ2luQm90dG9tIiwicGFkZGluZ1RvcCIsInBhZGRpbmdCb3R0b20iXSxbIndpZHRoIiwibWFyZ2luTGVmdCIsIm1hcmdpblJpZ2h0IiwicGFkZGluZ0xlZnQiLCJwYWRkaW5nUmlnaHQiXSxbIm9wYWNpdHkiXV0sY3Q7Zi5mbi5leHRlbmQoe3Nob3c6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGU7aWYoYXx8YT09PTApcmV0dXJuIHRoaXMuYW5pbWF0ZShjdygic2hvdyIsMyksYSxiLGMpO2Zvcih2YXIgZz0wLGg9dGhpcy5sZW5ndGg7ZzxoO2crKylkPXRoaXNbZ10sZC5zdHlsZSYmKGU9ZC5zdHlsZS5kaXNwbGF5LCFmLl9kYXRhKGQsIm9sZGRpc3BsYXkiKSYmZT09PSJub25lIiYmKGU9ZC5zdHlsZS5kaXNwbGF5PSIiKSxlPT09IiImJmYuY3NzKGQsImRpc3BsYXkiKT09PSJub25lIiYmZi5fZGF0YShkLCJvbGRkaXNwbGF5IixjeChkLm5vZGVOYW1lKSkpO2ZvcihnPTA7ZzxoO2crKyl7ZD10aGlzW2ddO2lmKGQuc3R5bGUpe2U9ZC5zdHlsZS5kaXNwbGF5O2lmKGU9PT0iInx8ZT09PSJub25lIilkLnN0eWxlLmRpc3BsYXk9Zi5fZGF0YShkLCJvbGRkaXNwbGF5Iil8fCIifX1yZXR1cm4gdGhpc30saGlkZTpmdW5jdGlvbihhLGIsYyl7aWYoYXx8YT09PTApcmV0dXJuIHRoaXMuYW5pbWF0ZShjdygiaGlkZSIsMyksYSxiLGMpO3ZhciBkLGUsZz0wLGg9dGhpcy5sZW5ndGg7Zm9yKDtnPGg7ZysrKWQ9dGhpc1tnXSxkLnN0eWxlJiYoZT1mLmNzcyhkLCJkaXNwbGF5IiksZSE9PSJub25lIiYmIWYuX2RhdGEoZCwib2xkZGlzcGxheSIpJiZmLl9kYXRhKGQsIm9sZGRpc3BsYXkiLGUpKTtmb3IoZz0wO2c8aDtnKyspdGhpc1tnXS5zdHlsZSYmKHRoaXNbZ10uc3R5bGUuZGlzcGxheT0ibm9uZSIpO3JldHVybiB0aGlzfSxfdG9nZ2xlOmYuZm4udG9nZ2xlLHRvZ2dsZTpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9dHlwZW9mIGE9PSJib29sZWFuIjtmLmlzRnVuY3Rpb24oYSkmJmYuaXNGdW5jdGlvbihiKT90aGlzLl90b2dnbGUuYXBwbHkodGhpcyxhcmd1bWVudHMpOmE9PW51bGx8fGQ/dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGI9ZD9hOmYodGhpcykuaXMoIjpoaWRkZW4iKTtmKHRoaXMpW2I/InNob3ciOiJoaWRlIl0oKX0pOnRoaXMuYW5pbWF0ZShjdygidG9nZ2xlIiwzKSxhLGIsYyk7cmV0dXJuIHRoaXN9LGZhZGVUbzpmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gdGhpcy5maWx0ZXIoIjpoaWRkZW4iKS5jc3MoIm9wYWNpdHkiLDApLnNob3coKS5lbmQoKS5hbmltYXRlKHtvcGFjaXR5OmJ9LGEsYyxkKX0sYW5pbWF0ZTpmdW5jdGlvbihhLGIsYyxkKXtmdW5jdGlvbiBnKCl7ZS5xdWV1ZT09PSExJiZmLl9tYXJrKHRoaXMpO3ZhciBiPWYuZXh0ZW5kKHt9LGUpLGM9dGhpcy5ub2RlVHlwZT09PTEsZD1jJiZmKHRoaXMpLmlzKCI6aGlkZGVuIiksZyxoLGksaixrLGwsbSxuLG87Yi5hbmltYXRlZFByb3BlcnRpZXM9e307Zm9yKGkgaW4gYSl7Zz1mLmNhbWVsQ2FzZShpKSxpIT09ZyYmKGFbZ109YVtpXSxkZWxldGUgYVtpXSksaD1hW2ddLGYuaXNBcnJheShoKT8oYi5hbmltYXRlZFByb3BlcnRpZXNbZ109aFsxXSxoPWFbZ109aFswXSk6Yi5hbmltYXRlZFByb3BlcnRpZXNbZ109Yi5zcGVjaWFsRWFzaW5nJiZiLnNwZWNpYWxFYXNpbmdbZ118fGIuZWFzaW5nfHwic3dpbmciO2lmKGg9PT0iaGlkZSImJmR8fGg9PT0ic2hvdyImJiFkKXJldHVybiBiLmNvbXBsZXRlLmNhbGwodGhpcyk7YyYmKGc9PT0iaGVpZ2h0Inx8Zz09PSJ3aWR0aCIpJiYoYi5vdmVyZmxvdz1bdGhpcy5zdHlsZS5vdmVyZmxvdyx0aGlzLnN0eWxlLm92ZXJmbG93WCx0aGlzLnN0eWxlLm92ZXJmbG93WV0sZi5jc3ModGhpcywiZGlzcGxheSIpPT09ImlubGluZSImJmYuY3NzKHRoaXMsImZsb2F0Iik9PT0ibm9uZSImJighZi5zdXBwb3J0LmlubGluZUJsb2NrTmVlZHNMYXlvdXR8fGN4KHRoaXMubm9kZU5hbWUpPT09ImlubGluZSI/dGhpcy5zdHlsZS5kaXNwbGF5PSJpbmxpbmUtYmxvY2siOnRoaXMuc3R5bGUuem9vbT0xKSl9Yi5vdmVyZmxvdyE9bnVsbCYmKHRoaXMuc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiIpO2ZvcihpIGluIGEpaj1uZXcgZi5meCh0aGlzLGIsaSksaD1hW2ldLGNwLnRlc3QoaCk/KG89Zi5fZGF0YSh0aGlzLCJ0b2dnbGUiK2kpfHwoaD09PSJ0b2dnbGUiP2Q/InNob3ciOiJoaWRlIjowKSxvPyhmLl9kYXRhKHRoaXMsInRvZ2dsZSIraSxvPT09InNob3ciPyJoaWRlIjoic2hvdyIpLGpbb10oKSk6altoXSgpKTooaz1jcS5leGVjKGgpLGw9ai5jdXIoKSxrPyhtPXBhcnNlRmxvYXQoa1syXSksbj1rWzNdfHwoZi5jc3NOdW1iZXJbaV0/IiI6InB4IiksbiE9PSJweCImJihmLnN0eWxlKHRoaXMsaSwobXx8MSkrbiksbD0obXx8MSkvai5jdXIoKSpsLGYuc3R5bGUodGhpcyxpLGwrbikpLGtbMV0mJihtPShrWzFdPT09Ii09Ij8tMToxKSptK2wpLGouY3VzdG9tKGwsbSxuKSk6ai5jdXN0b20obCxoLCIiKSk7cmV0dXJuITB9dmFyIGU9Zi5zcGVlZChiLGMsZCk7aWYoZi5pc0VtcHR5T2JqZWN0KGEpKXJldHVybiB0aGlzLmVhY2goZS5jb21wbGV0ZSxbITFdKTthPWYuZXh0ZW5kKHt9LGEpO3JldHVybiBlLnF1ZXVlPT09ITE/dGhpcy5lYWNoKGcpOnRoaXMucXVldWUoZS5xdWV1ZSxnKX0sc3RvcDpmdW5jdGlvbihhLGMsZCl7dHlwZW9mIGEhPSJzdHJpbmciJiYoZD1jLGM9YSxhPWIpLGMmJmEhPT0hMSYmdGhpcy5xdWV1ZShhfHwiZngiLFtdKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gaChhLGIsYyl7dmFyIGU9YltjXTtmLnJlbW92ZURhdGEoYSxjLCEwKSxlLnN0b3AoZCl9dmFyIGIsYz0hMSxlPWYudGltZXJzLGc9Zi5fZGF0YSh0aGlzKTtkfHxmLl91bm1hcmsoITAsdGhpcyk7aWYoYT09bnVsbClmb3IoYiBpbiBnKWdbYl0uc3RvcCYmYi5pbmRleE9mKCIucnVuIik9PT1iLmxlbmd0aC00JiZoKHRoaXMsZyxiKTtlbHNlIGdbYj1hKyIucnVuIl0mJmdbYl0uc3RvcCYmaCh0aGlzLGcsYik7Zm9yKGI9ZS5sZW5ndGg7Yi0tOyllW2JdLmVsZW09PT10aGlzJiYoYT09bnVsbHx8ZVtiXS5xdWV1ZT09PWEpJiYoZD9lW2JdKCEwKTplW2JdLnNhdmVTdGF0ZSgpLGM9ITAsZS5zcGxpY2UoYiwxKSk7KCFkfHwhYykmJmYuZGVxdWV1ZSh0aGlzLGEpfSl9fSksZi5lYWNoKHtzbGlkZURvd246Y3coInNob3ciLDEpLHNsaWRlVXA6Y3coImhpZGUiLDEpLHNsaWRlVG9nZ2xlOmN3KCJ0b2dnbGUiLDEpLGZhZGVJbjp7b3BhY2l0eToic2hvdyJ9LGZhZGVPdXQ6e29wYWNpdHk6ImhpZGUifSxmYWRlVG9nZ2xlOntvcGFjaXR5OiJ0b2dnbGUifX0sZnVuY3Rpb24oYSxiKXtmLmZuW2FdPWZ1bmN0aW9uKGEsYyxkKXtyZXR1cm4gdGhpcy5hbmltYXRlKGIsYSxjLGQpfX0pLGYuZXh0ZW5kKHtzcGVlZDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSYmdHlwZW9mIGE9PSJvYmplY3QiP2YuZXh0ZW5kKHt9LGEpOntjb21wbGV0ZTpjfHwhYyYmYnx8Zi5pc0Z1bmN0aW9uKGEpJiZhLGR1cmF0aW9uOmEsZWFzaW5nOmMmJmJ8fGImJiFmLmlzRnVuY3Rpb24oYikmJmJ9O2QuZHVyYXRpb249Zi5meC5vZmY/MDp0eXBlb2YgZC5kdXJhdGlvbj09Im51bWJlciI/ZC5kdXJhdGlvbjpkLmR1cmF0aW9uIGluIGYuZnguc3BlZWRzP2YuZnguc3BlZWRzW2QuZHVyYXRpb25dOmYuZnguc3BlZWRzLl9kZWZhdWx0O2lmKGQucXVldWU9PW51bGx8fGQucXVldWU9PT0hMClkLnF1ZXVlPSJmeCI7ZC5vbGQ9ZC5jb21wbGV0ZSxkLmNvbXBsZXRlPWZ1bmN0aW9uKGEpe2YuaXNGdW5jdGlvbihkLm9sZCkmJmQub2xkLmNhbGwodGhpcyksZC5xdWV1ZT9mLmRlcXVldWUodGhpcyxkLnF1ZXVlKTphIT09ITEmJmYuX3VubWFyayh0aGlzKX07cmV0dXJuIGR9LGVhc2luZzp7bGluZWFyOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBjK2QqYX0sc3dpbmc6ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuKC1NYXRoLmNvcyhhKk1hdGguUEkpLzIrLjUpKmQrY319LHRpbWVyczpbXSxmeDpmdW5jdGlvbihhLGIsYyl7dGhpcy5vcHRpb25zPWIsdGhpcy5lbGVtPWEsdGhpcy5wcm9wPWMsYi5vcmlnPWIub3JpZ3x8e319fSksZi5meC5wcm90b3R5cGU9e3VwZGF0ZTpmdW5jdGlvbigpe3RoaXMub3B0aW9ucy5zdGVwJiZ0aGlzLm9wdGlvbnMuc3RlcC5jYWxsKHRoaXMuZWxlbSx0aGlzLm5vdyx0aGlzKSwoZi5meC5zdGVwW3RoaXMucHJvcF18fGYuZnguc3RlcC5fZGVmYXVsdCkodGhpcyl9LGN1cjpmdW5jdGlvbigpe2lmKHRoaXMuZWxlbVt0aGlzLnByb3BdIT1udWxsJiYoIXRoaXMuZWxlbS5zdHlsZXx8dGhpcy5lbGVtLnN0eWxlW3RoaXMucHJvcF09PW51bGwpKXJldHVybiB0aGlzLmVsZW1bdGhpcy5wcm9wXTt2YXIgYSxiPWYuY3NzKHRoaXMuZWxlbSx0aGlzLnByb3ApO3JldHVybiBpc05hTihhPXBhcnNlRmxvYXQoYikpPyFifHxiPT09ImF1dG8iPzA6YjphfSxjdXN0b206ZnVuY3Rpb24oYSxjLGQpe2Z1bmN0aW9uIGgoYSl7cmV0dXJuIGUuc3RlcChhKX12YXIgZT10aGlzLGc9Zi5meDt0aGlzLnN0YXJ0VGltZT1jdHx8Y3UoKSx0aGlzLmVuZD1jLHRoaXMubm93PXRoaXMuc3RhcnQ9YSx0aGlzLnBvcz10aGlzLnN0YXRlPTAsdGhpcy51bml0PWR8fHRoaXMudW5pdHx8KGYuY3NzTnVtYmVyW3RoaXMucHJvcF0/IiI6InB4IiksaC5xdWV1ZT10aGlzLm9wdGlvbnMucXVldWUsaC5lbGVtPXRoaXMuZWxlbSxoLnNhdmVTdGF0ZT1mdW5jdGlvbigpe2Uub3B0aW9ucy5oaWRlJiZmLl9kYXRhKGUuZWxlbSwiZnhzaG93IitlLnByb3ApPT09YiYmZi5fZGF0YShlLmVsZW0sImZ4c2hvdyIrZS5wcm9wLGUuc3RhcnQpfSxoKCkmJmYudGltZXJzLnB1c2goaCkmJiFjciYmKGNyPXNldEludGVydmFsKGcudGljayxnLmludGVydmFsKSl9LHNob3c6ZnVuY3Rpb24oKXt2YXIgYT1mLl9kYXRhKHRoaXMuZWxlbSwiZnhzaG93Iit0aGlzLnByb3ApO3RoaXMub3B0aW9ucy5vcmlnW3RoaXMucHJvcF09YXx8Zi5zdHlsZSh0aGlzLmVsZW0sdGhpcy5wcm9wKSx0aGlzLm9wdGlvbnMuc2hvdz0hMCxhIT09Yj90aGlzLmN1c3RvbSh0aGlzLmN1cigpLGEpOnRoaXMuY3VzdG9tKHRoaXMucHJvcD09PSJ3aWR0aCJ8fHRoaXMucHJvcD09PSJoZWlnaHQiPzE6MCx0aGlzLmN1cigpKSxmKHRoaXMuZWxlbSkuc2hvdygpfSxoaWRlOmZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zLm9yaWdbdGhpcy5wcm9wXT1mLl9kYXRhKHRoaXMuZWxlbSwiZnhzaG93Iit0aGlzLnByb3ApfHxmLnN0eWxlKHRoaXMuZWxlbSx0aGlzLnByb3ApLHRoaXMub3B0aW9ucy5oaWRlPSEwLHRoaXMuY3VzdG9tKHRoaXMuY3VyKCksMCl9LHN0ZXA6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGU9Y3R8fGN1KCksZz0hMCxoPXRoaXMuZWxlbSxpPXRoaXMub3B0aW9ucztpZihhfHxlPj1pLmR1cmF0aW9uK3RoaXMuc3RhcnRUaW1lKXt0aGlzLm5vdz10aGlzLmVuZCx0aGlzLnBvcz10aGlzLnN0YXRlPTEsdGhpcy51cGRhdGUoKSxpLmFuaW1hdGVkUHJvcGVydGllc1t0aGlzLnByb3BdPSEwO2ZvcihiIGluIGkuYW5pbWF0ZWRQcm9wZXJ0aWVzKWkuYW5pbWF0ZWRQcm9wZXJ0aWVzW2JdIT09ITAmJihnPSExKTtpZihnKXtpLm92ZXJmbG93IT1udWxsJiYhZi5zdXBwb3J0LnNocmlua1dyYXBCbG9ja3MmJmYuZWFjaChbIiIsIlgiLCJZIl0sZnVuY3Rpb24oYSxiKXtoLnN0eWxlWyJvdmVyZmxvdyIrYl09aS5vdmVyZmxvd1thXX0pLGkuaGlkZSYmZihoKS5oaWRlKCk7aWYoaS5oaWRlfHxpLnNob3cpZm9yKGIgaW4gaS5hbmltYXRlZFByb3BlcnRpZXMpZi5zdHlsZShoLGIsaS5vcmlnW2JdKSxmLnJlbW92ZURhdGEoaCwiZnhzaG93IitiLCEwKSxmLnJlbW92ZURhdGEoaCwidG9nZ2xlIitiLCEwKTtkPWkuY29tcGxldGUsZCYmKGkuY29tcGxldGU9ITEsZC5jYWxsKGgpKX1yZXR1cm4hMX1pLmR1cmF0aW9uPT1JbmZpbml0eT90aGlzLm5vdz1lOihjPWUtdGhpcy5zdGFydFRpbWUsdGhpcy5zdGF0ZT1jL2kuZHVyYXRpb24sdGhpcy5wb3M9Zi5lYXNpbmdbaS5hbmltYXRlZFByb3BlcnRpZXNbdGhpcy5wcm9wXV0odGhpcy5zdGF0ZSxjLDAsMSxpLmR1cmF0aW9uKSx0aGlzLm5vdz10aGlzLnN0YXJ0Kyh0aGlzLmVuZC10aGlzLnN0YXJ0KSp0aGlzLnBvcyksdGhpcy51cGRhdGUoKTtyZXR1cm4hMH19LGYuZXh0ZW5kKGYuZngse3RpY2s6ZnVuY3Rpb24oKXt2YXIgYSxiPWYudGltZXJzLGM9MDtmb3IoO2M8Yi5sZW5ndGg7YysrKWE9YltjXSwhYSgpJiZiW2NdPT09YSYmYi5zcGxpY2UoYy0tLDEpO2IubGVuZ3RofHxmLmZ4LnN0b3AoKX0saW50ZXJ2YWw6MTMsc3RvcDpmdW5jdGlvbigpe2NsZWFySW50ZXJ2YWwoY3IpLGNyPW51bGx9LHNwZWVkczp7c2xvdzo2MDAsZmFzdDoyMDAsX2RlZmF1bHQ6NDAwfSxzdGVwOntvcGFjaXR5OmZ1bmN0aW9uKGEpe2Yuc3R5bGUoYS5lbGVtLCJvcGFjaXR5IixhLm5vdyl9LF9kZWZhdWx0OmZ1bmN0aW9uKGEpe2EuZWxlbS5zdHlsZSYmYS5lbGVtLnN0eWxlW2EucHJvcF0hPW51bGw/YS5lbGVtLnN0eWxlW2EucHJvcF09YS5ub3crYS51bml0OmEuZWxlbVthLnByb3BdPWEubm93fX19KSxmLmVhY2goWyJ3aWR0aCIsImhlaWdodCJdLGZ1bmN0aW9uKGEsYil7Zi5meC5zdGVwW2JdPWZ1bmN0aW9uKGEpe2Yuc3R5bGUoYS5lbGVtLGIsTWF0aC5tYXgoMCxhLm5vdykpfX0pLGYuZXhwciYmZi5leHByLmZpbHRlcnMmJihmLmV4cHIuZmlsdGVycy5hbmltYXRlZD1mdW5jdGlvbihhKXtyZXR1cm4gZi5ncmVwKGYudGltZXJzLGZ1bmN0aW9uKGIpe3JldHVybiBhPT09Yi5lbGVtfSkubGVuZ3RofSk7dmFyIGN5PS9edCg/OmFibGV8ZHxoKSQvaSxjej0vXig/OmJvZHl8aHRtbCkkL2k7ImdldEJvdW5kaW5nQ2xpZW50UmVjdCJpbiBjLmRvY3VtZW50RWxlbWVudD9mLmZuLm9mZnNldD1mdW5jdGlvbihhKXt2YXIgYj10aGlzWzBdLGM7aWYoYSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe2Yub2Zmc2V0LnNldE9mZnNldCh0aGlzLGEsYil9KTtpZighYnx8IWIub3duZXJEb2N1bWVudClyZXR1cm4gbnVsbDtpZihiPT09Yi5vd25lckRvY3VtZW50LmJvZHkpcmV0dXJuIGYub2Zmc2V0LmJvZHlPZmZzZXQoYik7dHJ5e2M9Yi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKX1jYXRjaChkKXt9dmFyIGU9Yi5vd25lckRvY3VtZW50LGc9ZS5kb2N1bWVudEVsZW1lbnQ7aWYoIWN8fCFmLmNvbnRhaW5zKGcsYikpcmV0dXJuIGM/e3RvcDpjLnRvcCxsZWZ0OmMubGVmdH06e3RvcDowLGxlZnQ6MH07dmFyIGg9ZS5ib2R5LGk9Y0EoZSksaj1nLmNsaWVudFRvcHx8aC5jbGllbnRUb3B8fDAsaz1nLmNsaWVudExlZnR8fGguY2xpZW50TGVmdHx8MCxsPWkucGFnZVlPZmZzZXR8fGYuc3VwcG9ydC5ib3hNb2RlbCYmZy5zY3JvbGxUb3B8fGguc2Nyb2xsVG9wLG09aS5wYWdlWE9mZnNldHx8Zi5zdXBwb3J0LmJveE1vZGVsJiZnLnNjcm9sbExlZnR8fGguc2Nyb2xsTGVmdCxuPWMudG9wK2wtaixvPWMubGVmdCttLWs7cmV0dXJue3RvcDpuLGxlZnQ6b319OmYuZm4ub2Zmc2V0PWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXNbMF07aWYoYSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe2Yub2Zmc2V0LnNldE9mZnNldCh0aGlzLGEsYil9KTtpZighYnx8IWIub3duZXJEb2N1bWVudClyZXR1cm4gbnVsbDtpZihiPT09Yi5vd25lckRvY3VtZW50LmJvZHkpcmV0dXJuIGYub2Zmc2V0LmJvZHlPZmZzZXQoYik7dmFyIGMsZD1iLm9mZnNldFBhcmVudCxlPWIsZz1iLm93bmVyRG9jdW1lbnQsaD1nLmRvY3VtZW50RWxlbWVudCxpPWcuYm9keSxqPWcuZGVmYXVsdFZpZXcsaz1qP2ouZ2V0Q29tcHV0ZWRTdHlsZShiLG51bGwpOmIuY3VycmVudFN0eWxlLGw9Yi5vZmZzZXRUb3AsbT1iLm9mZnNldExlZnQ7d2hpbGUoKGI9Yi5wYXJlbnROb2RlKSYmYiE9PWkmJmIhPT1oKXtpZihmLnN1cHBvcnQuZml4ZWRQb3NpdGlvbiYmay5wb3NpdGlvbj09PSJmaXhlZCIpYnJlYWs7Yz1qP2ouZ2V0Q29tcHV0ZWRTdHlsZShiLG51bGwpOmIuY3VycmVudFN0eWxlLGwtPWIuc2Nyb2xsVG9wLG0tPWIuc2Nyb2xsTGVmdCxiPT09ZCYmKGwrPWIub2Zmc2V0VG9wLG0rPWIub2Zmc2V0TGVmdCxmLnN1cHBvcnQuZG9lc05vdEFkZEJvcmRlciYmKCFmLnN1cHBvcnQuZG9lc0FkZEJvcmRlckZvclRhYmxlQW5kQ2VsbHN8fCFjeS50ZXN0KGIubm9kZU5hbWUpKSYmKGwrPXBhcnNlRmxvYXQoYy5ib3JkZXJUb3BXaWR0aCl8fDAsbSs9cGFyc2VGbG9hdChjLmJvcmRlckxlZnRXaWR0aCl8fDApLGU9ZCxkPWIub2Zmc2V0UGFyZW50KSxmLnN1cHBvcnQuc3VidHJhY3RzQm9yZGVyRm9yT3ZlcmZsb3dOb3RWaXNpYmxlJiZjLm92ZXJmbG93IT09InZpc2libGUiJiYobCs9cGFyc2VGbG9hdChjLmJvcmRlclRvcFdpZHRoKXx8MCxtKz1wYXJzZUZsb2F0KGMuYm9yZGVyTGVmdFdpZHRoKXx8MCksaz1jfWlmKGsucG9zaXRpb249PT0icmVsYXRpdmUifHxrLnBvc2l0aW9uPT09InN0YXRpYyIpbCs9aS5vZmZzZXRUb3AsbSs9aS5vZmZzZXRMZWZ0O2Yuc3VwcG9ydC5maXhlZFBvc2l0aW9uJiZrLnBvc2l0aW9uPT09ImZpeGVkIiYmKGwrPU1hdGgubWF4KGguc2Nyb2xsVG9wLGkuc2Nyb2xsVG9wKSxtKz1NYXRoLm1heChoLnNjcm9sbExlZnQsaS5zY3JvbGxMZWZ0KSk7cmV0dXJue3RvcDpsLGxlZnQ6bX19LGYub2Zmc2V0PXtib2R5T2Zmc2V0OmZ1bmN0aW9uKGEpe3ZhciBiPWEub2Zmc2V0VG9wLGM9YS5vZmZzZXRMZWZ0O2Yuc3VwcG9ydC5kb2VzTm90SW5jbHVkZU1hcmdpbkluQm9keU9mZnNldCYmKGIrPXBhcnNlRmxvYXQoZi5jc3MoYSwibWFyZ2luVG9wIikpfHwwLGMrPXBhcnNlRmxvYXQoZi5jc3MoYSwibWFyZ2luTGVmdCIpKXx8MCk7cmV0dXJue3RvcDpiLGxlZnQ6Y319LHNldE9mZnNldDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9Zi5jc3MoYSwicG9zaXRpb24iKTtkPT09InN0YXRpYyImJihhLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSIpO3ZhciBlPWYoYSksZz1lLm9mZnNldCgpLGg9Zi5jc3MoYSwidG9wIiksaT1mLmNzcyhhLCJsZWZ0Iiksaj0oZD09PSJhYnNvbHV0ZSJ8fGQ9PT0iZml4ZWQiKSYmZi5pbkFycmF5KCJhdXRvIixbaCxpXSk+LTEsaz17fSxsPXt9LG0sbjtqPyhsPWUucG9zaXRpb24oKSxtPWwudG9wLG49bC5sZWZ0KToobT1wYXJzZUZsb2F0KGgpfHwwLG49cGFyc2VGbG9hdChpKXx8MCksZi5pc0Z1bmN0aW9uKGIpJiYoYj1iLmNhbGwoYSxjLGcpKSxiLnRvcCE9bnVsbCYmKGsudG9wPWIudG9wLWcudG9wK20pLGIubGVmdCE9bnVsbCYmKGsubGVmdD1iLmxlZnQtZy5sZWZ0K24pLCJ1c2luZyJpbiBiP2IudXNpbmcuY2FsbChhLGspOmUuY3NzKGspfX0sZi5mbi5leHRlbmQoe3Bvc2l0aW9uOmZ1bmN0aW9uKCl7aWYoIXRoaXNbMF0pcmV0dXJuIG51bGw7dmFyIGE9dGhpc1swXSxiPXRoaXMub2Zmc2V0UGFyZW50KCksYz10aGlzLm9mZnNldCgpLGQ9Y3oudGVzdChiWzBdLm5vZGVOYW1lKT97dG9wOjAsbGVmdDowfTpiLm9mZnNldCgpO2MudG9wLT1wYXJzZUZsb2F0KGYuY3NzKGEsIm1hcmdpblRvcCIpKXx8MCxjLmxlZnQtPXBhcnNlRmxvYXQoZi5jc3MoYSwibWFyZ2luTGVmdCIpKXx8MCxkLnRvcCs9cGFyc2VGbG9hdChmLmNzcyhiWzBdLCJib3JkZXJUb3BXaWR0aCIpKXx8MCxkLmxlZnQrPXBhcnNlRmxvYXQoZi5jc3MoYlswXSwiYm9yZGVyTGVmdFdpZHRoIikpfHwwO3JldHVybnt0b3A6Yy50b3AtZC50b3AsbGVmdDpjLmxlZnQtZC5sZWZ0fX0sb2Zmc2V0UGFyZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vZmZzZXRQYXJlbnR8fGMuYm9keTt3aGlsZShhJiYhY3oudGVzdChhLm5vZGVOYW1lKSYmZi5jc3MoYSwicG9zaXRpb24iKT09PSJzdGF0aWMiKWE9YS5vZmZzZXRQYXJlbnQ7cmV0dXJuIGF9KX19KSxmLmVhY2goWyJMZWZ0IiwiVG9wIl0sZnVuY3Rpb24oYSxjKXt2YXIgZD0ic2Nyb2xsIitjO2YuZm5bZF09ZnVuY3Rpb24oYyl7dmFyIGUsZztpZihjPT09Yil7ZT10aGlzWzBdO2lmKCFlKXJldHVybiBudWxsO2c9Y0EoZSk7cmV0dXJuIGc/InBhZ2VYT2Zmc2V0ImluIGc/Z1thPyJwYWdlWU9mZnNldCI6InBhZ2VYT2Zmc2V0Il06Zi5zdXBwb3J0LmJveE1vZGVsJiZnLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFtkXXx8Zy5kb2N1bWVudC5ib2R5W2RdOmVbZF19cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2c9Y0EodGhpcyksZz9nLnNjcm9sbFRvKGE/ZihnKS5zY3JvbGxMZWZ0KCk6YyxhP2M6ZihnKS5zY3JvbGxUb3AoKSk6dGhpc1tkXT1jfSl9fSksZi5lYWNoKFsiSGVpZ2h0IiwiV2lkdGgiXSxmdW5jdGlvbihhLGMpe3ZhciBkPWMudG9Mb3dlckNhc2UoKTtmLmZuWyJpbm5lciIrY109ZnVuY3Rpb24oKXt2YXIgYT10aGlzWzBdO3JldHVybiBhP2Euc3R5bGU/cGFyc2VGbG9hdChmLmNzcyhhLGQsInBhZGRpbmciKSk6dGhpc1tkXSgpOm51bGx9LGYuZm5bIm91dGVyIitjXT1mdW5jdGlvbihhKXt2YXIgYj10aGlzWzBdO3JldHVybiBiP2Iuc3R5bGU/cGFyc2VGbG9hdChmLmNzcyhiLGQsYT8ibWFyZ2luIjoiYm9yZGVyIikpOnRoaXNbZF0oKTpudWxsfSxmLmZuW2RdPWZ1bmN0aW9uKGEpe3ZhciBlPXRoaXNbMF07aWYoIWUpcmV0dXJuIGE9PW51bGw/bnVsbDp0aGlzO2lmKGYuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe3ZhciBjPWYodGhpcyk7Y1tkXShhLmNhbGwodGhpcyxiLGNbZF0oKSkpfSk7aWYoZi5pc1dpbmRvdyhlKSl7dmFyIGc9ZS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIrY10saD1lLmRvY3VtZW50LmJvZHk7cmV0dXJuIGUuZG9jdW1lbnQuY29tcGF0TW9kZT09PSJDU1MxQ29tcGF0IiYmZ3x8aCYmaFsiY2xpZW50IitjXXx8Z31pZihlLm5vZGVUeXBlPT09OSlyZXR1cm4gTWF0aC5tYXgoZS5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIrY10sZS5ib2R5WyJzY3JvbGwiK2NdLGUuZG9jdW1lbnRFbGVtZW50WyJzY3JvbGwiK2NdLGUuYm9keVsib2Zmc2V0IitjXSxlLmRvY3VtZW50RWxlbWVudFsib2Zmc2V0IitjXSk7aWYoYT09PWIpe3ZhciBpPWYuY3NzKGUsZCksaj1wYXJzZUZsb2F0KGkpO3JldHVybiBmLmlzTnVtZXJpYyhqKT9qOml9cmV0dXJuIHRoaXMuY3NzKGQsdHlwZW9mIGE9PSJzdHJpbmciP2E6YSsicHgiKX19KSxhLmpRdWVyeT1hLiQ9Zn0pKHdpbmRvdyk7'></script>
	<script id="fb_extras_modnizr_253_min_js" src='data:/text/plain;base64,LyogTW9kZXJuaXpyIDIuNS4zIChDdXN0b20gQnVpbGQpIHwgTUlUICYgQlNECiAqIEJ1aWxkOiBodHRwOi8vd3d3Lm1vZGVybml6ci5jb20vZG93bmxvYWQvIy1jc3N0cmFuc2Zvcm1zLWNzc3RyYW5zZm9ybXMzZC1zaGl2LWNzc2NsYXNzZXMtdGVzdHN0eWxlcy10ZXN0cHJvcC10ZXN0YWxscHJvcHMtcHJlZml4ZXMtZG9tcHJlZml4ZXMtbG9hZAogKi8KO3dpbmRvdy5Nb2Rlcm5penI9ZnVuY3Rpb24oYSxiLGMpe2Z1bmN0aW9uIHooYSl7ai5jc3NUZXh0PWF9ZnVuY3Rpb24gQShhLGIpe3JldHVybiB6KG0uam9pbihhKyI7IikrKGJ8fCIiKSl9ZnVuY3Rpb24gQihhLGIpe3JldHVybiB0eXBlb2YgYT09PWJ9ZnVuY3Rpb24gQyhhLGIpe3JldHVybiEhfigiIithKS5pbmRleE9mKGIpfWZ1bmN0aW9uIEQoYSxiKXtmb3IodmFyIGQgaW4gYSlpZihqW2FbZF1dIT09YylyZXR1cm4gYj09InBmeCI/YVtkXTohMDtyZXR1cm4hMX1mdW5jdGlvbiBFKGEsYixkKXtmb3IodmFyIGUgaW4gYSl7dmFyIGY9YlthW2VdXTtpZihmIT09YylyZXR1cm4gZD09PSExP2FbZV06QihmLCJmdW5jdGlvbiIpP2YuYmluZChkfHxiKTpmfXJldHVybiExfWZ1bmN0aW9uIEYoYSxiLGMpe3ZhciBkPWEuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrYS5zdWJzdHIoMSksZT0oYSsiICIrby5qb2luKGQrIiAiKStkKS5zcGxpdCgiICIpO3JldHVybiBCKGIsInN0cmluZyIpfHxCKGIsInVuZGVmaW5lZCIpP0QoZSxiKTooZT0oYSsiICIrcC5qb2luKGQrIiAiKStkKS5zcGxpdCgiICIpLEUoZSxiLGMpKX12YXIgZD0iMi41LjMiLGU9e30sZj0hMCxnPWIuZG9jdW1lbnRFbGVtZW50LGg9Im1vZGVybml6ciIsaT1iLmNyZWF0ZUVsZW1lbnQoaCksaj1pLnN0eWxlLGssbD17fS50b1N0cmluZyxtPSIgLXdlYmtpdC0gLW1vei0gLW8tIC1tcy0gIi5zcGxpdCgiICIpLG49IldlYmtpdCBNb3ogTyBtcyIsbz1uLnNwbGl0KCIgIikscD1uLnRvTG93ZXJDYXNlKCkuc3BsaXQoIiAiKSxxPXt9LHI9e30scz17fSx0PVtdLHU9dC5zbGljZSx2LHc9ZnVuY3Rpb24oYSxjLGQsZSl7dmFyIGYsaSxqLGs9Yi5jcmVhdGVFbGVtZW50KCJkaXYiKSxsPWIuYm9keSxtPWw/bDpiLmNyZWF0ZUVsZW1lbnQoImJvZHkiKTtpZihwYXJzZUludChkLDEwKSl3aGlsZShkLS0paj1iLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGouaWQ9ZT9lW2RdOmgrKGQrMSksay5hcHBlbmRDaGlsZChqKTtyZXR1cm4gZj1bIiYjMTczOyIsIjxzdHlsZT4iLGEsIjwvc3R5bGU+Il0uam9pbigiIiksay5pZD1oLChsP2s6bSkuaW5uZXJIVE1MKz1mLG0uYXBwZW5kQ2hpbGQoayksbHx8KG0uc3R5bGUuYmFja2dyb3VuZD0iIixnLmFwcGVuZENoaWxkKG0pKSxpPWMoayxhKSxsP2sucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChrKTptLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobSksISFpfSx4PXt9Lmhhc093blByb3BlcnR5LHk7IUIoeCwidW5kZWZpbmVkIikmJiFCKHguY2FsbCwidW5kZWZpbmVkIik/eT1mdW5jdGlvbihhLGIpe3JldHVybiB4LmNhbGwoYSxiKX06eT1mdW5jdGlvbihhLGIpe3JldHVybiBiIGluIGEmJkIoYS5jb25zdHJ1Y3Rvci5wcm90b3R5cGVbYl0sInVuZGVmaW5lZCIpfSxGdW5jdGlvbi5wcm90b3R5cGUuYmluZHx8KEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKGIpe3ZhciBjPXRoaXM7aWYodHlwZW9mIGMhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcjt2YXIgZD11LmNhbGwoYXJndW1lbnRzLDEpLGU9ZnVuY3Rpb24oKXtpZih0aGlzIGluc3RhbmNlb2YgZSl7dmFyIGE9ZnVuY3Rpb24oKXt9O2EucHJvdG90eXBlPWMucHJvdG90eXBlO3ZhciBmPW5ldyBhLGc9Yy5hcHBseShmLGQuY29uY2F0KHUuY2FsbChhcmd1bWVudHMpKSk7cmV0dXJuIE9iamVjdChnKT09PWc/ZzpmfXJldHVybiBjLmFwcGx5KGIsZC5jb25jYXQodS5jYWxsKGFyZ3VtZW50cykpKX07cmV0dXJuIGV9KTt2YXIgRz1mdW5jdGlvbihhLGMpe3ZhciBkPWEuam9pbigiIiksZj1jLmxlbmd0aDt3KGQsZnVuY3Rpb24oYSxjKXt2YXIgZD1iLnN0eWxlU2hlZXRzW2Iuc3R5bGVTaGVldHMubGVuZ3RoLTFdLGc9ZD9kLmNzc1J1bGVzJiZkLmNzc1J1bGVzWzBdP2QuY3NzUnVsZXNbMF0uY3NzVGV4dDpkLmNzc1RleHR8fCIiOiIiLGg9YS5jaGlsZE5vZGVzLGk9e307d2hpbGUoZi0tKWlbaFtmXS5pZF09aFtmXTtlLmNzc3RyYW5zZm9ybXMzZD0oaS5jc3N0cmFuc2Zvcm1zM2QmJmkuY3NzdHJhbnNmb3JtczNkLm9mZnNldExlZnQpPT09OSYmaS5jc3N0cmFuc2Zvcm1zM2Qub2Zmc2V0SGVpZ2h0PT09M30sZixjKX0oWyxbIkBtZWRpYSAoIixtLmpvaW4oInRyYW5zZm9ybS0zZCksKCIpLGgsIikiLCJ7I2Nzc3RyYW5zZm9ybXMzZHtsZWZ0OjlweDtwb3NpdGlvbjphYnNvbHV0ZTtoZWlnaHQ6M3B4O319Il0uam9pbigiIildLFssImNzc3RyYW5zZm9ybXMzZCJdKTtxLmNzc3RyYW5zZm9ybXM9ZnVuY3Rpb24oKXtyZXR1cm4hIUYoInRyYW5zZm9ybSIpfSxxLmNzc3RyYW5zZm9ybXMzZD1mdW5jdGlvbigpe3ZhciBhPSEhRigicGVyc3BlY3RpdmUiKTtyZXR1cm4gYSYmIndlYmtpdFBlcnNwZWN0aXZlImluIGcuc3R5bGUmJihhPWUuY3NzdHJhbnNmb3JtczNkKSxhfTtmb3IodmFyIEggaW4gcSl5KHEsSCkmJih2PUgudG9Mb3dlckNhc2UoKSxlW3ZdPXFbSF0oKSx0LnB1c2goKGVbdl0/IiI6Im5vLSIpK3YpKTtyZXR1cm4geigiIiksaT1rPW51bGwsZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBnKGEsYil7dmFyIGM9YS5jcmVhdGVFbGVtZW50KCJwIiksZD1hLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF18fGEuZG9jdW1lbnRFbGVtZW50O3JldHVybiBjLmlubmVySFRNTD0ieDxzdHlsZT4iK2IrIjwvc3R5bGU+IixkLmluc2VydEJlZm9yZShjLmxhc3RDaGlsZCxkLmZpcnN0Q2hpbGQpfWZ1bmN0aW9uIGgoKXt2YXIgYT1rLmVsZW1lbnRzO3JldHVybiB0eXBlb2YgYT09InN0cmluZyI/YS5zcGxpdCgiICIpOmF9ZnVuY3Rpb24gaShhKXt2YXIgYj17fSxjPWEuY3JlYXRlRWxlbWVudCxlPWEuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCxmPWUoKTthLmNyZWF0ZUVsZW1lbnQ9ZnVuY3Rpb24oYSl7dmFyIGU9KGJbYV18fChiW2FdPWMoYSkpKS5jbG9uZU5vZGUoKTtyZXR1cm4gay5zaGl2TWV0aG9kcyYmZS5jYW5IYXZlQ2hpbGRyZW4mJiFkLnRlc3QoYSk/Zi5hcHBlbmRDaGlsZChlKTplfSxhLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQ9RnVuY3Rpb24oImgsZiIsInJldHVybiBmdW5jdGlvbigpe3ZhciBuPWYuY2xvbmVOb2RlKCksYz1uLmNyZWF0ZUVsZW1lbnQ7aC5zaGl2TWV0aG9kcyYmKCIraCgpLmpvaW4oKS5yZXBsYWNlKC9cdysvZyxmdW5jdGlvbihhKXtyZXR1cm4gYlthXT1jKGEpLGYuY3JlYXRlRWxlbWVudChhKSwnYygiJythKyciKSd9KSsiKTtyZXR1cm4gbn0iKShrLGYpfWZ1bmN0aW9uIGooYSl7dmFyIGI7cmV0dXJuIGEuZG9jdW1lbnRTaGl2ZWQ/YTooay5zaGl2Q1NTJiYhZSYmKGI9ISFnKGEsImFydGljbGUsYXNpZGUsZGV0YWlscyxmaWdjYXB0aW9uLGZpZ3VyZSxmb290ZXIsaGVhZGVyLGhncm91cCxuYXYsc2VjdGlvbntkaXNwbGF5OmJsb2NrfWF1ZGlve2Rpc3BsYXk6bm9uZX1jYW52YXMsdmlkZW97ZGlzcGxheTppbmxpbmUtYmxvY2s7KmRpc3BsYXk6aW5saW5lOyp6b29tOjF9W2hpZGRlbl17ZGlzcGxheTpub25lfWF1ZGlvW2NvbnRyb2xzXXtkaXNwbGF5OmlubGluZS1ibG9jazsqZGlzcGxheTppbmxpbmU7Knpvb206MX1tYXJre2JhY2tncm91bmQ6I0ZGMDtjb2xvcjojMDAwfSIpKSxmfHwoYj0haShhKSksYiYmKGEuZG9jdW1lbnRTaGl2ZWQ9YiksYSl9dmFyIGM9YS5odG1sNXx8e30sZD0vXjx8Xig/OmJ1dHRvbnxmb3JtfG1hcHxzZWxlY3R8dGV4dGFyZWEpJC9pLGUsZjsoZnVuY3Rpb24oKXt2YXIgYT1iLmNyZWF0ZUVsZW1lbnQoImEiKTthLmlubmVySFRNTD0iPHh5ej48L3h5ej4iLGU9ImhpZGRlbiJpbiBhLGY9YS5jaGlsZE5vZGVzLmxlbmd0aD09MXx8ZnVuY3Rpb24oKXt0cnl7Yi5jcmVhdGVFbGVtZW50KCJhIil9Y2F0Y2goYSl7cmV0dXJuITB9dmFyIGM9Yi5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7cmV0dXJuIHR5cGVvZiBjLmNsb25lTm9kZT09InVuZGVmaW5lZCJ8fHR5cGVvZiBjLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQ9PSJ1bmRlZmluZWQifHx0eXBlb2YgYy5jcmVhdGVFbGVtZW50PT0idW5kZWZpbmVkIn0oKX0pKCk7dmFyIGs9e2VsZW1lbnRzOmMuZWxlbWVudHN8fCJhYmJyIGFydGljbGUgYXNpZGUgYXVkaW8gYmRpIGNhbnZhcyBkYXRhIGRhdGFsaXN0IGRldGFpbHMgZmlnY2FwdGlvbiBmaWd1cmUgZm9vdGVyIGhlYWRlciBoZ3JvdXAgbWFyayBtZXRlciBuYXYgb3V0cHV0IHByb2dyZXNzIHNlY3Rpb24gc3VtbWFyeSB0aW1lIHZpZGVvIixzaGl2Q1NTOmMuc2hpdkNTUyE9PSExLHNoaXZNZXRob2RzOmMuc2hpdk1ldGhvZHMhPT0hMSx0eXBlOiJkZWZhdWx0IixzaGl2RG9jdW1lbnQ6an07YS5odG1sNT1rLGooYil9KHRoaXMsYiksZS5fdmVyc2lvbj1kLGUuX3ByZWZpeGVzPW0sZS5fZG9tUHJlZml4ZXM9cCxlLl9jc3NvbVByZWZpeGVzPW8sZS50ZXN0UHJvcD1mdW5jdGlvbihhKXtyZXR1cm4gRChbYV0pfSxlLnRlc3RBbGxQcm9wcz1GLGUudGVzdFN0eWxlcz13LGcuY2xhc3NOYW1lPWcuY2xhc3NOYW1lLnJlcGxhY2UoLyhefFxzKW5vLWpzKFxzfCQpLywiJDEkMiIpKyhmPyIganMgIit0LmpvaW4oIiAiKToiIiksZX0odGhpcyx0aGlzLmRvY3VtZW50KSxmdW5jdGlvbihhLGIsYyl7ZnVuY3Rpb24gZChhKXtyZXR1cm4gby5jYWxsKGEpPT0iW29iamVjdCBGdW5jdGlvbl0ifWZ1bmN0aW9uIGUoYSl7cmV0dXJuIHR5cGVvZiBhPT0ic3RyaW5nIn1mdW5jdGlvbiBmKCl7fWZ1bmN0aW9uIGcoYSl7cmV0dXJuIWF8fGE9PSJsb2FkZWQifHxhPT0iY29tcGxldGUifHxhPT0idW5pbml0aWFsaXplZCJ9ZnVuY3Rpb24gaCgpe3ZhciBhPXAuc2hpZnQoKTtxPTEsYT9hLnQ/bShmdW5jdGlvbigpeyhhLnQ9PSJjIj9CLmluamVjdENzczpCLmluamVjdEpzKShhLnMsMCxhLmEsYS54LGEuZSwxKX0sMCk6KGEoKSxoKCkpOnE9MH1mdW5jdGlvbiBpKGEsYyxkLGUsZixpLGope2Z1bmN0aW9uIGsoYil7aWYoIW8mJmcobC5yZWFkeVN0YXRlKSYmKHUucj1vPTEsIXEmJmgoKSxsLm9ubG9hZD1sLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLGIpKXthIT0iaW1nIiYmbShmdW5jdGlvbigpe3QucmVtb3ZlQ2hpbGQobCl9LDUwKTtmb3IodmFyIGQgaW4geVtjXSl5W2NdLmhhc093blByb3BlcnR5KGQpJiZ5W2NdW2RdLm9ubG9hZCgpfX12YXIgaj1qfHxCLmVycm9yVGltZW91dCxsPXt9LG89MCxyPTAsdT17dDpkLHM6YyxlOmYsYTppLHg6an07eVtjXT09PTEmJihyPTEseVtjXT1bXSxsPWIuY3JlYXRlRWxlbWVudChhKSksYT09Im9iamVjdCI/bC5kYXRhPWM6KGwuc3JjPWMsbC50eXBlPWEpLGwud2lkdGg9bC5oZWlnaHQ9IjAiLGwub25lcnJvcj1sLm9ubG9hZD1sLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe2suY2FsbCh0aGlzLHIpfSxwLnNwbGljZShlLDAsdSksYSE9ImltZyImJihyfHx5W2NdPT09Mj8odC5pbnNlcnRCZWZvcmUobCxzP251bGw6biksbShrLGopKTp5W2NdLnB1c2gobCkpfWZ1bmN0aW9uIGooYSxiLGMsZCxmKXtyZXR1cm4gcT0wLGI9Ynx8ImoiLGUoYSk/aShiPT0iYyI/djp1LGEsYix0aGlzLmkrKyxjLGQsZik6KHAuc3BsaWNlKHRoaXMuaSsrLDAsYSkscC5sZW5ndGg9PTEmJmgoKSksdGhpc31mdW5jdGlvbiBrKCl7dmFyIGE9QjtyZXR1cm4gYS5sb2FkZXI9e2xvYWQ6aixpOjB9LGF9dmFyIGw9Yi5kb2N1bWVudEVsZW1lbnQsbT1hLnNldFRpbWVvdXQsbj1iLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKVswXSxvPXt9LnRvU3RyaW5nLHA9W10scT0wLHI9Ik1vekFwcGVhcmFuY2UiaW4gbC5zdHlsZSxzPXImJiEhYi5jcmVhdGVSYW5nZSgpLmNvbXBhcmVOb2RlLHQ9cz9sOm4ucGFyZW50Tm9kZSxsPWEub3BlcmEmJm8uY2FsbChhLm9wZXJhKT09IltvYmplY3QgT3BlcmFdIixsPSEhYi5hdHRhY2hFdmVudCYmIWwsdT1yPyJvYmplY3QiOmw/InNjcmlwdCI6ImltZyIsdj1sPyJzY3JpcHQiOnUsdz1BcnJheS5pc0FycmF5fHxmdW5jdGlvbihhKXtyZXR1cm4gby5jYWxsKGEpPT0iW29iamVjdCBBcnJheV0ifSx4PVtdLHk9e30sej17dGltZW91dDpmdW5jdGlvbihhLGIpe3JldHVybiBiLmxlbmd0aCYmKGEudGltZW91dD1iWzBdKSxhfX0sQSxCO0I9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihhKXt2YXIgYT1hLnNwbGl0KCIhIiksYj14Lmxlbmd0aCxjPWEucG9wKCksZD1hLmxlbmd0aCxjPXt1cmw6YyxvcmlnVXJsOmMscHJlZml4ZXM6YX0sZSxmLGc7Zm9yKGY9MDtmPGQ7ZisrKWc9YVtmXS5zcGxpdCgiPSIpLChlPXpbZy5zaGlmdCgpXSkmJihjPWUoYyxnKSk7Zm9yKGY9MDtmPGI7ZisrKWM9eFtmXShjKTtyZXR1cm4gY31mdW5jdGlvbiBnKGEsZSxmLGcsaSl7dmFyIGo9YihhKSxsPWouYXV0b0NhbGxiYWNrO2oudXJsLnNwbGl0KCIuIikucG9wKCkuc3BsaXQoIj8iKS5zaGlmdCgpLGouYnlwYXNzfHwoZSYmKGU9ZChlKT9lOmVbYV18fGVbZ118fGVbYS5zcGxpdCgiLyIpLnBvcCgpLnNwbGl0KCI/IilbMF1dfHxoKSxqLmluc3RlYWQ/ai5pbnN0ZWFkKGEsZSxmLGcsaSk6KHlbai51cmxdP2oubm9leGVjPSEwOnlbai51cmxdPTEsZi5sb2FkKGoudXJsLGouZm9yY2VDU1N8fCFqLmZvcmNlSlMmJiJjc3MiPT1qLnVybC5zcGxpdCgiLiIpLnBvcCgpLnNwbGl0KCI/Iikuc2hpZnQoKT8iYyI6YyxqLm5vZXhlYyxqLmF0dHJzLGoudGltZW91dCksKGQoZSl8fGQobCkpJiZmLmxvYWQoZnVuY3Rpb24oKXtrKCksZSYmZShqLm9yaWdVcmwsaSxnKSxsJiZsKGoub3JpZ1VybCxpLGcpLHlbai51cmxdPTJ9KSkpfWZ1bmN0aW9uIGkoYSxiKXtmdW5jdGlvbiBjKGEsYyl7aWYoYSl7aWYoZShhKSljfHwoaj1mdW5jdGlvbigpe3ZhciBhPVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtrLmFwcGx5KHRoaXMsYSksbCgpfSksZyhhLGosYiwwLGgpO2Vsc2UgaWYoT2JqZWN0KGEpPT09YSlmb3IobiBpbiBtPWZ1bmN0aW9uKCl7dmFyIGI9MCxjO2ZvcihjIGluIGEpYS5oYXNPd25Qcm9wZXJ0eShjKSYmYisrO3JldHVybiBifSgpLGEpYS5oYXNPd25Qcm9wZXJ0eShuKSYmKCFjJiYhLS1tJiYoZChqKT9qPWZ1bmN0aW9uKCl7dmFyIGE9W10uc2xpY2UuY2FsbChhcmd1bWVudHMpO2suYXBwbHkodGhpcyxhKSxsKCl9Ompbbl09ZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGI9W10uc2xpY2UuY2FsbChhcmd1bWVudHMpO2EmJmEuYXBwbHkodGhpcyxiKSxsKCl9fShrW25dKSksZyhhW25dLGosYixuLGgpKX1lbHNlIWMmJmwoKX12YXIgaD0hIWEudGVzdCxpPWEubG9hZHx8YS5ib3RoLGo9YS5jYWxsYmFja3x8ZixrPWosbD1hLmNvbXBsZXRlfHxmLG0sbjtjKGg/YS55ZXA6YS5ub3BlLCEhaSksaSYmYyhpKX12YXIgaixsLG09dGhpcy55ZXBub3BlLmxvYWRlcjtpZihlKGEpKWcoYSwwLG0sMCk7ZWxzZSBpZih3KGEpKWZvcihqPTA7ajxhLmxlbmd0aDtqKyspbD1hW2pdLGUobCk/ZyhsLDAsbSwwKTp3KGwpP0IobCk6T2JqZWN0KGwpPT09bCYmaShsLG0pO2Vsc2UgT2JqZWN0KGEpPT09YSYmaShhLG0pfSxCLmFkZFByZWZpeD1mdW5jdGlvbihhLGIpe3pbYV09Yn0sQi5hZGRGaWx0ZXI9ZnVuY3Rpb24oYSl7eC5wdXNoKGEpfSxCLmVycm9yVGltZW91dD0xZTQsYi5yZWFkeVN0YXRlPT1udWxsJiZiLmFkZEV2ZW50TGlzdGVuZXImJihiLnJlYWR5U3RhdGU9ImxvYWRpbmciLGIuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsQT1mdW5jdGlvbigpe2IucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsQSwwKSxiLnJlYWR5U3RhdGU9ImNvbXBsZXRlIn0sMCkpLGEueWVwbm9wZT1rKCksYS55ZXBub3BlLmV4ZWN1dGVTdGFjaz1oLGEueWVwbm9wZS5pbmplY3RKcz1mdW5jdGlvbihhLGMsZCxlLGksail7dmFyIGs9Yi5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKSxsLG8sZT1lfHxCLmVycm9yVGltZW91dDtrLnNyYz1hO2ZvcihvIGluIGQpay5zZXRBdHRyaWJ1dGUobyxkW29dKTtjPWo/aDpjfHxmLGsub25yZWFkeXN0YXRlY2hhbmdlPWsub25sb2FkPWZ1bmN0aW9uKCl7IWwmJmcoay5yZWFkeVN0YXRlKSYmKGw9MSxjKCksay5vbmxvYWQ9ay5vbnJlYWR5c3RhdGVjaGFuZ2U9bnVsbCl9LG0oZnVuY3Rpb24oKXtsfHwobD0xLGMoMSkpfSxlKSxpP2sub25sb2FkKCk6bi5wYXJlbnROb2RlLmluc2VydEJlZm9yZShrLG4pfSxhLnllcG5vcGUuaW5qZWN0Q3NzPWZ1bmN0aW9uKGEsYyxkLGUsZyxpKXt2YXIgZT1iLmNyZWF0ZUVsZW1lbnQoImxpbmsiKSxqLGM9aT9oOmN8fGY7ZS5ocmVmPWEsZS5yZWw9InN0eWxlc2hlZXQiLGUudHlwZT0idGV4dC9jc3MiO2ZvcihqIGluIGQpZS5zZXRBdHRyaWJ1dGUoaixkW2pdKTtnfHwobi5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlLG4pLG0oYywwKSl9fSh0aGlzLGRvY3VtZW50KSxNb2Rlcm5penIubG9hZD1mdW5jdGlvbigpe3llcG5vcGUuYXBwbHkod2luZG93LFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLDApKX07'></script>
	<script id="fb_lib_hash_js" src='data:/text/plain;base64,LyoqCiAqIGhhc2guanMKICoKICogQ29weXJpZ2h0IChDKSAyMDEyIEVtbWFudWVsIEdhcmNpYQogKiBNSVQgTGljZW5zZWQKICoKICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKgogKiBIYXNoLnB1c2hTdGF0ZSh0cnVlKTsKICoKICogSGFzaC5vbignL3BhZ2UvKFswLTldKykkJywKICoJe3llcDogZnVuY3Rpb24ocGF0aCwgcGFydHMpIHsgfSwgbm9wOiBmdW5jdGlvbigpIHsgfX0sCiAqCSdQYWdlICQxJyk7CiAqCiAqIEhhc2guZ28oJy9wYWdlLzEnKTsKICoqLwoKKGZ1bmN0aW9uKCkgewoKJ3VzZSBzdHJpY3QnOwoKdmFyIGhhc2hlcyA9IHt9LAoJcmVnZXhwID0ge30sCgloaXN0b3J5ID0gW10sCglmcmVxID0gMTAwLAoJbnVtID0gMCwKCXB1c2hTdGF0ZSA9IGZhbHNlLAoJdGltZXIgPSBudWxsLAoJY3VycmVudFVybCA9IG51bGwsCgoJZnJlZXplID0gZnVuY3Rpb24ob2JqKSB7CgkJaWYgKE9iamVjdC5mcmVlemUpIHJldHVybiBPYmplY3QuZnJlZXplKG9iaik7CgkJcmV0dXJuIG9iajsKCX0sCgoJZ2V0SGFzaFBhcnRzID0gZnVuY3Rpb24oKSB7CgkJcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ocmVmLnNwbGl0KCcjJyk7Cgl9LAoKCXN0YXJ0VGltZXIgPSBmdW5jdGlvbigpIHsKCQkKCQlpZiAoIXRpbWVyKQoJCQl0aW1lciA9IHNldEludGVydmFsKGZ1bmN0aW9uKCkgewoJCQkJaWYgKG51bT4wICYmIGN1cnJlbnRVcmwhPXdpbmRvdy5sb2NhdGlvbi5ocmVmKSB7CgkJCQkJY3VycmVudFVybCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmOwoJCQkJCXdpbmRvdy5IYXNoLmNoZWNrKCk7CgkJCQl9CgkJCX0sIGZyZXEpOwoKCX0sCgoJc3RvcFRpbWVyID0gZnVuY3Rpb24oKSB7CgoJCWlmICh0aW1lcikgewoJCQljbGVhckludGVydmFsKHRpbWVyKTsKCQkJdGltZXIgPSBudWxsOwoJCX0KCgl9OwoKd2luZG93Lkhhc2ggPSBmcmVlemUoewoKCQlwdXNoU3RhdGU6IGZ1bmN0aW9uKHllcykgewoKCQkJaWYgKHdpbmRvdy5oaXN0b3J5ICYmIHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZSkKCQkJCXB1c2hTdGF0ZSA9IHllczsKCgkJCXJldHVybiB0aGlzOwoJCX0sCgoJCWZyYWdtZW50OiBmdW5jdGlvbigpIHsKCQkJCgkJCXZhciBoYXNoID0gZ2V0SGFzaFBhcnRzKCk7CgkJCXJldHVybiAocHVzaFN0YXRlKSA/CgkJCQl3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUgKyAoKGhhc2hbMV0pID8gJyMnICsgaGFzaFsxXSA6ICcnKQoJCQkJOiBoYXNoWzFdIHx8ICcnOwoKCQl9LAoJCQoJCWdldDogZnVuY3Rpb24ocGF0aCwgcGFyYW1zKSB7CgkJCQoJCQl2YXIgcCwgZnJhZ21lbnQgPSAnJywgcGFyYW1ldGVycyA9IFtdOwoKCQkJZm9yKHAgaW4gcGFyYW1zKSB7CgkJCQlpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkocCkpCgkJCQkJY29udGludWU7CgkJCQlwYXJhbWV0ZXJzLnB1c2goZW5jb2RlVVJJQ29tcG9uZW50KHApICsgJz0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHBhcmFtc1twXSkpOwoJCQl9CgoJCQlpZiAocGFyYW1ldGVycy5sZW5ndGg+MCkKCQkJCXBhcmFtZXRlcnMgPSAnPycgKyBwYXJhbWV0ZXJzLmpvaW4oJyYnKTsKCQkKCQkJcmV0dXJuIChwdXNoU3RhdGUpID8gcGF0aCArIHBhcmFtZXRlcnMgOgoJCQkJZ2V0SGFzaFBhcnRzKClbMF0gKyAnIycgKyBwYXRoICsgcGFyYW1ldGVyczsKCgkJfSwKCgkJZ286IGZ1bmN0aW9uKGhhc2gsIHBhcmFtcykgewoKCQkJaWYgKHRoaXMuZnJhZ21lbnQoKSE9aGFzaCkgewoJCQkJdmFyIHRvID0gdGhpcy5nZXQoaGFzaCwgcGFyYW1zKTsKCgkJCQlpZiAocHVzaFN0YXRlKQoJCQkJCXdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZShudWxsLCBkb2N1bWVudC50aXRsZSwgdG8pOwoJCQkJZWxzZQoJCQkJCXdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdG87CgkJCQl9CgkJCQoJCQlyZXR1cm4gdGhpczsKCQl9LAoKCQl1cGRhdGU6IGZ1bmN0aW9uICgpIHsKCQkJCgkJCWN1cnJlbnRVcmwgPSB3aW5kb3cubG9jYXRpb24uaHJlZjsKCQkJcmV0dXJuIHRoaXM7CgoJCX0sCgoJCW9uOiBmdW5jdGlvbihoYXNoLCBjYWxsYmFjaywgdGl0bGUpIHsKCgkJCWlmICghaGFzaGVzW2hhc2hdKQoJCQkJaGFzaGVzW2hhc2hdID0ge3RpdGxlOiB0aXRsZSwgbGlzdGVuZXJzOiBbXX07CgkJCQoJCQloYXNoZXNbaGFzaF0ubGlzdGVuZXJzLnB1c2goY2FsbGJhY2spOwoJCQludW0rKzsKCQkJc3RhcnRUaW1lcigpOwoKCQkJcmV0dXJuIHRoaXM7CgkJfSwKCgkJY2hlY2s6IGZ1bmN0aW9uKCkgewoKCQkJdmFyIGksCgkJCQloYXNoLAoJCQkJcGFydHMsCgkJCQlmcmFnbWVudCA9IHRoaXMuZnJhZ21lbnQoKTsKCgoJCQlmb3IgKGhhc2ggaW4gaGFzaGVzKSB7CgkJCQlpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChoYXNoZXMsIGhhc2gpKQoJCQkJCWNvbnRpbnVlOwoKCQkJCWhhc2hlc1toYXNoXS5yZWdleHAgPSBoYXNoZXNbaGFzaF0ucmVnZXhwIHx8IG5ldyBSZWdFeHAoaGFzaCk7CgoJCQkJaWYgKChwYXJ0cyA9IGhhc2hlc1toYXNoXS5yZWdleHAuZXhlYyhmcmFnbWVudCkpKSB7CgkJCQkJaWYgKGhhc2hlc1toYXNoXS50aXRsZSkKCQkJCQkJZG9jdW1lbnQudGl0bGUgPSBoYXNoZXNbaGFzaF0udGl0bGU7CgoJCQkJCWZvciAoaSA9IDA7IGk8aGFzaGVzW2hhc2hdLmxpc3RlbmVycy5sZW5ndGg7IGkrKykKCQkJCQkJaWYgKGhhc2hlc1toYXNoXS5saXN0ZW5lcnNbaV0ueWVwKQoJCQkJCQkJaGFzaGVzW2hhc2hdLmxpc3RlbmVyc1tpXS55ZXAoZnJhZ21lbnQsIHBhcnRzKTsKCQkJCX0gZWxzZSB7CgkJCQkJZm9yIChpID0gMDsgaTxoYXNoZXNbaGFzaF0ubGlzdGVuZXJzLmxlbmd0aDsgaSsrKQoJCQkJCQlpZiAoaGFzaGVzW2hhc2hdLmxpc3RlbmVyc1tpXS5ub3ApCgkJCQkJCQloYXNoZXNbaGFzaF0ubGlzdGVuZXJzW2ldLm5vcChmcmFnbWVudCk7CgkJCQl9CgoJCQl9CgoJCQlyZXR1cm4gdGhpczsKCQl9Cn0pOwoKfSkoKTsK'></script>
	<script id="fb_lib_turn_html4_js" src='data:/text/plain;base64,LyoqCiAqIHR1cm4uanMgNHRoIHJlbGVhc2UgSFRNTDQgdmVyc2lvbgogKiB0dXJuanMuY29tCiAqIHR1cm5qcy5jb20vbGljZW5zZS50eHQKICoKICogQ29weXJpZ2h0IChDKSAyMDEyIEVtbWFudWVsIEdhcmNpYQogKiBBbGwgcmlnaHRzIHJlc2VydmVkCiAqKi8KCihmdW5jdGlvbigkKSB7CgondXNlIHN0cmljdCc7Cgp2YXIgaGFzM2QsCgogIHZlbmRvciA9ICcnLAogIAogIHZlcnNpb24gPSAnNC4xLjAnLAoKICBpc1RvdWNoID0gZmFsc2UsCgogIG1vdXNlRXZlbnRzID0KICAgIHsKICAgICAgZG93bjogJ21vdXNlZG93bicsCiAgICAgIG1vdmU6ICdtb3VzZW1vdmUnLAogICAgICB1cDogJ21vdXNldXAnLAogICAgICBvdmVyOiAnbW91c2VvdmVyJywKICAgICAgb3V0OiAnbW91c2VvdXQnCiAgICB9LAoKICBjb3JuZXJzID0gewogICAgYmFja3dhcmQ6IFsnbCddLAogICAgZm9yd2FyZDogWydyJ10sCiAgICBhbGw6IFsnbCcsICdyJ10KICB9LAoKICAvLyBEaXNwbGF5IHZhbHVlcwoKICBkaXNwbGF5cyA9IFsnc2luZ2xlJywgJ2RvdWJsZSddLAoKICAvLyBEaXJlY3Rpb24gdmFsdWVzCgogIGRpcmVjdGlvbnMgPSBbJ2x0cicsICdydGwnXSwKCiAgLy8gRGVmYXVsdCBvcHRpb25zCgogIHR1cm5PcHRpb25zID0gewoKICAgIC8vIEVuYWJsZXMgaGFyZHdhcmUgYWNjZWxlcmF0aW9uCgogICAgYWNjZWxlcmF0aW9uOiB0cnVlLAoKICAgIC8vIERpc3BsYXkKCiAgICBkaXNwbGF5OiAnZG91YmxlJywKCiAgICAvLyBEdXJhdGlvbiBvZiB0cmFuc2l0aW9uIGluIG1pbGxpc2Vjb25kcwoKICAgIGR1cmF0aW9uOiA2MDAsCgogICAgLy8gRmlyc3QgcGFnZQoKICAgIHBhZ2U6IDEsCiAgICAKICAgIC8vIEVuYWJsZXMgZ3JhZGllbnRzCgogICAgZ3JhZGllbnRzOiB0cnVlLAoKICAgIC8vIEV2ZW50cwoKICAgIHdoZW46IG51bGwKICB9LAoKICBmbGlwT3B0aW9ucyA9IHsKCiAgICAvLyBFbmFibGVzIGhhcmR3YXJlIGFjY2VsZXJhdGlvbgoKICAgIGFjY2VsZXJhdGlvbjogdHJ1ZSwKICAgIAogICAgLy8gQ29ybmVycwogICAgLy8gYmFja3dhcmQ6IEFjdGl2YXRlcyBib3RoIHRsIGFuZCBibCBjb3JuZXJzCiAgICAvLyBmb3J3YXJkOiBBY3RpdmF0ZXMgYm90aCB0ciBhbmQgYnIgY29ybmVycwogICAgLy8gYWxsOiBBY3RpdmF0ZXMgYWxsIHRoZSBjb3JuZXJzCgogICAgY29ybmVyczogJ2ZvcndhcmQnLAogICAgCiAgICAvLyBTaXplIG9mIHRoZSBhY3RpdmUgem9uZSBvZiBlYWNoIGNvcm5lcgoKICAgIGNvcm5lclNpemU6IDEwMCwKCgogICAgLy8gRHVyYXRpb24gb2YgdHJhbnNpdGlvbiBpbiBtaWxsaXNlY29uZHMKCiAgICBkdXJhdGlvbjogNjAwLAogICAgCiAgICAvLyBFbmFibGVzIGdyYWRpZW50cwoKICAgIGdyYWRpZW50czogdHJ1ZQoKICB9LAoKICAvLyBOdW1iZXIgb2YgcGFnZXMgaW4gdGhlIERPTSwgbWluaW11bSB2YWx1ZTogNgoKICBwYWdlc0luRE9NID0gNiwKICAKCnR1cm5NZXRob2RzID0gewoKICAvLyBTaW5nbGV0b24gY29uc3RydWN0b3IKICAvLyAkKCcjc2VsZWN0b3InKS50dXJuKFtvcHRpb25zXSk7CgogIGluaXQ6IGZ1bmN0aW9uKG9wdHMpIHsKCiAgICBpZiAodGhpcy5sZW5ndGg+MSkKICAgICAgdGhyb3cgdHVybkVycm9yKCdUaGlzIHNlbGVjdG9yIGhhcyBtb3JlIHRoYW4gMSBlbGVtZW50Jyk7CiAgICAKICAgIC8vIERlZmluZSBjb25zdGFudHMKICAgIAogICAgdmVuZG9yID0gZ2V0UHJlZml4KCk7CgogICAgdmFyIGksIHBhZ2VOdW0gPSAwLCBkYXRhID0gdGhpcy5kYXRhKCksIGNoID0gdGhpcy5jaGlsZHJlbigpOwoKICAgIC8vIFNldCBpbml0aWFsIGNvbmZpZ3VyYXRpb24KCiAgICBvcHRzID0gJC5leHRlbmQoewogICAgICB3aWR0aDogdGhpcy53aWR0aCgpLAogICAgICBoZWlnaHQ6IHRoaXMuaGVpZ2h0KCksCiAgICAgIGRpcmVjdGlvbjogdGhpcy5hdHRyKCdkaXInKSB8fCB0aGlzLmNzcygnZGlyZWN0aW9uJykgfHwgJ2x0cicKICAgIH0sIHR1cm5PcHRpb25zLCBvcHRzKTsKCiAgICBkYXRhLm9wdHMgPSBvcHRzOwogICAgZGF0YS5wYWdlT2JqcyA9IHt9OwogICAgZGF0YS5wYWdlcyA9IHt9OwogICAgZGF0YS5wYWdlV3JhcCA9IHt9OwogICAgZGF0YS5wYWdlUGxhY2UgPSB7fTsKICAgIGRhdGEucGFnZU12ID0gW107CiAgICBkYXRhLnpvb20gPSAxOwogICAgZGF0YS50b3RhbFBhZ2VzID0gb3B0cy5wYWdlcyB8fCAwOwogICAgZGF0YS5kb2NFdmVudHMgPSB7CiAgICAgIG1vdXNlU3RhcnQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICBmb3IgKHZhciBwYWdlIGluIGRhdGEucGFnZXMpCiAgICAgICAgICBpZiAoaGFzKHBhZ2UsIGRhdGEucGFnZXMpICYmCiAgICAgICAgICAgIGZsaXBNZXRob2RzLl9ldmVudFN0YXJ0LmNhbGwoZGF0YS5wYWdlc1twYWdlXSwgZSk9PT1mYWxzZSkKICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0sCgogICAgICBtb3VzZU1vdmU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICBmb3IgKHZhciBwYWdlIGluIGRhdGEucGFnZXMpCiAgICAgICAgICBpZiAoaGFzKHBhZ2UsIGRhdGEucGFnZXMpKQogICAgICAgICAgICBmbGlwTWV0aG9kcy5fZXZlbnRNb3ZlLmNhbGwoZGF0YS5wYWdlc1twYWdlXSwgZSk7CiAgICAgIH0sCgogICAgICBtb3VzZUVuZDogZnVuY3Rpb24oZSkgewogICAgICAgIGZvciAodmFyIHBhZ2UgaW4gZGF0YS5wYWdlcykKICAgICAgICAgIGlmIChoYXMocGFnZSwgZGF0YS5wYWdlcykpCiAgICAgICAgICAgIGZsaXBNZXRob2RzLl9ldmVudEVuZC5jYWxsKGRhdGEucGFnZXNbcGFnZV0sIGUpOwogICAgICB9CiAgICB9OwoKICAgIC8vIEFkZCBldmVudCBsaXN0ZW5lcnMKCiAgICBpZiAob3B0cy53aGVuKQogICAgICBmb3IgKGkgaW4gb3B0cy53aGVuKQogICAgICAgIGlmIChoYXMoaSwgb3B0cy53aGVuKSkKICAgICAgICAgIHRoaXMuYmluZChpLCBvcHRzLndoZW5baV0pOwoKICAgIC8vIFNldCB0aGUgY3NzCgogICAgdGhpcy5jc3Moe3Bvc2l0aW9uOiAncmVsYXRpdmUnLCB3aWR0aDogb3B0cy53aWR0aCwgaGVpZ2h0OiBvcHRzLmhlaWdodH0pOwoKICAgIC8vIFNldCB0aGUgaW5pdGlhbCBkaXNwbGF5CgogICAgdGhpcy50dXJuKCdkaXNwbGF5Jywgb3B0cy5kaXNwbGF5KTsKCiAgICAvLyBTZXQgdGhlIGRpcmVjdGlvbgoKICAgIGlmIChvcHRzLmRpcmVjdGlvbiE9PScnKQogICAgICB0aGlzLnR1cm4oJ2RpcmVjdGlvbicsIG9wdHMuZGlyZWN0aW9uKTsKCgogICAgLy8gQWRkIHBhZ2VzIGZyb20gdGhlIERPTQoKICAgIGZvciAoaSA9IDA7IGk8Y2gubGVuZ3RoOyBpKyspIHsKICAgICAgaWYgKCQoY2hbaV0pLmF0dHIoJ2lnbm9yZScpIT0nMScpIHsKICAgICAgICB0aGlzLnR1cm4oJ2FkZFBhZ2UnLCBjaFtpXSwgKytwYWdlTnVtKTsKICAgICAgfQogICAgfQoKICAgIC8vIEV2ZW50IGxpc3RlbmVycwoKICAgICQodGhpcykuYmluZChtb3VzZUV2ZW50cy5kb3duLCBkYXRhLmRvY0V2ZW50cy5tb3VzZVN0YXJ0KS4KICAgICAgYmluZCgnc3RhcnQnLCB0dXJuTWV0aG9kcy5fc3RhcnQpLgogICAgICBiaW5kKCdlbmQnLCB0dXJuTWV0aG9kcy5fZW5kKS4KICAgICAgYmluZCgncHJlc3NlZCcsIHR1cm5NZXRob2RzLl9wcmVzc2VkKS4KICAgICAgYmluZCgncmVsZWFzZWQnLCB0dXJuTWV0aG9kcy5fcmVsZWFzZWQpLgogICAgICBiaW5kKCdmbGlwJywgdHVybk1ldGhvZHMuX2ZsaXApOwoKICAgICQoZG9jdW1lbnQpLmJpbmQobW91c2VFdmVudHMubW92ZSwgZGF0YS5kb2NFdmVudHMubW91c2VNb3ZlKS4KICAgICAgYmluZChtb3VzZUV2ZW50cy51cCwgZGF0YS5kb2NFdmVudHMubW91c2VFbmQpOwoKICAgIC8vIFNldCB0aGUgaW5pdGlhbCBwYWdlCgogICAgdGhpcy50dXJuKCdwYWdlJywgb3B0cy5wYWdlKTsKCiAgICBkYXRhLmRvbmUgPSB0cnVlOwoKICAgIHJldHVybiB0aGlzOwogIH0sCgogIC8vIEFkZHMgYSBwYWdlIGZyb20gZXh0ZXJuYWwgZGF0YQoKICBhZGRQYWdlOiBmdW5jdGlvbihlbGVtZW50LCBwYWdlKSB7CgogICAgdmFyIGN1cnJlbnRQYWdlLAogICAgICBjbGFzc05hbWUsCiAgICAgIGluY1BhZ2VzID0gZmFsc2UsCiAgICAgIGRhdGEgPSB0aGlzLmRhdGEoKSwKICAgICAgbGFzdFBhZ2UgPSBkYXRhLnRvdGFsUGFnZXMrMTsKCiAgICBpZiAoZGF0YS5kZXN0cm95aW5nKQogICAgICByZXR1cm4gZmFsc2U7CgogICAgLy8gUmVhZCB0aGUgcGFnZSBudW1iZXIgZnJvbSB0aGUgY2xhc3NOYW1lIG9mIGBlbGVtZW50YCAtIGZvcm1hdDogcFswLTldKwoKICAgIGlmICgoY3VycmVudFBhZ2UgPSAvXGJwKFswLTldKylcYi8uZXhlYygkKGVsZW1lbnQpLmF0dHIoJ2NsYXNzJykpKSkKICAgICAgcGFnZSA9IHBhcnNlSW50KGN1cnJlbnRQYWdlWzFdLCAxMCk7CgogICAgaWYgKHBhZ2UpIHsKICAgICAgCiAgICAgIGlmIChwYWdlPT1sYXN0UGFnZSkKICAgICAgICBpbmNQYWdlcyA9IHRydWU7CiAgICAgIGVsc2UgaWYgKHBhZ2U+bGFzdFBhZ2UpCiAgICAgICAgdGhyb3cgdHVybkVycm9yKCdQYWdlICInK3BhZ2UrJyIgY2Fubm90IGJlIGluc2VydGVkJyk7CgogICAgfSBlbHNlIHsKICAgICAgCiAgICAgIHBhZ2UgPSBsYXN0UGFnZTsKICAgICAgaW5jUGFnZXMgPSB0cnVlOwoKICAgIH0KCiAgICBpZiAocGFnZT49MSAmJiBwYWdlPD1sYXN0UGFnZSkgewoKICAgICAgaWYgKGRhdGEuZGlzcGxheT09J2RvdWJsZScpCiAgICAgICAgY2xhc3NOYW1lID0gKHBhZ2UlMikgPyAnIG9kZCcgOiAnIGV2ZW4nOwogICAgICBlbHNlCiAgICAgICAgY2xhc3NOYW1lID0gJyc7CgogICAgICAvLyBTdG9wIGFuaW1hdGlvbnMKICAgICAgaWYgKGRhdGEuZG9uZSkKICAgICAgICB0aGlzLnR1cm4oJ3N0b3AnKTsKCiAgICAgIC8vIE1vdmUgcGFnZXMgaWYgaXQncyBuZWNlc3NhcnkKICAgICAgaWYgKHBhZ2UgaW4gZGF0YS5wYWdlT2JqcykKICAgICAgICB0dXJuTWV0aG9kcy5fbW92ZVBhZ2VzLmNhbGwodGhpcywgcGFnZSwgMSk7CgogICAgICAvLyBJbmNyZWFzZSB0aGUgbnVtYmVyIG9mIHBhZ2VzCiAgICAgIGlmIChpbmNQYWdlcykKICAgICAgICBkYXRhLnRvdGFsUGFnZXMgPSBsYXN0UGFnZTsKCiAgICAgIC8vIEFkZCBlbGVtZW50CiAgICAgIGRhdGEucGFnZU9ianNbcGFnZV0gPSAkKGVsZW1lbnQpLgogICAgICAgIGNzcyh7J2Zsb2F0JzogJ2xlZnQnfSkuCiAgICAgICAgYWRkQ2xhc3MoJ3BhZ2UgcCcgKyBwYWdlICsgY2xhc3NOYW1lKTsKCiAgICAgIC8vIEFkZCBwYWdlCiAgICAgIHR1cm5NZXRob2RzLl9hZGRQYWdlLmNhbGwodGhpcywgcGFnZSk7CgoKICAgICAgLy8gVXBkYXRlIHZpZXcKICAgICAgaWYgKGRhdGEuZG9uZSkKICAgICAgICB0aGlzLnR1cm4oJ3VwZGF0ZScpOwoKCiAgICAgIC8vIFJlbW92ZSBwYWdlcyBvdXQgb2YgcmFuZ2UKICAgICAgdHVybk1ldGhvZHMuX3JlbW92ZUZyb21ET00uY2FsbCh0aGlzKTsKICAgIH0KCiAgICByZXR1cm4gdGhpczsKICB9LAoKICAvLyBBZGRzIGEgcGFnZQoKICBfYWRkUGFnZTogZnVuY3Rpb24ocGFnZSkgewogICAgCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLAogICAgICBlbGVtZW50ID0gZGF0YS5wYWdlT2Jqc1twYWdlXTsKCiAgICBpZiAoZWxlbWVudCkKICAgICAgaWYgKHR1cm5NZXRob2RzLl9uZWNlc3NQYWdlLmNhbGwodGhpcywgcGFnZSkpIHsKCiAgICAgICAgaWYgKCFkYXRhLnBhZ2VXcmFwW3BhZ2VdKSB7CgogICAgICAgICAgdmFyIHByb3AgPSB0dXJuTWV0aG9kcy5fcGFnZVNpemUuY2FsbCh0aGlzLCBwYWdlLCB0cnVlKTsKCiAgICAgICAgICBlbGVtZW50LmNzcyh7d2lkdGg6IHByb3Aud2lkdGgsIGhlaWdodDogcHJvcC5oZWlnaHR9KTsKCiAgICAgICAgICAvLyBQbGFjZQogICAgICAgICAgZGF0YS5wYWdlUGxhY2VbcGFnZV0gPSBwYWdlOwoKICAgICAgICAgIC8vIFdyYXBwZXIKICAgICAgICAgIGRhdGEucGFnZVdyYXBbcGFnZV0gPSAkKCc8ZGl2Lz4nLAogICAgICAgICAgICB7J2NsYXNzJzogJ3R1cm4tcGFnZS13cmFwcGVyJywKICAgICAgICAgICAgICBwYWdlOiBwYWdlLAogICAgICAgICAgICAgIGNzczoge3Bvc2l0aW9uOiAnYWJzb2x1dGUnLAogICAgICAgICAgICAgIG92ZXJmbG93OiAnaGlkZGVuJ319KS4KICAgICAgICAgICAgY3NzKHByb3ApOwoKICAgICAgICAgIC8vIEFwcGVuZCB0byB0aGlzCiAgICAgICAgICB0aGlzLmFwcGVuZChkYXRhLnBhZ2VXcmFwW3BhZ2VdKTsKCiAgICAgICAgICAvLyBNb3ZlIGVsZW1lbnQgdG8gd3JhcHBlcgogICAgICAgICAgZGF0YS5wYWdlV3JhcFtwYWdlXS5wcmVwZW5kKGRhdGEucGFnZU9ianNbcGFnZV0pOwoKICAgICAgICB9CgogICAgICAgIC8vIElmIHRoZSBwYWdlIGlzIGluIHRoZSBjdXJyZW50IHZpZXcsIGNyZWF0ZSB0aGUgZmxpcCBlZmZlY3QKICAgICAgICBpZiAoIXBhZ2UgfHwgdHVybk1ldGhvZHMuX3NldFBhZ2VMb2MuY2FsbCh0aGlzLCBwYWdlKT09MSkKICAgICAgICAgIHR1cm5NZXRob2RzLl9tYWtlRmxpcC5jYWxsKHRoaXMsIHBhZ2UpOwogICAgICAgIAogICAgICB9IGVsc2UgewoKICAgICAgICAvLyBQbGFjZQogICAgICAgIGRhdGEucGFnZVBsYWNlW3BhZ2VdID0gMDsKCiAgICAgICAgLy8gUmVtb3ZlIGVsZW1lbnQgZnJvbSB0aGUgRE9NCiAgICAgICAgaWYgKGRhdGEucGFnZU9ianNbcGFnZV0pCiAgICAgICAgICBkYXRhLnBhZ2VPYmpzW3BhZ2VdLnJlbW92ZSgpOwoKICAgICAgfQoKICB9LAoKICAvLyBDaGVja3MgaWYgYSBwYWdlIGlzIGluIG1lbW9yeQogIAogIGhhc1BhZ2U6IGZ1bmN0aW9uKHBhZ2UpIHsKCiAgICByZXR1cm4gaGFzKHBhZ2UsIHRoaXMuZGF0YSgpLnBhZ2VPYmpzKTsKICAKICB9LAoKICAvLyBDZW50ZXJzIHRoZSBmbGlwYm9vawoKICBjZW50ZXI6IGZ1bmN0aW9uKHBhZ2UpIHsKICAgIAogICAgdmFyIGRhdGEgPSB0aGlzLmRhdGEoKSwKICAgICAgc2l6ZSA9ICQodGhpcykudHVybignc2l6ZScpLAogICAgICBsZWZ0ID0gc2l6ZS53aWR0aC8oZGF0YS56b29tKjIpIC1zaXplLndpZHRoLzI7CgogICAgaWYgKGRhdGEuZGlzcGxheT09J2RvdWJsZScpIHsKICAgICAgdmFyIHZpZXcgPSB0aGlzLnR1cm4oJ3ZpZXcnLCBwYWdlIHx8IGRhdGEudHBhZ2UgfHwgZGF0YS5wYWdlKTsKCiAgICAgIGlmIChkYXRhLmRpcmVjdGlvbj09J2x0cicpIHsKICAgICAgICBpZiAoIXZpZXdbMF0pCiAgICAgICAgICBsZWZ0IC09IHNpemUud2lkdGgvNDsKICAgICAgICBlbHNlIGlmICghdmlld1sxXSkKICAgICAgICAgIGxlZnQgKz0gc2l6ZS53aWR0aC80OwogICAgICB9IGVsc2UgewogICAgICAgIGlmICghdmlld1swXSkKICAgICAgICAgIGxlZnQgKz0gc2l6ZS53aWR0aC80OwogICAgICAgIGVsc2UgaWYgKCF2aWV3WzFdKQogICAgICAgICAgbGVmdCAtPSBzaXplLndpZHRoLzQ7CiAgICAgIH0KICAgIH0KCiAgICAkKHRoaXMpLmNzcyh7bWFyZ2luTGVmdDogbGVmdH0pOwoKICAgIHJldHVybiB0aGlzOwoKICB9LAoKICAvLyBEZXN0cm95cyB0aGUgZmxpcGJvb2sKCiAgZGVzdHJveTogZnVuY3Rpb24gKCkgewoKICAgIHZhciBwYWdlLAogICAgICBkYXRhID0gdGhpcy5kYXRhKCk7CgogICAgZGF0YS5kZXN0cm95aW5nID0gdHJ1ZTsKCiAgICAkKHRoaXMpLnVuYmluZChtb3VzZUV2ZW50cy5kb3duKQogICAgICAudW5iaW5kKCdlbmQnKQogICAgICAudW5iaW5kKCdmaXJzdCcpCiAgICAgIC51bmJpbmQoJ2ZsaXAnKQogICAgICAudW5iaW5kKCdsYXN0JykKICAgICAgLnVuYmluZCgncHJlc3NlZCcpCiAgICAgIC51bmJpbmQoJ3JlbGVhc2VkJykKICAgICAgLnVuYmluZCgnc3RhcnQnKQogICAgICAudW5iaW5kKCd0dXJuaW5nJykKICAgICAgLnVuYmluZCgndHVybmVkJykKICAgICAgLnVuYmluZCgnem9vbWluZycpOwoKICAgICQoZG9jdW1lbnQpLnVuYmluZChtb3VzZUV2ZW50cy5tb3ZlLCBkYXRhLmRvY0V2ZW50cy5tb3VzZU1vdmUpLgogICAgICB1bmJpbmQobW91c2VFdmVudHMudXAsIGRhdGEuZG9jRXZlbnRzLm1vdXNlRW5kKTsKICAgIAogICAgd2hpbGUgKGRhdGEudG90YWxQYWdlcyE9PTApIHsKICAgICAgdGhpcy50dXJuKCdyZW1vdmVQYWdlJywgZGF0YS50b3RhbFBhZ2VzKTsKICAgIH0KCiAgICBpZiAoZGF0YS5mcGFyZW50KQogICAgICBkYXRhLmZwYXJlbnQucmVtb3ZlKCk7CgogICAgaWYgKGRhdGEuc2hhZG93KQogICAgICBkYXRhLnNoYWRvdy5yZW1vdmUoKTsKCiAgICB0aGlzLnJlbW92ZURhdGEoKTsKICAgIGRhdGEgPSBudWxsOwoKICAgIHJldHVybiB0aGlzOwoKICB9LAoKICAvLyBDaGVja3MgaWYgdGhpcyBlbGVtZW50IGlzIGEgZmxpcGJvb2sKCiAgaXM6IGZ1bmN0aW9uKCkgewoKICAgIHJldHVybiB0eXBlb2YodGhpcy5kYXRhKCkucGFnZXMpPT0nb2JqZWN0JzsKCiAgfSwKCiAgLy8gU2V0cyBhbmQgZ2V0cyB0aGUgem9vbSB2YWx1ZQoKICB6b29tOiBmdW5jdGlvbihuZXdab29tKSB7CiAgICAKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCk7CgogICAgaWYgKHR5cGVvZihuZXdab29tKT09J251bWJlcicpIHsKCiAgICAgIGlmIChuZXdab29tPDAuMDAxIHx8IG5ld1pvb20+MTAwKQogICAgICAgIHRocm93IHR1cm5FcnJvcihuZXdab29tKyAnIGlzIG5vdCBhIHZhbHVlIGZvciB6b29tJyk7CiAgICAKICAgICAgdmFyIGV2ZW50ID0gJC5FdmVudCgnem9vbWluZycpOwogICAgICB0aGlzLnRyaWdnZXIoZXZlbnQsIFtuZXdab29tLCBkYXRhLnpvb21dKTsKCiAgICAgIGlmIChldmVudC5pc0RlZmF1bHRQcmV2ZW50ZWQoKSkKICAgICAgICByZXR1cm4gdGhpczsKICAgICAgCiAgICAgIHZhciBzaXplID0gJCh0aGlzKS50dXJuKCdzaXplJyksCiAgICAgICAgaXogPSAxL2RhdGEuem9vbSwKICAgICAgICBuZXdXaWR0aCA9IE1hdGgucm91bmQoc2l6ZS53aWR0aCAqIGl6ICogbmV3Wm9vbSksCiAgICAgICAgbmV3SGVpZ2h0ID0gTWF0aC5yb3VuZChzaXplLmhlaWdodCAqIGl6ICogbmV3Wm9vbSk7CiAgICAKICAgICAgZGF0YS56b29tID0gbmV3Wm9vbTsKCiAgICAgICQodGhpcykudHVybignc3RvcCcpLgogICAgICAgIHR1cm4oJ3NpemUnLCBuZXdXaWR0aCwgbmV3SGVpZ2h0KS4KICAgICAgICBjc3Moe21hcmdpblRvcDogc2l6ZS5oZWlnaHQgKiBpeiAvIDIgLSBuZXdIZWlnaHQgLyAyfSk7CgogICAgICBpZiAoZGF0YS5vcHRzLmF1dG9DZW50ZXIpCiAgICAgICAgdGhpcy50dXJuKCdjZW50ZXInKTsKICAgICAgZWxzZQogICAgICAgICQodGhpcykuY3NzKHttYXJnaW5MZWZ0OiBzaXplLndpZHRoICogaXogLyAyIC0gbmV3V2lkdGggLyAyfSk7CiAgICAgIAogICAgICB0dXJuTWV0aG9kcy5fdXBkYXRlU2hhZG93LmNhbGwodGhpcyk7CiAgCiAgICAgIHJldHVybiB0aGlzOwoKICAgIH0gZWxzZQogICAgICByZXR1cm4gZGF0YS56b29tOwoKICB9LAoKICAvLyBHZXRzIHRoZSBzaXplIG9mIGEgcGFnZQoKICBfcGFnZVNpemU6IGZ1bmN0aW9uKHBhZ2UsIHBvc2l0aW9uKSB7CgogICAgdmFyIGRhdGEgPSB0aGlzLmRhdGEoKSwKICAgICAgcHJvcCA9IHt9OwoKICAgIGlmIChkYXRhLmRpc3BsYXk9PSdzaW5nbGUnKSB7CgogICAgICBwcm9wLndpZHRoID0gdGhpcy53aWR0aCgpOwogICAgICBwcm9wLmhlaWdodCA9IHRoaXMuaGVpZ2h0KCk7CgogICAgICBpZiAocG9zaXRpb24pIHsKICAgICAgICBwcm9wLnRvcCA9IDA7CiAgICAgICAgcHJvcC5sZWZ0ID0gMDsKICAgICAgICBwcm9wLnJpZ2h0ID0gJ2F1dG8nOwogICAgICB9CgogICAgfSBlbHNlIHsKCiAgICAgIHZhciBwYWdlV2lkdGggPSB0aGlzLndpZHRoKCkvMiwKICAgICAgICBwYWdlSGVpZ2h0ID0gdGhpcy5oZWlnaHQoKTsKCiAgICAgIGlmIChkYXRhLnBhZ2VPYmpzW3BhZ2VdLmhhc0NsYXNzKCdvd24tc2l6ZScpKSB7CiAgICAgICAgcHJvcC53aWR0aCA9IGRhdGEucGFnZU9ianNbcGFnZV0ud2lkdGgoKTsKICAgICAgICBwcm9wLmhlaWdodCA9IGRhdGEucGFnZU9ianNbcGFnZV0uaGVpZ2h0KCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcHJvcC53aWR0aCA9IHBhZ2VXaWR0aDsKICAgICAgICBwcm9wLmhlaWdodCA9IHBhZ2VIZWlnaHQ7CiAgICAgIH0KCiAgICAgIGlmIChwb3NpdGlvbikgewogICAgICAgIHZhciBvZGQgPSBwYWdlJTI7CiAgICAgICAgcHJvcC50b3AgPSAocGFnZUhlaWdodC1wcm9wLmhlaWdodCkvMjsKCiAgICAgICAgaWYgKGRhdGEuZGlyZWN0aW9uPT0nbHRyJykgewogICAgICAgICAgCiAgICAgICAgICBwcm9wWyhvZGQpID8gJ3JpZ2h0JyA6ICdsZWZ0J10gPSBwYWdlV2lkdGgtcHJvcC53aWR0aDsKICAgICAgICAgIHByb3BbKG9kZCkgPyAnbGVmdCcgOiAncmlnaHQnXSA9ICdhdXRvJzsKCiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIAogICAgICAgICAgcHJvcFsob2RkKSA/ICdsZWZ0JyA6ICdyaWdodCddID0gcGFnZVdpZHRoLXByb3Aud2lkdGg7CiAgICAgICAgICBwcm9wWyhvZGQpID8gJ3JpZ2h0JyA6ICdsZWZ0J10gPSAnYXV0byc7CgogICAgICAgIH0KCiAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gcHJvcDsKCiAgfSwKCiAgLy8gUHJlcGFyZXMgdGhlIGZsaXAgZWZmZWN0IGZvciBhIHBhZ2UKCiAgX21ha2VGbGlwOiBmdW5jdGlvbihwYWdlKSB7CgogICAgdmFyIGRhdGEgPSB0aGlzLmRhdGEoKTsKCiAgICBpZiAoIWRhdGEucGFnZXNbcGFnZV0gJiYgZGF0YS5wYWdlUGxhY2VbcGFnZV09PXBhZ2UpIHsKICAgICAgdmFyIGNvcm5lciwKICAgICAgICBzaW5nbGUgPSBkYXRhLmRpc3BsYXk9PSdzaW5nbGUnLAogICAgICAgIG9kZCA9IHBhZ2UlMjsKCiAgICAgIGRhdGEucGFnZXNbcGFnZV0gPSBkYXRhLnBhZ2VPYmpzW3BhZ2VdLgogICAgICAgIGNzcyh0dXJuTWV0aG9kcy5fcGFnZVNpemUuY2FsbCh0aGlzLCBwYWdlKSkuCiAgICAgICAgZmxpcCh7cGFnZTogcGFnZSwKICAgICAgICAgIG5leHQ6IChvZGQgfHwgc2luZ2xlKSA/IHBhZ2UrMSA6IHBhZ2UtMSwKICAgICAgICAgIHR1cm46IHRoaXMsCiAgICAgICAgICBkdXJhdGlvbjogZGF0YS5vcHRzLmR1cmF0aW9uLAogICAgICAgICAgYWNjZWxlcmF0aW9uIDogZGF0YS5vcHRzLmFjY2VsZXJhdGlvbiwKICAgICAgICAgIGdyYWRpZW50czogZGF0YS5vcHRzLmdyYWRpZW50cwogICAgICAgICAgfSkuCiAgICAgICAgICBmbGlwKCdkaXNhYmxlJywgZGF0YS5kaXNhYmxlZCk7CiAgICB9CgogICAgcmV0dXJuIGRhdGEucGFnZXNbcGFnZV07CiAgfSwKCiAgLy8gTWFrZXMgcGFnZXMgd2l0aGluIGEgcmFuZ2UKCiAgX21ha2VSYW5nZTogZnVuY3Rpb24oKSB7CgogICAgdmFyIHBhZ2UsIHJhbmdlLAogICAgICBkYXRhID0gdGhpcy5kYXRhKCk7CgogICAgaWYgKGRhdGEudG90YWxQYWdlczwxKQogICAgICByZXR1cm47CgogICAgcmFuZ2UgPSB0aGlzLnR1cm4oJ3JhbmdlJyk7CgogICAgZm9yIChwYWdlID0gcmFuZ2VbMF07IHBhZ2U8PXJhbmdlWzFdOyBwYWdlKyspCiAgICAgIHR1cm5NZXRob2RzLl9hZGRQYWdlLmNhbGwodGhpcywgcGFnZSk7CgogIH0sCgogIC8vIFJldHVybnMgYSByYW5nZSBvZiBwYWdlcyB0aGF0IHNob3VsZCBiZSBpbiB0aGUgRE9NCiAgLy8gRXhhbXBsZToKICAvLyAtIHBhZ2UgaW4gdGhlIGN1cnJlbnQgdmlldywgcmV0dXJuIHRydWUKICAvLyAqIHBhZ2UgaXMgaW4gdGhlIHJhbmdlLCByZXR1cm4gdHJ1ZQogIC8vIE90aGVyd2lzZSwgcmV0dXJuIGZhbHNlCiAgLy8KICAvLyAxIDItMyA0LTUgNi03IDgtOSAxMC0xMSAxMi0xMwogIC8vICAgKiogICoqICAtLSAgICoqICAqKgoKICByYW5nZTogZnVuY3Rpb24ocGFnZSkgewoKICAgIHZhciByZW1haW5pbmdQYWdlcywgbGVmdCwgcmlnaHQsIHZpZXcsCiAgICAgIGRhdGEgPSB0aGlzLmRhdGEoKTsKCgogICAgICBwYWdlID0gcGFnZSB8fCBkYXRhLnRwYWdlIHx8IGRhdGEucGFnZSB8fCAxOwogICAgICB2aWV3ID0gdHVybk1ldGhvZHMuX3ZpZXcuY2FsbCh0aGlzLCBwYWdlKTsKCiAgICAgIGlmIChwYWdlPDEgfHwgcGFnZT5kYXRhLnRvdGFsUGFnZXMpCiAgICAgICAgdGhyb3cgdHVybkVycm9yKCciJytwYWdlKyciIGlzIG5vdCBhIHBhZ2UgZm9yIHJhbmdlJyk7CiAgICAKICAgICAgdmlld1sxXSA9IHZpZXdbMV0gfHwgdmlld1swXTsKICAgICAgCiAgICAgIGlmICh2aWV3WzBdPj0xICYmIHZpZXdbMV08PWRhdGEudG90YWxQYWdlcykgewoKICAgICAgICByZW1haW5pbmdQYWdlcyA9IE1hdGguZmxvb3IoKHBhZ2VzSW5ET00tMikvMik7CgogICAgICAgIGlmIChkYXRhLnRvdGFsUGFnZXMtdmlld1sxXSA+IHZpZXdbMF0pIHsKICAgICAgICAgIGxlZnQgPSBNYXRoLm1pbih2aWV3WzBdLTEsIHJlbWFpbmluZ1BhZ2VzKTsKICAgICAgICAgIHJpZ2h0ID0gMipyZW1haW5pbmdQYWdlcy1sZWZ0OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICByaWdodCA9IE1hdGgubWluKGRhdGEudG90YWxQYWdlcy12aWV3WzFdLCByZW1haW5pbmdQYWdlcyk7CiAgICAgICAgICBsZWZ0ID0gMipyZW1haW5pbmdQYWdlcy1yaWdodDsKICAgICAgICB9CgogICAgICB9IGVsc2UgewogICAgICAgIGxlZnQgPSBwYWdlc0luRE9NLTE7CiAgICAgICAgcmlnaHQgPSBwYWdlc0luRE9NLTE7CiAgICAgIH0KCiAgICAgIHJldHVybiBbTWF0aC5tYXgoMSwgdmlld1swXS1sZWZ0KSwKICAgICAgICAgIE1hdGgubWluKGRhdGEudG90YWxQYWdlcywgdmlld1sxXStyaWdodCldOwoKICB9LAoKICAvLyBEZXRlY3RzIGlmIGEgcGFnZSBpcyB3aXRoaW4gdGhlIHJhbmdlIG9mIGBwYWdlc0luRE9NYCBmcm9tIHRoZSBjdXJyZW50IHZpZXcKCiAgX25lY2Vzc1BhZ2U6IGZ1bmN0aW9uKHBhZ2UpIHsKICAgIAogICAgaWYgKHBhZ2U9PT0wKQogICAgICByZXR1cm4gdHJ1ZTsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLAogICAgICByYW5nZSA9IHRoaXMudHVybigncmFuZ2UnKTsKCiAgICByZXR1cm4gZGF0YS5wYWdlT2Jqc1twYWdlXS5oYXNDbGFzcygnZml4ZWQnKSB8fAogICAgICAocGFnZT49cmFuZ2VbMF0gJiYgcGFnZTw9cmFuZ2VbMV0pOwogICAgCiAgfSwKCiAgLy8gUmVsZWFzZXMgbWVtb3J5IGJ5IHJlbW92aW5nIHBhZ2VzIGZyb20gdGhlIERPTQoKICBfcmVtb3ZlRnJvbURPTTogZnVuY3Rpb24oKSB7CgogICAgdmFyIHBhZ2UsIGRhdGEgPSB0aGlzLmRhdGEoKTsKCiAgICBmb3IgKHBhZ2UgaW4gZGF0YS5wYWdlV3JhcCkKICAgICAgaWYgKGhhcyhwYWdlLCBkYXRhLnBhZ2VXcmFwKSAmJgogICAgICAgICF0dXJuTWV0aG9kcy5fbmVjZXNzUGFnZS5jYWxsKHRoaXMsIHBhZ2UpKQogICAgICB0dXJuTWV0aG9kcy5fcmVtb3ZlUGFnZUZyb21ET00uY2FsbCh0aGlzLCBwYWdlKTsKICAgIAogIH0sCgogIC8vIFJlbW92ZXMgYSBwYWdlIGZyb20gRE9NIGFuZCBpdHMgaW50ZXJuYWwgcmVmZXJlbmNlcwoKICBfcmVtb3ZlUGFnZUZyb21ET006IGZ1bmN0aW9uKHBhZ2UpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpOwoKICAgIGlmIChkYXRhLnBhZ2VzW3BhZ2VdKSB7CiAgICAgIHZhciBkZCA9IGRhdGEucGFnZXNbcGFnZV0uZGF0YSgpOwoKICAgICAgZmxpcE1ldGhvZHMuX21vdmVGb2xkaW5nUGFnZS5jYWxsKGRhdGEucGFnZXNbcGFnZV0sIGZhbHNlKTsKCiAgICAgIGlmIChkZC5mICYmIGRkLmYuZndyYXBwZXIpCiAgICAgICAgZGQuZi5md3JhcHBlci5yZW1vdmUoKTsKCiAgICAgIGRhdGEucGFnZXNbcGFnZV0ucmVtb3ZlRGF0YSgpOwogICAgICBkYXRhLnBhZ2VzW3BhZ2VdLnJlbW92ZSgpOwogICAgICBkZWxldGUgZGF0YS5wYWdlc1twYWdlXTsKICAgIH0KCiAgICBpZiAoZGF0YS5wYWdlT2Jqc1twYWdlXSkKICAgICAgZGF0YS5wYWdlT2Jqc1twYWdlXS5yZW1vdmUoKTsKCiAgICBpZiAoZGF0YS5wYWdlV3JhcFtwYWdlXSkgewogICAgICBkYXRhLnBhZ2VXcmFwW3BhZ2VdLnJlbW92ZSgpOwogICAgICBkZWxldGUgZGF0YS5wYWdlV3JhcFtwYWdlXTsKICAgIH0KCiAgICBkZWxldGUgZGF0YS5wYWdlUGxhY2VbcGFnZV07CgogIH0sCgogIC8vIFJlbW92ZXMgYSBwYWdlCgogIHJlbW92ZVBhZ2U6IGZ1bmN0aW9uKHBhZ2UpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpOwoKICAgIGlmIChwYWdlPDEgfHwgcGFnZT5kYXRhLnRvdGFsUGFnZXMpCiAgICAgIHRocm93IHR1cm5FcnJvcignVGhlIHBhZ2UgJysgcGFnZSArICcgZG9lc25cJ3QgZXhpc3QnKTsKICAgICAgCiAgICBpZiAoZGF0YS5wYWdlT2Jqc1twYWdlXSkgewoKICAgICAgLy8gU3RvcCBhbmltYXRpb25zCiAgICAgIHRoaXMudHVybignc3RvcCcpOwoKICAgICAgLy8gUmVtb3ZlIGBwYWdlYAogICAgICB0dXJuTWV0aG9kcy5fcmVtb3ZlUGFnZUZyb21ET00uY2FsbCh0aGlzLCBwYWdlKTsKICAgICAgZGVsZXRlIGRhdGEucGFnZU9ianNbcGFnZV07CgogICAgfQoKICAgIC8vIE1vdmUgdGhlIHBhZ2VzIGJlaGluZCBgcGFnZWAKICAgIHR1cm5NZXRob2RzLl9tb3ZlUGFnZXMuY2FsbCh0aGlzLCBwYWdlLCAtMSk7CgogICAgLy8gUmVzaXplIHRoZSBzaXplIG9mIHRoaXMgZmxpcGJvb2sKICAgIGRhdGEudG90YWxQYWdlcyA9IGRhdGEudG90YWxQYWdlcy0xOwoKICAgIC8vIENoZWNrIHRoZSBjdXJyZW50IHZpZXcKCiAgICBpZiAoZGF0YS5wYWdlPmRhdGEudG90YWxQYWdlcykKICAgICAgdGhpcy50dXJuKCdwYWdlJywgZGF0YS50b3RhbFBhZ2VzKTsKICAgIGVsc2UKICAgICAgdHVybk1ldGhvZHMuX21ha2VSYW5nZS5jYWxsKHRoaXMpOwoKICAgIHJldHVybiB0aGlzOwogIAogIH0sCgogIC8vIE1vdmVzIHBhZ2VzCgogIF9tb3ZlUGFnZXM6IGZ1bmN0aW9uKGZyb20sIGNoYW5nZSkgewoKICAgIHZhciBwYWdlLAogICAgICB0aGF0ID0gdGhpcywKICAgICAgZGF0YSA9IHRoaXMuZGF0YSgpLAogICAgICBzaW5nbGUgPSBkYXRhLmRpc3BsYXk9PSdzaW5nbGUnLAogICAgICBtb3ZlID0gZnVuY3Rpb24ocGFnZSkgewoKICAgICAgICB2YXIgbmV4dCA9IHBhZ2UgKyBjaGFuZ2UsCiAgICAgICAgICBvZGQgPSBuZXh0JTIsCiAgICAgICAgICBjbGFzc05hbWUgPSAob2RkKSA/ICcgb2RkICcgOiAnIGV2ZW4gJzsKCiAgICAgICAgaWYgKGRhdGEucGFnZU9ianNbcGFnZV0pCiAgICAgICAgICBkYXRhLnBhZ2VPYmpzW25leHRdID0gZGF0YS5wYWdlT2Jqc1twYWdlXQogICAgICAgICAgICAucmVtb3ZlQ2xhc3MoJ3AnICsgcGFnZSArICcgb2RkIGV2ZW4nKQogICAgICAgICAgICAuYWRkQ2xhc3MoJ3AnICsgbmV4dCArIGNsYXNzTmFtZSk7CgogICAgICAgIGlmIChkYXRhLnBhZ2VQbGFjZVtwYWdlXSAmJiBkYXRhLnBhZ2VXcmFwW3BhZ2VdKSB7CiAgICAgICAgICBkYXRhLnBhZ2VQbGFjZVtuZXh0XSA9IG5leHQ7CiAgICAgICAgCiAgICAgICAgaWYgKGRhdGEucGFnZU9ianNbbmV4dF0uaGFzQ2xhc3MoJ2ZpeGVkJykpCiAgICAgICAgICBkYXRhLnBhZ2VXcmFwW25leHRdID0gZGF0YS5wYWdlV3JhcFtwYWdlXQogICAgICAgICAgICAuYXR0cigncGFnZScsIG5leHQpOwogICAgICAgIGVsc2UKICAgICAgICAgIGRhdGEucGFnZVdyYXBbbmV4dF0gPSBkYXRhLnBhZ2VXcmFwW3BhZ2VdLgogICAgICAgICAgICBjc3ModHVybk1ldGhvZHMuX3BhZ2VTaXplLmNhbGwodGhhdCwgbmV4dCwgdHJ1ZSkpLgogICAgICAgICAgICBhdHRyKCdwYWdlJywgbmV4dCk7CiAgICAKICAgICAgICAgIGlmIChkYXRhLnBhZ2VzW3BhZ2VdKQogICAgICAgICAgICBkYXRhLnBhZ2VzW25leHRdID0gZGF0YS5wYWdlc1twYWdlXQogICAgICAgICAgICAgIC5mbGlwKCdvcHRpb25zJywgewogICAgICAgICAgICAgICAgcGFnZTogbmV4dCwKICAgICAgICAgICAgICAgIG5leHQ6IChzaW5nbGUgfHwgb2RkKSA/IG5leHQrMSA6IG5leHQtMSwKICAgICAgICAgICAgICAgIGNvcm5lcnM6IChzaW5nbGUpID8gJ2FsbCcgOgogICAgICAgICAgICAgICAgICAoKG9kZCkgPyAnZm9yd2FyZCcgOiAnYmFja3dhcmQnKQogICAgICAgICAgICAgIH0pOwoKICAgICAgICAgIGlmIChjaGFuZ2UpIHsKICAgICAgICAgICAgZGVsZXRlIGRhdGEucGFnZXNbcGFnZV07CiAgICAgICAgICAgIGRlbGV0ZSBkYXRhLnBhZ2VQbGFjZVtwYWdlXTsKICAgICAgICAgICAgZGVsZXRlIGRhdGEucGFnZU9ianNbcGFnZV07CiAgICAgICAgICAgIGRlbGV0ZSBkYXRhLnBhZ2VXcmFwW3BhZ2VdOwogICAgICAgICAgICBkZWxldGUgZGF0YS5wYWdlT2Jqc1twYWdlXTsKICAgICAgICAgIH0KICAgICAgfQogICAgfTsKCiAgICBpZiAoY2hhbmdlPjApCiAgICAgIGZvciAocGFnZT1kYXRhLnRvdGFsUGFnZXM7IHBhZ2U+PWZyb207IHBhZ2UtLSkKICAgICAgICBtb3ZlKHBhZ2UpOwogICAgZWxzZQogICAgICBmb3IgKHBhZ2U9ZnJvbTsgcGFnZTw9ZGF0YS50b3RhbFBhZ2VzOyBwYWdlKyspCiAgICAgICAgbW92ZShwYWdlKTsKCiAgfSwKCiAgLy8gU2V0cyBvciBHZXRzIHRoZSBkaXNwbGF5IG1vZGUKCiAgZGlzcGxheTogZnVuY3Rpb24oZGlzcGxheSkgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCksCiAgICAgIGN1cnJlbnREaXNwbGF5ID0gZGF0YS5kaXNwbGF5OwoKICAgIGlmIChkaXNwbGF5KSB7CgogICAgICBpZiAoJC5pbkFycmF5KGRpc3BsYXksIGRpc3BsYXlzKT09LTEpCiAgICAgICAgdGhyb3cgdHVybkVycm9yKCciJytkaXNwbGF5ICsgJyIgaXMgbm90IGEgdmFsdWUgZm9yIGRpc3BsYXknKTsKICAgICAgCiAgICAgIGlmIChkaXNwbGF5PT0nc2luZ2xlJykgewogICAgICAgIGlmICghZGF0YS5wYWdlT2Jqc1swXSkgewoKICAgICAgICAgIHRoaXMudHVybignc3RvcCcpLgogICAgICAgICAgICBjc3MoeydvdmVyZmxvdyc6ICdoaWRkZW4nfSk7CgogICAgICAgICAgZGF0YS5wYWdlT2Jqc1swXSA9ICQoJzxkaXYgLz4nLAogICAgICAgICAgICAgIHsnY2xhc3MnOiAncGFnZSBwLXRlbXBvcmFsJ30pLgogICAgICAgICAgICBjc3Moe3dpZHRoOiB0aGlzLndpZHRoKCksIGhlaWdodDogdGhpcy5oZWlnaHQoKX0pLgogICAgICAgICAgICBhcHBlbmRUbyh0aGlzKTsKCiAgICAgICAgfQogICAgICB9IGVsc2UgewogICAgICAgIGlmIChkYXRhLnBhZ2VPYmpzWzBdKSB7CiAgICAgICAgICB0aGlzLnR1cm4oJ3N0b3AnKS5jc3MoeydvdmVyZmxvdyc6ICcnfSk7CiAgICAgICAgICBkYXRhLnBhZ2VPYmpzWzBdLnJlbW92ZSgpOwogICAgICAgICAgZGVsZXRlIGRhdGEucGFnZU9ianNbMF07CiAgICAgICAgfQogICAgICB9CgogICAgICBkYXRhLmRpc3BsYXkgPSBkaXNwbGF5OwoKICAgICAgaWYgKGN1cnJlbnREaXNwbGF5KSB7CiAgICAgICAgdmFyIHNpemUgPSB0aGlzLnR1cm4oJ3NpemUnKTsKICAgICAgICB0dXJuTWV0aG9kcy5fbW92ZVBhZ2VzLmNhbGwodGhpcywgMSwgMCk7CiAgICAgICAgdGhpcy50dXJuKCdzaXplJywgc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQpLgogICAgICAgICAgdHVybigndXBkYXRlJyk7CiAgICAgIH0KCiAgICAgIHJldHVybiB0aGlzOwoKICAgIH0gZWxzZQogICAgICByZXR1cm4gY3VycmVudERpc3BsYXk7CiAgCiAgfSwKCiAgLy8gR2V0cyBhbmQgc2V0cyB0aGUgZGlyZWN0aW9uIG9mIHRoZSBmbGlwYm9vawoKICBkaXJlY3Rpb246IGZ1bmN0aW9uKGRpcikgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCk7CgogICAgaWYgKHR5cGVvZihkaXIpPT0ndW5kZWZpbmVkJykgewoKICAgICAgcmV0dXJuIGRhdGEuZGlyZWN0aW9uOwoKICAgIH0gZWxzZSB7CgogICAgICBkaXIgPSBkaXIudG9Mb3dlckNhc2UoKTsKCiAgICAgIGlmICgkLmluQXJyYXkoZGlyLCBkaXJlY3Rpb25zKT09LTEpCiAgICAgICAgdGhyb3cgdHVybkVycm9yKCciJyArIGRpciArICciIGlzIG5vdCBhIHZhbHVlIGZvciBkaXJlY3Rpb24nKTsKCiAgICAgIGlmIChkaXI9PSdydGwnKSB7CiAgICAgICAgJCh0aGlzKS5hdHRyKCdkaXInLCAnbHRyJykuCiAgICAgICAgICBjc3Moe2RpcmVjdGlvbjogJ2x0cid9KTsKICAgICAgfQoKICAgICAgZGF0YS5kaXJlY3Rpb24gPSBkaXI7CgogICAgICBpZiAoZGF0YS5kb25lKQogICAgICAgIHRoaXMudHVybignc2l6ZScsICQodGhpcykud2lkdGgoKSwgJCh0aGlzKS5oZWlnaHQoKSk7CgogICAgICByZXR1cm4gdGhpczsKICAgIH0KCiAgfSwKCiAgLy8gRGV0ZWN0cyBpZiB0aGUgcGFnZXMgYXJlIGJlaW5nIGFuaW1hdGVkCgogIGFuaW1hdGluZzogZnVuY3Rpb24oKSB7CgogICAgcmV0dXJuIHRoaXMuZGF0YSgpLnBhZ2VNdi5sZW5ndGg+MDsKCiAgfSwKCiAgLy8gRGlzYWJsZXMgYW5kIGVuYWJsZXMgdGhlIGVmZmVjdAoKICBkaXNhYmxlOiBmdW5jdGlvbihib29sKSB7CgogICAgdmFyIHBhZ2UsCiAgICAgIGRhdGEgPSB0aGlzLmRhdGEoKSwKICAgICAgdmlldyA9IHRoaXMudHVybigndmlldycpOwoKICAgICAgZGF0YS5kaXNhYmxlZCA9IGJvb2w9PT11bmRlZmluZWQgfHwgYm9vbD09PXRydWU7CgogICAgZm9yIChwYWdlIGluIGRhdGEucGFnZXMpCiAgICAgIGlmIChoYXMocGFnZSwgZGF0YS5wYWdlcykpCiAgICAgICAgZGF0YS5wYWdlc1twYWdlXS5mbGlwKCdkaXNhYmxlJywgKGJvb2wpID8gJC5pbkFycmF5KHBhZ2UsIHZpZXcpIDogZmFsc2UpOwoKICAgIHJldHVybiB0aGlzOwoKICB9LAoKICAvLyBEaXNhYmxlcyBhbmQgZW5hYmxlcyB0aGUgZWZmZWN0CgogIGRpc2FibGVkOiBmdW5jdGlvbihkaXNhYmxlKSB7CgogICAgaWYgKGRpc2FibGU9PT11bmRlZmluZWQpIHsKICAgICAgcmV0dXJuIHRoaXMuZGF0YSgpLmRpc2FibGVkPT09dHJ1ZTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiB0aGlzLnR1cm4oJ2Rpc2FibGUnLCBkaXNhYmxlKTsKICAgIH0KCiAgfSwKCiAgLy8gR2V0cyBhbmQgc2V0cyB0aGUgc2l6ZQoKICBzaXplOiBmdW5jdGlvbih3aWR0aCwgaGVpZ2h0KSB7CgogICAgaWYgKHdpZHRoICYmIGhlaWdodCkgewoKICAgICAgdmFyIHBhZ2UsIHByb3AsCiAgICAgICAgZGF0YSA9IHRoaXMuZGF0YSgpLAogICAgICAgIHBhZ2VXaWR0aCA9IChkYXRhLmRpc3BsYXk9PSdkb3VibGUnKSA/IHdpZHRoLzIgOiB3aWR0aDsKCiAgICAgIHRoaXMuY3NzKHt3aWR0aDogd2lkdGgsIGhlaWdodDogaGVpZ2h0fSk7CgogICAgICBpZiAoZGF0YS5wYWdlT2Jqc1swXSkKICAgICAgICBkYXRhLnBhZ2VPYmpzWzBdLmNzcyh7d2lkdGg6IHBhZ2VXaWR0aCwgaGVpZ2h0OiBoZWlnaHR9KTsKICAgICAgCiAgICAgIGZvciAocGFnZSBpbiBkYXRhLnBhZ2VXcmFwKSB7CiAgICAgICAgaWYgKCFoYXMocGFnZSwgZGF0YS5wYWdlV3JhcCkpIGNvbnRpbnVlOwoKICAgICAgICBwcm9wID0gdHVybk1ldGhvZHMuX3BhZ2VTaXplLmNhbGwodGhpcywgcGFnZSwgdHJ1ZSk7CgogICAgICAgIGRhdGEucGFnZU9ianNbcGFnZV0uY3NzKHt3aWR0aDogcHJvcC53aWR0aCwgaGVpZ2h0OiBwcm9wLmhlaWdodH0pOwogICAgICAgIGRhdGEucGFnZVdyYXBbcGFnZV0uY3NzKHByb3ApOwoKICAgICAgICBpZiAoZGF0YS5wYWdlc1twYWdlXSkKICAgICAgICAgIGRhdGEucGFnZXNbcGFnZV0uY3NzKHt3aWR0aDogcHJvcC53aWR0aCwgaGVpZ2h0OiBwcm9wLmhlaWdodH0pOwogICAgICB9CgogICAgICB0aGlzLnR1cm4oJ3Jlc2l6ZScpOwoKICAgICAgcmV0dXJuIHRoaXM7CgogICAgfSBlbHNlIHsKICAgICAgCiAgICAgIHJldHVybiB7d2lkdGg6IHRoaXMud2lkdGgoKSwgaGVpZ2h0OiB0aGlzLmhlaWdodCgpfTsKCiAgICB9CiAgfSwKCiAgLy8gUmVzaXplcyBlYWNoIHBhZ2UKCiAgcmVzaXplOiBmdW5jdGlvbigpIHsKCiAgICB2YXIgcGFnZSwgZGF0YSA9IHRoaXMuZGF0YSgpOwoKICAgIGlmIChkYXRhLnBhZ2VzWzBdKSB7CiAgICAgIGRhdGEucGFnZVdyYXBbMF0uY3NzKHtsZWZ0OiAtdGhpcy53aWR0aCgpfSk7CiAgICAgIGRhdGEucGFnZXNbMF0uZmxpcCgncmVzaXplJywgdHJ1ZSk7CiAgICB9CgogICAgZm9yIChwYWdlID0gMTsgcGFnZSA8PSBkYXRhLnRvdGFsUGFnZXM7IHBhZ2UrKykKICAgICAgaWYgKGRhdGEucGFnZXNbcGFnZV0pCiAgICAgICAgZGF0YS5wYWdlc1twYWdlXS5mbGlwKCdyZXNpemUnLCB0cnVlKTsKCgogIH0sCgogIC8vIFJlbW92ZXMgYW4gYW5pbWF0aW9uIGZyb20gdGhlIGNhY2hlCgogIF9yZW1vdmVNdjogZnVuY3Rpb24ocGFnZSkgewoKICAgIHZhciBpLCBkYXRhID0gdGhpcy5kYXRhKCk7CiAgICAgIAogICAgZm9yIChpPTA7IGk8ZGF0YS5wYWdlTXYubGVuZ3RoOyBpKyspCiAgICAgIGlmIChkYXRhLnBhZ2VNdltpXT09cGFnZSkgewogICAgICAgIGRhdGEucGFnZU12LnNwbGljZShpLCAxKTsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgfQoKICAgIHJldHVybiBmYWxzZTsKCiAgfSwKCiAgLy8gQWRkcyBhbiBhbmltYXRpb24gdG8gdGhlIGNhY2hlCiAgCiAgX2FkZE12OiBmdW5jdGlvbihwYWdlKSB7CgogICAgdmFyIGRhdGEgPSB0aGlzLmRhdGEoKTsKCiAgICB0dXJuTWV0aG9kcy5fcmVtb3ZlTXYuY2FsbCh0aGlzLCBwYWdlKTsKICAgIGRhdGEucGFnZU12LnB1c2gocGFnZSk7CgogIH0sCgogIC8vIEdldHMgaW5kZXhlcyBmb3IgYSB2aWV3CgogIF92aWV3OiBmdW5jdGlvbihwYWdlKSB7CiAgCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpOwogICAgCiAgICBwYWdlID0gcGFnZSB8fCBkYXRhLnBhZ2U7CgogICAgaWYgKGRhdGEuZGlzcGxheT09J2RvdWJsZScpCiAgICAgIHJldHVybiAocGFnZSUyKSA/IFtwYWdlLTEsIHBhZ2VdIDogW3BhZ2UsIHBhZ2UrMV07CiAgICBlbHNlCiAgICAgIHJldHVybiBbcGFnZV07CgogIH0sCgogIC8vIEdldHMgYSB2aWV3CgogIHZpZXc6IGZ1bmN0aW9uKHBhZ2UpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLAogICAgICB2aWV3ID0gdHVybk1ldGhvZHMuX3ZpZXcuY2FsbCh0aGlzLCBwYWdlKTsKCiAgICBpZiAoZGF0YS5kaXNwbGF5PT0nZG91YmxlJykKICAgICAgcmV0dXJuIFsodmlld1swXT4wKSA/IHZpZXdbMF0gOiAwLAogICAgICAgICh2aWV3WzFdPD1kYXRhLnRvdGFsUGFnZXMpID8gdmlld1sxXSA6IDBdOwogICAgZWxzZQogICAgICByZXR1cm4gWyh2aWV3WzBdPjAgJiYgdmlld1swXTw9ZGF0YS50b3RhbFBhZ2VzKSA/IHZpZXdbMF0gOiAwXTsKCiAgfSwKCiAgLy8gU3RvcHMgYW5pbWF0aW9ucwoKICBzdG9wOiBmdW5jdGlvbihpZ25vcmUsIGFuaW1hdGUpIHsKCiAgICBpZiAodGhpcy50dXJuKCdhbmltYXRpbmcnKSkgewogICAgICB2YXIgaSwgb3B0cywgcGFnZSwKICAgICAgICBkYXRhID0gdGhpcy5kYXRhKCksCiAgICAgICAgcGFnZXMgPSBkYXRhLnBhZ2VNdjsKCiAgICAgIGRhdGEucGFnZU12ID0gW107CgogICAgICBpZiAoZGF0YS50cGFnZSkgewogICAgICAgIGRhdGEucGFnZSA9IGRhdGEudHBhZ2U7CiAgICAgICAgZGVsZXRlIGRhdGFbJ3RwYWdlJ107CiAgICAgIH0KCiAgICAgIGZvciAoaSA9IDA7IGk8cGFnZXMubGVuZ3RoOyBpKyspIHsKCiAgICAgICAgcGFnZSA9IGRhdGEucGFnZXNbcGFnZXNbaV1dOwogICAgICAgIG9wdHMgPSBwYWdlLmRhdGEoKS5mLm9wdHM7CgogICAgICAgIHBhZ2UuZmxpcCgnaGlkZUZvbGRlZFBhZ2UnLCBmYWxzZSk7CgogICAgICAgIGZsaXBNZXRob2RzLl9tb3ZlRm9sZGluZ1BhZ2UuY2FsbChwYWdlLCBmYWxzZSk7CgogICAgICAgIGRhdGEucGFnZVBsYWNlW29wdHMubmV4dF0gPSBvcHRzLm5leHQ7CgogICAgICAgIGlmIChvcHRzLmZvcmNlKSB7CiAgICAgICAgICBvcHRzLm5leHQgPSAob3B0cy5wYWdlJTI9PT0wKSA/IG9wdHMucGFnZS0xIDogb3B0cy5wYWdlKzE7CiAgICAgICAgICBkZWxldGUgb3B0c1snZm9yY2UnXTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgICB0aGlzLnR1cm4oJ3VwZGF0ZScpOwoKICAgIHJldHVybiB0aGlzOwogIAogIH0sCgogIC8vIEdldHMgYW5kIHNldHMgdGhlIG51bWJlciBvZiBwYWdlcwoKICBwYWdlczogZnVuY3Rpb24ocGFnZXMpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpOwoKICAgIGlmIChwYWdlcykgewogICAgICBpZiAocGFnZXM8ZGF0YS50b3RhbFBhZ2VzKSB7CgogICAgICAgIGZvciAodmFyIHBhZ2UgPSBwYWdlcysxOyBwYWdlPD1kYXRhLnRvdGFsUGFnZXM7IHBhZ2UrKykKICAgICAgICAgIHRoaXMudHVybigncmVtb3ZlUGFnZScsIHBhZ2UpOwoKICAgICAgICBpZiAodGhpcy50dXJuKCdwYWdlJyk+cGFnZXMpCiAgICAgICAgICB0aGlzLnR1cm4oJ3BhZ2UnLCBwYWdlcyk7CiAgICAgIH0KCiAgICAgIGRhdGEudG90YWxQYWdlcyA9IHBhZ2VzOwoKICAgICAgcmV0dXJuIHRoaXM7CiAgICB9IGVsc2UKICAgICAgcmV0dXJuIGRhdGEudG90YWxQYWdlczsKCiAgfSwKCiAgLy8gQ2hlY2tzIG1pc3NpbmcgcGFnZXMKCiAgX21pc3NpbmcgOiBmdW5jdGlvbihwYWdlKSB7CiAgICAKICAgIHZhciBwLAogICAgICBkYXRhID0gdGhpcy5kYXRhKCksCiAgICAgIHJhbmdlID0gdGhpcy50dXJuKCdyYW5nZScsIHBhZ2UpLAogICAgICBtaXNzaW5nID0gW107CgogICAgZm9yIChwID0gcmFuZ2VbMF07IHA8PXJhbmdlWzFdOyBwKyspIHsKICAgICAgaWYgKCFkYXRhLnBhZ2VPYmpzW3BdKQogICAgICAgIG1pc3NpbmcucHVzaChwKTsKICAgIH0KCiAgICBpZiAobWlzc2luZy5sZW5ndGg+MCkKICAgICAgdGhpcy50cmlnZ2VyKCdtaXNzaW5nJywgW21pc3NpbmddKTsKICAgIAogIH0sCgogIC8vIFNldHMgYSBwYWdlIHdpdGhvdXQgZWZmZWN0CgogIF9maXRQYWdlOiBmdW5jdGlvbihwYWdlKSB7CgogICAgdmFyIGRhdGEgPSB0aGlzLmRhdGEoKSwKICAgICAgbmV3VmlldyA9IHRoaXMudHVybigndmlldycsIHBhZ2UpOwogICAgCiAgICB0dXJuTWV0aG9kcy5fbWlzc2luZy5jYWxsKHRoaXMsIHBhZ2UpOwoKICAgIGlmICghZGF0YS5wYWdlT2Jqc1twYWdlXSkKICAgICAgcmV0dXJuOwoKICAgIGRhdGEucGFnZSA9IHBhZ2U7CgogICAgdGhpcy50dXJuKCdzdG9wJyk7CiAgICB0dXJuTWV0aG9kcy5fcmVtb3ZlRnJvbURPTS5jYWxsKHRoaXMpOwogICAgdHVybk1ldGhvZHMuX21ha2VSYW5nZS5jYWxsKHRoaXMpOwogICAgdHVybk1ldGhvZHMuX3VwZGF0ZVNoYWRvdy5jYWxsKHRoaXMpOwogICAgdGhpcy50cmlnZ2VyKCd0dXJuZWQnLCBbcGFnZSwgbmV3Vmlld10pOwoKICAgIGlmIChkYXRhLm9wdHMuYXV0b0NlbnRlcikKICAgICAgdGhpcy50dXJuKCdjZW50ZXInKTsKCiAgfSwKICAKICAvLyBUdXJucyB0byBhIHBhZ2UKCiAgX3R1cm5QYWdlOiBmdW5jdGlvbihwYWdlLCBmcm9tTW91c2VBY3Rpb24pIHsKCiAgICB2YXIgY3VycmVudCwgbmV4dCwKICAgICAgZGF0YSA9IHRoaXMuZGF0YSgpLAogICAgICBwbGFjZSA9IGRhdGEucGFnZVBsYWNlW3BhZ2VdLAogICAgICB2aWV3ID0gdGhpcy50dXJuKCd2aWV3JyksCiAgICAgIG5ld1ZpZXcgPSB0aGlzLnR1cm4oJ3ZpZXcnLCBwYWdlKTsKICAKICAgIGlmIChkYXRhLnBhZ2UhPXBhZ2UpIHsKCiAgICAgIHZhciBldmVudCA9ICQuRXZlbnQoJ3R1cm5pbmcnKTsKICAgICAgdGhpcy50cmlnZ2VyKGV2ZW50LCBbcGFnZSwgbmV3Vmlld10pOwoKICAgICAgaWYgKGV2ZW50LmlzRGVmYXVsdFByZXZlbnRlZCgpKQogICAgICAgIHJldHVybjsKCiAgICAgIGlmICgkLmluQXJyYXkoMSwgbmV3VmlldykhPS0xKQogICAgICAgIHRoaXMudHJpZ2dlcignZmlyc3QnKTsKICAgICAgaWYgKCQuaW5BcnJheShkYXRhLnRvdGFsUGFnZXMsIG5ld1ZpZXcpIT0tMSkKICAgICAgICB0aGlzLnRyaWdnZXIoJ2xhc3QnKTsKCiAgICB9CgoKCiAgICBpZiAoZnJvbU1vdXNlQWN0aW9uKSB7CgogICAgICB0aGlzLnR1cm4oJ3N0b3AnLCBwbGFjZSk7CgogICAgfSBlbHNlIHsKCiAgICAgIHR1cm5NZXRob2RzLl9taXNzaW5nLmNhbGwodGhpcywgcGFnZSk7CiAgICAgIAogICAgICBpZiAoIWRhdGEucGFnZU9ianNbcGFnZV0pCiAgICAgICAgcmV0dXJuOwoKICAgICAgdGhpcy50dXJuKCdzdG9wJyk7CiAgICAgIGRhdGEucGFnZSA9IHBhZ2U7CiAgICB9CiAgICAKCiAgICB0dXJuTWV0aG9kcy5fbWFrZVJhbmdlLmNhbGwodGhpcyk7CgogICAgaWYgKGRhdGEuZGlzcGxheT09J3NpbmdsZScpIHsKICAgICAgY3VycmVudCA9IHZpZXdbMF07CiAgICAgIG5leHQgPSBuZXdWaWV3WzBdOwogICAgfSBlbHNlIGlmICh2aWV3WzFdICYmIHBhZ2U+dmlld1sxXSkgewogICAgICBjdXJyZW50ID0gdmlld1sxXTsKICAgICAgbmV4dCA9IG5ld1ZpZXdbMF07CiAgICB9IGVsc2UgaWYgKHZpZXdbMF0gJiYgcGFnZTx2aWV3WzBdKSB7CiAgICAgIGN1cnJlbnQgPSB2aWV3WzBdOwogICAgICBuZXh0ID0gbmV3Vmlld1sxXTsKICAgIH0KCiAgICBpZiAoZGF0YS5wYWdlc1tjdXJyZW50XSkgewoKICAgICAgdmFyIG9wdHMgPSBkYXRhLnBhZ2VzW2N1cnJlbnRdLmRhdGEoKS5mLm9wdHM7CiAgICAgIGRhdGEudHBhZ2UgPSBuZXh0OwogICAgICAKICAgICAgaWYgKG9wdHMubmV4dCE9bmV4dCkgewogICAgICAgIG9wdHMubmV4dCA9IG5leHQ7CiAgICAgICAgZGF0YS5wYWdlUGxhY2VbbmV4dF0gPSBvcHRzLnBhZ2U7CiAgICAgICAgb3B0cy5mb3JjZSA9IHRydWU7CiAgICAgIH0KCiAgICAgIGlmIChkYXRhLmRpc3BsYXk9PSdzaW5nbGUnKSB7CgogICAgICAgIGlmIChkYXRhLmRpcmVjdGlvbj09J2x0cicpIHsKICAgICAgICAgIGRhdGEucGFnZXNbY3VycmVudF0uZmxpcCgndHVyblBhZ2UnLAogICAgICAgICAgICAobmV3Vmlld1swXSA+IHZpZXdbMF0pID8gJ3InIDogJ2wnKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgZGF0YS5wYWdlc1tjdXJyZW50XS5mbGlwKCd0dXJuUGFnZScsCiAgICAgICAgICAgIChuZXdWaWV3WzBdID4gdmlld1swXSkgPyAnbCcgOiAncicpOwogICAgICAgIH0KCiAgICAgIH0gZWxzZSB7CiAgICAgICAgCiAgICAgICAgZGF0YS5wYWdlc1tjdXJyZW50XS5mbGlwKCd0dXJuUGFnZScpOwoKICAgICAgfQogICAgfQoKICB9LAoKICAvLyBHZXRzIGFuZCBzZXRzIGEgcGFnZQoKICBwYWdlOiBmdW5jdGlvbihwYWdlKSB7CgogICAgcGFnZSA9IHBhcnNlSW50KHBhZ2UsIDEwKTsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpOwoKICAgIGlmIChwYWdlPjAgJiYgcGFnZTw9ZGF0YS50b3RhbFBhZ2VzKSB7CiAgICAgIGlmICghZGF0YS5kb25lIHx8ICQuaW5BcnJheShwYWdlLCB0aGlzLnR1cm4oJ3ZpZXcnKSkhPS0xKQogICAgICAgIHR1cm5NZXRob2RzLl9maXRQYWdlLmNhbGwodGhpcywgcGFnZSk7CiAgICAgIGVsc2UKICAgICAgICB0dXJuTWV0aG9kcy5fdHVyblBhZ2UuY2FsbCh0aGlzLCBwYWdlKTsKICAgIAogICAgICByZXR1cm4gdGhpczsKCiAgICB9IGVsc2UKICAgICAgcmV0dXJuIGRhdGEucGFnZTsKICAKICB9LAoKICAvLyBUdXJucyB0byB0aGUgbmV4dCB2aWV3CgogIG5leHQ6IGZ1bmN0aW9uKCkgewoKICAgIHJldHVybiB0aGlzLnR1cm4oJ3BhZ2UnLAogICAgICB0dXJuTWV0aG9kcy5fdmlldy5jYWxsKHRoaXMsIHRoaXMuZGF0YSgpLnBhZ2UpLnBvcCgpICsgMSk7CiAgCiAgfSwKCiAgLy8gVHVybnMgdG8gdGhlIHByZXZpb3VzIHZpZXcKCiAgcHJldmlvdXM6IGZ1bmN0aW9uKCkgewogICAgCiAgICByZXR1cm4gdGhpcy50dXJuKCdwYWdlJywKICAgICAgdHVybk1ldGhvZHMuX3ZpZXcuY2FsbCh0aGlzLCB0aGlzLmRhdGEoKS5wYWdlKS5zaGlmdCgpIC0gMSk7CgogIH0sCgogIHBlZWw6IGZ1bmN0aW9uKGNvcm5lciwgYW5pbWF0ZSkgewogICAgCiAgICByZXR1cm4gdGhpczsKCiAgfSwKCiAgLy8gQWRkcyBhIG1vdGlvbiB0byB0aGUgaW50ZXJuYWwgbGlzdAogIC8vIFRoaXMgZXZlbnQgaXMgY2FsbGVkIGluIGNvbnRleHQgb2YgZmxpcAoKICBfYWRkTW90aW9uUGFnZTogZnVuY3Rpb24oKSB7CgogICAgdmFyIG9wdHMgPSAkKHRoaXMpLmRhdGEoKS5mLm9wdHMsCiAgICAgIHR1cm4gPSBvcHRzLnR1cm4sCiAgICAgIGRkID0gdHVybi5kYXRhKCk7CgogICAgdHVybk1ldGhvZHMuX2FkZE12LmNhbGwodHVybiwgb3B0cy5wYWdlKTsKICAgIGRkLnBhZ2VQbGFjZVtvcHRzLm5leHRdID0gb3B0cy5wYWdlOwogICAgdHVybi50dXJuKCd1cGRhdGUnKTsKCiAgfSwKCiAgLy8gVGhpcyBldmVudCBpcyBjYWxsZWQgaW4gY29udGV4dCBvZiBmbGlwCgogIF9zdGFydDogZnVuY3Rpb24oZSwgb3B0cywgY29ybmVyKSB7CgogICAgdmFyIGRhdGEgPSBvcHRzLnR1cm4uZGF0YSgpOwoKICAgIGlmIChlLmlzRGVmYXVsdFByZXZlbnRlZCgpKSB7CiAgICAgIHR1cm5NZXRob2RzLl91cGRhdGVTaGFkb3cuY2FsbChvcHRzLnR1cm4pOwogICAgICByZXR1cm47CiAgICB9CgogICAgaWYgKGRhdGEuZGlzcGxheT09J3NpbmdsZScgJiYgY29ybmVyKSB7CgogICAgICBpZiAoKGNvcm5lcj09J2wnICYmIGRhdGEuZGlyZWN0aW9uPT0nbHRyJykKICAgICAgICB8fAogICAgICAgIChjb3JuZXI9PSdyJyAmJiBkYXRhLmRpcmVjdGlvbj09J3J0bCcpKQogICAgICB7CiAgICAgICAgCiAgICAgICAgb3B0cy5uZXh0ID0gKG9wdHMubmV4dDxvcHRzLnBhZ2UpID8gb3B0cy5uZXh0IDogb3B0cy5wYWdlLTE7CiAgICAgICAgb3B0cy5mb3JjZSA9IHRydWU7CgogICAgICB9IGVsc2UgewoKICAgICAgICBvcHRzLm5leHQgPSAob3B0cy5uZXh0Pm9wdHMucGFnZSkgPyBvcHRzLm5leHQgOiBvcHRzLnBhZ2UrMTsKCiAgICAgIH0KCiAgICB9CgogICAgdHVybk1ldGhvZHMuX2FkZE1vdGlvblBhZ2UuY2FsbChlLnRhcmdldCk7CiAgICB0dXJuTWV0aG9kcy5fdXBkYXRlU2hhZG93LmNhbGwob3B0cy50dXJuKTsKICB9LAoKICAvLyBUaGlzIGV2ZW50IGlzIGNhbGxlZCBpbiBjb250ZXh0IG9mIGZsaXAKCiAgX2VuZDogZnVuY3Rpb24oZSwgb3B0cywgdHVybmVkKSB7CgogICAgdmFyIHRoYXQgPSAkKGUudGFyZ2V0KSwKICAgICAgZGF0YSA9IHRoYXQuZGF0YSgpLmYsCiAgICAgIHR1cm4gPSBvcHRzLnR1cm4sCiAgICAgIGRkID0gdHVybi5kYXRhKCk7CgogICAgaWYgKHR1cm5lZCB8fCBkZC50cGFnZSkgewoKICAgICAgaWYgKGRkLnRwYWdlPT1vcHRzLm5leHQgfHwgZGQudHBhZ2U9PW9wdHMucGFnZSkgewogICAgICAgIGRlbGV0ZSBkZFsndHBhZ2UnXTsKICAgICAgICB0dXJuTWV0aG9kcy5fZml0UGFnZS5jYWxsKHR1cm4sIGRkLnRwYWdlIHx8IG9wdHMubmV4dCwgdHJ1ZSk7CiAgICAgIH0KCiAgICB9IGVsc2UgewoKICAgICAgdHVybk1ldGhvZHMuX3JlbW92ZU12LmNhbGwodHVybiwgb3B0cy5wYWdlKTsKICAgICAgdHVybk1ldGhvZHMuX3VwZGF0ZVNoYWRvdy5jYWxsKHR1cm4pOwogICAgICB0dXJuLnR1cm4oJ3VwZGF0ZScpOwoKICAgIH0KICAgIAogIH0sCiAgCiAgLy8gVGhpcyBldmVudCBpcyBjYWxsZWQgaW4gY29udGV4dCBvZiBmbGlwCgogIF9wcmVzc2VkOiBmdW5jdGlvbihlKSB7CgogICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKCiAgICB2YXIgcGFnZSwKICAgICAgZGF0YSA9ICQoZS50YXJnZXQpLmRhdGEoKS5mLAogICAgICBwYWdlcyA9IGRhdGEub3B0cy50dXJuLmRhdGEoKS5wYWdlczsKCiAgICBmb3IgKHBhZ2UgaW4gcGFnZXMpCiAgICAgIGlmIChwYWdlIT1kYXRhLm9wdHMucGFnZSkKICAgICAgICBwYWdlc1twYWdlXS5mbGlwKCdkaXNhYmxlJywgdHJ1ZSk7CgogICAgcmV0dXJuIGRhdGEudGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpOwoKICB9LAoKICAvLyBUaGlzIGV2ZW50IGlzIGNhbGxlZCBpbiBjb250ZXh0IG9mIGZsaXAKCiAgX3JlbGVhc2VkOiBmdW5jdGlvbihlLCBwb2ludCkgewoKICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CgogICAgdmFyIG91dEFyZWEsCiAgICAgIHBhZ2UgPSAkKGUudGFyZ2V0KSwKICAgICAgZGF0YSA9IHBhZ2UuZGF0YSgpLmYsCiAgICAgIHR1cm4gPSBkYXRhLm9wdHMudHVybiwKICAgICAgdHVybkRhdGEgPSB0dXJuLmRhdGEoKTsKICAgIAogICAgaWYgKHR1cm5EYXRhLmRpc3BsYXk9PSdzaW5nbGUnKSB7CiAgICAgIG91dEFyZWEgPSAocG9pbnQuY29ybmVyPT0ncicpID8KICAgICAgICBwb2ludC54PHBhZ2Uud2lkdGgoKS8yOgogICAgICAgIHBvaW50Lng+cGFnZS53aWR0aCgpLzI7CiAgICB9IGVsc2UgewogICAgICBvdXRBcmVhID0gcG9pbnQueDwwIHx8IHBvaW50Lng+cGFnZS53aWR0aCgpOwogICAgfQoKICAgIGlmICgobmV3IERhdGUoKSkuZ2V0VGltZSgpLWRhdGEudGltZTwyMDAgfHwgb3V0QXJlYSkgewoKICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwoKICAgICAgdHVybk1ldGhvZHMuX3R1cm5QYWdlLmNhbGwoCiAgICAgICAgdHVybiwKICAgICAgICBkYXRhLm9wdHMubmV4dCwKICAgICAgICBmbGlwTWV0aG9kcy5fY29ybmVyQWN0aXZhdGVkLmNhbGwocGFnZSwgcG9pbnQsIDEpID09PSBmYWxzZQogICAgICApOwoKICAgIH0KCiAgICB0dXJuRGF0YS5tb3VzZUFjdGlvbiA9IGZhbHNlOwoKICB9LAoKICAvLyBUaGlzIGV2ZW50IGlzIGNhbGxlZCBpbiBjb250ZXh0IG9mIGZsaXAKICAKICBfZmxpcDogZnVuY3Rpb24oZSkgewoKICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CgogICAgdmFyIG9wdHMgPSAkKGUudGFyZ2V0KS5kYXRhKCkuZi5vcHRzOwoKICAgIG9wdHMudHVybi50cmlnZ2VyKCd0dXJuJywgW29wdHMubmV4dF0pOwoKICAgIGlmIChvcHRzLnR1cm4uZGF0YSgpLm9wdHMuYXV0b0NlbnRlcikKICAgICAgb3B0cy50dXJuLnR1cm4oJ2NlbnRlcicsIG9wdHMubmV4dCk7CgogIH0sCgogIC8vIENhbGN1bGF0ZSB0aGUgei1pbmRleCB2YWx1ZSBmb3IgcGFnZXMgZHVyaW5nIHRoZSBhbmltYXRpb24KCiAgY2FsY3VsYXRlWjogZnVuY3Rpb24obXYpIHsKCiAgICB2YXIgaSwgcGFnZSwgbmV4dFBhZ2UsIHBsYWNlUGFnZSwgZHBhZ2UsCiAgICAgIHRoYXQgPSB0aGlzLAogICAgICBkYXRhID0gdGhpcy5kYXRhKCksCiAgICAgIHZpZXcgPSB0aGlzLnR1cm4oJ3ZpZXcnKSwKICAgICAgY3VycmVudFBhZ2UgPSB2aWV3WzBdIHx8IHZpZXdbMV0sCiAgICAgIHIgPSB7cGFnZVo6IHt9LCBwYXJ0Wjoge30sIHBhZ2VWOiB7fX0sCgogICAgICBhZGRWaWV3ID0gZnVuY3Rpb24ocGFnZSkgewogICAgICAgIHZhciB2aWV3ID0gdGhhdC50dXJuKCd2aWV3JywgcGFnZSk7CiAgICAgICAgaWYgKHZpZXdbMF0pIHIucGFnZVZbdmlld1swXV0gPSB0cnVlOwogICAgICAgIGlmICh2aWV3WzFdKSByLnBhZ2VWW3ZpZXdbMV1dID0gdHJ1ZTsKICAgICAgfTsKICAgIAogICAgZm9yIChpID0gMDsgaTxtdi5sZW5ndGg7IGkrKykgewogICAgICBwYWdlID0gbXZbaV07CiAgICAgIG5leHRQYWdlID0gZGF0YS5wYWdlc1twYWdlXS5kYXRhKCkuZi5vcHRzLm5leHQ7CiAgICAgIHBsYWNlUGFnZSA9IGRhdGEucGFnZVBsYWNlW3BhZ2VdOwogICAgICBhZGRWaWV3KHBhZ2UpOwogICAgICBhZGRWaWV3KG5leHRQYWdlKTsKICAgICAgZHBhZ2UgPSAoZGF0YS5wYWdlUGxhY2VbbmV4dFBhZ2VdPT1uZXh0UGFnZSkgPyBuZXh0UGFnZSA6IHBhZ2U7CiAgICAgIHIucGFnZVpbZHBhZ2VdID0gZGF0YS50b3RhbFBhZ2VzIC0gTWF0aC5hYnMoY3VycmVudFBhZ2UtZHBhZ2UpOwogICAgICByLnBhcnRaW3BsYWNlUGFnZV0gPSBkYXRhLnRvdGFsUGFnZXMqMiArIE1hdGguYWJzKGN1cnJlbnRQYWdlLWRwYWdlKTsKICAgIH0KCiAgICByZXR1cm4gcjsKICB9LAoKICAvLyBVcGRhdGVzIHRoZSB6LWluZGV4IGFuZCBkaXNwbGF5IHByb3BlcnR5IG9mIGV2ZXJ5IHBhZ2UKCiAgdXBkYXRlOiBmdW5jdGlvbigpIHsKCiAgICB2YXIgcGFnZSwKICAgICAgZGF0YSA9IHRoaXMuZGF0YSgpOwoKICAgIGlmIChkYXRhLnBhZ2VNdi5sZW5ndGggJiYgZGF0YS5wYWdlTXZbMF0hPT0wKSB7CgogICAgICAvLyBVcGRhdGUgbW90aW9uCgogICAgICB2YXIgcCwKICAgICAgICBmaXhlZCwKICAgICAgICBwb3MgPSB0aGlzLnR1cm4oJ2NhbGN1bGF0ZVonLCBkYXRhLnBhZ2VNdiksCiAgICAgICAgdmlldyA9IHRoaXMudHVybigndmlldycsIGRhdGEudHBhZ2UpOwogICAgCiAgICAgIGZvciAocGFnZSBpbiBkYXRhLnBhZ2VXcmFwKSB7CgogICAgICAgIGlmICghaGFzKHBhZ2UsIGRhdGEucGFnZVdyYXApKQogICAgICAgICAgY29udGludWU7CgogICAgICAgIGZpeGVkID0gZGF0YS5wYWdlT2Jqc1twYWdlXS5oYXNDbGFzcygnZml4ZWQnKTsKCiAgICAgICAgZGF0YS5wYWdlV3JhcFtwYWdlXS5jc3MoewogICAgICAgICAgZGlzcGxheTogKHBvcy5wYWdlVltwYWdlXSB8fCBmaXhlZCkgPyAnJyA6ICdub25lJywKICAgICAgICAgICd6LWluZGV4JzogcG9zLnBhZ2VaW3BhZ2VdIHx8ICgoZml4ZWQpID8gLTEgOiAwKQogICAgICAgIH0pOwoKICAgICAgICBpZiAoKHAgPSBkYXRhLnBhZ2VzW3BhZ2VdKSkgewogICAgICAgICAgcC5mbGlwKCd6JywgcG9zLnBhcnRaW3BhZ2VdIHx8IG51bGwpOwoKICAgICAgICAgIGlmIChwb3MucGFnZVZbcGFnZV0pCiAgICAgICAgICAgIHAuZmxpcCgncmVzaXplJyk7CgogICAgICAgICAgaWYgKGRhdGEudHBhZ2UpCiAgICAgICAgICAgIHAuZmxpcCgnZGlzYWJsZScsIHRydWUpOyAvLyBkYXRhLmRpc2FibGVkIHx8IHBhZ2UhPWFwYWdlCiAgICAgICAgfQogICAgICB9CiAgCiAgICB9IGVsc2UgewoKICAgICAgLy8gVXBkYXRlIHN0YXRpYyBwYWdlcwoKICAgICAgZm9yIChwYWdlIGluIGRhdGEucGFnZVdyYXApIHsKCiAgICAgICAgaWYgKCFoYXMocGFnZSwgZGF0YS5wYWdlV3JhcCkpCiAgICAgICAgICBjb250aW51ZTsKCiAgICAgICAgdmFyIHBhZ2VMb2NhdGlvbiA9IHR1cm5NZXRob2RzLl9zZXRQYWdlTG9jLmNhbGwodGhpcywgcGFnZSk7CgogICAgICAgIGlmIChkYXRhLnBhZ2VzW3BhZ2VdKQogICAgICAgICAgZGF0YS5wYWdlc1twYWdlXS5mbGlwKCdkaXNhYmxlJywKICAgICAgICAgICAgZGF0YS5kaXNhYmxlZCB8fCBwYWdlTG9jYXRpb24hPTEpLmZsaXAoJ3onLCBudWxsKTsKCiAgICAgIH0KICAgIH0KICB9LAoKICAvLyBVcGRhdGVzIHRoZSBwb3NpdGlvbiBhbmQgc2l6ZSBvZiB0aGUgZmxpcGJvb2sncyBzaGFkb3cKCiAgX3VwZGF0ZVNoYWRvdzogZnVuY3Rpb24oKSB7CiAgICAKICAgIHZhciB2aWV3LCB2aWV3Miwgc2hhZG93LAogICAgICBkYXRhID0gdGhpcy5kYXRhKCksCiAgICAgIHdpZHRoID0gdGhpcy53aWR0aCgpLAogICAgICBoZWlnaHQgPSB0aGlzLmhlaWdodCgpLAogICAgICBwYWdlV2lkdGggPSAoZGF0YS5kaXNwbGF5PT0nc2luZ2xlJykgPyB3aWR0aCA6IHdpZHRoLzI7CgogICAgdmlldyA9IHRoaXMudHVybigndmlldycpOwoKICAgIGlmICghZGF0YS5zaGFkb3cpIHsKICAgICAgZGF0YS5zaGFkb3cgPSAkKCc8ZGl2IC8+JywKICAgICAgewogICAgICAgICdjbGFzcyc6ICdzaGFkb3cnLAogICAgICAgICdjc3MnOiBkaXZBdHQoMCwgMCwgMCkuY3NzCiAgICAgIH0pLgogICAgICBhcHBlbmRUbyh0aGlzKTsKICAgIH0KCiAgICBmb3IgKHZhciBpID0gMDsgaTxkYXRhLnBhZ2VNdi5sZW5ndGg7IGkrKykgewogICAgICBpZiAoIXZpZXdbMF0gfHwgIXZpZXdbMV0pCiAgICAgICAgYnJlYWs7CiAgICAKICAgICAgdmlldyA9IHRoaXMudHVybigndmlldycsIGRhdGEucGFnZXNbZGF0YS5wYWdlTXZbaV1dLmRhdGEoKS5mLm9wdHMubmV4dCk7CiAgICAgIHZpZXcyID0gdGhpcy50dXJuKCd2aWV3JywgZGF0YS5wYWdlTXZbaV0pOwoKICAgICAgdmlld1swXSA9IHZpZXdbMF0gJiYgdmlldzJbMF07CiAgICAgIHZpZXdbMV0gPSB2aWV3WzFdICYmIHZpZXcyWzFdOwogICAgfQoKICAgIGlmICghdmlld1swXSkgc2hhZG93ID0gKGRhdGEuZGlyZWN0aW9uPT0nbHRyJykgPyAxIDogMjsKICAgIGVsc2UgaWYgKCF2aWV3WzFdKSBzaGFkb3cgPSAoZGF0YS5kaXJlY3Rpb249PSdsdHInKSA/IDIgOiAxOwogICAgZWxzZSBzaGFkb3cgPSAzOwoKICAgIHN3aXRjaCAoc2hhZG93KSB7CiAgICAgIGNhc2UgMToKICAgICAgICBkYXRhLnNoYWRvdy5jc3MoewogICAgICAgICAgd2lkdGg6IHBhZ2VXaWR0aCwKICAgICAgICAgIGhlaWdodDogaGVpZ2h0LAogICAgICAgICAgdG9wOiAwLAogICAgICAgICAgbGVmdDogcGFnZVdpZHRoCiAgICAgICAgfSk7CiAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgMjoKICAgICAgICBkYXRhLnNoYWRvdy5jc3MoewogICAgICAgICAgd2lkdGg6IHBhZ2VXaWR0aCwKICAgICAgICAgIGhlaWdodDogaGVpZ2h0LAogICAgICAgICAgdG9wOiAwLAogICAgICAgICAgbGVmdDogMAogICAgICAgIH0pOwogICAgICAgIGJyZWFrOwogICAgICBjYXNlIDM6CiAgICAgICAgZGF0YS5zaGFkb3cuY3NzKHsKICAgICAgICAgIHdpZHRoOiB3aWR0aCwKICAgICAgICAgIGhlaWdodDogaGVpZ2h0LAogICAgICAgICAgdG9wOiAwLAogICAgICAgICAgbGVmdDogMAogICAgICAgIH0pOwogICAgICAgIGJyZWFrOwogICAgfQoKICB9LAoKICAvLyBTZXRzIHRoZSB6LWluZGV4IGFuZCBkaXNwbGF5IHByb3BlcnR5IG9mIGEgcGFnZQogIC8vIEl0IGRlcGVuZHMgb24gdGhlIGN1cnJlbnQgdmlldwoKICBfc2V0UGFnZUxvYzogZnVuY3Rpb24ocGFnZSkgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCksCiAgICAgIHZpZXcgPSB0aGlzLnR1cm4oJ3ZpZXcnKTsKCiAgICBpZiAocGFnZT09dmlld1swXSB8fCBwYWdlPT12aWV3WzFdKSB7CiAgICAgIAogICAgICBkYXRhLnBhZ2VXcmFwW3BhZ2VdLmNzcyh7ekluZGV4OiBkYXRhLnRvdGFsUGFnZXMsIGRpc3BsYXk6ICcnfSk7CiAgICAgIHJldHVybiAxOwoKICAgIH0gZWxzZSBpZiAoKGRhdGEuZGlzcGxheT09J3NpbmdsZScgJiYgcGFnZT09dmlld1swXSsxKSB8fAogICAgICAoZGF0YS5kaXNwbGF5PT0nZG91YmxlJyAmJiBwYWdlPT12aWV3WzBdLTIgfHwKICAgICAgcGFnZT09dmlld1sxXSsyKSkgewogICAgICAKICAgICAgZGF0YS5wYWdlV3JhcFtwYWdlXS5jc3Moe3pJbmRleDogZGF0YS50b3RhbFBhZ2VzLTEsIGRpc3BsYXk6ICcnfSk7CiAgICAgIHJldHVybiAyOwoKICAgIH0gZWxzZSB7CiAgICAgIAogICAgICBkYXRhLnBhZ2VXcmFwW3BhZ2VdLmNzcyh7ekluZGV4OiAwLAogICAgICAgIGRpc3BsYXk6IChkYXRhLnBhZ2VPYmpzW3BhZ2VdLmhhc0NsYXNzKCdmaXhlZCcpKSA/ICcnIDogJ25vbmUnfQogICAgICApOwoKICAgICAgcmV0dXJuIDA7CiAgICB9CiAgfSwKCiAgLy8gR2V0cyBhbmQgc2V0cyB0aGUgb3B0aW9ucwoKICBvcHRpb25zOiBmdW5jdGlvbihvcHRpb25zKSB7CiAgICAKICAgIGlmIChvcHRpb25zPT09dW5kZWZpbmVkKSB7CiAgICAgIAogICAgICByZXR1cm4gdGhpcy5kYXRhKCkub3B0czsKCiAgICB9IGVsc2UgewoKICAgICAgdmFyIGRhdGEgPSB0aGlzLmRhdGEoKTsKCiAgICAgIC8vIFNldCBuZXcgdmFsdWVzCgogICAgICAkLmV4dGVuZChkYXRhLm9wdHMsIG9wdGlvbnMpOwogICAgICAKICAgICAgLy8gU2V0IHBhZ2VzCgogICAgICBpZiAob3B0aW9ucy5wYWdlcykKICAgICAgICB0aGlzLnR1cm4oJ3BhZ2VzJywgb3B0aW9ucy5wYWdlcyk7CgogICAgICAvLyBTZXQgcGFnZQoKICAgICAgaWYgKG9wdGlvbnMucGFnZSkKICAgICAgICB0aGlzLnR1cm4oJ3BhZ2UnLCBvcHRpb25zLnBhZ2UpOwoKICAgICAgLy8gU2V0IGRpc3BsYXkKCiAgICAgIGlmIChvcHRpb25zLmRpc3BsYXkpCiAgICAgICAgdGhpcy50dXJuKCdkaXNwbGF5Jywgb3B0aW9ucy5kaXNwbGF5KTsKICAgICAgCiAgICAgIC8vIFNldCBkaXJlY3Rpb24KCiAgICAgIGlmIChvcHRpb25zLmRpcmVjdGlvbikKICAgICAgICB0aGlzLnR1cm4oJ2RpcmVjdGlvbicsIG9wdGlvbnMuZGlyZWN0aW9uKTsKCiAgICAgIC8vIFNldCBzaXplCgogICAgICBpZiAob3B0aW9ucy53aWR0aCAmJiBvcHRpb25zLmhlaWdodCkKICAgICAgICB0aGlzLnR1cm4oJ3NpemUnLCBvcHRpb25zLndpZHRoLCBvcHRpb25zLmhlaWdodCk7CiAgICAgIAogICAgICAvLyBBZGQgZXZlbnQgbGlzdGVuZXJzCgogICAgICBpZiAob3B0aW9ucy53aGVuKQogICAgICAgIGZvciAodmFyIGV2ZW50TmFtZSBpbiBvcHRpb25zLndoZW4pCiAgICAgICAgICBpZiAoaGFzKGV2ZW50TmFtZSwgb3B0aW9ucy53aGVuKSkgewogICAgICAgICAgICB0aGlzLnVuYmluZChldmVudE5hbWUpLgogICAgICAgICAgICAgIGJpbmQoZXZlbnROYW1lLCBvcHRpb25zLndoZW5bZXZlbnROYW1lXSk7CiAgICAgICAgICB9CgogICAgICByZXR1cm4gdGhpczsKICAgIH0KCiAgfSwKCiAgLy8gR2V0cyB0aGUgY3VycmVudCB2ZXJzaW9uCgogIHZlcnNpb246IGZ1bmN0aW9uKCkgewoKICAgIHJldHVybiB2ZXJzaW9uOwoKICB9Cn0sCgovLyBNZXRob2RzIGFuZCBwcm9wZXJ0aWVzIGZvciB0aGUgZmxpcCBwYWdlIGVmZmVjdAoKZmxpcE1ldGhvZHMgPSB7CgogIC8vIENvbnN0cnVjdG9yCgogIGluaXQ6IGZ1bmN0aW9uKG9wdHMpIHsKCiAgICB0aGlzLmRhdGEoe2Y6CiAgICAgIHtlZmZlY3Q6IChvcHRzLmNvcm5lcnM9PSdyJyB8fCBvcHRzLmNvcm5lcnM9PSdsJykgPyAnaGFyZCcgOiAnc2hlZXQnfX0KICAgICk7CgogICAgdGhpcy5mbGlwKCdvcHRpb25zJywgb3B0cyk7CgogICAgZmxpcE1ldGhvZHMuX2FkZFBhZ2VXcmFwcGVyLmNhbGwodGhpcyk7CgogICAgcmV0dXJuIHRoaXM7CiAgfSwKCiAgc2V0RGF0YTogZnVuY3Rpb24oZCkgewogICAgCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpOwoKICAgIGRhdGEuZiA9ICQuZXh0ZW5kKGRhdGEuZiwgZCk7CgogICAgcmV0dXJuIHRoaXM7CiAgfSwKCiAgb3B0aW9uczogZnVuY3Rpb24ob3B0cykgewogICAgCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLmY7CgogICAgaWYgKG9wdHMpIHsKICAgICAgZmxpcE1ldGhvZHMuc2V0RGF0YS5jYWxsKHRoaXMsCiAgICAgICAge29wdHM6ICQuZXh0ZW5kKHt9LCBkYXRhLm9wdHMgfHwgZmxpcE9wdGlvbnMsIG9wdHMpfSk7CiAgICAgIHJldHVybiB0aGlzOwogICAgfSBlbHNlCiAgICAgIHJldHVybiBkYXRhLm9wdHM7CgogIH0sCgogIHo6IGZ1bmN0aW9uKHopIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLmY7CgogICAgaWYgKGRhdGEuZndyYXBwZXIpIHsKICAgICAgZGF0YS5vcHRzWyd6LWluZGV4J10gPSB6OwogICAgICBkYXRhLmZ3cmFwcGVyLmNzcygKICAgICAgICB7J3otaW5kZXgnOiB6IHx8IHBhcnNlSW50KGRhdGEucGFyZW50LmNzcygnei1pbmRleCcpLCAxMCkgfHwgMH0KICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gdGhpczsKICB9LAoKICBfY0FsbG93ZWQ6IGZ1bmN0aW9uKCkgewogICAgCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLmYsCiAgICB0dXJuRGF0YSA9IGRhdGEub3B0cy50dXJuLmRhdGEoKSwKICAgIHBhZ2UgPSBkYXRhLm9wdHMucGFnZSwKICAgIG9kZCA9IHBhZ2UlMjsKCiAgICBpZiAodHVybkRhdGEuZGlzcGxheT09J3NpbmdsZScpIHsKICAgICAgaWYgKHBhZ2U9PTEpCiAgICAgICAgcmV0dXJuICh0dXJuRGF0YS5kaXJlY3Rpb249PSdsdHInKSA/CiAgICAgICAgICBjb3JuZXJzWydmb3J3YXJkJ10gOiBjb3JuZXJzWydiYWNrd2FyZCddOwogICAgICBlbHNlIGlmIChwYWdlPT10dXJuRGF0YS50b3RhbFBhZ2VzKQogICAgICAgIHJldHVybiAodHVybkRhdGEuZGlyZWN0aW9uPT0nbHRyJykgPwogICAgICAgICAgY29ybmVyc1snYmFja3dhcmQnXSA6IGNvcm5lcnNbJ2ZvcndhcmQnXTsKICAgICAgZWxzZQogICAgICAgIHJldHVybiBjb3JuZXJzWydhbGwnXTsKICAgIH0gZWxzZSB7CgogICAgICByZXR1cm4gKHR1cm5EYXRhLmRpcmVjdGlvbj09J2x0cicpID8KICAgICAgICBjb3JuZXJzWyhvZGQpID8gJ2ZvcndhcmQnIDogJ2JhY2t3YXJkJ10KICAgICAgICA6CiAgICAgICAgY29ybmVyc1sob2RkKSA/ICdiYWNrd2FyZCcgOiAnZm9yd2FyZCddOwoKICAgIH0KCiAgfSwKCiAgX2Nvcm5lckFjdGl2YXRlZDogZnVuY3Rpb24oZSkgewogIAogIAogICAgdmFyIGRhdGEgPSB0aGlzLmRhdGEoKS5mLAogICAgICBwb3MgPSBkYXRhLnBhcmVudC5vZmZzZXQoKSwKICAgICAgd2lkdGggPSB0aGlzLndpZHRoKCksCiAgICAgIGhlaWdodCA9IHRoaXMuaGVpZ2h0KCksCiAgICAgIGMgPSB7eDogTWF0aC5tYXgoMCwgZS5wYWdlWC1wb3MubGVmdCksIHk6IE1hdGgubWF4KDAsIGUucGFnZVktcG9zLnRvcCl9LAogICAgICBjc3ogPSBkYXRhLm9wdHMuY29ybmVyU2l6ZTsKCiAgICBpZiAoYy54PD0wIHx8IGMueTw9MCB8fCBjLng+PXdpZHRoIHx8IGMueT49aGVpZ2h0KQogICAgICByZXR1cm4gZmFsc2U7CgogICAgdmFyIGFsbG93ZWRDb3JuZXJzID0gZmxpcE1ldGhvZHMuX2NBbGxvd2VkLmNhbGwodGhpcyk7CgogICAgaWYgKGMueD53aWR0aC1jc3opCiAgICAgIGMuY29ybmVyID0gJ3InOwogICAgZWxzZSBpZiAoYy54PGNzeikKICAgICAgYy5jb3JuZXIgPSAnbCc7CiAgICBlbHNlCiAgICAgIHJldHVybiBmYWxzZTsKCgogICAgcmV0dXJuICgkLmluQXJyYXkoYy5jb3JuZXIsIGFsbG93ZWRDb3JuZXJzKT09LTEpID8gZmFsc2UgOiBjOwoKICB9LAoKICBfYzogZnVuY3Rpb24oY29ybmVyLCBvcHRzKSB7CgogICAgb3B0cyA9IG9wdHMgfHwgMDsKCiAgICBzd2l0Y2ggKGNvcm5lcikgewogICAgICBjYXNlICdsJzoKICAgICAgICByZXR1cm4gcG9pbnQyRChvcHRzLCAwKTsKICAgICAgY2FzZSAncic6CiAgICAgICAgcmV0dXJuIHBvaW50MkQodGhpcy53aWR0aCgpLW9wdHMsIDApOwogICAgfQoKICB9LAoKICBfYzI6IGZ1bmN0aW9uKGNvcm5lcikgewoKICAgIHN3aXRjaCAoY29ybmVyKSB7CiAgICAgIGNhc2UgJ2wnOgogICAgICAgIHJldHVybiBwb2ludDJEKHRoaXMud2lkdGgoKSoyLCAwKTsKICAgICAgY2FzZSAncic6CiAgICAgICAgcmV0dXJuIHBvaW50MkQoLXRoaXMud2lkdGgoKSwgMCk7CiAgICB9CgogIH0sCgogIF9mb2xkaW5nUGFnZTogZnVuY3Rpb24oY29ybmVyKSB7CgogICAgdmFyIGRhdGEgPSB0aGlzLmRhdGEoKS5mLAogICAgICBvcHRzID0gZGF0YS5vcHRzOwoKICAgIGlmIChkYXRhLmZvbGRpbmcpIHJldHVybiBkYXRhLmZvbGRpbmc7CiAgICBlbHNlIGlmKG9wdHMudHVybikgewoKICAgICAgZGF0YSA9IG9wdHMudHVybi5kYXRhKCk7CiAgICAgIGlmIChkYXRhLmRpc3BsYXkgPT0gJ3NpbmdsZScpCiAgICAgICAgcmV0dXJuIChkYXRhLnBhZ2VPYmpzW29wdHMubmV4dF0pID8gZGF0YS5wYWdlT2Jqc1swXSA6IG51bGw7CiAgICAgIGVsc2UKICAgICAgICByZXR1cm4gZGF0YS5wYWdlT2Jqc1tvcHRzLm5leHRdOwogICAgfQoKICB9LAoKICBfYmFja0dyYWRpZW50OiBmdW5jdGlvbigpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLmYsCiAgICAgIHR1cm4gPSBkYXRhLm9wdHMudHVybiwKICAgICAgZ3JhZGllbnQgPSBkYXRhLm9wdHMuZ3JhZGllbnRzICYmCiAgICAgICAgKCF0dXJuIHx8CiAgICAgICAgdHVybi5kYXRhKCkuZGlzcGxheT09J3NpbmdsZScgfHwKICAgICAgICAoZGF0YS5vcHRzLnBhZ2UhPTIgJiYgZGF0YS5vcHRzLnBhZ2UhPXR1cm4uZGF0YSgpLnRvdGFsUGFnZXMtMSkpOwoKCiAgICByZXR1cm4gZ3JhZGllbnQ7CgogIH0sCgogIHJlc2l6ZTogZnVuY3Rpb24oZnVsbCkgewogICAgCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLmYsCiAgICAgIHdpZHRoID0gdGhpcy53aWR0aCgpLAogICAgICBoZWlnaHQgPSB0aGlzLmhlaWdodCgpOwoKCiAgICBpZiAoZnVsbCkgewogICAgICBkYXRhLndyYXBwZXIuY3NzKHt3aWR0aDogd2lkdGgsIGhlaWdodDogaGVpZ2h0fSk7CiAgICAgIGRhdGEuZnBhZ2UuY3NzKHt3aWR0aDogd2lkdGgsIGhlaWdodDogaGVpZ2h0fSk7CiAgICB9CgogIH0sCgogIC8vIFByZXBhcmVzIHRoZSBwYWdlIGJ5IGFkZGluZyBhIGdlbmVyYWwgd3JhcHBlciBhbmQgYW5vdGhlciBvYmplY3RzCgogIF9hZGRQYWdlV3JhcHBlcjogZnVuY3Rpb24oKSB7CgogICAgdmFyIGF0dCwKICAgICAgZGF0YSA9IHRoaXMuZGF0YSgpLmYsCiAgICAgIHBhcmVudCA9IHRoaXMucGFyZW50KCk7CgogICAgZGF0YS5wYXJlbnQgPSBwYXJlbnQ7CgogICAgaWYgKCFkYXRhLndyYXBwZXIpIHsKICAgICAgICAKICAgICAgdmFyIGNzc1Byb3BlcnRpZXMgPSB7fTsKCiAgICAgIGRhdGEud3JhcHBlciA9ICQoJzxkaXYvPicsIGRpdkF0dCgwLCAwLCAyKSkuCiAgICAgICAgY3NzKGNzc1Byb3BlcnRpZXMpLgogICAgICAgIGFwcGVuZFRvKHBhcmVudCkuCiAgICAgICAgcHJlcGVuZCh0aGlzKTsKCiAgICAgIGRhdGEuZnBhZ2UgPSAkKCc8ZGl2Lz4nLCBkaXZBdHQoMCwgMCwgMSkpLgogICAgICAgIGNzcyhjc3NQcm9wZXJ0aWVzKS4KICAgICAgICBhcHBlbmRUbyhwYXJlbnQpOwoKICAgIH0KCiAgICAvLyBTZXQgc2l6ZQogICAgZmxpcE1ldGhvZHMucmVzaXplLmNhbGwodGhpcywgdHJ1ZSk7CgogIH0sCgogIC8vIFRha2VzIGEgMlAgcG9pbnQgZnJvbSB0aGUgc2NyZWVuIGFuZCBhcHBsaWVzIHRoZSB0cmFuc2Zvcm1hdGlvbgoKICBfZm9sZDogZnVuY3Rpb24ocG9pbnQpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLmYsCiAgICAgIG8gPSBmbGlwTWV0aG9kcy5fYy5jYWxsKHRoaXMsIHBvaW50LmNvcm5lciksCiAgICAgIHJlbFggPSAoby54KSA/IG8ueCAtIHBvaW50LnggOiAgcG9pbnQueCwKICAgICAgd2lkdGggPSB0aGlzLndpZHRoKCksCiAgICAgIGhlaWdodCA9IHRoaXMuaGVpZ2h0KCk7CgogICAgICByZWxYID0gTWF0aC5taW4od2lkdGgqMiwgTWF0aC5tYXgoMCwgcmVsWCkpOwoKCiAgICAgIHN3aXRjaChwb2ludC5jb3JuZXIpIHsKICAgICAgICBjYXNlICdyJyA6CiAgICAgICAgICBkYXRhLndyYXBwZXIuY3NzKHsKICAgICAgICAgICAgd2lkdGg6IE1hdGgubWF4KDAsIHdpZHRoLXJlbFgpCiAgICAgICAgICB9KTsKICAgICAgICAgIHRoaXMuY3NzKHsKICAgICAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsCiAgICAgICAgICAgIGxlZnQ6IC1yZWxYCiAgICAgICAgICB9KTsKCiAgICAgICAgICBkYXRhLmZwYWdlLmNzcyh7CiAgICAgICAgICAgIGxlZnQ6IC1yZWxYICsgd2lkdGgsCiAgICAgICAgICAgIHdpZHRoOiBNYXRoLm1heCgwLCByZWxYLXdpZHRoKQogICAgICAgICAgfSk7CiAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnbCcgOgoKICAgICAgICAgIGRhdGEud3JhcHBlci5jc3MoewogICAgICAgICAgICB3aWR0aDogd2lkdGgKICAgICAgICAgIH0pOwogICAgICAgICAgdGhpcy5jc3MoewogICAgICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJywKICAgICAgICAgICAgbGVmdDogcmVsWAogICAgICAgICAgfSk7CgogICAgICAgICAgZGF0YS5mcGFnZS5jc3MoewogICAgICAgICAgICBsZWZ0OiB3aWR0aCwKICAgICAgICAgICAgd2lkdGg6IE1hdGgubWF4KDAsIHJlbFgtd2lkdGgpCiAgICAgICAgICB9KTsKCiAgICAgICAgICBpZiAoZGF0YS5mb2xkaW5nKQogICAgICAgICAgICBkYXRhLmZvbGRpbmcuY3NzKHsKICAgICAgICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJywKICAgICAgICAgICAgICBsZWZ0OiAtd2lkdGgqMiArIHJlbFgKICAgICAgICAgICAgfSk7CiAgICAgICAgCiAgICAgICAgYnJlYWs7CiAgICAgIH0KCiAgICAgIGRhdGEucGFyZW50LmNzcyh7J292ZXJmbG93JzogJ3Zpc2libGUnfSk7CgogICAgZGF0YS5wb2ludCA9IHBvaW50OwogIAogIH0sCgogIF9tb3ZlRm9sZGluZ1BhZ2U6IGZ1bmN0aW9uKGJvb2wpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLmY7CiAgICAgIAogICAgaWYgKGJvb2wpIHsKICAgICAgCiAgICAgIHZhciBmb2xkaW5nID0gZmxpcE1ldGhvZHMuX2ZvbGRpbmdQYWdlLmNhbGwodGhpcyksCiAgICAgICAgdHVybiA9IGRhdGEub3B0cy50dXJuOwogICAgICAKICAgICAgaWYgKGZvbGRpbmcpIHsKCiAgICAgICAgaWYgKGRhdGEuZm9sZGluZykgewogICAgICAgICAgaWYgKGRhdGEuZm9sZGluZz09PWZvbGRpbmcpCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgIGZsaXBNZXRob2RzLl9tb3ZlRm9sZGluZ1BhZ2UuY2FsbCh0aGlzLCBmYWxzZSk7CiAgICAgICAgfQogICAgICAKICAgICAgICBmbGlwTWV0aG9kcy5zZXREYXRhLmNhbGwodGhpcywKICAgICAgICAgIHtiYWNrUGFyZW50OiBmb2xkaW5nLnBhcmVudCgpLAogICAgICAgICAgZm9sZGluZzogZm9sZGluZ30pOwoKICAgICAgICBkYXRhLmZwYWdlLnByZXBlbmQoZm9sZGluZyk7CgogICAgICB9CgogICAgICB0dXJuLnR1cm4oJ3VwZGF0ZScpOwoKICAgIH0gZWxzZSB7CiAgICAgIGlmIChkYXRhLmJhY2tQYXJlbnQpIHsKICAgICAgICBkYXRhLmJhY2tQYXJlbnQucHJlcGVuZChkYXRhLmZvbGRpbmcpOwogICAgICAgIGRlbGV0ZSBkYXRhLmJhY2tQYXJlbnQ7CiAgICAgICAgZGVsZXRlIGRhdGEuZm9sZGluZzsKICAgICAgfQogICAgfQogIH0sCgogIF9zaG93Rm9sZGVkUGFnZTogZnVuY3Rpb24oYywgYW5pbWF0ZSkgewoKICAgIHZhciBmb2xkaW5nID0gZmxpcE1ldGhvZHMuX2ZvbGRpbmdQYWdlLmNhbGwodGhpcyksCiAgICAgIGRkID0gdGhpcy5kYXRhKCksCiAgICAgIGRhdGEgPSBkZC5mLAogICAgICB2aXNpYmxlID0gZGF0YS52aXNpYmxlOwoKICAgIGlmICghdmlzaWJsZSB8fCAhZGF0YS5wb2ludCB8fCBkYXRhLnBvaW50LmNvcm5lciE9Yy5jb3JuZXIpIHsKICAgICAgCiAgICAgIHZhciBtQWN0aW9uID0gZGF0YS5vcHRzLnR1cm4uZGF0YSgpLm1vdXNlQWN0aW9uOwoKICAgICAgdmFyIGV2ZW50ID0gJC5FdmVudCgnc3RhcnQnKTsKICAgICAgdGhpcy50cmlnZ2VyKGV2ZW50LCBbZGF0YS5vcHRzLCBjLmNvcm5lcl0pOwogICAgICB2aXNpYmxlID0gZmFsc2U7CgogICAgICBpZiAoZXZlbnQuaXNEZWZhdWx0UHJldmVudGVkKCkpCiAgICAgICAgcmV0dXJuIGZhbHNlOwoKICAgIH0KCiAgICBpZiAoZm9sZGluZykgewoKICAgICAgaWYgKGFuaW1hdGUpIHsKICAgICAgICAKICAgICAgICB2YXIgdGhhdCA9IHRoaXMsCiAgICAgICAgICBwb2ludCA9IChkYXRhLnBvaW50ICYmIGRhdGEucG9pbnQuY29ybmVyPT1jLmNvcm5lcikgPwogICAgICAgICAgZGF0YS5wb2ludCA6IGZsaXBNZXRob2RzLl9jLmNhbGwodGhpcywgYy5jb3JuZXIsIDEpOwogICAgICAKICAgICAgICB0aGlzLmFuaW1hdGVmKHtmcm9tOiBbcG9pbnQueCwgcG9pbnQueV0sCiAgICAgICAgICB0bzogW2MueCwgYy55XSwKICAgICAgICAgIGR1cmF0aW9uOiA1MDAsCiAgICAgICAgICBmcmFtZTogZnVuY3Rpb24odikgewogICAgICAgICAgICBjLnggPSBNYXRoLnJvdW5kKHZbMF0pOwogICAgICAgICAgICBjLnkgPSBNYXRoLnJvdW5kKHZbMV0pOwogICAgICAgICAgICBmbGlwTWV0aG9kcy5fZm9sZC5jYWxsKHRoYXQsIGMpOwogICAgICAgICAgfX0pOwoKICAgICAgfSBlbHNlICB7CgogICAgICAgIGZsaXBNZXRob2RzLl9mb2xkLmNhbGwodGhpcywgYyk7CiAgICAgICAgaWYgKGRkLmVmZmVjdCAmJiAhZGQuZWZmZWN0LnR1cm5pbmcpCiAgICAgICAgICB0aGlzLmFuaW1hdGVmKGZhbHNlKTsKCiAgICAgIH0KCiAgICAgIGlmICghdmlzaWJsZSkgewoKICAgICAgICBkYXRhLnZpc2libGUgPSB0cnVlOwogICAgICAgIGZsaXBNZXRob2RzLl9tb3ZlRm9sZGluZ1BhZ2UuY2FsbCh0aGlzLCB0cnVlKTsKICAgICAgICBkYXRhLmZwYWdlLnNob3coKTsKICAgICAgfQoKICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgcmV0dXJuIGZhbHNlOwogIH0sCgogIGhpZGU6IGZ1bmN0aW9uKCkgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCkuZiwKICAgICAgZm9sZGluZyA9IGZsaXBNZXRob2RzLl9mb2xkaW5nUGFnZS5jYWxsKHRoaXMpOwoKICAgIHRoaXMuY3NzKHsKICAgICAgcG9zaXRpb246ICcnLAogICAgICBsZWZ0OiAnYXV0bycKICAgIH0pOwoKICAgIGRhdGEud3JhcHBlci5jc3MoewogICAgICB3aWR0aDogdGhpcy53aWR0aCgpCiAgICB9KTsKCiAgICBkYXRhLmZwYWdlLmNzcyh7CiAgICAgIHdpZHRoOiB0aGlzLndpZHRoKCkKICAgIH0pOwoKICAgIGlmIChkYXRhLmZvbGRpbmcpCiAgICAgIGRhdGEuZm9sZGluZy5jc3MoewogICAgICAgIHBvc2l0aW9uOiAnJywKICAgICAgICBsZWZ0OiAnYXV0bycKICAgICAgfSk7CgogICAgZGF0YS5mcGFnZS5oaWRlKCk7CgogICAgZGF0YS52aXNpYmxlID0gZmFsc2U7CgogICAgcmV0dXJuIHRoaXM7CiAgfSwKCiAgaGlkZUZvbGRlZFBhZ2U6IGZ1bmN0aW9uKGFuaW1hdGUpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLmY7CgogICAgaWYgKCFkYXRhLnBvaW50KSByZXR1cm47CgogICAgdmFyIHRoYXQgPSB0aGlzLAogICAgICBwMSA9IGRhdGEucG9pbnQsCiAgICAgIGhpZGUgPSBmdW5jdGlvbigpIHsKICAgICAgICBkYXRhLnBvaW50ID0gbnVsbDsKICAgICAgICB0aGF0LmZsaXAoJ2hpZGUnKTsKICAgICAgICB0aGF0LnRyaWdnZXIoJ2VuZCcsIFtkYXRhLm9wdHMsIGZhbHNlXSk7CiAgICAgIH07CgogICAgaWYgKGFuaW1hdGUpIHsKICAgICAgdmFyIHA0ID0gZmxpcE1ldGhvZHMuX2MuY2FsbCh0aGlzLCBwMS5jb3JuZXIpLAogICAgICAgIHRvcCA9IChwMS5jb3JuZXIuc3Vic3RyKDAsMSk9PSd0JyksCiAgICAgICAgZGVsdGEgPSAodG9wKSA/IE1hdGgubWluKDAsIHAxLnktcDQueSkvMiA6IE1hdGgubWF4KDAsIHAxLnktcDQueSkvMiwKICAgICAgICBwMiA9IHBvaW50MkQocDEueCwgcDEueStkZWx0YSksCiAgICAgICAgcDMgPSBwb2ludDJEKHA0LngsIHA0LnktZGVsdGEpOwogICAgCiAgICAgIHRoaXMuYW5pbWF0ZWYoewogICAgICAgIGZyb206IDAsCiAgICAgICAgdG86IDEsCiAgICAgICAgZnJhbWU6IGZ1bmN0aW9uKHYpIHsKICAgICAgICAgIHZhciBucCA9IGJlemllcihwMSwgcDIsIHAzLCBwNCwgdik7CiAgICAgICAgICBwMS54ID0gbnAueDsKICAgICAgICAgIHAxLnkgPSBucC55OwogICAgICAgICAgZmxpcE1ldGhvZHMuX2ZvbGQuY2FsbCh0aGF0LCBwMSk7CiAgICAgICAgfSwKICAgICAgICBjb21wbGV0ZTogaGlkZSwKICAgICAgICBkdXJhdGlvbjogODAwLAogICAgICAgIGhpZGluZzogdHJ1ZQogICAgICAgIH0pOwoKICAgIH0gZWxzZSB7CiAgICAgIHRoaXMuYW5pbWF0ZWYoZmFsc2UpOwogICAgICBoaWRlKCk7CiAgICB9CiAgfSwKCiAgdHVyblBhZ2U6IGZ1bmN0aW9uKGNvcm5lcikgewoKICAgIHZhciB0aGF0ID0gdGhpcywKICAgICAgZGF0YSA9IHRoaXMuZGF0YSgpLmY7CgogICAgY29ybmVyID0ge2Nvcm5lcjogKGRhdGEuY29ybmVyKSA/CiAgICAgIGRhdGEuY29ybmVyLmNvcm5lciA6CiAgICAgIGNvcm5lciB8fCBmbGlwTWV0aG9kcy5fY0FsbG93ZWQuY2FsbCh0aGlzKVswXX07CgogICAgdmFyIHAxID0gZGF0YS5wb2ludCB8fAogICAgICBmbGlwTWV0aG9kcy5fYy5jYWxsKHRoaXMsCiAgICAgICAgY29ybmVyLmNvcm5lciwKICAgICAgICAoZGF0YS5vcHRzLnR1cm4pID8gZGF0YS5vcHRzLnR1cm4uZGF0YSgpLm9wdHMuZWxldmF0aW9uIDogMCksCiAgICAgIHA0ID0gZmxpcE1ldGhvZHMuX2MyLmNhbGwodGhpcywgY29ybmVyLmNvcm5lcik7CgogICAgICB0aGlzLnRyaWdnZXIoJ2ZsaXAnKS4KICAgICAgICBhbmltYXRlZih7CiAgICAgICAgICBmcm9tOiAwLAogICAgICAgICAgdG86IDEsCiAgICAgICAgICBmcmFtZTogZnVuY3Rpb24odikgewogICAgICAgICAgICB2YXIgbnAgPSBiZXppZXIocDEsIHAxLCBwNCwgcDQsIHYpOwogICAgICAgICAgICBjb3JuZXIueCA9IG5wLng7CiAgICAgICAgICAgIGNvcm5lci55ID0gbnAueTsKCiAgICAgICAgICAgIGZsaXBNZXRob2RzLl9zaG93Rm9sZGVkUGFnZS5jYWxsKHRoYXQsIGNvcm5lcik7CiAgICAgICAgICB9LAogICAgICAgICAgCiAgICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHRoYXQudHJpZ2dlcignZW5kJywgW2RhdGEub3B0cywgdHJ1ZV0pOwogICAgICAgICAgfSwKICAgICAgICAgIGR1cmF0aW9uOiBkYXRhLm9wdHMuZHVyYXRpb24sCiAgICAgICAgICB0dXJuaW5nOiB0cnVlCiAgICAgICAgfSk7CgogICAgICBkYXRhLmNvcm5lciA9IG51bGw7CiAgfSwKCiAgbW92aW5nOiBmdW5jdGlvbigpIHsKCiAgICByZXR1cm4gJ2VmZmVjdCcgaW4gdGhpcy5kYXRhKCk7CiAgCiAgfSwKCiAgaXNUdXJuaW5nOiBmdW5jdGlvbigpIHsKCiAgICByZXR1cm4gdGhpcy5mbGlwKCdtb3ZpbmcnKSAmJiB0aGlzLmRhdGEoKS5lZmZlY3QudHVybmluZzsKICAKICB9LAoKICBfZXZlbnRTdGFydDogZnVuY3Rpb24oZSkgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCkuZjsKCiAgICBpZiAoIWRhdGEuZGlzYWJsZWQgJiYgIXRoaXMuZmxpcCgnaXNUdXJuaW5nJykpIHsKCiAgICAgIGRhdGEuY29ybmVyID0gZmxpcE1ldGhvZHMuX2Nvcm5lckFjdGl2YXRlZC5jYWxsKHRoaXMsIGUpOwogICAgCiAgICAgIGlmIChkYXRhLmNvcm5lciAmJiBmbGlwTWV0aG9kcy5fZm9sZGluZ1BhZ2UuY2FsbCh0aGlzLCBkYXRhLmNvcm5lcikpIHsKICAgICAgCiAgICAgICAgaWYgKGZsaXBNZXRob2RzLl9zaG93Rm9sZGVkUGFnZS5jYWxsKHRoaXMsIGRhdGEuY29ybmVyKSkKICAgICAgICAgIHRoaXMudHJpZ2dlcigncHJlc3NlZCcsIFtkYXRhLnBvaW50XSk7CgogICAgICAgIHJldHVybiBmYWxzZTsKCiAgICAgIH0gZWxzZQogICAgICAgIGRhdGEuY29ybmVyID0gbnVsbDsKCiAgICB9CgogIH0sCgogIF9ldmVudE1vdmU6IGZ1bmN0aW9uKGUpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLmY7CgogICAgaWYgKCFkYXRhLmRpc2FibGVkKSB7CgogICAgICBlID0gKGlzVG91Y2gpID8gZS5vcmlnaW5hbEV2ZW50LnRvdWNoZXMgOiBbZV07CiAgICAKICAgICAgaWYgKGRhdGEuY29ybmVyKSB7CgogICAgICAgIHZhciBwb3MgPSBkYXRhLnBhcmVudC5vZmZzZXQoKTsKICAgICAgICBkYXRhLmNvcm5lci54ID0gZVswXS5wYWdlWC1wb3MubGVmdDsKICAgICAgICBkYXRhLmNvcm5lci55ID0gZVswXS5wYWdlWS1wb3MudG9wOwogICAgICAgIGZsaXBNZXRob2RzLl9zaG93Rm9sZGVkUGFnZS5jYWxsKHRoaXMsIGRhdGEuY29ybmVyKTsKCiAgICAgIH0gZWxzZSBpZiAoIXRoaXMuZGF0YSgpLmVmZmVjdCAmJiB0aGlzLmlzKCc6dmlzaWJsZScpKSB7CiAgICAKCiAgICAgICAgdmFyIGNvcm5lciA9IGZsaXBNZXRob2RzLl9jb3JuZXJBY3RpdmF0ZWQuY2FsbCh0aGlzLCBlWzBdKTsKCiAgICAgICAgaWYgKGNvcm5lcikgewogICAgICAgICAgdmFyIG9yaWdpbiA9IGZsaXBNZXRob2RzLl9jLmNhbGwodGhpcywgY29ybmVyLmNvcm5lciwgZGF0YS5vcHRzLmNvcm5lclNpemUvMik7CiAgICAgICAgICBjb3JuZXIueCA9IG9yaWdpbi54OwogICAgICAgICAgY29ybmVyLnkgPSBvcmlnaW4ueTsKICAgICAgICAgIGZsaXBNZXRob2RzLl9zaG93Rm9sZGVkUGFnZS5jYWxsKHRoaXMsIGNvcm5lciwgdHJ1ZSk7CiAgICAgICAgfSBlbHNlCiAgICAgICAgICBmbGlwTWV0aG9kcy5oaWRlRm9sZGVkUGFnZS5jYWxsKHRoaXMsIHRydWUpOwogICAgICAgICAgICAgICAKCiAgICAgIH0KICAgIH0KICB9LAoKICBfZXZlbnRFbmQ6IGZ1bmN0aW9uKCkgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCkuZjsKCiAgICBpZiAoIWRhdGEuZGlzYWJsZWQgJiYgZGF0YS5wb2ludCkgewogICAgICB2YXIgZXZlbnQgPSAkLkV2ZW50KCdyZWxlYXNlZCcpOwogICAgICB0aGlzLnRyaWdnZXIoZXZlbnQsIFtkYXRhLnBvaW50XSk7CiAgICAgIGlmICghZXZlbnQuaXNEZWZhdWx0UHJldmVudGVkKCkpCiAgICAgICAgZmxpcE1ldGhvZHMuaGlkZUZvbGRlZFBhZ2UuY2FsbCh0aGlzLCB0cnVlKTsKICAgIH0KCiAgICBkYXRhLmNvcm5lciA9IG51bGw7CgogIH0sCgogIGRpc2FibGU6IGZ1bmN0aW9uKGRpc2FibGUpIHsKCiAgICBmbGlwTWV0aG9kcy5zZXREYXRhLmNhbGwodGhpcywgeydkaXNhYmxlZCc6IGRpc2FibGV9KTsKICAgIHJldHVybiB0aGlzOwoKICB9Cn07CgoKCi8vIFByb2Nlc3NlcyBjbGFzc2VzCgpmdW5jdGlvbiBkZWNvcmF0b3IodGhhdCwgbWV0aG9kcywgYXJncykgewoKICBpZiAoIWFyZ3NbMF0gfHwgdHlwZW9mKGFyZ3NbMF0pPT0nb2JqZWN0JykKICAgIHJldHVybiBtZXRob2RzLmluaXQuYXBwbHkodGhhdCwgYXJncyk7CgogIGVsc2UgaWYgKG1ldGhvZHNbYXJnc1swXV0pCiAgICByZXR1cm4gbWV0aG9kc1thcmdzWzBdXS5hcHBseSh0aGF0LCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmdzLCAxKSk7CgogIGVsc2UKICAgIHRocm93IHR1cm5FcnJvcihhcmdzWzBdICsgJyBpcyBhbiBpbnZhbGlkIHZhbHVlJyk7Cn0KCgovLyBBdHRyaWJ1dGVzIGZvciBhIGxheWVyCgpmdW5jdGlvbiBkaXZBdHQodG9wLCBsZWZ0LCB6SW5kZXgsIG92ZXJmKSB7CiAgICAKICByZXR1cm4geydjc3MnOiB7CiAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsCiAgICAgICAgdG9wOiB0b3AsCiAgICAgICAgbGVmdDogbGVmdCwKICAgICAgICAnb3ZlcmZsb3cnOiBvdmVyZiB8fCAnaGlkZGVuJywKICAgICAgICAnei1pbmRleCc6IHpJbmRleCB8fCAnYXV0bycKICAgICAgICB9CiAgICB9OwogICAgICAKfQoKLy8gR2V0cyBhIDJEIHBvaW50IGZyb20gYSBiZXppZXIgY3VydmUgb2YgZm91ciBwb2ludHMKCmZ1bmN0aW9uIGJlemllcihwMSwgcDIsIHAzLCBwNCwgdCkgewoKICB2YXIgYSA9IDEgLSB0LAogICAgYiA9IGEgKiBhICogYSwKICAgIGMgPSB0ICogdCAqIHQ7CiAgICAKICByZXR1cm4gcG9pbnQyRChNYXRoLnJvdW5kKGIqcDEueCArIDMqdCphKmEqcDIueCArIDMqdCp0KmEqcDMueCArIGMqcDQueCksCiAgICBNYXRoLnJvdW5kKGIqcDEueSArIDMqdCphKmEqcDIueSArIDMqdCp0KmEqcDMueSArIGMqcDQueSkpOwoKfQoKLy8gR2V0cyBhIDJEIHBvaW50CgpmdW5jdGlvbiBwb2ludDJEKHgsIHkpIHsKICAKICByZXR1cm4ge3g6IHgsIHk6IHl9OwoKfQoKLy8gQ2hlY2tzIGlmIGEgcHJvcGVydHkgYmVsb25ncyB0byBhbiBvYmplY3QKCmZ1bmN0aW9uIGhhcyhwcm9wZXJ0eSwgb2JqZWN0KSB7CiAgCiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsKCn0KCi8vIEdldHMgdGhlIENTUzMgdmVuZG9yIHByZWZpeAoKZnVuY3Rpb24gZ2V0UHJlZml4KCkgewoKICB2YXIgdmVuZG9yUHJlZml4ZXMgPSBbJ01veicsJ1dlYmtpdCcsJ0todG1sJywnTycsJ21zJ10sCiAgbGVuID0gdmVuZG9yUHJlZml4ZXMubGVuZ3RoLAogIHZlbmRvciA9ICcnOwoKICB3aGlsZSAobGVuLS0pCiAgICBpZiAoKHZlbmRvclByZWZpeGVzW2xlbl0gKyAnVHJhbnNmb3JtJykgaW4gZG9jdW1lbnQuYm9keS5zdHlsZSkKICAgICAgdmVuZG9yPSctJyt2ZW5kb3JQcmVmaXhlc1tsZW5dLnRvTG93ZXJDYXNlKCkrJy0nOwoKICByZXR1cm4gdmVuZG9yOwoKfQoKLy8gSlMgRXJyb3JzCgpmdW5jdGlvbiB0dXJuRXJyb3IobWVzc2FnZSkgewoKICBmdW5jdGlvbiBUdXJuSnNFcnJvcihtZXNzYWdlKSB7CiAgICB0aGlzLm5hbWUgPSAiVHVybkpzRXJyb3IiOwogICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZTsKICB9CgogIFR1cm5Kc0Vycm9yLnByb3RvdHlwZSA9IG5ldyBFcnJvcigpOwogIFR1cm5Kc0Vycm9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFR1cm5Kc0Vycm9yOwoKICByZXR1cm4gbmV3IFR1cm5Kc0Vycm9yKG1lc3NhZ2UpOwp9CgovLyBGaW5kIHRoZSBvZmZzZXQgb2YgYW4gZWxlbWVudCBkaXNjYXJkaW5nIGl0cyB0cmFuc2Zvcm1hdGlvbgoKZnVuY3Rpb24gZmluZFBvcyhvYmopIHsKICB2YXIgb2Zmc2V0ID0ge3RvcDogMCwgbGVmdDogMH07CgogIGRvewogICAgb2Zmc2V0LmxlZnQgKz0gb2JqLm9mZnNldExlZnQ7CiAgICBvZmZzZXQudG9wICs9IG9iai5vZmZzZXRUb3A7CiAgfSB3aGlsZSAoKG9iaiA9IG9iai5vZmZzZXRQYXJlbnQpKTsKCiAgcmV0dXJuIG9mZnNldDsKfQoKCi8vIFJlcXVlc3QgYW4gYW5pbWF0aW9uCgp3aW5kb3cucmVxdWVzdEFuaW0gPSBmdW5jdGlvbihjYWxsYmFjaykgewogIHdpbmRvdy5zZXRUaW1lb3V0KGNhbGxiYWNrLCAxMDAwIC8gNjApOwp9CgoKZnVuY3Rpb24gZW1wdHlGdW5jdGlvbigpIHsKICByZXR1cm4gJyc7Cn0KCgovLyBFeHRlbmQgJC5mbgoKJC5leHRlbmQoJC5mbiwgewoKICBmbGlwOiBmdW5jdGlvbihyZXEsIG9wdHMpIHsKICAgIHJldHVybiBkZWNvcmF0b3IodGhpcywgZmxpcE1ldGhvZHMsIGFyZ3VtZW50cyk7CiAgfSwKCiAgdHVybjogZnVuY3Rpb24ocmVxKSB7CiAgICByZXR1cm4gZGVjb3JhdG9yKHRoaXMsIHR1cm5NZXRob2RzLCBhcmd1bWVudHMpOwogIH0sCgogIHRyYW5zZm9ybTogZnVuY3Rpb24odHJhbnNmb3JtLCBvcmlnaW4pIHsKCiAgICB2YXIgcHJvcGVydGllcyA9IHt9OwogICAgCiAgICBpZiAob3JpZ2luKQogICAgICBwcm9wZXJ0aWVzW3ZlbmRvcisndHJhbnNmb3JtLW9yaWdpbiddID0gb3JpZ2luOwogICAgCiAgICBwcm9wZXJ0aWVzW3ZlbmRvcisndHJhbnNmb3JtJ10gPSB0cmFuc2Zvcm07CiAgCiAgICByZXR1cm4gdGhpcy5jc3MocHJvcGVydGllcyk7CgogIH0sCgogIGFuaW1hdGVmOiBmdW5jdGlvbihwb2ludCkgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCk7CgogICAgaWYgKGRhdGEuZWZmZWN0KQogICAgICBkYXRhLmVmZmVjdC5zdG9wKCk7CgogICAgaWYgKHBvaW50KSB7CgogICAgICBpZiAoIXBvaW50LnRvLmxlbmd0aCkgcG9pbnQudG8gPSBbcG9pbnQudG9dOwogICAgICBpZiAoIXBvaW50LmZyb20ubGVuZ3RoKSBwb2ludC5mcm9tID0gW3BvaW50LmZyb21dOwoKICAgICAgdmFyIGRpZmYgPSBbXSwKICAgICAgICBsZW4gPSBwb2ludC50by5sZW5ndGgsCiAgICAgICAgYW5pbWF0aW5nID0gdHJ1ZSwKICAgICAgICB0aGF0ID0gdGhpcywKICAgICAgICB0aW1lID0gKG5ldyBEYXRlKCkpLmdldFRpbWUoKSwKICAgICAgICBmcmFtZSA9IGZ1bmN0aW9uKCkgewoKICAgICAgICAgIGlmICghZGF0YS5lZmZlY3QgfHwgIWFuaW1hdGluZykKICAgICAgICAgICAgcmV0dXJuOwoKICAgICAgICAgIHZhciB2ID0gW10sCiAgICAgICAgICAgIHRpbWVEaWZmID0gTWF0aC5taW4ocG9pbnQuZHVyYXRpb24sIChuZXcgRGF0ZSgpKS5nZXRUaW1lKCkgLSB0aW1lKTsKCiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKQogICAgICAgICAgICB2LnB1c2goZGF0YS5lZmZlY3QuZWFzaW5nKDEsIHRpbWVEaWZmLCBwb2ludC5mcm9tW2ldLCBkaWZmW2ldLCBwb2ludC5kdXJhdGlvbikpOwoKICAgICAgICAgIHBvaW50LmZyYW1lKChsZW49PTEpID8gdlswXSA6IHYpOwoKICAgICAgICAgIGlmICh0aW1lRGlmZj09cG9pbnQuZHVyYXRpb24pIHsKICAgICAgICAgICAgZGVsZXRlIGRhdGFbJ2VmZmVjdCddOwogICAgICAgICAgICB0aGF0LmRhdGEoZGF0YSk7CiAgICAgICAgICAgIGlmIChwb2ludC5jb21wbGV0ZSkKICAgICAgICAgICAgICBwb2ludC5jb21wbGV0ZSgpOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgd2luZG93LnJlcXVlc3RBbmltKGZyYW1lKTsKICAgICAgICAgIH0KICAgICAgICB9OwoKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykKICAgICAgICBkaWZmLnB1c2gocG9pbnQudG9baV0gLSBwb2ludC5mcm9tW2ldKTsKCiAgICAgIGRhdGEuZWZmZWN0ID0gJC5leHRlbmQoewogICAgICAgIHN0b3A6IGZ1bmN0aW9uKCkgewogICAgICAgICAgYW5pbWF0aW5nID0gZmFsc2U7CiAgICAgICAgfSwKICAgICAgICBlYXNpbmc6IGZ1bmN0aW9uICh4LCB0LCBiLCBjLCBkYXRhKSB7CiAgICAgICAgICByZXR1cm4gYyAqIE1hdGguc3FydCgxIC0gKHQ9dC9kYXRhLTEpKnQpICsgYjsKICAgICAgICB9CiAgICAgIH0sIHBvaW50KTsKCiAgICAgIHRoaXMuZGF0YShkYXRhKTsKCiAgICAgIGZyYW1lKCk7CgogICAgfSBlbHNlIHsKICAgICAgCiAgICAgIGRlbGV0ZSBkYXRhWydlZmZlY3QnXTsKCiAgICB9CiAgfQp9KTsKCi8vIEV4cG9ydCBzb21lIGdsb2JhbHMKCiQuaXNUb3VjaCA9IGlzVG91Y2g7CiQubW91c2VFdmVudHMgPSBtb3VzZUV2ZW50czsKJC5jc3NQcmVmaXggPSBlbXB0eUZ1bmN0aW9uOwokLmNzc1RyYW5zaXRpb25FbmQgPSBlbXB0eUZ1bmN0aW9uOwokLmZpbmRQb3MgPSBmaW5kUG9zOwoKfSkoalF1ZXJ5KTs='></script>
	<script id="fb_lib_zoom_js" src='data:/text/plain;base64,LyoqCiAqIHpvb20uanMKICogd3d3LnR1cm5qcy5jb20KICogdHVybmpzLmNvbS9saWNlbnNlLnR4dAogKgogKiBDb3B5cmlnaHQgKEMpIDIwMTIgRW1tYW51ZWwgR2FyY2lhCiAqKi8KCihmdW5jdGlvbigkKSB7CgondXNlIHN0cmljdCc7Cgp2YXIgaGFzM2QsCgp6b29tT3B0aW9ucyA9IHsKICBtYXg6IDIsCiAgZmxpcGJvb2s6IG51bGwsCiAgZWFzZUZ1bmN0aW9uOiAnZWFzZS1pbi1vdXQnLAogIGR1cmF0aW9uOiA1MDAsCiAgd2hlbjoge30KfSwKCnpvb21NZXRob2RzID0gewogIGluaXQ6IGZ1bmN0aW9uKG9wdHMpIHsKCiAgICB2YXIgdGhhdCA9IHRoaXMsCiAgICBkYXRhID0gdGhpcy5kYXRhKCksCiAgICBvcHRpb25zID0gJC5leHRlbmQoe30sIHpvb21PcHRpb25zLCBvcHRzKTsKCiAgICBpZiAoIW9wdGlvbnMuZmxpcGJvb2sgfHwgIW9wdGlvbnMuZmxpcGJvb2sudHVybignaXMnKSkgewogICAgICB0aHJvdyBlcnJvcignb3B0aW9ucy5mbGlwYm9vayBpcyByZXF1aXJlZCcpOwogICAgfQoKICAgIGhhczNkID0gJ1dlYktpdENTU01hdHJpeCcgaW4gd2luZG93IHx8ICdNb3pQZXJzcGVjdGl2ZScgaW4gZG9jdW1lbnQuYm9keS5zdHlsZTsKCiAgICBpZiAodHlwZW9mKG9wdGlvbnMubWF4KSE9J2Z1bmN0aW9uJykgewogICAgICB2YXIgbWF4ID0gb3B0aW9ucy5tYXg7CiAgICAgIG9wdGlvbnMubWF4ID0gZnVuY3Rpb24oKSB7IHJldHVybiBtYXg7IH07CiAgICB9CgogICAgZGF0YS56b29tID0gewogICAgICBvcHRzOiBvcHRpb25zLAogICAgICBheGlzOiBwb2ludDJEKDAsIDApLAogICAgICBzY3JvbGxQb3M6IHBvaW50MkQoMCwgMCksCiAgICAgIGV2ZW50UXVldWU6IFtdLAogICAgICBtb3VzZXVwRXZlbnQ6IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiB6b29tTWV0aG9kcy5fZU1vdXNlVXAuYXBwbHkodGhhdCwgYXJndW1lbnRzKTsKICAgICAgfSwKICAgICAgZXZlbnRUb3VjaFN0YXJ0OiBiaW5kKHpvb21NZXRob2RzLl9lVG91Y2hTdGFydCwgdGhhdCksCiAgICAgIGV2ZW50VG91Y2hNb3ZlOiBiaW5kKHpvb21NZXRob2RzLl9lVG91Y2hNb3ZlLCB0aGF0KSwKICAgICAgZXZlbnRUb3VjaEVuZDogYmluZCh6b29tTWV0aG9kcy5fZVRvdWNoRW5kLCB0aGF0KSwKICAgICAgZmxpcGJvb2tFdmVudHM6IHsKICAgICAgICB6b29taW5nOiBiaW5kKHpvb21NZXRob2RzLl9lWm9vbSwgdGhhdCksCiAgICAgICAgcHJlc3NlZDogYmluZCh6b29tTWV0aG9kcy5fZVByZXNzZWQsIHRoYXQpLAogICAgICAgIHJlbGVhc2VkOiBiaW5kKHpvb21NZXRob2RzLl9lUmVsZWFzZWQsIHRoYXQpLAogICAgICAgIHN0YXJ0OiBiaW5kKHpvb21NZXRob2RzLl9lU3RhcnQsIHRoYXQpLAogICAgICAgIHR1cm5pbmc6IGJpbmQoem9vbU1ldGhvZHMuX2VUdXJuaW5nLCB0aGF0KSwKICAgICAgICB0dXJuZWQ6IGJpbmQoem9vbU1ldGhvZHMuX2VUdXJuZWQsIHRoYXQpLAogICAgICAgIGRlc3Ryb3lpbmc6IGJpbmQoem9vbU1ldGhvZHMuX2VEZXN0cm95aW5nLCB0aGF0KQogICAgICB9CiAgICB9OwoKICAgIGZvciAodmFyIGV2ZW50TmFtZSBpbiBvcHRpb25zLndoZW4pIHsKICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvcHRpb25zLndoZW4sIGV2ZW50TmFtZSkpIHsKICAgICAgICB0aGlzLmJpbmQoJ3pvb20uJytldmVudE5hbWUsIG9wdGlvbnMud2hlbltldmVudE5hbWVdKTsKICAgICAgfQogICAgfQoKICAgIGZvciAoZXZlbnROYW1lIGluIGRhdGEuem9vbS5mbGlwYm9va0V2ZW50cykgewogICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGEuem9vbS5mbGlwYm9va0V2ZW50cywgZXZlbnROYW1lKSkgewogICAgICAgIG9wdGlvbnMuZmxpcGJvb2suYmluZChldmVudE5hbWUsIGRhdGEuem9vbS5mbGlwYm9va0V2ZW50c1tldmVudE5hbWVdKTsKICAgICAgfQogICAgfQoKICAgIHRoaXMuY3NzKHsKICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsCiAgICAgIG92ZXJmbG93IDogJ2hpZGRlbicKICAgIH0pOwoKICAgIGlmICgkLmlzVG91Y2gpIHsKCiAgICAgIG9wdGlvbnMuZmxpcGJvb2suCiAgICAgICAgYmluZCgndG91Y2hzdGFydCcsIGRhdGEuem9vbS5ldmVudFRvdWNoU3RhcnQgKS4KICAgICAgICBiaW5kKCd0b3VjaG1vdmUnLCBkYXRhLnpvb20uZXZlbnRUb3VjaE1vdmUpLgogICAgICAgIGJpbmQoJ3RvdWNoZW5kJywgZGF0YS56b29tLmV2ZW50VG91Y2hFbmQpOwoKICAgICAgdGhpcy5iaW5kKCd0b3VjaHN0YXJ0Jywgem9vbU1ldGhvZHMuX3RhcCk7CgogICAgfSBlbHNlIHsKICAgICAgdGhpcy5tb3VzZWRvd24oem9vbU1ldGhvZHMuX21vdXNlZG93bikuCiAgICAgICAgY2xpY2soem9vbU1ldGhvZHMuX3RhcCk7CiAgICB9CiAgfSwKCiAgX3RhcDogZnVuY3Rpb24oZXZlbnQpIHsKICAgIAogICAgdmFyIHRoYXQgPSAkKHRoaXMpLAogICAgICBkYXRhID0gdGhhdC5kYXRhKCkuem9vbSwKICAgICAgZmxpcCA9IGRhdGEub3B0cy5mbGlwYm9vazsKCiAgICBpZiAoZGF0YS5kcmFnZ2luZ0Nvcm5lciB8fCBkYXRhLmRyYWdnaW5nKSB7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICBpZiAoaXNQYWdlKCQoZXZlbnQudGFyZ2V0KSwgdGhhdCkpIHsKCiAgICAgIHpvb21NZXRob2RzLl9hZGRFdmVudC5jYWxsKHRoYXQsICd0YXAnLCBldmVudCk7CiAgICAgIAogICAgICB2YXIgc2VjdWVuY2UgPSB6b29tTWV0aG9kcy5fZXZlbnRTZXEuY2FsbCh0aGF0KTsKCiAgICAgIGlmIChzZWN1ZW5jZSkKICAgICAgICB0aGF0LnRyaWdnZXIoc2VjdWVuY2UpOwoKICAgIH0KCiAgfSwKCiAgX2FkZEV2ZW50OiBmdW5jdGlvbihldmVudE5hbWUsIGV2ZW50KSB7CiAgICAKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCkuem9vbSwKICAgICAgdGltZSA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCksCiAgICAgIGV2ZW50T2JqZWN0ID0ge25hbWU6IGV2ZW50TmFtZSwgdGltZXN0YW1wOiB0aW1lLCBldmVudDogZXZlbnR9OwoKICAgIGRhdGEuZXZlbnRRdWV1ZS5wdXNoKGV2ZW50T2JqZWN0KTsKCiAgICBpZiAoZGF0YS5ldmVudFF1ZXVlLmxlbmd0aD4xMCkKICAgICAgZGF0YS5ldmVudFF1ZXVlLnNwbGljZSgwLCAxKTsKCiAgfSwKCiAgX2V2ZW50U2VxOiBmdW5jdGlvbigpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLnpvb20sCiAgICAgIGxpc3QgPSBkYXRhLmV2ZW50UXVldWUsCiAgICAgIGxhc3RFdmVudCA9IGxpc3QubGVuZ3RoLTE7CgogICAgaWYgKGxhc3RFdmVudD4wICYmCiAgICAgIGxpc3RbbGFzdEV2ZW50XS5uYW1lPT0ndGFwJyAmJgogICAgICBsaXN0W2xhc3RFdmVudC0xXS5uYW1lPT0ndGFwJyAmJgogICAgICBsaXN0W2xhc3RFdmVudF0uZXZlbnQucGFnZVggPT0gbGlzdFtsYXN0RXZlbnQtMV0uZXZlbnQucGFnZVggJiYKICAgICAgbGlzdFtsYXN0RXZlbnRdLmV2ZW50LnBhZ2VZID09IGxpc3RbbGFzdEV2ZW50LTFdLmV2ZW50LnBhZ2VZICYmCiAgICAgIGxpc3RbbGFzdEV2ZW50XS50aW1lc3RhbXAtbGlzdFtsYXN0RXZlbnQtMV0udGltZXN0YW1wIDwgMjAwICYmCiAgICAgIGxpc3RbbGFzdEV2ZW50XS50aW1lc3RhbXAtbGlzdFtsYXN0RXZlbnQtMV0udGltZXN0YW1wID4gNTApCiAgICB7CiAgCiAgICAgIHJldHVybiAkLmV4dGVuZChsaXN0W2xhc3RFdmVudF0uZXZlbnQsIHt0eXBlOiAnem9vbS5kb3VibGVUYXAnfSk7CgogICAgfSBlbHNlIGlmIChsaXN0W2xhc3RFdmVudF0ubmFtZT09J3RhcCcpIHsKICAgICAgCiAgICAgIHJldHVybiAkLmV4dGVuZChsaXN0W2xhc3RFdmVudF0uZXZlbnQsIHt0eXBlOiAnem9vbS50YXAnfSk7CgogICAgfQogICAgICAKICB9LAoKICBfcHJlcGFyZVpvb206IGZ1bmN0aW9uICgpIHsKICAgIAogICAgdmFyIGZsaXBQb3MsIG9mZnNldExlZnQgPSAwLAogICAgICBkYXRhID0gdGhpcy5kYXRhKCkuem9vbSwKICAgICAgaW52eiA9IDEvdGhpcy56b29tKCd2YWx1ZScpLAogICAgICBmbGlwID0gZGF0YS5vcHRzLmZsaXBib29rLAogICAgICBkaXIgPSBmbGlwLnR1cm4oJ2RpcmVjdGlvbicpLAogICAgICBmbGlwRGF0YSA9IGZsaXAuZGF0YSgpLAogICAgICBmbGlwT2Zmc2V0ID0gZmxpcC5vZmZzZXQoKSwKICAgICAgdGhpc09mZnNldCA9IHRoaXMub2Zmc2V0KCksCiAgICAgIGZsaXBTaXplID0ge2hlaWdodDogZmxpcC5oZWlnaHQoKX0sCiAgICAgIHZpZXcgPSBmbGlwLnR1cm4oJ3ZpZXcnKTsKCiAgICAgIGlmIChmbGlwLnR1cm4oJ2Rpc3BsYXknKT09J2RvdWJsZScgJiYgZmxpcC5kYXRhKCkub3B0cy5hdXRvQ2VudGVyKSB7CiAgICAgICAgaWYgKCF2aWV3WzBdKSB7CiAgICAgICAgICBmbGlwU2l6ZS53aWR0aCA9IGZsaXAud2lkdGgoKS8yOwogICAgICAgICAgb2Zmc2V0TGVmdCA9IChkaXI9PSdsdHInKSA/IGZsaXBTaXplLndpZHRoIDogMDsKICAgICAgICAgIGZsaXBQb3MgPSBwb2ludDJEKAogICAgICAgICAgICAoZGlyPT0nbHRyJykgPyBmbGlwT2Zmc2V0LmxlZnQtdGhpc09mZnNldC5sZWZ0K2ZsaXBTaXplLndpZHRoIDogZmxpcE9mZnNldC5sZWZ0LXRoaXNPZmZzZXQubGVmdCwKICAgICAgICAgICAgZmxpcE9mZnNldC50b3AtdGhpc09mZnNldC50b3AKICAgICAgICAgICk7CgogICAgICAgIH0gZWxzZSBpZiAoIXZpZXdbMV0pIHsKICAgICAgICAgIGZsaXBTaXplLndpZHRoID0gZmxpcC53aWR0aCgpLzI7CiAgICAgICAgICBvZmZzZXRMZWZ0ID0gKGRpcj09J2x0cicpID8gMCA6IGZsaXBTaXplLndpZHRoOwogICAgICAgICAgZmxpcFBvcyA9IHBvaW50MkQoCiAgICAgICAgICAgIChkaXI9PSdsdHInKSA/IGZsaXBPZmZzZXQubGVmdC10aGlzT2Zmc2V0LmxlZnQgOiBmbGlwT2Zmc2V0LmxlZnQtdGhpc09mZnNldC5sZWZ0K2ZsaXBTaXplLndpZHRoLAogICAgICAgICAgICBmbGlwT2Zmc2V0LnRvcC10aGlzT2Zmc2V0LnRvcAogICAgICAgICAgKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgZmxpcFNpemUud2lkdGggPSBmbGlwLndpZHRoKCk7CiAgICAgICAgICBmbGlwUG9zID0gcG9pbnQyRCgKICAgICAgICAgICAgZmxpcE9mZnNldC5sZWZ0LXRoaXNPZmZzZXQubGVmdCwKICAgICAgICAgICAgZmxpcE9mZnNldC50b3AtdGhpc09mZnNldC50b3AKICAgICAgICAgICk7CiAgICAgICAgfQogICAgICB9IGVsc2UgewogICAgICAgIGZsaXBTaXplLndpZHRoID0gZmxpcC53aWR0aCgpOwogICAgICAgIGZsaXBQb3MgPSBwb2ludDJEKAogICAgICAgICAgZmxpcE9mZnNldC5sZWZ0LXRoaXNPZmZzZXQubGVmdCwKICAgICAgICAgIGZsaXBPZmZzZXQudG9wLXRoaXNPZmZzZXQudG9wCiAgICAgICAgKTsKICAgICAgfQoKICAgIGlmICghZGF0YS56b29tZXIpIHsKICAgICAgZGF0YS56b29tZXIgPSAkKCc8ZGl2IC8+JywKICAgICAgICB7J2NsYXNzJzogJ3pvb21lcicsCiAgICAgICAgICBjc3M6IHsKICAgICAgICAgICAgb3ZlcmZsb3c6J2hpZGRlbicsCiAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLAogICAgICAgICAgICB6SW5kZXg6ICcxMDAwMDAwJwogICAgICAgICAgfQogICAgICAgIH0pLgogICAgICBtb3VzZWRvd24oZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9KS5hcHBlbmRUbyh0aGlzKTsKICAgIH0KCgogICAgZGF0YS56b29tZXIuY3NzKHsKICAgICAgdG9wOiBmbGlwUG9zLnksCiAgICAgIGxlZnQ6IGZsaXBQb3MueCwKICAgICAgd2lkdGg6IGZsaXBTaXplLndpZHRoLAogICAgICBoZWlnaHQ6IGZsaXBTaXplLmhlaWdodAogICAgfSk7CiAgICAKICAgIHZhciB6b29tZXJWaWV3ID0gdmlldy5qb2luKCcsJyk7CgogICAgaWYgKHpvb21lclZpZXchPWRhdGEuem9vbWVyVmlldykgewoKICAgICAgZGF0YS56b29tZXJWaWV3ID0gem9vbWVyVmlldzsKICAgICAgZGF0YS56b29tZXIuZmluZCgnKicpLnJlbW92ZSgpOwoKICAgICAgZm9yICh2YXIgcCA9IDA7IHA8dmlldy5sZW5ndGg7IHArKykgewoKICAgICAgICBpZiAoIXZpZXdbcF0pCiAgICAgICAgICBjb250aW51ZTsKCiAgICAgICAgdmFyIHBvcyA9IGZsaXBEYXRhLnBhZ2VPYmpzW3ZpZXdbcF1dLm9mZnNldCgpLAogICAgICAgICAgcGFnZUVsZW1lbnQgPSAkKGZsaXBEYXRhLnBhZ2VPYmpzW3ZpZXdbcF1dKTsKICAgICAgICAgIAogICAgICAgIHBhZ2VFbGVtZW50LgogICAgICAgICAgY2xvbmUoKS4KICAgICAgICAgIHRyYW5zZm9ybSgnJykuCiAgICAgICAgICBjc3MoewogICAgICAgICAgICB3aWR0aDogcGFnZUVsZW1lbnQud2lkdGgoKSppbnZ6LAogICAgICAgICAgICBoZWlnaHQ6IHBhZ2VFbGVtZW50LmhlaWdodCgpKmludnosCiAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLAogICAgICAgICAgICBkaXNwbGF5OiAnJywKICAgICAgICAgICAgdG9wOiAocG9zLnRvcCAtIGZsaXBPZmZzZXQudG9wKSppbnZ6LAogICAgICAgICAgICBsZWZ0OiAocG9zLmxlZnQgLSBmbGlwT2Zmc2V0LmxlZnQgLSBvZmZzZXRMZWZ0KSppbnZ6CiAgICAgICAgICB9KS4KICAgICAgICAgIGFwcGVuZFRvKGRhdGEuem9vbWVyKTsKICAgICAgfQogICAgfQogICAgCiAgICAKICAgIHJldHVybiB7cG9zOiBmbGlwUG9zLCBzaXplOiBmbGlwU2l6ZX07CgogIH0sCgogIHZhbHVlOiBmdW5jdGlvbigpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLnpvb207CgogICAgcmV0dXJuIGRhdGEub3B0cy5mbGlwYm9vay50dXJuKCd6b29tJyk7CiAgfSwKCiAgem9vbUluOiBmdW5jdGlvbihldmVudCkgewoKICAgIHZhciBwb3MsCiAgICAgIHRoYXQgPSB0aGlzLAogICAgICBkYXRhID0gdGhpcy5kYXRhKCkuem9vbSwKICAgICAgZmxpcCA9IGRhdGEub3B0cy5mbGlwYm9vaywKICAgICAgem9vbSA9IGRhdGEub3B0cy5tYXgoKSwKICAgICAgZmxpcE9mZnNldCA9IGZsaXAub2Zmc2V0KCksCiAgICAgIHRoaXNPZmZzZXQgPSB0aGlzLm9mZnNldCgpOwoKICAgIGlmIChkYXRhLnpvb21JbikKICAgICAgcmV0dXJuIHRoaXM7CgogICAgZmxpcC50dXJuKCdzdG9wJyk7CiAgICAKICAgIHZhciBldiA9ICQuRXZlbnQoJ3pvb20uY2hhbmdlJyk7CiAgICB0aGlzLnRyaWdnZXIoZXYsIFt6b29tXSk7CgogICAgaWYgKGV2LmlzRGVmYXVsdFByZXZlbnRlZCgpKQogICAgICByZXR1cm4gdGhpczsKCiAgICB2YXIgYm91bmQgPSB6b29tTWV0aG9kcy5fcHJlcGFyZVpvb20uY2FsbCh0aGlzKSwKICAgICAgZmxpcFBvcyA9IGJvdW5kLnBvcywKICAgICAgY2VudGVyID0gcG9pbnQyRChib3VuZC5zaXplLndpZHRoLzIsIGJvdW5kLnNpemUuaGVpZ2h0LzIpLAogICAgICBwcmVmaXggPSAkLmNzc1ByZWZpeCgpLAogICAgICB0cmFuc2l0aW9uRW5kID0gJC5jc3NUcmFuc2l0aW9uRW5kKCksCiAgICAgIGF1dG9DZW50ZXIgPSBmbGlwLmRhdGEoKS5vcHRzLmF1dG9DZW50ZXI7CgogICAgZGF0YS5zY2FsZSA9IHpvb207CiAgICBmbGlwLmRhdGEoKS5ub0NlbnRlciA9IHRydWU7CgogICAgaWYgKHR5cGVvZihldmVudCkhPSd1bmRlZmluZWQnKSB7CgogICAgICBpZiAoJ3gnIGluIGV2ZW50ICYmICd5JyBpbiBldmVudCkgewogICAgICAgIAogICAgICAgIHBvcyA9IHBvaW50MkQoZXZlbnQueC1mbGlwUG9zLngsIGV2ZW50LnktZmxpcFBvcy55KTsKICAgICAgCiAgICAgIH0gZWxzZSB7CgogICAgICAgIHBvcyA9ICgkLmlzVG91Y2gpID8KICAgICAgICAgIHBvaW50MkQoCiAgICAgICAgICAgIGV2ZW50Lm9yaWdpbmFsRXZlbnQudG91Y2hlc1swXS5wYWdlWC1mbGlwUG9zLngtdGhpc09mZnNldC5sZWZ0LAogICAgICAgICAgICBldmVudC5vcmlnaW5hbEV2ZW50LnRvdWNoZXNbMF0ucGFnZVktZmxpcFBvcy55LXRoaXNPZmZzZXQudG9wCiAgICAgICAgICApCiAgICAgICAgICA6CiAgICAgICAgICBwb2ludDJEKAogICAgICAgICAgICBldmVudC5wYWdlWC1mbGlwUG9zLngtdGhpc09mZnNldC5sZWZ0LAogICAgICAgICAgICBldmVudC5wYWdlWS1mbGlwUG9zLnktdGhpc09mZnNldC50b3AKICAgICAgICAgICk7CgogICAgICB9CgogICAgfSBlbHNlIHsKICAgICAgcG9zID0gcG9pbnQyRChjZW50ZXIueCwgY2VudGVyLnkpOwogICAgfQoKCgogICAgaWYgKHBvcy54PDAgfHwgcG9zLnk8MCB8fCBwb3MueD5ib3VuZC53aWR0aCB8fCBwb3MueT5ib3VuZC5oZWlnaHQpIHsKICAgICAgcG9zLnggPSBjZW50ZXIueDsKICAgICAgcG9zLnkgPSBjZW50ZXIueTsKICAgIH0KCgogICAgdmFyIGNvbXBvc2UgPSBwb2ludDJEKAogICAgICAgIChwb3MueC1jZW50ZXIueCkqem9vbSArIGNlbnRlci54LAogICAgICAgIChwb3MueS1jZW50ZXIueSkqem9vbSArIGNlbnRlci55CiAgICAgICksCiAgICAgIG1vdmUgPSBwb2ludDJEKAogICAgICAgIChib3VuZC5zaXplLndpZHRoKnpvb20+dGhpcy53aWR0aCgpKSA/IHBvcy54LWNvbXBvc2UueCA6IDAsCiAgICAgICAgKGJvdW5kLnNpemUuaGVpZ2h0Knpvb20+dGhpcy5oZWlnaHQoKSkgPyBwb3MueS1jb21wb3NlLnkgOiAwCiAgICAgICksCiAgICAgIG1heE1vdmUgPSBwb2ludDJEKAogICAgICAgIE1hdGguYWJzKGJvdW5kLnNpemUud2lkdGgqem9vbS10aGlzLndpZHRoKCkpLAogICAgICAgIE1hdGguYWJzKGJvdW5kLnNpemUuaGVpZ2h0Knpvb20tdGhpcy5oZWlnaHQoKSkKICAgICAgKSwKICAgICAgbWluTW92ZSA9IHBvaW50MkQoCiAgICAgICAgTWF0aC5taW4oMCwgYm91bmQuc2l6ZS53aWR0aCp6b29tLXRoaXMud2lkdGgoKSksCiAgICAgICAgTWF0aC5taW4oMCwgYm91bmQuc2l6ZS5oZWlnaHQqem9vbS10aGlzLmhlaWdodCgpKQogICAgICApLAogICAgICByZWFsUG9zID0gcG9pbnQyRCgKICAgICAgICBjZW50ZXIueCp6b29tIC0gY2VudGVyLnggLSBmbGlwUG9zLnggLSBtb3ZlLngsCiAgICAgICAgY2VudGVyLnkqem9vbSAtIGNlbnRlci55IC0gZmxpcFBvcy55IC0gbW92ZS55CiAgICAgICk7CgogICAgaWYgKHJlYWxQb3MueT5tYXhNb3ZlLnkpCiAgICAgIG1vdmUueSA9IHJlYWxQb3MueSAtIG1heE1vdmUueSArICBtb3ZlLnk7CiAgICBlbHNlIGlmIChyZWFsUG9zLnk8bWluTW92ZS55KQogICAgICBtb3ZlLnkgPSByZWFsUG9zLnkgLSBtaW5Nb3ZlLnkgKyAgbW92ZS55OwoKICAgIGlmIChyZWFsUG9zLng+bWF4TW92ZS54KQogICAgICBtb3ZlLnggPSByZWFsUG9zLnggLSBtYXhNb3ZlLnggKyAgbW92ZS54OwogICAgZWxzZSBpZiAocmVhbFBvcy54PG1pbk1vdmUueCkKICAgICAgbW92ZS54ID0gcmVhbFBvcy54IC0gbWluTW92ZS54ICsgIG1vdmUueDsKCiAgICByZWFsUG9zID0gcG9pbnQyRCgKICAgICAgY2VudGVyLngqem9vbSAtIGNlbnRlci54IC0gZmxpcFBvcy54IC0gbW92ZS54LAogICAgICBjZW50ZXIueSp6b29tIC0gY2VudGVyLnkgLSBmbGlwUG9zLnkgLSBtb3ZlLnkKICAgICk7CgogICAgdmFyIGNzcyA9IHt9OwoKICAgIGNzc1twcmVmaXgrJ3RyYW5zaXRpb24nXSA9IHByZWZpeCArCiAgICAgICd0cmFuc2Zvcm0gJyArCiAgICAgIGRhdGEub3B0cy5lYXNlRnVuY3Rpb24gKwogICAgICAnICcgKwogICAgICBkYXRhLm9wdHMuZHVyYXRpb24gKwogICAgICAnbXMnOwoKICAgIHZhciB0cmFuc2l0aW9uRW5kQ2FsbGJhY2sgPSBmdW5jdGlvbigpIHsKCiAgICAgIHRoYXQudHJpZ2dlcignem9vbS56b29tSW4nKTsKCiAgICAgIGRhdGEuem9vbUluID0gdHJ1ZTsKCiAgICAgIGRhdGEuZmxpcFBvc2l0aW9uID0gcG9pbnQyRChmbGlwLmNzcygnbGVmdCcpLCBmbGlwLmNzcygndG9wJykpOwoKICAgICAgZmxpcC50dXJuKCd6b29tJywgem9vbSkuY3NzKHsKICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJywKICAgICAgICBtYXJnaW46ICcnLAogICAgICAgIHRvcDowLAogICAgICAgIGxlZnQ6MAogICAgICB9KTsKCiAgICAgIHZhciBmbGlwT2Zmc2V0ID0gZmxpcC5vZmZzZXQoKTsKICAgICAgCiAgICAgIGRhdGEuYXhpcyA9IHBvaW50MkQoCiAgICAgICAgZmxpcE9mZnNldC5sZWZ0IC0gdGhpc09mZnNldC5sZWZ0LAogICAgICAgIGZsaXBPZmZzZXQudG9wIC0gdGhpc09mZnNldC50b3AKICAgICAgKTsKCgogICAgICBpZiAoYXV0b0NlbnRlciAmJiBmbGlwLnR1cm4oJ2Rpc3BsYXknKT09J2RvdWJsZScpCiAgICAgICAgaWYgKChmbGlwLnR1cm4oJ2RpcmVjdGlvbicpPT0nbHRyJyAmJiAhZmxpcC50dXJuKCd2aWV3JylbMF0pIHx8CiAgICAgICAgICAoZmxpcC50dXJuKCdkaXJlY3Rpb24nKT09J3J0bCcgJiYgIWZsaXAudHVybigndmlldycpWzFdKQogICAgICAgICkKICAgICAgICAgIGRhdGEuYXhpcy54ID0gZGF0YS5heGlzLnggKyBmbGlwLndpZHRoKCkvMjsKCiAgICAgIHRoYXQuem9vbSgnc2Nyb2xsJywgcmVhbFBvcyk7CiAgICAgIHRoYXQuYmluZCgkLm1vdXNlRXZlbnRzLmRvd24sIHpvb21NZXRob2RzLl9lTW91c2VEb3duKTsKICAgICAgdGhhdC5iaW5kKCQubW91c2VFdmVudHMubW92ZSwgem9vbU1ldGhvZHMuX2VNb3VzZU1vdmUpOwogICAgICAkKGRvY3VtZW50KS5iaW5kKCQubW91c2VFdmVudHMudXAsIGRhdGEubW91c2V1cEV2ZW50KTsKICAgICAgdGhhdC5iaW5kKCdtb3VzZXdoZWVsJywgem9vbU1ldGhvZHMuX2VNb3VzZVdoZWVsKTsKCiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgZGF0YS56b29tZXIuaGlkZSgpOwogICAgICAgIGRhdGEuem9vbWVyLnJlbW92ZSgpOwogICAgICAgIGRhdGEuem9vbWVyID0gbnVsbDsKICAgICAgICBkYXRhLnpvb21lclZpZXcgPSBudWxsOwogICAgICB9LCA1MCk7CgogICAgfTsKCiAgICBkYXRhLnpvb21lci5jc3MoY3NzKS5zaG93KCk7CgogICAgaWYgKHRyYW5zaXRpb25FbmQpCiAgICAgIGRhdGEuem9vbWVyLmJpbmQodHJhbnNpdGlvbkVuZCwgZnVuY3Rpb24oKSB7CiAgICAgICAgJCh0aGlzKS51bmJpbmQodHJhbnNpdGlvbkVuZCk7CiAgICAgICAgdHJhbnNpdGlvbkVuZENhbGxiYWNrKCk7CiAgICAgIH0pOwogICAgZWxzZQogICAgICBzZXRUaW1lb3V0KHRyYW5zaXRpb25FbmRDYWxsYmFjaywgZGF0YS5vcHRzLmR1cmF0aW9uKTsKCiAgICBkYXRhLnpvb21lci50cmFuc2Zvcm0odHJhbnNsYXRlKG1vdmUueCwgbW92ZS55LCB0cnVlKSArIHNjYWxlKHpvb20sIHRydWUpKTsKICAgIAogICAgcmV0dXJuIHRoaXM7CiAgfSwKCiAgem9vbU91dDogZnVuY3Rpb24oZHVyYXRpb24pIHsKCiAgICB2YXIgcG9zLCBtb3ZlLAogICAgICB0aGF0ID0gdGhpcywKICAgICAgZGF0YSA9IHRoaXMuZGF0YSgpLnpvb20sCiAgICAgIGZsaXAgPSBkYXRhLm9wdHMuZmxpcGJvb2ssCiAgICAgIHpvb20gPSAxLAogICAgICBzY2FsaW5nID0gem9vbS9kYXRhLnNjYWxlLAogICAgICBwcmVmaXggPSAkLmNzc1ByZWZpeCgpLAogICAgICB0cmFuc2l0aW9uRW5kID0gJC5jc3NUcmFuc2l0aW9uRW5kKCksCiAgICAgIHRoaXNPZmZzZXQgPSB0aGlzLm9mZnNldCgpOwoKICAgIGR1cmF0aW9uID0gKHR5cGVvZihkdXJhdGlvbikhPSd1bmRlZmluZWQnKSA/IGR1cmF0aW9uIDogZGF0YS5vcHRzLmR1cmF0aW9uOwoKICAgIGlmICghZGF0YS56b29tSW4pCiAgICAgIHJldHVybjsKICAgICAgCiAgICB2YXIgZXYgPSAkLkV2ZW50KCd6b29tLmNoYW5nZScpOwogICAgdGhpcy50cmlnZ2VyKGV2LCBbem9vbV0pOwoKICAgIGlmIChldi5pc0RlZmF1bHRQcmV2ZW50ZWQoKSkKICAgICAgcmV0dXJuIHRoaXM7CgogICAgZGF0YS56b29tSW4gPSBmYWxzZTsKICAgIGRhdGEuc2NhbGUgPSB6b29tOwoKICAgIGZsaXAuZGF0YSgpLm5vQ2VudGVyID0gZmFsc2U7CgogICAgdGhhdC51bmJpbmQoJC5tb3VzZUV2ZW50cy5kb3duLCB6b29tTWV0aG9kcy5fZU1vdXNlRG93bik7CiAgICB0aGF0LnVuYmluZCgkLm1vdXNlRXZlbnRzLm1vdmUsIHpvb21NZXRob2RzLl9lTW91c2VNb3ZlKTsKICAgICQoZG9jdW1lbnQpLnVuYmluZCgkLm1vdXNlRXZlbnRzLnVwLCBkYXRhLm1vdXNldXBFdmVudCk7CiAgICB0aGF0LnVuYmluZCgnbW91c2V3aGVlbCcsIHpvb21NZXRob2RzLl9lTW91c2VXaGVlbCk7CgogICAgdmFyIGNzcyA9IHt9OwoKICAgIGNzc1twcmVmaXgrJ3RyYW5zaXRpb24nXSA9IHByZWZpeCArCiAgICAgICd0cmFuc2Zvcm0gJyArCiAgICAgIGRhdGEub3B0cy5lYXNlRnVuY3Rpb24gKwogICAgICAnICcgKwogICAgICBkdXJhdGlvbiArCiAgICAgICdtcyc7CgogICAgZmxpcC5jc3MoY3NzKTsKCiAgICB2YXIgZmxpcERlc1BvcywKICAgICAgdG1wID0gJCgnPGRpdiAvPicsIHsKICAgICAgICBjc3M6IHsKICAgICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLAogICAgICAgICAgdG9wOiBkYXRhLmZsaXBQb3NpdGlvbi55LAogICAgICAgICAgbGVmdDogZGF0YS5mbGlwUG9zaXRpb24ueCwKICAgICAgICAgIHdpZHRoOiBmbGlwLndpZHRoKCkqc2NhbGluZywKICAgICAgICAgIGhlaWdodDogZmxpcC5oZWlnaHQoKSpzY2FsaW5nLAogICAgICAgICAgYmFja2dyb3VuZDogJ2JsdWUnCiAgICAgICAgfQogICAgICB9KS5hcHBlbmRUbyhmbGlwLnBhcmVudCgpKTsKCiAgICBmbGlwRGVzUG9zID0gcG9pbnQyRCgKICAgICAgdG1wLm9mZnNldCgpLmxlZnQtdGhpc09mZnNldC5sZWZ0LAogICAgICB0bXAub2Zmc2V0KCkudG9wLXRoaXNPZmZzZXQudG9wCiAgICApOwogICAgCgogICAgdG1wLnJlbW92ZSgpOwoKICAgIHZhciBhdXRvQ2VudGVyID0gZmxpcC5kYXRhKCkub3B0cy5hdXRvQ2VudGVyOwoKICAgIGlmIChhdXRvQ2VudGVyICYmIGZsaXAudHVybignZGlzcGxheScpPT0nZG91YmxlJykgewoKICAgICAgaWYgKCFmbGlwLnR1cm4oJ3ZpZXcnKVswXSkKICAgICAgICBmbGlwRGVzUG9zLnggPSAoZmxpcC50dXJuKCdkaXJlY3Rpb24nKT09J2x0cicpID8KICAgICAgICAgIGZsaXBEZXNQb3MueC10bXAud2lkdGgoKS80IDoKICAgICAgICAgIGZsaXBEZXNQb3MueCt0bXAud2lkdGgoKS80OwogICAgICBlbHNlIGlmICghZmxpcC50dXJuKCd2aWV3JylbMV0pCiAgICAgICAgZmxpcERlc1Bvcy54ID0gKGZsaXAudHVybignZGlyZWN0aW9uJyk9PSdsdHInKSA/CiAgICAgICAgICBmbGlwRGVzUG9zLngrdG1wLndpZHRoKCkvNCA6CiAgICAgICAgICBmbGlwRGVzUG9zLngtdG1wLndpZHRoKCkvNDsKICAgIH0KCiAgICB2YXIgZmxpcFJlYWxQb3MgPSAkLmZpbmRQb3MoZmxpcFswXSk7CiAgICAgIAogICAgbW92ZSA9IHBvaW50MkQoCiAgICAgIC1mbGlwLndpZHRoKCkvMiAtIGZsaXBSZWFsUG9zLmxlZnQgKyB0bXAud2lkdGgoKS8yICsgZmxpcERlc1Bvcy54ICsgdGhpc09mZnNldC5sZWZ0LAogICAgICAtZmxpcC5oZWlnaHQoKS8yIC0gZmxpcFJlYWxQb3MudG9wICsgdG1wLmhlaWdodCgpLzIgKyBmbGlwRGVzUG9zLnkgKyB0aGlzT2Zmc2V0LnRvcCk7CgogICAgdmFyIHRyYW5zaXRpb25FbmRDYWxsYmFjayA9IGZ1bmN0aW9uKCkgewogICAgCiAgICAgIGlmIChmbGlwWzBdLnN0eWxlLnJlbW92ZVByb3BlcnR5KSB7CiAgICAgICAgCiAgICAgICAgZmxpcFswXS5zdHlsZS5yZW1vdmVQcm9wZXJ0eShwcmVmaXgrJ3RyYW5zaXRpb24nKTsKICAgICAgICBmbGlwLnRyYW5zZm9ybSgKICAgICAgICAgIChmbGlwLnR1cm4oJ29wdGlvbnMnKS5hY2NlbGVyYXRpb24pID8gdHJhbnNsYXRlKDAsIDAsIHRydWUpIDogJycpLnR1cm4oJ3pvb20nLCAxKTsKICAgICAgICBmbGlwWzBdLnN0eWxlLnJlbW92ZVByb3BlcnR5KCdtYXJnaW4nKTsKICAgICAgICBmbGlwLmNzcyh7CiAgICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJywKICAgICAgICAgIHRvcDogZGF0YS5mbGlwUG9zaXRpb24ueSwKICAgICAgICAgIGxlZnQ6IGRhdGEuZmxpcFBvc2l0aW9uLngKICAgICAgICB9KTsKCiAgICAgIH0gZWxzZSB7CiAgICAgICAgCiAgICAgICAgZmxpcC50cmFuc2Zvcm0oJ25vbmUnKS4KICAgICAgICAgIHR1cm4oJ3pvb20nLCAxKS4KICAgICAgICAgIGNzcyh7CiAgICAgICAgICAgIG1hcmdpbjogJycsCiAgICAgICAgICAgIHRvcDogZGF0YS5mbGlwUG9zaXRpb24ueSwKICAgICAgICAgICAgbGVmdDogZGF0YS5mbGlwUG9zaXRpb24ueCwKICAgICAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScKICAgICAgICB9KTsKCiAgICAgIH0KCiAgICAgIGlmIChhdXRvQ2VudGVyKQogICAgICAgIGZsaXAudHVybignY2VudGVyJyk7CgogICAgICB0aGF0LnRyaWdnZXIoJ3pvb20uem9vbU91dCcpOwoKICAgIH07CgogICAgaWYgKGR1cmF0aW9uPT09MCkgewogIAogICAgICB0cmFuc2l0aW9uRW5kQ2FsbGJhY2soKTsKCiAgICB9IGVsc2UgaWYgKHRyYW5zaXRpb25FbmQpIHsKCiAgICAgIGZsaXAuYmluZCh0cmFuc2l0aW9uRW5kLCBmdW5jdGlvbigpIHsKCiAgICAgICAgJCh0aGlzKS51bmJpbmQodHJhbnNpdGlvbkVuZCk7CiAgICAgICAgdHJhbnNpdGlvbkVuZENhbGxiYWNrKCk7CgogICAgICB9KTsKCiAgICAgIGZsaXAudHJhbnNmb3JtKHRyYW5zbGF0ZShtb3ZlLngsIG1vdmUueSwgdHJ1ZSkgKyBzY2FsZShzY2FsaW5nLCB0cnVlKSk7CgogICAgfSBlbHNlIHsKCiAgICAgIHNldFRpbWVvdXQodHJhbnNpdGlvbkVuZENhbGxiYWNrLCBkdXJhdGlvbik7CiAgICAgIGZsaXAudHJhbnNmb3JtKHRyYW5zbGF0ZShtb3ZlLngsIG1vdmUueSwgdHJ1ZSkgKyBzY2FsZShzY2FsaW5nLCB0cnVlKSk7CgogICAgfQoKICAgIHJldHVybiB0aGlzOwogIH0sCgogIGZsaXBib29rV2lkdGg6IGZ1bmN0aW9uKCkgewogICAgCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLnpvb20sCiAgICAgIGZsaXBib29rID0gZGF0YS5vcHRzLmZsaXBib29rLAogICAgICB2aWV3ID0gZmxpcGJvb2sudHVybigndmlldycpOwoKICAgIHJldHVybiAoZmxpcGJvb2sudHVybignZGlzcGxheScpPT0nZG91YmxlJyAmJiAoIXZpZXdbMF0gfHwgIXZpZXdbMV0pKSA/CiAgICAgIGZsaXBib29rLndpZHRoKCkvMgogICAgICA6CiAgICAgIGZsaXBib29rLndpZHRoKCk7CgogIH0sCgogIHNjcm9sbDogZnVuY3Rpb24odG8sIHVubGltaXRlZCwgYW5pbWF0ZSkgewogICAgCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLnpvb20sCiAgICAgIGZsaXAgPSBkYXRhLm9wdHMuZmxpcGJvb2ssCiAgICAgIGZsaXBXaWR0aCA9IHRoaXMuem9vbSgnZmxpcGJvb2tXaWR0aCcpLAogICAgICBwcmVmaXggPSAkLmNzc1ByZWZpeCgpOwogICAgCiAgICBpZiAoaGFzM2QpIHsKCiAgICAgIHZhciBjc3MgPSB7fTsKCiAgICAgIGlmIChhbmltYXRlKSB7CiAgICAgICAgY3NzW3ByZWZpeCsndHJhbnNpdGlvbiddID0gcHJlZml4ICsgJ3RyYW5zZm9ybSAyMDBtcyc7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgY3NzW3ByZWZpeCsndHJhbnNpdGlvbiddID0gJ25vbmUnOwogICAgICB9CgogICAgICBmbGlwLmNzcyhjc3MpOwogICAgICBmbGlwLnRyYW5zZm9ybSh0cmFuc2xhdGUoLWRhdGEuYXhpcy54IC0gdG8ueCwgLWRhdGEuYXhpcy55IC0gdG8ueSwgdHJ1ZSkpOwoKICAgIH0gZWxzZSB7CiAgICAgIAogICAgICBmbGlwLmNzcyh7dG9wOiAtZGF0YS5heGlzLnkgLSB0by55LCBsZWZ0OiAtZGF0YS5heGlzLnggLSB0by54fSk7CgogICAgfQoKICAgIGlmICghdW5saW1pdGVkKSB7CgogICAgICB2YXIgb3V0LAogICAgICAgIG1pbkJvdW5kID0gcG9pbnQyRCgKICAgICAgICAgIE1hdGgubWluKDAsIChmbGlwV2lkdGgtdGhpcy53aWR0aCgpKS8yKSwKICAgICAgICAgIE1hdGgubWluKDAsIChmbGlwLmhlaWdodCgpLXRoaXMuaGVpZ2h0KCkpLzIpKSwKICAgICAgICBtYXhCb3VuZCA9IHBvaW50MkQoCiAgICAgICAgICAoZmxpcFdpZHRoPnRoaXMud2lkdGgoKSkgPyBmbGlwV2lkdGgtdGhpcy53aWR0aCgpIDogKGZsaXBXaWR0aC10aGlzLndpZHRoKCkpLzIsCiAgICAgICAgICAoZmxpcC5oZWlnaHQoKT50aGlzLmhlaWdodCgpKSA/IGZsaXAuaGVpZ2h0KCktdGhpcy5oZWlnaHQoKSA6IChmbGlwLmhlaWdodCgpLXRoaXMuaGVpZ2h0KCkpLzIKICAgICAgICApOwoKICAgICAgaWYgKHRvLnk8bWluQm91bmQueSkgewogICAgICAgIHRvLnkgPSBtaW5Cb3VuZC55OwogICAgICAgIG91dCA9IHRydWU7CiAgICAgIH0gZWxzZSBpZiAodG8ueT5tYXhCb3VuZC55KSB7CiAgICAgICAgdG8ueSA9IG1heEJvdW5kLnk7CiAgICAgICAgb3V0ID0gdHJ1ZTsKICAgICAgfQoKICAgICAgaWYgKHRvLng8bWluQm91bmQueCkgewogICAgICAgIHRvLnggPSBtaW5Cb3VuZC54OwogICAgICAgIG91dCA9IHRydWU7CiAgICAgIH0gZWxzZSBpZiAodG8ueD5tYXhCb3VuZC54KSB7CiAgICAgICAgdG8ueCA9IG1heEJvdW5kLng7CiAgICAgICAgb3V0ID0gdHJ1ZTsKICAgICAgfQoKICAgICAgaWYgKG91dCkgewogICAgICAgIHRoaXMuem9vbSgnc2Nyb2xsJywgdG8sIHRydWUsIHRydWUpOwogICAgICB9CgogICAgfQoKICAgIGRhdGEuc2Nyb2xsUG9zID0gcG9pbnQyRCh0by54LCB0by55KTsKCiAgfSwKCiAgcmVzaXplOiBmdW5jdGlvbigpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLnpvb20sCiAgICAgIGZsaXAgPSBkYXRhLm9wdHMuZmxpcGJvb2s7CiAgICAKICAgIGlmICh0aGlzLnpvb20oJ3ZhbHVlJyk+MSkgewoKICAgICAgdmFyICBmbGlwT2Zmc2V0ID0gZmxpcC5vZmZzZXQoKSwKICAgICAgICB0aGlzT2Zmc2V0ID0gdGhpcy5vZmZzZXQoKTsKCiAgICAgIGRhdGEuYXhpcyA9ICBwb2ludDJEKAogICAgICAgIChmbGlwT2Zmc2V0LmxlZnQgLSB0aGlzT2Zmc2V0LmxlZnQpICsgKGRhdGEuYXhpcy54ICsgZGF0YS5zY3JvbGxQb3MueCksCiAgICAgICAgKGZsaXBPZmZzZXQudG9wIC0gdGhpc09mZnNldC50b3ApICsgKGRhdGEuYXhpcy55ICsgZGF0YS5zY3JvbGxQb3MueSkKICAgICAgKTsKCiAgICAgIGlmIChmbGlwLnR1cm4oJ2Rpc3BsYXknKT09J2RvdWJsZScgJiYKICAgICAgICBmbGlwLnR1cm4oJ2RpcmVjdGlvbicpPT0nbHRyJyAmJgogICAgICAgICFmbGlwLnR1cm4oJ3ZpZXcnKVswXSkKICAgICAgICAgIGRhdGEuYXhpcy54ID0gZGF0YS5heGlzLnggKyBmbGlwLndpZHRoKCkvMjsKCiAgICAgIHRoaXMuem9vbSgnc2Nyb2xsJywgZGF0YS5zY3JvbGxQb3MpOwogICAgfQoKICB9LAoKICBfZVpvb206IGZ1bmN0aW9uKCkgewogICAgCiAgICB2YXIgZmxpcFBvcywKICAgICAgZGF0YSA9IHRoaXMuZGF0YSgpLnpvb20sCiAgICAgIGZsaXAgPSBkYXRhLm9wdHMuZmxpcGJvb2ssCiAgICAgIHZpZXcgPSBmbGlwLnR1cm4oJ3ZpZXcnKTsKCiAgICBmb3IgKHZhciBwID0gMDsgcDx2aWV3Lmxlbmd0aDsgcCsrKSB7CiAgICAgIGlmICh2aWV3W3BdKQogICAgICAgIHRoaXMudHJpZ2dlcignem9vbS5yZXNpemUnLAogICAgICAgICAgW2RhdGEuc2NhbGUsIHZpZXdbcF0sIGZsaXAuZGF0YSgpLnBhZ2VPYmpzW3ZpZXdbcF1dXQogICAgICAgICk7CiAgICB9CiAgfSwKCiAgX2VTdGFydDogZnVuY3Rpb24oZXZlbnQsIHBhZ2VPYmopIHsKCiAgICBpZiAodGhpcy56b29tKCd2YWx1ZScpIT0xKSB7CiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICB9CgoKICB9LAoKICBfZVR1cm5pbmc6IGZ1bmN0aW9uKGV2ZW50LCBwYWdlLCB2aWV3KSB7CgogICAgdmFyIHRoYXQgPSB0aGlzLAogICAgICB6b29tID0gdGhpcy56b29tKCd2YWx1ZScpLAogICAgICBkYXRhID0gdGhpcy5kYXRhKCkuem9vbSwKICAgICAgZmxpcCA9IGRhdGEub3B0cy5mbGlwYm9vazsKCiAgICBkYXRhLnBhZ2UgPSBmbGlwLnR1cm4oJ3BhZ2UnKTsKCiAgICBpZiAoem9vbSE9MSkgewogICAgICBmb3IgKHZhciBwID0gMDsgcDx2aWV3Lmxlbmd0aDsgcCsrKSB7CiAgICAgICAgaWYgKHZpZXdbcF0pCiAgICAgICAgICB0aGlzLnRyaWdnZXIoJ3pvb20ucmVzaXplJywKICAgICAgICAgICAgW3pvb20sIHZpZXdbcF0sIGZsaXAuZGF0YSgpLnBhZ2VPYmpzW3ZpZXdbcF1dXQogICAgICAgICAgKTsKICAgICAgfQoKICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICB0aGF0Lnpvb20oJ3Jlc2l6ZScpOwogICAgICB9LCAwKTsKICAgIH0KCiAgfSwKCiAgX2VUdXJuZWQ6IGZ1bmN0aW9uIChldmVudCwgcGFnZSkgewogICAgCiAgICBpZiAodGhpcy56b29tKCd2YWx1ZScpIT0xKSB7CiAgICAgIHZhciB0aGF0ID0gdGhpcywKICAgICAgICBkYXRhID0gdGhpcy5kYXRhKCkuem9vbSwKICAgICAgICBmbGlwID0gZGF0YS5vcHRzLmZsaXBib29rOwoKICAgICAgaWYgKHBhZ2U+ZGF0YS5wYWdlKQogICAgICAgIHRoaXMuem9vbSgnc2Nyb2xsJywKICAgICAgICAgIHBvaW50MkQoMCwgZGF0YS5zY3JvbGxQb3MueSksIGZhbHNlLCB0cnVlKTsKICAgICAgICAKICAgICAgZWxzZSBpZiAocGFnZTxkYXRhLnBhZ2UpCiAgICAgICAgdGhpcy56b29tKCdzY3JvbGwnLAogICAgICAgICAgcG9pbnQyRChmbGlwLndpZHRoKCksIGRhdGEuc2Nyb2xsUG9zLnkpLCBmYWxzZSwgdHJ1ZSk7CiAgICAKICAgIH0KICB9LAoKICBfZVByZXNzZWQ6IGZ1bmN0aW9uKCkgewogICAgCiAgICB2YXIgZGF0YSA9ICQodGhpcykuZGF0YSgpLnpvb207CiAgICBkYXRhLmRyYWdnaW5nQ29ybmVyID0gdHJ1ZTsKCiAgfSwKCiAgX2VSZWxlYXNlZDogZnVuY3Rpb24oKSB7CgogICAgdmFyIGRhdGEgPSAkKHRoaXMpLmRhdGEoKS56b29tOwoKICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgIGRhdGEuZHJhZ2dpbmdDb3JuZXIgPSBmYWxzZTsKICAgIH0sIDEpOwoKICB9LAoKICBfZU1vdXNlRG93bjogZnVuY3Rpb24oZXZlbnQpIHsKICAgIAogICAgdmFyIGRhdGEgPSAkKHRoaXMpLmRhdGEoKS56b29tOwoKICAgIGRhdGEuZHJhZ2dpbmdDdXIgPSAoJC5pc1RvdWNoKSA/CiAgICAgIHBvaW50MkQoCiAgICAgICAgZXZlbnQub3JpZ2luYWxFdmVudC50b3VjaGVzWzBdLnBhZ2VYLAogICAgICAgIGV2ZW50Lm9yaWdpbmFsRXZlbnQudG91Y2hlc1swXS5wYWdlWQogICAgICApCiAgICAgIDoKICAgICAgcG9pbnQyRChldmVudC5wYWdlWCwgZXZlbnQucGFnZVkpOwogICAgCiAgICByZXR1cm4gZmFsc2U7CiAgfSwKCiAgX2VNb3VzZU1vdmU6IGZ1bmN0aW9uKGV2ZW50KSB7CgogICAgdmFyIGRhdGEgPSAkKHRoaXMpLmRhdGEoKS56b29tOwogICAgICAgIAogICAgaWYgKGRhdGEuZHJhZ2dpbmdDdXIpIHsKCiAgICAgIGRhdGEuZHJhZ2dpbmcgPSB0cnVlOwoKICAgICAgdmFyIGN1ciA9ICgkLmlzVG91Y2gpID8KICAgICAgICBwb2ludDJEKAogICAgICAgICAgZXZlbnQub3JpZ2luYWxFdmVudC50b3VjaGVzWzBdLnBhZ2VYLAogICAgICAgICAgZXZlbnQub3JpZ2luYWxFdmVudC50b3VjaGVzWzBdLnBhZ2VZCiAgICAgICAgKQogICAgICAgIDoKICAgICAgICBwb2ludDJEKGV2ZW50LnBhZ2VYLCBldmVudC5wYWdlWSksCiAgICAgICAgbW90aW9uID0gcG9pbnQyRCgKICAgICAgICAgIGN1ci54LSBkYXRhLmRyYWdnaW5nQ3VyLngsCiAgICAgICAgICBjdXIueS1kYXRhLmRyYWdnaW5nQ3VyLnkKICAgICAgICApOwoKICAgICAgJCh0aGlzKS56b29tKCdzY3JvbGwnLAogICAgICAgIHBvaW50MkQoCiAgICAgICAgICBkYXRhLnNjcm9sbFBvcy54LW1vdGlvbi54LAogICAgICAgICAgZGF0YS5zY3JvbGxQb3MueS1tb3Rpb24ueQogICAgICAgICksIHRydWUKICAgICAgKTsKCiAgICAgIGRhdGEuZHJhZ2dpbmdDdXIgPSBjdXI7CgogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogIH0sCgogIF9lTW91c2VVcDogZnVuY3Rpb24oZXZlbnQpIHsKCiAgICB2YXIgZGF0YSA9ICQodGhpcykuZGF0YSgpLnpvb207CgogICAgaWYgKGRhdGEuZHJhZ2dpbmcpIHsKICAgICAgJCh0aGlzKS56b29tKCdzY3JvbGwnLCBkYXRhLnNjcm9sbFBvcyk7CiAgICB9CgogICAgZGF0YS5kcmFnZ2luZ0N1ciA9IG51bGw7CgogICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgZGF0YS5kcmFnZ2luZyA9IGZhbHNlOwogICAgfSwgMSk7CgogIH0sCgogIF9lTW91c2VXaGVlbDogZnVuY3Rpb24oZXZlbnQsIGRlbHRhLCBkZWx0YVgsIGRlbHRhWSkgewogICAgCiAgICB2YXIgZGF0YSA9ICQodGhpcykuZGF0YSgpLnpvb20sCiAgICAgIGN1ciA9IHBvaW50MkQoCiAgICAgICAgZGF0YS5zY3JvbGxQb3MueCArIGRlbHRhWCoxMCwKICAgICAgICBkYXRhLnNjcm9sbFBvcy55IC0gZGVsdGFZKjEwCiAgICAgICk7CiAgICAKICAgICQodGhpcykuem9vbSgnc2Nyb2xsJywgY3VyLCBmYWxzZSwgdHJ1ZSk7CiAgICAKICB9LAoKICBfZVRvdWNoU3RhcnQ6IGZ1bmN0aW9uKGV2ZW50LCBwYWdlKSB7CgogICAgdmFyIGRhdGEgPSAkKHRoaXMpLmRhdGEoKS56b29tLAogICAgICBmbGlwID0gZGF0YS5vcHRzLmZsaXBib29rLAogICAgICBmaW5nZXIgPSBwb2ludDJEKAogICAgICAgIGV2ZW50Lm9yaWdpbmFsRXZlbnQudG91Y2hlc1swXS5wYWdlWCwKICAgICAgICBldmVudC5vcmlnaW5hbEV2ZW50LnRvdWNoZXNbMF0ucGFnZVkKICAgICAgKTsKCiAgICBkYXRhLnRvdWNoID0ge307CiAgICBkYXRhLnRvdWNoLmluaXRpYWwgPSBmaW5nZXI7CiAgICBkYXRhLnRvdWNoLmxhc3QgPSBmaW5nZXI7CiAgICBkYXRhLnRvdWNoLnRpbWVzdGFtcCA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCk7CiAgICBkYXRhLnRvdWNoLnNwZWVkID0gcG9pbnQyRCgwLCAwKTsKCiAgfSwKCiAgX2VUb3VjaE1vdmU6IGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAKICAgIHZhciBkYXRhID0gJCh0aGlzKS5kYXRhKCkuem9vbSwKICAgICAgem9vbSA9ICQodGhpcykuem9vbSgndmFsdWUnKSwKICAgICAgZmxpcCA9IGRhdGEub3B0cy5mbGlwYm9vaywKICAgICAgdGltZSA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCksCiAgICAgIGZpbmdlciA9IHBvaW50MkQoCiAgICAgICAgZXZlbnQub3JpZ2luYWxFdmVudC50b3VjaGVzWzBdLnBhZ2VYLAogICAgICAgIGV2ZW50Lm9yaWdpbmFsRXZlbnQudG91Y2hlc1swXS5wYWdlWQogICAgICApOwogICAgCiAgICBpZiAoZGF0YS50b3VjaCAmJiB6b29tPT0xICYmICFmbGlwLmRhdGEoKS5tb3VzZUFjdGlvbikgewogICAgICBkYXRhLnRvdWNoLm1vdGlvbiA9IHBvaW50MkQoCiAgICAgICAgZmluZ2VyLngtZGF0YS50b3VjaC5sYXN0LngsCiAgICAgICAgZmluZ2VyLnktZGF0YS50b3VjaC5sYXN0LnkpOwoKICAgIAogICAgICBkYXRhLnRvdWNoLnNwZWVkLnggPSAoZGF0YS50b3VjaC5zcGVlZC54PT09MCkgPwogICAgICAgIGRhdGEudG91Y2gubW90aW9uLnggLyAodGltZS1kYXRhLnRvdWNoLnRpbWVzdGFtcCkgOgogICAgICAgIChkYXRhLnRvdWNoLnNwZWVkLnggKyAoZGF0YS50b3VjaC5tb3Rpb24ueCAvICh0aW1lLWRhdGEudG91Y2gudGltZXN0YW1wKSkpLzI7CgogICAgICBkYXRhLnRvdWNoLmxhc3QgPSBmaW5nZXI7CiAgICAgIGRhdGEudG91Y2gudGltZXN0YW1wID0gdGltZTsKICAgIH0KCiAgfSwKCiAgX2VUb3VjaEVuZDogZnVuY3Rpb24oZXZlbnQpIHsKCiAgICB2YXIgZGF0YSA9ICQodGhpcykuZGF0YSgpLnpvb207CgogICAgaWYgKGRhdGEudG91Y2ggJiYgJCh0aGlzKS56b29tKCd2YWx1ZScpPT0xKSB7CgogICAgICB2YXIgeSA9IE1hdGguYWJzKGRhdGEudG91Y2guaW5pdGlhbC55IC0gZGF0YS50b3VjaC5sYXN0LnkpOwoKICAgICAgaWYgKHk8NTAgJiYgKGRhdGEudG91Y2guc3BlZWQueDwtMSB8fCBkYXRhLnRvdWNoLmxhc3QueC1kYXRhLnRvdWNoLmluaXRpYWwueDwtMTAwKSkgewogICAgICAgIAogICAgICAgIHRoaXMudHJpZ2dlcignem9vbS5zd2lwZUxlZnQnKTsKCiAgICAgIH0gZWxzZSBpZih5PDUwICYmIChkYXRhLnRvdWNoLnNwZWVkLng+MSB8fCBkYXRhLnRvdWNoLmxhc3QueC1kYXRhLnRvdWNoLmluaXRpYWwueD4xMDApKXsKICAgICAgICAKICAgICAgICB0aGlzLnRyaWdnZXIoJ3pvb20uc3dpcGVSaWdodCcpOwoKICAgICAgfQoKICAgIH0KICB9LAoKICBfZURlc3Ryb3lpbmc6IGZ1bmN0aW9uKCkgewoKICAgIHZhciB0aGF0ID0gdGhpcywKICAgICAgZGF0YSA9IHRoaXMuZGF0YSgpLnpvb20sCiAgICAgIGZsaXAgPSBkYXRhLm9wdHMuZmxpcGJvb2ssCiAgICAgIGV2ZW50cyA9IFsKICAgICAgICAndGFwJywKICAgICAgICAnZG91YmxlVGFwJywKICAgICAgICAncmVzaXplJywKICAgICAgICAnem9vbUluJywKICAgICAgICAnem9vbU91dCcsCiAgICAgICAgJ3N3aXBlTGVmdCcsCiAgICAgICAgJ3N3aXBlUmlnaHQnCiAgICAgIF07CgogICAgdGhpcy56b29tKCd6b29tT3V0JywgMCk7CgogICAgJC5lYWNoKGV2ZW50cywgZnVuY3Rpb24oaW5kZXgsIGV2ZW50TmFtZSkgewogICAgICB0aGF0LnVuYmluZCgnem9vbS4nICsgZXZlbnROYW1lKTsKICAgIH0pOwogICAgCiAgICBmb3IgKHZhciBldmVudE5hbWUgaW4gZGF0YS5mbGlwYm9va0V2ZW50cykgewogICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGEuZmxpcGJvb2tFdmVudHMsIGV2ZW50TmFtZSkpIHsKICAgICAgICBmbGlwLnVuYmluZChldmVudE5hbWUsIGRhdGEuZmxpcGJvb2tFdmVudHNbZXZlbnROYW1lXSk7CiAgICAgIH0KICAgIH0KCiAgICBmbGlwLnVuYmluZCgndG91Y2hzdGFydCcsIGRhdGEuZXZlbnRUb3VjaFN0YXJ0ICkuCiAgICAgIHVuYmluZCgndG91Y2htb3ZlJywgZGF0YS5ldmVudFRvdWNoTW92ZSkuCiAgICAgIHVuYmluZCgndG91Y2hlbmQnLCBkYXRhLmV2ZW50VG91Y2hFbmQpOwogICAgICAgIAogICAgdGhpcy51bmJpbmQoJ3RvdWNoc3RhcnQnLCB6b29tTWV0aG9kcy5fdGFwKS4KICAgICAgdW5iaW5kKCdjbGljaycsIHpvb21NZXRob2RzLl90YXApOwoKICAgIGRhdGEgPSBudWxsOwogICAgdGhpcy5kYXRhKCkuem9vbSA9IG51bGw7CgogIH0KfTsKCmZ1bmN0aW9uIGlzUGFnZShlbGVtZW50LCBsYXN0KSB7CgogIGlmIChlbGVtZW50WzBdPT1sYXN0WzBdKQogICAgcmV0dXJuIGZhbHNlOwoKICBpZiAoZWxlbWVudC5hdHRyKCdwYWdlJykpCiAgICByZXR1cm4gdHJ1ZTsKICAKICByZXR1cm4gKGVsZW1lbnQucGFyZW50KClbMF0pID8KICAgIGlzUGFnZShlbGVtZW50LnBhcmVudCgpLCBsYXN0KQogICAgOgogIGZhbHNlOwoKfQoKZnVuY3Rpb24gZXJyb3IobWVzc2FnZSkgewoKICBmdW5jdGlvbiBUdXJuSnNFcnJvcihtZXNzYWdlKSB7CiAgICB0aGlzLm5hbWUgPSAiVHVybkpzRXJyb3IiOwogICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZTsKICB9CgogIFR1cm5Kc0Vycm9yLnByb3RvdHlwZSA9IG5ldyBFcnJvcigpOwogIFR1cm5Kc0Vycm9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFR1cm5Kc0Vycm9yOwogIHJldHVybiBuZXcgVHVybkpzRXJyb3IobWVzc2FnZSk7Cgp9CgpmdW5jdGlvbiB0cmFuc2xhdGUoeCwgeSwgdXNlM2QpIHsKICAKICByZXR1cm4gKGhhczNkICYmIHVzZTNkKSA/ICcgdHJhbnNsYXRlM2QoJyArIHggKyAncHgsJyArIHkgKyAncHgsIDBweCkgJwogIDogJyB0cmFuc2xhdGUoJyArIHggKyAncHgsICcgKyB5ICsgJ3B4KSAnOwoKfQoKZnVuY3Rpb24gc2NhbGUodiwgdXNlM2QpIHsKICAKICByZXR1cm4gKGhhczNkICYmIHVzZTNkKSA/ICcgc2NhbGUzZCgnICsgdiArICcsICcgKyB2ICsgJywgMSkgJwogIDogJyBzY2FsZSgnICsgdiArICcpICc7Cgp9CgpmdW5jdGlvbiBwb2ludDJEKHgsIHkpIHsKICAKICByZXR1cm4ge3g6IHgsIHk6IHl9OwoKfQoKZnVuY3Rpb24gYmluZChmdW5jLCBjb250ZXh0KSB7CgogIHJldHVybiBmdW5jdGlvbigpIHsKICAgIHJldHVybiBmdW5jLmFwcGx5KGNvbnRleHQsIGFyZ3VtZW50cyk7CiAgfTsKCn0KCiQuZXh0ZW5kKCQuZm4sIHsKICB6b29tOiBmdW5jdGlvbigpIHsKICAgIAogICAgdmFyIGFyZ3MgPSBhcmd1bWVudHM7CgogICAgaWYgKCFhcmdzWzBdIHx8IHR5cGVvZihhcmdzWzBdKT09J29iamVjdCcpCiAgICAgIHJldHVybiB6b29tTWV0aG9kcy5pbml0LmFwcGx5KCQodGhpc1swXSksIGFyZ3MpOwogICAgZWxzZSBpZiAoem9vbU1ldGhvZHNbYXJnc1swXV0pCiAgICAgIHJldHVybiB6b29tTWV0aG9kc1thcmdzWzBdXS5hcHBseSgkKHRoaXNbMF0pLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmdzLCAxKSk7CiAgICBlbHNlCiAgICAgIHRocm93IGVycm9yKGFyZ3NbMF0gKyAnIGlzIG5vdCBhIG1ldGhvZCcpOwoKICB9Cn0pOwoKfSkoalF1ZXJ5KTsK'></script>
	<script id="fb_html_magazine_js_magazine_js" src='data:/text/plain;base64,LyohCiAqIFZ1ZS5qcyB2Mi41LjE3CiAqIChjKSAyMDE0LTIwMTggRXZhbiBZb3UKICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLgogKi8KIWZ1bmN0aW9uKGUsdCl7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz10KCk6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUodCk6ZS5WdWU9dCgpfSh0aGlzLGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciB5PU9iamVjdC5mcmVlemUoe30pO2Z1bmN0aW9uIE0oZSl7cmV0dXJuIG51bGw9PWV9ZnVuY3Rpb24gRChlKXtyZXR1cm4gbnVsbCE9ZX1mdW5jdGlvbiBTKGUpe3JldHVybiEwPT09ZX1mdW5jdGlvbiBUKGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZXx8Im51bWJlciI9PXR5cGVvZiBlfHwic3ltYm9sIj09dHlwZW9mIGV8fCJib29sZWFuIj09dHlwZW9mIGV9ZnVuY3Rpb24gUChlKXtyZXR1cm4gbnVsbCE9PWUmJiJvYmplY3QiPT10eXBlb2YgZX12YXIgcj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO2Z1bmN0aW9uIGwoZSl7cmV0dXJuIltvYmplY3QgT2JqZWN0XSI9PT1yLmNhbGwoZSl9ZnVuY3Rpb24gaShlKXt2YXIgdD1wYXJzZUZsb2F0KFN0cmluZyhlKSk7cmV0dXJuIDA8PXQmJk1hdGguZmxvb3IodCk9PT10JiZpc0Zpbml0ZShlKX1mdW5jdGlvbiB0KGUpe3JldHVybiBudWxsPT1lPyIiOiJvYmplY3QiPT10eXBlb2YgZT9KU09OLnN0cmluZ2lmeShlLG51bGwsMik6U3RyaW5nKGUpfWZ1bmN0aW9uIEYoZSl7dmFyIHQ9cGFyc2VGbG9hdChlKTtyZXR1cm4gaXNOYU4odCk/ZTp0fWZ1bmN0aW9uIHMoZSx0KXtmb3IodmFyIG49T2JqZWN0LmNyZWF0ZShudWxsKSxyPWUuc3BsaXQoIiwiKSxpPTA7aTxyLmxlbmd0aDtpKyspbltyW2ldXT0hMDtyZXR1cm4gdD9mdW5jdGlvbihlKXtyZXR1cm4gbltlLnRvTG93ZXJDYXNlKCldfTpmdW5jdGlvbihlKXtyZXR1cm4gbltlXX19dmFyIGM9cygic2xvdCxjb21wb25lbnQiLCEwKSx1PXMoImtleSxyZWYsc2xvdCxzbG90LXNjb3BlLGlzIik7ZnVuY3Rpb24gZihlLHQpe2lmKGUubGVuZ3RoKXt2YXIgbj1lLmluZGV4T2YodCk7aWYoLTE8bilyZXR1cm4gZS5zcGxpY2UobiwxKX19dmFyIG49T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBwKGUsdCl7cmV0dXJuIG4uY2FsbChlLHQpfWZ1bmN0aW9uIGUodCl7dmFyIG49T2JqZWN0LmNyZWF0ZShudWxsKTtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIG5bZV18fChuW2VdPXQoZSkpfX12YXIgbz0vLShcdykvZyxnPWUoZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZShvLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ/dC50b1VwcGVyQ2FzZSgpOiIifSl9KSxkPWUoZnVuY3Rpb24oZSl7cmV0dXJuIGUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrZS5zbGljZSgxKX0pLGE9L1xCKFtBLVpdKS9nLF89ZShmdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKGEsIi0kMSIpLnRvTG93ZXJDYXNlKCl9KTt2YXIgdj1GdW5jdGlvbi5wcm90b3R5cGUuYmluZD9mdW5jdGlvbihlLHQpe3JldHVybiBlLmJpbmQodCl9OmZ1bmN0aW9uKG4scil7ZnVuY3Rpb24gZShlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoO3JldHVybiB0PzE8dD9uLmFwcGx5KHIsYXJndW1lbnRzKTpuLmNhbGwocixlKTpuLmNhbGwocil9cmV0dXJuIGUuX2xlbmd0aD1uLmxlbmd0aCxlfTtmdW5jdGlvbiBoKGUsdCl7dD10fHwwO2Zvcih2YXIgbj1lLmxlbmd0aC10LHI9bmV3IEFycmF5KG4pO24tLTspcltuXT1lW24rdF07cmV0dXJuIHJ9ZnVuY3Rpb24gbShlLHQpe2Zvcih2YXIgbiBpbiB0KWVbbl09dFtuXTtyZXR1cm4gZX1mdW5jdGlvbiBiKGUpe2Zvcih2YXIgdD17fSxuPTA7bjxlLmxlbmd0aDtuKyspZVtuXSYmbSh0LGVbbl0pO3JldHVybiB0fWZ1bmN0aW9uICQoZSx0LG4pe312YXIgTz1mdW5jdGlvbihlLHQsbil7cmV0dXJuITF9LHc9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9O2Z1bmN0aW9uIEModCxuKXtpZih0PT09bilyZXR1cm4hMDt2YXIgZT1QKHQpLHI9UChuKTtpZighZXx8IXIpcmV0dXJuIWUmJiFyJiZTdHJpbmcodCk9PT1TdHJpbmcobik7dHJ5e3ZhciBpPUFycmF5LmlzQXJyYXkodCksbz1BcnJheS5pc0FycmF5KG4pO2lmKGkmJm8pcmV0dXJuIHQubGVuZ3RoPT09bi5sZW5ndGgmJnQuZXZlcnkoZnVuY3Rpb24oZSx0KXtyZXR1cm4gQyhlLG5bdF0pfSk7aWYoaXx8bylyZXR1cm4hMTt2YXIgYT1PYmplY3Qua2V5cyh0KSxzPU9iamVjdC5rZXlzKG4pO3JldHVybiBhLmxlbmd0aD09PXMubGVuZ3RoJiZhLmV2ZXJ5KGZ1bmN0aW9uKGUpe3JldHVybiBDKHRbZV0sbltlXSl9KX1jYXRjaChlKXtyZXR1cm4hMX19ZnVuY3Rpb24geChlLHQpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKWlmKEMoZVtuXSx0KSlyZXR1cm4gbjtyZXR1cm4tMX1mdW5jdGlvbiBSKGUpe3ZhciB0PSExO3JldHVybiBmdW5jdGlvbigpe3R8fCh0PSEwLGUuYXBwbHkodGhpcyxhcmd1bWVudHMpKX19dmFyIEU9ImRhdGEtc2VydmVyLXJlbmRlcmVkIixrPVsiY29tcG9uZW50IiwiZGlyZWN0aXZlIiwiZmlsdGVyIl0sQT1bImJlZm9yZUNyZWF0ZSIsImNyZWF0ZWQiLCJiZWZvcmVNb3VudCIsIm1vdW50ZWQiLCJiZWZvcmVVcGRhdGUiLCJ1cGRhdGVkIiwiYmVmb3JlRGVzdHJveSIsImRlc3Ryb3llZCIsImFjdGl2YXRlZCIsImRlYWN0aXZhdGVkIiwiZXJyb3JDYXB0dXJlZCJdLGo9e29wdGlvbk1lcmdlU3RyYXRlZ2llczpPYmplY3QuY3JlYXRlKG51bGwpLHNpbGVudDohMSxwcm9kdWN0aW9uVGlwOiExLGRldnRvb2xzOiExLHBlcmZvcm1hbmNlOiExLGVycm9ySGFuZGxlcjpudWxsLHdhcm5IYW5kbGVyOm51bGwsaWdub3JlZEVsZW1lbnRzOltdLGtleUNvZGVzOk9iamVjdC5jcmVhdGUobnVsbCksaXNSZXNlcnZlZFRhZzpPLGlzUmVzZXJ2ZWRBdHRyOk8saXNVbmtub3duRWxlbWVudDpPLGdldFRhZ05hbWVzcGFjZTokLHBhcnNlUGxhdGZvcm1UYWdOYW1lOncsbXVzdFVzZVByb3A6TyxfbGlmZWN5Y2xlSG9va3M6QX07ZnVuY3Rpb24gTihlLHQsbixyKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ISFyLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pfXZhciBMPS9bXlx3LiRdLzt2YXIgSSxIPSJfX3Byb3RvX18iaW57fSxCPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93LFU9InVuZGVmaW5lZCIhPXR5cGVvZiBXWEVudmlyb25tZW50JiYhIVdYRW52aXJvbm1lbnQucGxhdGZvcm0sVj1VJiZXWEVudmlyb25tZW50LnBsYXRmb3JtLnRvTG93ZXJDYXNlKCksej1CJiZ3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLEs9eiYmL21zaWV8dHJpZGVudC8udGVzdCh6KSxKPXomJjA8ei5pbmRleE9mKCJtc2llIDkuMCIpLHE9eiYmMDx6LmluZGV4T2YoImVkZ2UvIiksVz0oeiYmei5pbmRleE9mKCJhbmRyb2lkIikseiYmL2lwaG9uZXxpcGFkfGlwb2R8aW9zLy50ZXN0KHopfHwiaW9zIj09PVYpLEc9KHomJi9jaHJvbWVcL1xkKy8udGVzdCh6KSx7fS53YXRjaCksWj0hMTtpZihCKXRyeXt2YXIgWD17fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoWCwicGFzc2l2ZSIse2dldDpmdW5jdGlvbigpe1o9ITB9fSksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInRlc3QtcGFzc2l2ZSIsbnVsbCxYKX1jYXRjaChlKXt9dmFyIFk9ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwPT09SSYmKEk9IUImJiFVJiYidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbCYmInNlcnZlciI9PT1nbG9iYWwucHJvY2Vzcy5lbnYuVlVFX0VOViksSX0sUT1CJiZ3aW5kb3cuX19WVUVfREVWVE9PTFNfR0xPQkFMX0hPT0tfXztmdW5jdGlvbiBlZShlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZSYmL25hdGl2ZSBjb2RlLy50ZXN0KGUudG9TdHJpbmcoKSl9dmFyIHRlLG5lPSJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZlZShTeW1ib2wpJiYidW5kZWZpbmVkIiE9dHlwZW9mIFJlZmxlY3QmJmVlKFJlZmxlY3Qub3duS2V5cyk7dGU9InVuZGVmaW5lZCIhPXR5cGVvZiBTZXQmJmVlKFNldCk/U2V0OmZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3RoaXMuc2V0PU9iamVjdC5jcmVhdGUobnVsbCl9cmV0dXJuIGUucHJvdG90eXBlLmhhcz1mdW5jdGlvbihlKXtyZXR1cm4hMD09PXRoaXMuc2V0W2VdfSxlLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oZSl7dGhpcy5zZXRbZV09ITB9LGUucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5zZXQ9T2JqZWN0LmNyZWF0ZShudWxsKX0sZX0oKTt2YXIgcmU9JCxpZT0wLG9lPWZ1bmN0aW9uKCl7dGhpcy5pZD1pZSsrLHRoaXMuc3Vicz1bXX07b2UucHJvdG90eXBlLmFkZFN1Yj1mdW5jdGlvbihlKXt0aGlzLnN1YnMucHVzaChlKX0sb2UucHJvdG90eXBlLnJlbW92ZVN1Yj1mdW5jdGlvbihlKXtmKHRoaXMuc3VicyxlKX0sb2UucHJvdG90eXBlLmRlcGVuZD1mdW5jdGlvbigpe29lLnRhcmdldCYmb2UudGFyZ2V0LmFkZERlcCh0aGlzKX0sb2UucHJvdG90eXBlLm5vdGlmeT1mdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLnN1YnMuc2xpY2UoKSx0PTAsbj1lLmxlbmd0aDt0PG47dCsrKWVbdF0udXBkYXRlKCl9LG9lLnRhcmdldD1udWxsO3ZhciBhZT1bXTtmdW5jdGlvbiBzZShlKXtvZS50YXJnZXQmJmFlLnB1c2gob2UudGFyZ2V0KSxvZS50YXJnZXQ9ZX1mdW5jdGlvbiBjZSgpe29lLnRhcmdldD1hZS5wb3AoKX12YXIgbGU9ZnVuY3Rpb24oZSx0LG4scixpLG8sYSxzKXt0aGlzLnRhZz1lLHRoaXMuZGF0YT10LHRoaXMuY2hpbGRyZW49bix0aGlzLnRleHQ9cix0aGlzLmVsbT1pLHRoaXMubnM9dm9pZCAwLHRoaXMuY29udGV4dD1vLHRoaXMuZm5Db250ZXh0PXZvaWQgMCx0aGlzLmZuT3B0aW9ucz12b2lkIDAsdGhpcy5mblNjb3BlSWQ9dm9pZCAwLHRoaXMua2V5PXQmJnQua2V5LHRoaXMuY29tcG9uZW50T3B0aW9ucz1hLHRoaXMuY29tcG9uZW50SW5zdGFuY2U9dm9pZCAwLHRoaXMucGFyZW50PXZvaWQgMCx0aGlzLnJhdz0hMSx0aGlzLmlzU3RhdGljPSExLHRoaXMuaXNSb290SW5zZXJ0PSEwLHRoaXMuaXNDb21tZW50PSExLHRoaXMuaXNDbG9uZWQ9ITEsdGhpcy5pc09uY2U9ITEsdGhpcy5hc3luY0ZhY3Rvcnk9cyx0aGlzLmFzeW5jTWV0YT12b2lkIDAsdGhpcy5pc0FzeW5jUGxhY2Vob2xkZXI9ITF9LHVlPXtjaGlsZDp7Y29uZmlndXJhYmxlOiEwfX07dWUuY2hpbGQuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29tcG9uZW50SW5zdGFuY2V9LE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGxlLnByb3RvdHlwZSx1ZSk7dmFyIGZlPWZ1bmN0aW9uKGUpe3ZvaWQgMD09PWUmJihlPSIiKTt2YXIgdD1uZXcgbGU7cmV0dXJuIHQudGV4dD1lLHQuaXNDb21tZW50PSEwLHR9O2Z1bmN0aW9uIHBlKGUpe3JldHVybiBuZXcgbGUodm9pZCAwLHZvaWQgMCx2b2lkIDAsU3RyaW5nKGUpKX1mdW5jdGlvbiBkZShlKXt2YXIgdD1uZXcgbGUoZS50YWcsZS5kYXRhLGUuY2hpbGRyZW4sZS50ZXh0LGUuZWxtLGUuY29udGV4dCxlLmNvbXBvbmVudE9wdGlvbnMsZS5hc3luY0ZhY3RvcnkpO3JldHVybiB0Lm5zPWUubnMsdC5pc1N0YXRpYz1lLmlzU3RhdGljLHQua2V5PWUua2V5LHQuaXNDb21tZW50PWUuaXNDb21tZW50LHQuZm5Db250ZXh0PWUuZm5Db250ZXh0LHQuZm5PcHRpb25zPWUuZm5PcHRpb25zLHQuZm5TY29wZUlkPWUuZm5TY29wZUlkLHQuaXNDbG9uZWQ9ITAsdH12YXIgdmU9QXJyYXkucHJvdG90eXBlLGhlPU9iamVjdC5jcmVhdGUodmUpO1sicHVzaCIsInBvcCIsInNoaWZ0IiwidW5zaGlmdCIsInNwbGljZSIsInNvcnQiLCJyZXZlcnNlIl0uZm9yRWFjaChmdW5jdGlvbihvKXt2YXIgYT12ZVtvXTtOKGhlLG8sZnVuY3Rpb24oKXtmb3IodmFyIGU9W10sdD1hcmd1bWVudHMubGVuZ3RoO3QtLTspZVt0XT1hcmd1bWVudHNbdF07dmFyIG4scj1hLmFwcGx5KHRoaXMsZSksaT10aGlzLl9fb2JfXztzd2l0Y2gobyl7Y2FzZSJwdXNoIjpjYXNlInVuc2hpZnQiOm49ZTticmVhaztjYXNlInNwbGljZSI6bj1lLnNsaWNlKDIpfXJldHVybiBuJiZpLm9ic2VydmVBcnJheShuKSxpLmRlcC5ub3RpZnkoKSxyfSl9KTt2YXIgbWU9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoaGUpLHllPSEwO2Z1bmN0aW9uIGdlKGUpe3llPWV9dmFyIF9lPWZ1bmN0aW9uKGUpeyh0aGlzLnZhbHVlPWUsdGhpcy5kZXA9bmV3IG9lLHRoaXMudm1Db3VudD0wLE4oZSwiX19vYl9fIix0aGlzKSxBcnJheS5pc0FycmF5KGUpKT8oKEg/YmU6JGUpKGUsaGUsbWUpLHRoaXMub2JzZXJ2ZUFycmF5KGUpKTp0aGlzLndhbGsoZSl9O2Z1bmN0aW9uIGJlKGUsdCxuKXtlLl9fcHJvdG9fXz10fWZ1bmN0aW9uICRlKGUsdCxuKXtmb3IodmFyIHI9MCxpPW4ubGVuZ3RoO3I8aTtyKyspe3ZhciBvPW5bcl07TihlLG8sdFtvXSl9fWZ1bmN0aW9uIHdlKGUsdCl7dmFyIG47aWYoUChlKSYmIShlIGluc3RhbmNlb2YgbGUpKXJldHVybiBwKGUsIl9fb2JfXyIpJiZlLl9fb2JfXyBpbnN0YW5jZW9mIF9lP249ZS5fX29iX186eWUmJiFZKCkmJihBcnJheS5pc0FycmF5KGUpfHxsKGUpKSYmT2JqZWN0LmlzRXh0ZW5zaWJsZShlKSYmIWUuX2lzVnVlJiYobj1uZXcgX2UoZSkpLHQmJm4mJm4udm1Db3VudCsrLG59ZnVuY3Rpb24gQ2UobixlLHIsdCxpKXt2YXIgbz1uZXcgb2UsYT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSk7aWYoIWF8fCExIT09YS5jb25maWd1cmFibGUpe3ZhciBzPWEmJmEuZ2V0O3N8fDIhPT1hcmd1bWVudHMubGVuZ3RofHwocj1uW2VdKTt2YXIgYz1hJiZhLnNldCxsPSFpJiZ3ZShyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkobixlLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXt2YXIgZT1zP3MuY2FsbChuKTpyO3JldHVybiBvZS50YXJnZXQmJihvLmRlcGVuZCgpLGwmJihsLmRlcC5kZXBlbmQoKSxBcnJheS5pc0FycmF5KGUpJiZmdW5jdGlvbiBlKHQpe2Zvcih2YXIgbj12b2lkIDAscj0wLGk9dC5sZW5ndGg7cjxpO3IrKykobj10W3JdKSYmbi5fX29iX18mJm4uX19vYl9fLmRlcC5kZXBlbmQoKSxBcnJheS5pc0FycmF5KG4pJiZlKG4pfShlKSkpLGV9LHNldDpmdW5jdGlvbihlKXt2YXIgdD1zP3MuY2FsbChuKTpyO2U9PT10fHxlIT1lJiZ0IT10fHwoYz9jLmNhbGwobixlKTpyPWUsbD0haSYmd2UoZSksby5ub3RpZnkoKSl9fSl9fWZ1bmN0aW9uIHhlKGUsdCxuKXtpZihBcnJheS5pc0FycmF5KGUpJiZpKHQpKXJldHVybiBlLmxlbmd0aD1NYXRoLm1heChlLmxlbmd0aCx0KSxlLnNwbGljZSh0LDEsbiksbjtpZih0IGluIGUmJiEodCBpbiBPYmplY3QucHJvdG90eXBlKSlyZXR1cm4gZVt0XT1uO3ZhciByPWUuX19vYl9fO3JldHVybiBlLl9pc1Z1ZXx8ciYmci52bUNvdW50P246cj8oQ2Uoci52YWx1ZSx0LG4pLHIuZGVwLm5vdGlmeSgpLG4pOmVbdF09bn1mdW5jdGlvbiBrZShlLHQpe2lmKEFycmF5LmlzQXJyYXkoZSkmJmkodCkpZS5zcGxpY2UodCwxKTtlbHNle3ZhciBuPWUuX19vYl9fO2UuX2lzVnVlfHxuJiZuLnZtQ291bnR8fHAoZSx0KSYmKGRlbGV0ZSBlW3RdLG4mJm4uZGVwLm5vdGlmeSgpKX19X2UucHJvdG90eXBlLndhbGs9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PU9iamVjdC5rZXlzKGUpLG49MDtuPHQubGVuZ3RoO24rKylDZShlLHRbbl0pfSxfZS5wcm90b3R5cGUub2JzZXJ2ZUFycmF5PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wLG49ZS5sZW5ndGg7dDxuO3QrKyl3ZShlW3RdKX07dmFyIEFlPWoub3B0aW9uTWVyZ2VTdHJhdGVnaWVzO2Z1bmN0aW9uIE9lKGUsdCl7aWYoIXQpcmV0dXJuIGU7Zm9yKHZhciBuLHIsaSxvPU9iamVjdC5rZXlzKHQpLGE9MDthPG8ubGVuZ3RoO2ErKylyPWVbbj1vW2FdXSxpPXRbbl0scChlLG4pP2wocikmJmwoaSkmJk9lKHIsaSk6eGUoZSxuLGkpO3JldHVybiBlfWZ1bmN0aW9uIFNlKG4scixpKXtyZXR1cm4gaT9mdW5jdGlvbigpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiByP3IuY2FsbChpLGkpOnIsdD0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uLmNhbGwoaSxpKTpuO3JldHVybiBlP09lKGUsdCk6dH06cj9uP2Z1bmN0aW9uKCl7cmV0dXJuIE9lKCJmdW5jdGlvbiI9PXR5cGVvZiByP3IuY2FsbCh0aGlzLHRoaXMpOnIsImZ1bmN0aW9uIj09dHlwZW9mIG4/bi5jYWxsKHRoaXMsdGhpcyk6bil9OnI6bn1mdW5jdGlvbiBUZShlLHQpe3JldHVybiB0P2U/ZS5jb25jYXQodCk6QXJyYXkuaXNBcnJheSh0KT90Olt0XTplfWZ1bmN0aW9uIEVlKGUsdCxuLHIpe3ZhciBpPU9iamVjdC5jcmVhdGUoZXx8bnVsbCk7cmV0dXJuIHQ/bShpLHQpOml9QWUuZGF0YT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIG4/U2UoZSx0LG4pOnQmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P2U6U2UoZSx0KX0sQS5mb3JFYWNoKGZ1bmN0aW9uKGUpe0FlW2VdPVRlfSksay5mb3JFYWNoKGZ1bmN0aW9uKGUpe0FlW2UrInMiXT1FZX0pLEFlLndhdGNoPWZ1bmN0aW9uKGUsdCxuLHIpe2lmKGU9PT1HJiYoZT12b2lkIDApLHQ9PT1HJiYodD12b2lkIDApLCF0KXJldHVybiBPYmplY3QuY3JlYXRlKGV8fG51bGwpO2lmKCFlKXJldHVybiB0O3ZhciBpPXt9O2Zvcih2YXIgbyBpbiBtKGksZSksdCl7dmFyIGE9aVtvXSxzPXRbb107YSYmIUFycmF5LmlzQXJyYXkoYSkmJihhPVthXSksaVtvXT1hP2EuY29uY2F0KHMpOkFycmF5LmlzQXJyYXkocyk/czpbc119cmV0dXJuIGl9LEFlLnByb3BzPUFlLm1ldGhvZHM9QWUuaW5qZWN0PUFlLmNvbXB1dGVkPWZ1bmN0aW9uKGUsdCxuLHIpe2lmKCFlKXJldHVybiB0O3ZhciBpPU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIG0oaSxlKSx0JiZtKGksdCksaX0sQWUucHJvdmlkZT1TZTt2YXIgamU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdm9pZCAwPT09dD9lOnR9O2Z1bmN0aW9uIE5lKG4scixpKXsiZnVuY3Rpb24iPT10eXBlb2YgciYmKHI9ci5vcHRpb25zKSxmdW5jdGlvbihlLHQpe3ZhciBuPWUucHJvcHM7aWYobil7dmFyIHIsaSxvPXt9O2lmKEFycmF5LmlzQXJyYXkobikpZm9yKHI9bi5sZW5ndGg7ci0tOykic3RyaW5nIj09dHlwZW9mKGk9bltyXSkmJihvW2coaSldPXt0eXBlOm51bGx9KTtlbHNlIGlmKGwobikpZm9yKHZhciBhIGluIG4paT1uW2FdLG9bZyhhKV09bChpKT9pOnt0eXBlOml9O2UucHJvcHM9b319KHIpLGZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5pbmplY3Q7aWYobil7dmFyIHI9ZS5pbmplY3Q9e307aWYoQXJyYXkuaXNBcnJheShuKSlmb3IodmFyIGk9MDtpPG4ubGVuZ3RoO2krKylyW25baV1dPXtmcm9tOm5baV19O2Vsc2UgaWYobChuKSlmb3IodmFyIG8gaW4gbil7dmFyIGE9bltvXTtyW29dPWwoYSk/bSh7ZnJvbTpvfSxhKTp7ZnJvbTphfX19fShyKSxmdW5jdGlvbihlKXt2YXIgdD1lLmRpcmVjdGl2ZXM7aWYodClmb3IodmFyIG4gaW4gdCl7dmFyIHI9dFtuXTsiZnVuY3Rpb24iPT10eXBlb2YgciYmKHRbbl09e2JpbmQ6cix1cGRhdGU6cn0pfX0ocik7dmFyIGU9ci5leHRlbmRzO2lmKGUmJihuPU5lKG4sZSxpKSksci5taXhpbnMpZm9yKHZhciB0PTAsbz1yLm1peGlucy5sZW5ndGg7dDxvO3QrKyluPU5lKG4sci5taXhpbnNbdF0saSk7dmFyIGEscz17fTtmb3IoYSBpbiBuKWMoYSk7Zm9yKGEgaW4gcilwKG4sYSl8fGMoYSk7ZnVuY3Rpb24gYyhlKXt2YXIgdD1BZVtlXXx8amU7c1tlXT10KG5bZV0scltlXSxpLGUpfXJldHVybiBzfWZ1bmN0aW9uIExlKGUsdCxuLHIpe2lmKCJzdHJpbmciPT10eXBlb2Ygbil7dmFyIGk9ZVt0XTtpZihwKGksbikpcmV0dXJuIGlbbl07dmFyIG89ZyhuKTtpZihwKGksbykpcmV0dXJuIGlbb107dmFyIGE9ZChvKTtyZXR1cm4gcChpLGEpP2lbYV06aVtuXXx8aVtvXXx8aVthXX19ZnVuY3Rpb24gSWUoZSx0LG4scil7dmFyIGk9dFtlXSxvPSFwKG4sZSksYT1uW2VdLHM9UGUoQm9vbGVhbixpLnR5cGUpO2lmKC0xPHMpaWYobyYmIXAoaSwiZGVmYXVsdCIpKWE9ITE7ZWxzZSBpZigiIj09PWF8fGE9PT1fKGUpKXt2YXIgYz1QZShTdHJpbmcsaS50eXBlKTsoYzwwfHxzPGMpJiYoYT0hMCl9aWYodm9pZCAwPT09YSl7YT1mdW5jdGlvbihlLHQsbil7aWYoIXAodCwiZGVmYXVsdCIpKXJldHVybjt2YXIgcj10LmRlZmF1bHQ7aWYoZSYmZS4kb3B0aW9ucy5wcm9wc0RhdGEmJnZvaWQgMD09PWUuJG9wdGlvbnMucHJvcHNEYXRhW25dJiZ2b2lkIDAhPT1lLl9wcm9wc1tuXSlyZXR1cm4gZS5fcHJvcHNbbl07cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHImJiJGdW5jdGlvbiIhPT1NZSh0LnR5cGUpP3IuY2FsbChlKTpyfShyLGksZSk7dmFyIGw9eWU7Z2UoITApLHdlKGEpLGdlKGwpfXJldHVybiBhfWZ1bmN0aW9uIE1lKGUpe3ZhciB0PWUmJmUudG9TdHJpbmcoKS5tYXRjaCgvXlxzKmZ1bmN0aW9uIChcdyspLyk7cmV0dXJuIHQ/dFsxXToiIn1mdW5jdGlvbiBEZShlLHQpe3JldHVybiBNZShlKT09PU1lKHQpfWZ1bmN0aW9uIFBlKGUsdCl7aWYoIUFycmF5LmlzQXJyYXkodCkpcmV0dXJuIERlKHQsZSk/MDotMTtmb3IodmFyIG49MCxyPXQubGVuZ3RoO248cjtuKyspaWYoRGUodFtuXSxlKSlyZXR1cm4gbjtyZXR1cm4tMX1mdW5jdGlvbiBGZShlLHQsbil7aWYodClmb3IodmFyIHI9dDtyPXIuJHBhcmVudDspe3ZhciBpPXIuJG9wdGlvbnMuZXJyb3JDYXB0dXJlZDtpZihpKWZvcih2YXIgbz0wO288aS5sZW5ndGg7bysrKXRyeXtpZighMT09PWlbb10uY2FsbChyLGUsdCxuKSlyZXR1cm59Y2F0Y2goZSl7UmUoZSxyLCJlcnJvckNhcHR1cmVkIGhvb2siKX19UmUoZSx0LG4pfWZ1bmN0aW9uIFJlKGUsdCxuKXtpZihqLmVycm9ySGFuZGxlcil0cnl7cmV0dXJuIGouZXJyb3JIYW5kbGVyLmNhbGwobnVsbCxlLHQsbil9Y2F0Y2goZSl7SGUoZSxudWxsLCJjb25maWcuZXJyb3JIYW5kbGVyIil9SGUoZSx0LG4pfWZ1bmN0aW9uIEhlKGUsdCxuKXtpZighQiYmIVV8fCJ1bmRlZmluZWQiPT10eXBlb2YgY29uc29sZSl0aHJvdyBlO2NvbnNvbGUuZXJyb3IoZSl9dmFyIEJlLFVlLFZlPVtdLHplPSExO2Z1bmN0aW9uIEtlKCl7emU9ITE7Zm9yKHZhciBlPVZlLnNsaWNlKDApLHQ9VmUubGVuZ3RoPTA7dDxlLmxlbmd0aDt0KyspZVt0XSgpfXZhciBKZT0hMTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIHNldEltbWVkaWF0ZSYmZWUoc2V0SW1tZWRpYXRlKSlVZT1mdW5jdGlvbigpe3NldEltbWVkaWF0ZShLZSl9O2Vsc2UgaWYoInVuZGVmaW5lZCI9PXR5cGVvZiBNZXNzYWdlQ2hhbm5lbHx8IWVlKE1lc3NhZ2VDaGFubmVsKSYmIltvYmplY3QgTWVzc2FnZUNoYW5uZWxDb25zdHJ1Y3Rvcl0iIT09TWVzc2FnZUNoYW5uZWwudG9TdHJpbmcoKSlVZT1mdW5jdGlvbigpe3NldFRpbWVvdXQoS2UsMCl9O2Vsc2V7dmFyIHFlPW5ldyBNZXNzYWdlQ2hhbm5lbCxXZT1xZS5wb3J0MjtxZS5wb3J0MS5vbm1lc3NhZ2U9S2UsVWU9ZnVuY3Rpb24oKXtXZS5wb3N0TWVzc2FnZSgxKX19aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBQcm9taXNlJiZlZShQcm9taXNlKSl7dmFyIEdlPVByb21pc2UucmVzb2x2ZSgpO0JlPWZ1bmN0aW9uKCl7R2UudGhlbihLZSksVyYmc2V0VGltZW91dCgkKX19ZWxzZSBCZT1VZTtmdW5jdGlvbiBaZShlLHQpe3ZhciBuO2lmKFZlLnB1c2goZnVuY3Rpb24oKXtpZihlKXRyeXtlLmNhbGwodCl9Y2F0Y2goZSl7RmUoZSx0LCJuZXh0VGljayIpfWVsc2UgbiYmbih0KX0pLHplfHwoemU9ITAsSmU/VWUoKTpCZSgpKSwhZSYmInVuZGVmaW5lZCIhPXR5cGVvZiBQcm9taXNlKXJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihlKXtuPWV9KX12YXIgWGU9bmV3IHRlO2Z1bmN0aW9uIFllKGUpeyFmdW5jdGlvbiBlKHQsbil7dmFyIHIsaTt2YXIgbz1BcnJheS5pc0FycmF5KHQpO2lmKCFvJiYhUCh0KXx8T2JqZWN0LmlzRnJvemVuKHQpfHx0IGluc3RhbmNlb2YgbGUpcmV0dXJuO2lmKHQuX19vYl9fKXt2YXIgYT10Ll9fb2JfXy5kZXAuaWQ7aWYobi5oYXMoYSkpcmV0dXJuO24uYWRkKGEpfWlmKG8pZm9yKHI9dC5sZW5ndGg7ci0tOyllKHRbcl0sbik7ZWxzZSBmb3IoaT1PYmplY3Qua2V5cyh0KSxyPWkubGVuZ3RoO3ItLTspZSh0W2lbcl1dLG4pfShlLFhlKSxYZS5jbGVhcigpfXZhciBRZSxldD1lKGZ1bmN0aW9uKGUpe3ZhciB0PSImIj09PWUuY2hhckF0KDApLG49In4iPT09KGU9dD9lLnNsaWNlKDEpOmUpLmNoYXJBdCgwKSxyPSIhIj09PShlPW4/ZS5zbGljZSgxKTplKS5jaGFyQXQoMCk7cmV0dXJue25hbWU6ZT1yP2Uuc2xpY2UoMSk6ZSxvbmNlOm4sY2FwdHVyZTpyLHBhc3NpdmU6dH19KTtmdW5jdGlvbiB0dChlKXtmdW5jdGlvbiBpKCl7dmFyIGU9YXJndW1lbnRzLHQ9aS5mbnM7aWYoIUFycmF5LmlzQXJyYXkodCkpcmV0dXJuIHQuYXBwbHkobnVsbCxhcmd1bWVudHMpO2Zvcih2YXIgbj10LnNsaWNlKCkscj0wO3I8bi5sZW5ndGg7cisrKW5bcl0uYXBwbHkobnVsbCxlKX1yZXR1cm4gaS5mbnM9ZSxpfWZ1bmN0aW9uIG50KGUsdCxuLHIsaSl7dmFyIG8sYSxzLGM7Zm9yKG8gaW4gZSlhPWVbb10scz10W29dLGM9ZXQobyksTShhKXx8KE0ocyk/KE0oYS5mbnMpJiYoYT1lW29dPXR0KGEpKSxuKGMubmFtZSxhLGMub25jZSxjLmNhcHR1cmUsYy5wYXNzaXZlLGMucGFyYW1zKSk6YSE9PXMmJihzLmZucz1hLGVbb109cykpO2ZvcihvIGluIHQpTShlW29dKSYmcigoYz1ldChvKSkubmFtZSx0W29dLGMuY2FwdHVyZSl9ZnVuY3Rpb24gcnQoZSx0LG4pe3ZhciByO2UgaW5zdGFuY2VvZiBsZSYmKGU9ZS5kYXRhLmhvb2t8fChlLmRhdGEuaG9vaz17fSkpO3ZhciBpPWVbdF07ZnVuY3Rpb24gbygpe24uYXBwbHkodGhpcyxhcmd1bWVudHMpLGYoci5mbnMsbyl9TShpKT9yPXR0KFtvXSk6RChpLmZucykmJlMoaS5tZXJnZWQpPyhyPWkpLmZucy5wdXNoKG8pOnI9dHQoW2ksb10pLHIubWVyZ2VkPSEwLGVbdF09cn1mdW5jdGlvbiBpdChlLHQsbixyLGkpe2lmKEQodCkpe2lmKHAodCxuKSlyZXR1cm4gZVtuXT10W25dLGl8fGRlbGV0ZSB0W25dLCEwO2lmKHAodCxyKSlyZXR1cm4gZVtuXT10W3JdLGl8fGRlbGV0ZSB0W3JdLCEwfXJldHVybiExfWZ1bmN0aW9uIG90KGUpe3JldHVybiBUKGUpP1twZShlKV06QXJyYXkuaXNBcnJheShlKT9mdW5jdGlvbiBlKHQsbil7dmFyIHI9W107dmFyIGksbyxhLHM7Zm9yKGk9MDtpPHQubGVuZ3RoO2krKylNKG89dFtpXSl8fCJib29sZWFuIj09dHlwZW9mIG98fChhPXIubGVuZ3RoLTEscz1yW2FdLEFycmF5LmlzQXJyYXkobyk/MDxvLmxlbmd0aCYmKGF0KChvPWUobywobnx8IiIpKyJfIitpKSlbMF0pJiZhdChzKSYmKHJbYV09cGUocy50ZXh0K29bMF0udGV4dCksby5zaGlmdCgpKSxyLnB1c2guYXBwbHkocixvKSk6VChvKT9hdChzKT9yW2FdPXBlKHMudGV4dCtvKToiIiE9PW8mJnIucHVzaChwZShvKSk6YXQobykmJmF0KHMpP3JbYV09cGUocy50ZXh0K28udGV4dCk6KFModC5faXNWTGlzdCkmJkQoby50YWcpJiZNKG8ua2V5KSYmRChuKSYmKG8ua2V5PSJfX3ZsaXN0IituKyJfIitpKyJfXyIpLHIucHVzaChvKSkpO3JldHVybiByfShlKTp2b2lkIDB9ZnVuY3Rpb24gYXQoZSl7cmV0dXJuIEQoZSkmJkQoZS50ZXh0KSYmITE9PT1lLmlzQ29tbWVudH1mdW5jdGlvbiBzdChlLHQpe3JldHVybihlLl9fZXNNb2R1bGV8fG5lJiYiTW9kdWxlIj09PWVbU3ltYm9sLnRvU3RyaW5nVGFnXSkmJihlPWUuZGVmYXVsdCksUChlKT90LmV4dGVuZChlKTplfWZ1bmN0aW9uIGN0KGUpe3JldHVybiBlLmlzQ29tbWVudCYmZS5hc3luY0ZhY3Rvcnl9ZnVuY3Rpb24gbHQoZSl7aWYoQXJyYXkuaXNBcnJheShlKSlmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKyl7dmFyIG49ZVt0XTtpZihEKG4pJiYoRChuLmNvbXBvbmVudE9wdGlvbnMpfHxjdChuKSkpcmV0dXJuIG59fWZ1bmN0aW9uIHV0KGUsdCxuKXtuP1FlLiRvbmNlKGUsdCk6UWUuJG9uKGUsdCl9ZnVuY3Rpb24gZnQoZSx0KXtRZS4kb2ZmKGUsdCl9ZnVuY3Rpb24gcHQoZSx0LG4pe1FlPWUsbnQodCxufHx7fSx1dCxmdCksUWU9dm9pZCAwfWZ1bmN0aW9uIGR0KGUsdCl7dmFyIG49e307aWYoIWUpcmV0dXJuIG47Zm9yKHZhciByPTAsaT1lLmxlbmd0aDtyPGk7cisrKXt2YXIgbz1lW3JdLGE9by5kYXRhO2lmKGEmJmEuYXR0cnMmJmEuYXR0cnMuc2xvdCYmZGVsZXRlIGEuYXR0cnMuc2xvdCxvLmNvbnRleHQhPT10JiZvLmZuQ29udGV4dCE9PXR8fCFhfHxudWxsPT1hLnNsb3QpKG4uZGVmYXVsdHx8KG4uZGVmYXVsdD1bXSkpLnB1c2gobyk7ZWxzZXt2YXIgcz1hLnNsb3QsYz1uW3NdfHwobltzXT1bXSk7InRlbXBsYXRlIj09PW8udGFnP2MucHVzaC5hcHBseShjLG8uY2hpbGRyZW58fFtdKTpjLnB1c2gobyl9fWZvcih2YXIgbCBpbiBuKW5bbF0uZXZlcnkodnQpJiZkZWxldGUgbltsXTtyZXR1cm4gbn1mdW5jdGlvbiB2dChlKXtyZXR1cm4gZS5pc0NvbW1lbnQmJiFlLmFzeW5jRmFjdG9yeXx8IiAiPT09ZS50ZXh0fWZ1bmN0aW9uIGh0KGUsdCl7dD10fHx7fTtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKylBcnJheS5pc0FycmF5KGVbbl0pP2h0KGVbbl0sdCk6dFtlW25dLmtleV09ZVtuXS5mbjtyZXR1cm4gdH12YXIgbXQ9bnVsbDtmdW5jdGlvbiB5dChlKXtmb3IoO2UmJihlPWUuJHBhcmVudCk7KWlmKGUuX2luYWN0aXZlKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIGd0KGUsdCl7aWYodCl7aWYoZS5fZGlyZWN0SW5hY3RpdmU9ITEseXQoZSkpcmV0dXJufWVsc2UgaWYoZS5fZGlyZWN0SW5hY3RpdmUpcmV0dXJuO2lmKGUuX2luYWN0aXZlfHxudWxsPT09ZS5faW5hY3RpdmUpe2UuX2luYWN0aXZlPSExO2Zvcih2YXIgbj0wO248ZS4kY2hpbGRyZW4ubGVuZ3RoO24rKylndChlLiRjaGlsZHJlbltuXSk7X3QoZSwiYWN0aXZhdGVkIil9fWZ1bmN0aW9uIF90KHQsbil7c2UoKTt2YXIgZT10LiRvcHRpb25zW25dO2lmKGUpZm9yKHZhciByPTAsaT1lLmxlbmd0aDtyPGk7cisrKXRyeXtlW3JdLmNhbGwodCl9Y2F0Y2goZSl7RmUoZSx0LG4rIiBob29rIil9dC5faGFzSG9va0V2ZW50JiZ0LiRlbWl0KCJob29rOiIrbiksY2UoKX12YXIgYnQ9W10sJHQ9W10sd3Q9e30sQ3Q9ITEseHQ9ITEsa3Q9MDtmdW5jdGlvbiBBdCgpe3ZhciBlLHQ7Zm9yKHh0PSEwLGJ0LnNvcnQoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5pZC10LmlkfSksa3Q9MDtrdDxidC5sZW5ndGg7a3QrKyl0PShlPWJ0W2t0XSkuaWQsd3RbdF09bnVsbCxlLnJ1bigpO3ZhciBuPSR0LnNsaWNlKCkscj1idC5zbGljZSgpO2t0PWJ0Lmxlbmd0aD0kdC5sZW5ndGg9MCx3dD17fSxDdD14dD0hMSxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKyllW3RdLl9pbmFjdGl2ZT0hMCxndChlW3RdLCEwKX0obiksZnVuY3Rpb24oZSl7dmFyIHQ9ZS5sZW5ndGg7Zm9yKDt0LS07KXt2YXIgbj1lW3RdLHI9bi52bTtyLl93YXRjaGVyPT09biYmci5faXNNb3VudGVkJiZfdChyLCJ1cGRhdGVkIil9fShyKSxRJiZqLmRldnRvb2xzJiZRLmVtaXQoImZsdXNoIil9dmFyIE90PTAsU3Q9ZnVuY3Rpb24oZSx0LG4scixpKXt0aGlzLnZtPWUsaSYmKGUuX3dhdGNoZXI9dGhpcyksZS5fd2F0Y2hlcnMucHVzaCh0aGlzKSxyPyh0aGlzLmRlZXA9ISFyLmRlZXAsdGhpcy51c2VyPSEhci51c2VyLHRoaXMubGF6eT0hIXIubGF6eSx0aGlzLnN5bmM9ISFyLnN5bmMpOnRoaXMuZGVlcD10aGlzLnVzZXI9dGhpcy5sYXp5PXRoaXMuc3luYz0hMSx0aGlzLmNiPW4sdGhpcy5pZD0rK090LHRoaXMuYWN0aXZlPSEwLHRoaXMuZGlydHk9dGhpcy5sYXp5LHRoaXMuZGVwcz1bXSx0aGlzLm5ld0RlcHM9W10sdGhpcy5kZXBJZHM9bmV3IHRlLHRoaXMubmV3RGVwSWRzPW5ldyB0ZSx0aGlzLmV4cHJlc3Npb249IiIsImZ1bmN0aW9uIj09dHlwZW9mIHQ/dGhpcy5nZXR0ZXI9dDoodGhpcy5nZXR0ZXI9ZnVuY3Rpb24oZSl7aWYoIUwudGVzdChlKSl7dmFyIG49ZS5zcGxpdCgiLiIpO3JldHVybiBmdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PG4ubGVuZ3RoO3QrKyl7aWYoIWUpcmV0dXJuO2U9ZVtuW3RdXX1yZXR1cm4gZX19fSh0KSx0aGlzLmdldHRlcnx8KHRoaXMuZ2V0dGVyPWZ1bmN0aW9uKCl7fSkpLHRoaXMudmFsdWU9dGhpcy5sYXp5P3ZvaWQgMDp0aGlzLmdldCgpfTtTdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKCl7dmFyIGU7c2UodGhpcyk7dmFyIHQ9dGhpcy52bTt0cnl7ZT10aGlzLmdldHRlci5jYWxsKHQsdCl9Y2F0Y2goZSl7aWYoIXRoaXMudXNlcil0aHJvdyBlO0ZlKGUsdCwnZ2V0dGVyIGZvciB3YXRjaGVyICInK3RoaXMuZXhwcmVzc2lvbisnIicpfWZpbmFsbHl7dGhpcy5kZWVwJiZZZShlKSxjZSgpLHRoaXMuY2xlYW51cERlcHMoKX1yZXR1cm4gZX0sU3QucHJvdG90eXBlLmFkZERlcD1mdW5jdGlvbihlKXt2YXIgdD1lLmlkO3RoaXMubmV3RGVwSWRzLmhhcyh0KXx8KHRoaXMubmV3RGVwSWRzLmFkZCh0KSx0aGlzLm5ld0RlcHMucHVzaChlKSx0aGlzLmRlcElkcy5oYXModCl8fGUuYWRkU3ViKHRoaXMpKX0sU3QucHJvdG90eXBlLmNsZWFudXBEZXBzPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMuZGVwcy5sZW5ndGg7ZS0tOyl7dmFyIHQ9dGhpcy5kZXBzW2VdO3RoaXMubmV3RGVwSWRzLmhhcyh0LmlkKXx8dC5yZW1vdmVTdWIodGhpcyl9dmFyIG49dGhpcy5kZXBJZHM7dGhpcy5kZXBJZHM9dGhpcy5uZXdEZXBJZHMsdGhpcy5uZXdEZXBJZHM9bix0aGlzLm5ld0RlcElkcy5jbGVhcigpLG49dGhpcy5kZXBzLHRoaXMuZGVwcz10aGlzLm5ld0RlcHMsdGhpcy5uZXdEZXBzPW4sdGhpcy5uZXdEZXBzLmxlbmd0aD0wfSxTdC5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKCl7dGhpcy5sYXp5P3RoaXMuZGlydHk9ITA6dGhpcy5zeW5jP3RoaXMucnVuKCk6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5pZDtpZihudWxsPT13dFt0XSl7aWYod3RbdF09ITAseHQpe2Zvcih2YXIgbj1idC5sZW5ndGgtMTtrdDxuJiZidFtuXS5pZD5lLmlkOyluLS07YnQuc3BsaWNlKG4rMSwwLGUpfWVsc2UgYnQucHVzaChlKTtDdHx8KEN0PSEwLFplKEF0KSl9fSh0aGlzKX0sU3QucHJvdG90eXBlLnJ1bj1mdW5jdGlvbigpe2lmKHRoaXMuYWN0aXZlKXt2YXIgZT10aGlzLmdldCgpO2lmKGUhPT10aGlzLnZhbHVlfHxQKGUpfHx0aGlzLmRlZXApe3ZhciB0PXRoaXMudmFsdWU7aWYodGhpcy52YWx1ZT1lLHRoaXMudXNlcil0cnl7dGhpcy5jYi5jYWxsKHRoaXMudm0sZSx0KX1jYXRjaChlKXtGZShlLHRoaXMudm0sJ2NhbGxiYWNrIGZvciB3YXRjaGVyICInK3RoaXMuZXhwcmVzc2lvbisnIicpfWVsc2UgdGhpcy5jYi5jYWxsKHRoaXMudm0sZSx0KX19fSxTdC5wcm90b3R5cGUuZXZhbHVhdGU9ZnVuY3Rpb24oKXt0aGlzLnZhbHVlPXRoaXMuZ2V0KCksdGhpcy5kaXJ0eT0hMX0sU3QucHJvdG90eXBlLmRlcGVuZD1mdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLmRlcHMubGVuZ3RoO2UtLTspdGhpcy5kZXBzW2VdLmRlcGVuZCgpfSxTdC5wcm90b3R5cGUudGVhcmRvd249ZnVuY3Rpb24oKXtpZih0aGlzLmFjdGl2ZSl7dGhpcy52bS5faXNCZWluZ0Rlc3Ryb3llZHx8Zih0aGlzLnZtLl93YXRjaGVycyx0aGlzKTtmb3IodmFyIGU9dGhpcy5kZXBzLmxlbmd0aDtlLS07KXRoaXMuZGVwc1tlXS5yZW1vdmVTdWIodGhpcyk7dGhpcy5hY3RpdmU9ITF9fTt2YXIgVHQ9e2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDokLHNldDokfTtmdW5jdGlvbiBFdChlLHQsbil7VHQuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbdF1bbl19LFR0LnNldD1mdW5jdGlvbihlKXt0aGlzW3RdW25dPWV9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4sVHQpfWZ1bmN0aW9uIGp0KGUpe2UuX3dhdGNoZXJzPVtdO3ZhciB0PWUuJG9wdGlvbnM7dC5wcm9wcyYmZnVuY3Rpb24obixyKXt2YXIgaT1uLiRvcHRpb25zLnByb3BzRGF0YXx8e30sbz1uLl9wcm9wcz17fSxhPW4uJG9wdGlvbnMuX3Byb3BLZXlzPVtdO24uJHBhcmVudCYmZ2UoITEpO3ZhciBlPWZ1bmN0aW9uKGUpe2EucHVzaChlKTt2YXIgdD1JZShlLHIsaSxuKTtDZShvLGUsdCksZSBpbiBufHxFdChuLCJfcHJvcHMiLGUpfTtmb3IodmFyIHQgaW4gcillKHQpO2dlKCEwKX0oZSx0LnByb3BzKSx0Lm1ldGhvZHMmJmZ1bmN0aW9uKGUsdCl7ZS4kb3B0aW9ucy5wcm9wcztmb3IodmFyIG4gaW4gdCllW25dPW51bGw9PXRbbl0/JDp2KHRbbl0sZSl9KGUsdC5tZXRob2RzKSx0LmRhdGE/ZnVuY3Rpb24oZSl7dmFyIHQ9ZS4kb3B0aW9ucy5kYXRhO2wodD1lLl9kYXRhPSJmdW5jdGlvbiI9PXR5cGVvZiB0P2Z1bmN0aW9uKGUsdCl7c2UoKTt0cnl7cmV0dXJuIGUuY2FsbCh0LHQpfWNhdGNoKGUpe3JldHVybiBGZShlLHQsImRhdGEoKSIpLHt9fWZpbmFsbHl7Y2UoKX19KHQsZSk6dHx8e30pfHwodD17fSk7dmFyIG49T2JqZWN0LmtleXModCkscj1lLiRvcHRpb25zLnByb3BzLGk9KGUuJG9wdGlvbnMubWV0aG9kcyxuLmxlbmd0aCk7Zm9yKDtpLS07KXt2YXIgbz1uW2ldO3ImJnAocixvKXx8KHZvaWQgMCwzNiE9PShhPShvKyIiKS5jaGFyQ29kZUF0KDApKSYmOTUhPT1hJiZFdChlLCJfZGF0YSIsbykpfXZhciBhO3dlKHQsITApfShlKTp3ZShlLl9kYXRhPXt9LCEwKSx0LmNvbXB1dGVkJiZmdW5jdGlvbihlLHQpe3ZhciBuPWUuX2NvbXB1dGVkV2F0Y2hlcnM9T2JqZWN0LmNyZWF0ZShudWxsKSxyPVkoKTtmb3IodmFyIGkgaW4gdCl7dmFyIG89dFtpXSxhPSJmdW5jdGlvbiI9PXR5cGVvZiBvP286by5nZXQ7cnx8KG5baV09bmV3IFN0KGUsYXx8JCwkLE50KSksaSBpbiBlfHxMdChlLGksbyl9fShlLHQuY29tcHV0ZWQpLHQud2F0Y2gmJnQud2F0Y2ghPT1HJiZmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiB0KXt2YXIgcj10W25dO2lmKEFycmF5LmlzQXJyYXkocikpZm9yKHZhciBpPTA7aTxyLmxlbmd0aDtpKyspTXQoZSxuLHJbaV0pO2Vsc2UgTXQoZSxuLHIpfX0oZSx0LndhdGNoKX12YXIgTnQ9e2xhenk6ITB9O2Z1bmN0aW9uIEx0KGUsdCxuKXt2YXIgcj0hWSgpOyJmdW5jdGlvbiI9PXR5cGVvZiBuPyhUdC5nZXQ9cj9JdCh0KTpuLFR0LnNldD0kKTooVHQuZ2V0PW4uZ2V0P3ImJiExIT09bi5jYWNoZT9JdCh0KTpuLmdldDokLFR0LnNldD1uLnNldD9uLnNldDokKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LFR0KX1mdW5jdGlvbiBJdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9jb21wdXRlZFdhdGNoZXJzJiZ0aGlzLl9jb21wdXRlZFdhdGNoZXJzW3RdO2lmKGUpcmV0dXJuIGUuZGlydHkmJmUuZXZhbHVhdGUoKSxvZS50YXJnZXQmJmUuZGVwZW5kKCksZS52YWx1ZX19ZnVuY3Rpb24gTXQoZSx0LG4scil7cmV0dXJuIGwobikmJihuPShyPW4pLmhhbmRsZXIpLCJzdHJpbmciPT10eXBlb2YgbiYmKG49ZVtuXSksZS4kd2F0Y2godCxuLHIpfWZ1bmN0aW9uIER0KHQsZSl7aWYodCl7Zm9yKHZhciBuPU9iamVjdC5jcmVhdGUobnVsbCkscj1uZT9SZWZsZWN0Lm93bktleXModCkuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsZSkuZW51bWVyYWJsZX0pOk9iamVjdC5rZXlzKHQpLGk9MDtpPHIubGVuZ3RoO2krKyl7Zm9yKHZhciBvPXJbaV0sYT10W29dLmZyb20scz1lO3M7KXtpZihzLl9wcm92aWRlZCYmcChzLl9wcm92aWRlZCxhKSl7bltvXT1zLl9wcm92aWRlZFthXTticmVha31zPXMuJHBhcmVudH1pZighcyYmImRlZmF1bHQiaW4gdFtvXSl7dmFyIGM9dFtvXS5kZWZhdWx0O25bb109ImZ1bmN0aW9uIj09dHlwZW9mIGM/Yy5jYWxsKGUpOmN9fXJldHVybiBufX1mdW5jdGlvbiBQdChlLHQpe3ZhciBuLHIsaSxvLGE7aWYoQXJyYXkuaXNBcnJheShlKXx8InN0cmluZyI9PXR5cGVvZiBlKWZvcihuPW5ldyBBcnJheShlLmxlbmd0aCkscj0wLGk9ZS5sZW5ndGg7cjxpO3IrKyluW3JdPXQoZVtyXSxyKTtlbHNlIGlmKCJudW1iZXIiPT10eXBlb2YgZSlmb3Iobj1uZXcgQXJyYXkoZSkscj0wO3I8ZTtyKyspbltyXT10KHIrMSxyKTtlbHNlIGlmKFAoZSkpZm9yKG89T2JqZWN0LmtleXMoZSksbj1uZXcgQXJyYXkoby5sZW5ndGgpLHI9MCxpPW8ubGVuZ3RoO3I8aTtyKyspYT1vW3JdLG5bcl09dChlW2FdLGEscik7cmV0dXJuIEQobikmJihuLl9pc1ZMaXN0PSEwKSxufWZ1bmN0aW9uIEZ0KGUsdCxuLHIpe3ZhciBpLG89dGhpcy4kc2NvcGVkU2xvdHNbZV07aWYobyluPW58fHt9LHImJihuPW0obSh7fSxyKSxuKSksaT1vKG4pfHx0O2Vsc2V7dmFyIGE9dGhpcy4kc2xvdHNbZV07YSYmKGEuX3JlbmRlcmVkPSEwKSxpPWF8fHR9dmFyIHM9biYmbi5zbG90O3JldHVybiBzP3RoaXMuJGNyZWF0ZUVsZW1lbnQoInRlbXBsYXRlIix7c2xvdDpzfSxpKTppfWZ1bmN0aW9uIFJ0KGUpe3JldHVybiBMZSh0aGlzLiRvcHRpb25zLCJmaWx0ZXJzIixlKXx8d31mdW5jdGlvbiBIdChlLHQpe3JldHVybiBBcnJheS5pc0FycmF5KGUpPy0xPT09ZS5pbmRleE9mKHQpOmUhPT10fWZ1bmN0aW9uIEJ0KGUsdCxuLHIsaSl7dmFyIG89ai5rZXlDb2Rlc1t0XXx8bjtyZXR1cm4gaSYmciYmIWoua2V5Q29kZXNbdF0/SHQoaSxyKTpvP0h0KG8sZSk6cj9fKHIpIT09dDp2b2lkIDB9ZnVuY3Rpb24gVXQobixyLGksbyxhKXtpZihpKWlmKFAoaSkpe3ZhciBzO0FycmF5LmlzQXJyYXkoaSkmJihpPWIoaSkpO3ZhciBlPWZ1bmN0aW9uKHQpe2lmKCJjbGFzcyI9PT10fHwic3R5bGUiPT09dHx8dSh0KSlzPW47ZWxzZXt2YXIgZT1uLmF0dHJzJiZuLmF0dHJzLnR5cGU7cz1vfHxqLm11c3RVc2VQcm9wKHIsZSx0KT9uLmRvbVByb3BzfHwobi5kb21Qcm9wcz17fSk6bi5hdHRyc3x8KG4uYXR0cnM9e30pfXQgaW4gc3x8KHNbdF09aVt0XSxhJiYoKG4ub258fChuLm9uPXt9KSlbInVwZGF0ZToiK3RdPWZ1bmN0aW9uKGUpe2lbdF09ZX0pKX07Zm9yKHZhciB0IGluIGkpZSh0KX1lbHNlO3JldHVybiBufWZ1bmN0aW9uIFZ0KGUsdCl7dmFyIG49dGhpcy5fc3RhdGljVHJlZXN8fCh0aGlzLl9zdGF0aWNUcmVlcz1bXSkscj1uW2VdO3JldHVybiByJiYhdHx8S3Qocj1uW2VdPXRoaXMuJG9wdGlvbnMuc3RhdGljUmVuZGVyRm5zW2VdLmNhbGwodGhpcy5fcmVuZGVyUHJveHksbnVsbCx0aGlzKSwiX19zdGF0aWNfXyIrZSwhMSkscn1mdW5jdGlvbiB6dChlLHQsbil7cmV0dXJuIEt0KGUsIl9fb25jZV9fIit0KyhuPyJfIituOiIiKSwhMCksZX1mdW5jdGlvbiBLdChlLHQsbil7aWYoQXJyYXkuaXNBcnJheShlKSlmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyllW3JdJiYic3RyaW5nIiE9dHlwZW9mIGVbcl0mJkp0KGVbcl0sdCsiXyIrcixuKTtlbHNlIEp0KGUsdCxuKX1mdW5jdGlvbiBKdChlLHQsbil7ZS5pc1N0YXRpYz0hMCxlLmtleT10LGUuaXNPbmNlPW59ZnVuY3Rpb24gcXQoZSx0KXtpZih0KWlmKGwodCkpe3ZhciBuPWUub249ZS5vbj9tKHt9LGUub24pOnt9O2Zvcih2YXIgciBpbiB0KXt2YXIgaT1uW3JdLG89dFtyXTtuW3JdPWk/W10uY29uY2F0KGksbyk6b319ZWxzZTtyZXR1cm4gZX1mdW5jdGlvbiBXdChlKXtlLl9vPXp0LGUuX249RixlLl9zPXQsZS5fbD1QdCxlLl90PUZ0LGUuX3E9QyxlLl9pPXgsZS5fbT1WdCxlLl9mPVJ0LGUuX2s9QnQsZS5fYj1VdCxlLl92PXBlLGUuX2U9ZmUsZS5fdT1odCxlLl9nPXF0fWZ1bmN0aW9uIEd0KGUsdCxuLG8scil7dmFyIGEscz1yLm9wdGlvbnM7cChvLCJfdWlkIik/KGE9T2JqZWN0LmNyZWF0ZShvKSkuX29yaWdpbmFsPW86bz0oYT1vKS5fb3JpZ2luYWw7dmFyIGk9UyhzLl9jb21waWxlZCksYz0haTt0aGlzLmRhdGE9ZSx0aGlzLnByb3BzPXQsdGhpcy5jaGlsZHJlbj1uLHRoaXMucGFyZW50PW8sdGhpcy5saXN0ZW5lcnM9ZS5vbnx8eSx0aGlzLmluamVjdGlvbnM9RHQocy5pbmplY3QsbyksdGhpcy5zbG90cz1mdW5jdGlvbigpe3JldHVybiBkdChuLG8pfSxpJiYodGhpcy4kb3B0aW9ucz1zLHRoaXMuJHNsb3RzPXRoaXMuc2xvdHMoKSx0aGlzLiRzY29wZWRTbG90cz1lLnNjb3BlZFNsb3RzfHx5KSxzLl9zY29wZUlkP3RoaXMuX2M9ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9cm4oYSxlLHQsbixyLGMpO3JldHVybiBpJiYhQXJyYXkuaXNBcnJheShpKSYmKGkuZm5TY29wZUlkPXMuX3Njb3BlSWQsaS5mbkNvbnRleHQ9byksaX06dGhpcy5fYz1mdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gcm4oYSxlLHQsbixyLGMpfX1mdW5jdGlvbiBadChlLHQsbixyKXt2YXIgaT1kZShlKTtyZXR1cm4gaS5mbkNvbnRleHQ9bixpLmZuT3B0aW9ucz1yLHQuc2xvdCYmKChpLmRhdGF8fChpLmRhdGE9e30pKS5zbG90PXQuc2xvdCksaX1mdW5jdGlvbiBYdChlLHQpe2Zvcih2YXIgbiBpbiB0KWVbZyhuKV09dFtuXX1XdChHdC5wcm90b3R5cGUpO3ZhciBZdD17aW5pdDpmdW5jdGlvbihlLHQsbixyKXtpZihlLmNvbXBvbmVudEluc3RhbmNlJiYhZS5jb21wb25lbnRJbnN0YW5jZS5faXNEZXN0cm95ZWQmJmUuZGF0YS5rZWVwQWxpdmUpe3ZhciBpPWU7WXQucHJlcGF0Y2goaSxpKX1lbHNleyhlLmNvbXBvbmVudEluc3RhbmNlPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPXtfaXNDb21wb25lbnQ6ITAscGFyZW50OnQsX3BhcmVudFZub2RlOmUsX3BhcmVudEVsbTpufHxudWxsLF9yZWZFbG06cnx8bnVsbH0sbz1lLmRhdGEuaW5saW5lVGVtcGxhdGU7RChvKSYmKGkucmVuZGVyPW8ucmVuZGVyLGkuc3RhdGljUmVuZGVyRm5zPW8uc3RhdGljUmVuZGVyRm5zKTtyZXR1cm4gbmV3IGUuY29tcG9uZW50T3B0aW9ucy5DdG9yKGkpfShlLG10LG4scikpLiRtb3VudCh0P2UuZWxtOnZvaWQgMCx0KX19LHByZXBhdGNoOmZ1bmN0aW9uKGUsdCl7dmFyIG49dC5jb21wb25lbnRPcHRpb25zOyFmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBvPSEhKGl8fGUuJG9wdGlvbnMuX3JlbmRlckNoaWxkcmVufHxyLmRhdGEuc2NvcGVkU2xvdHN8fGUuJHNjb3BlZFNsb3RzIT09eSk7aWYoZS4kb3B0aW9ucy5fcGFyZW50Vm5vZGU9cixlLiR2bm9kZT1yLGUuX3Zub2RlJiYoZS5fdm5vZGUucGFyZW50PXIpLGUuJG9wdGlvbnMuX3JlbmRlckNoaWxkcmVuPWksZS4kYXR0cnM9ci5kYXRhLmF0dHJzfHx5LGUuJGxpc3RlbmVycz1ufHx5LHQmJmUuJG9wdGlvbnMucHJvcHMpe2dlKCExKTtmb3IodmFyIGE9ZS5fcHJvcHMscz1lLiRvcHRpb25zLl9wcm9wS2V5c3x8W10sYz0wO2M8cy5sZW5ndGg7YysrKXt2YXIgbD1zW2NdLHU9ZS4kb3B0aW9ucy5wcm9wczthW2xdPUllKGwsdSx0LGUpfWdlKCEwKSxlLiRvcHRpb25zLnByb3BzRGF0YT10fW49bnx8eTt2YXIgZj1lLiRvcHRpb25zLl9wYXJlbnRMaXN0ZW5lcnM7ZS4kb3B0aW9ucy5fcGFyZW50TGlzdGVuZXJzPW4scHQoZSxuLGYpLG8mJihlLiRzbG90cz1kdChpLHIuY29udGV4dCksZS4kZm9yY2VVcGRhdGUoKSl9KHQuY29tcG9uZW50SW5zdGFuY2U9ZS5jb21wb25lbnRJbnN0YW5jZSxuLnByb3BzRGF0YSxuLmxpc3RlbmVycyx0LG4uY2hpbGRyZW4pfSxpbnNlcnQ6ZnVuY3Rpb24oZSl7dmFyIHQsbj1lLmNvbnRleHQscj1lLmNvbXBvbmVudEluc3RhbmNlO3IuX2lzTW91bnRlZHx8KHIuX2lzTW91bnRlZD0hMCxfdChyLCJtb3VudGVkIikpLGUuZGF0YS5rZWVwQWxpdmUmJihuLl9pc01vdW50ZWQ/KCh0PXIpLl9pbmFjdGl2ZT0hMSwkdC5wdXNoKHQpKTpndChyLCEwKSl9LGRlc3Ryb3k6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb21wb25lbnRJbnN0YW5jZTt0Ll9pc0Rlc3Ryb3llZHx8KGUuZGF0YS5rZWVwQWxpdmU/ZnVuY3Rpb24gZSh0LG4pe2lmKCEobiYmKHQuX2RpcmVjdEluYWN0aXZlPSEwLHl0KHQpKXx8dC5faW5hY3RpdmUpKXt0Ll9pbmFjdGl2ZT0hMDtmb3IodmFyIHI9MDtyPHQuJGNoaWxkcmVuLmxlbmd0aDtyKyspZSh0LiRjaGlsZHJlbltyXSk7X3QodCwiZGVhY3RpdmF0ZWQiKX19KHQsITApOnQuJGRlc3Ryb3koKSl9fSxRdD1PYmplY3Qua2V5cyhZdCk7ZnVuY3Rpb24gZW4oZSx0LG4scixpKXtpZighTShlKSl7dmFyIG89bi4kb3B0aW9ucy5fYmFzZTtpZihQKGUpJiYoZT1vLmV4dGVuZChlKSksImZ1bmN0aW9uIj09dHlwZW9mIGUpe3ZhciBhLHMsYyxsLHUsZixwO2lmKE0oZS5jaWQpJiZ2b2lkIDA9PT0oZT1mdW5jdGlvbih0LG4sZSl7aWYoUyh0LmVycm9yKSYmRCh0LmVycm9yQ29tcCkpcmV0dXJuIHQuZXJyb3JDb21wO2lmKEQodC5yZXNvbHZlZCkpcmV0dXJuIHQucmVzb2x2ZWQ7aWYoUyh0LmxvYWRpbmcpJiZEKHQubG9hZGluZ0NvbXApKXJldHVybiB0LmxvYWRpbmdDb21wO2lmKCFEKHQuY29udGV4dHMpKXt2YXIgcj10LmNvbnRleHRzPVtlXSxpPSEwLG89ZnVuY3Rpb24oKXtmb3IodmFyIGU9MCx0PXIubGVuZ3RoO2U8dDtlKyspcltlXS4kZm9yY2VVcGRhdGUoKX0sYT1SKGZ1bmN0aW9uKGUpe3QucmVzb2x2ZWQ9c3QoZSxuKSxpfHxvKCl9KSxzPVIoZnVuY3Rpb24oZSl7RCh0LmVycm9yQ29tcCkmJih0LmVycm9yPSEwLG8oKSl9KSxjPXQoYSxzKTtyZXR1cm4gUChjKSYmKCJmdW5jdGlvbiI9PXR5cGVvZiBjLnRoZW4/TSh0LnJlc29sdmVkKSYmYy50aGVuKGEscyk6RChjLmNvbXBvbmVudCkmJiJmdW5jdGlvbiI9PXR5cGVvZiBjLmNvbXBvbmVudC50aGVuJiYoYy5jb21wb25lbnQudGhlbihhLHMpLEQoYy5lcnJvcikmJih0LmVycm9yQ29tcD1zdChjLmVycm9yLG4pKSxEKGMubG9hZGluZykmJih0LmxvYWRpbmdDb21wPXN0KGMubG9hZGluZyxuKSwwPT09Yy5kZWxheT90LmxvYWRpbmc9ITA6c2V0VGltZW91dChmdW5jdGlvbigpe00odC5yZXNvbHZlZCkmJk0odC5lcnJvcikmJih0LmxvYWRpbmc9ITAsbygpKX0sYy5kZWxheXx8MjAwKSksRChjLnRpbWVvdXQpJiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7TSh0LnJlc29sdmVkKSYmcyhudWxsKX0sYy50aW1lb3V0KSkpLGk9ITEsdC5sb2FkaW5nP3QubG9hZGluZ0NvbXA6dC5yZXNvbHZlZH10LmNvbnRleHRzLnB1c2goZSl9KGE9ZSxvLG4pKSlyZXR1cm4gcz1hLGM9dCxsPW4sdT1yLGY9aSwocD1mZSgpKS5hc3luY0ZhY3Rvcnk9cyxwLmFzeW5jTWV0YT17ZGF0YTpjLGNvbnRleHQ6bCxjaGlsZHJlbjp1LHRhZzpmfSxwO3Q9dHx8e30sZG4oZSksRCh0Lm1vZGVsKSYmZnVuY3Rpb24oZSx0KXt2YXIgbj1lLm1vZGVsJiZlLm1vZGVsLnByb3B8fCJ2YWx1ZSIscj1lLm1vZGVsJiZlLm1vZGVsLmV2ZW50fHwiaW5wdXQiOyh0LnByb3BzfHwodC5wcm9wcz17fSkpW25dPXQubW9kZWwudmFsdWU7dmFyIGk9dC5vbnx8KHQub249e30pO0QoaVtyXSk/aVtyXT1bdC5tb2RlbC5jYWxsYmFja10uY29uY2F0KGlbcl0pOmlbcl09dC5tb2RlbC5jYWxsYmFja30oZS5vcHRpb25zLHQpO3ZhciBkPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10Lm9wdGlvbnMucHJvcHM7aWYoIU0ocikpe3ZhciBpPXt9LG89ZS5hdHRycyxhPWUucHJvcHM7aWYoRChvKXx8RChhKSlmb3IodmFyIHMgaW4gcil7dmFyIGM9XyhzKTtpdChpLGEscyxjLCEwKXx8aXQoaSxvLHMsYywhMSl9cmV0dXJuIGl9fSh0LGUpO2lmKFMoZS5vcHRpb25zLmZ1bmN0aW9uYWwpKXJldHVybiBmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBvPWUub3B0aW9ucyxhPXt9LHM9by5wcm9wcztpZihEKHMpKWZvcih2YXIgYyBpbiBzKWFbY109SWUoYyxzLHR8fHkpO2Vsc2UgRChuLmF0dHJzKSYmWHQoYSxuLmF0dHJzKSxEKG4ucHJvcHMpJiZYdChhLG4ucHJvcHMpO3ZhciBsPW5ldyBHdChuLGEsaSxyLGUpLHU9by5yZW5kZXIuY2FsbChudWxsLGwuX2MsbCk7aWYodSBpbnN0YW5jZW9mIGxlKXJldHVybiBadCh1LG4sbC5wYXJlbnQsbyk7aWYoQXJyYXkuaXNBcnJheSh1KSl7Zm9yKHZhciBmPW90KHUpfHxbXSxwPW5ldyBBcnJheShmLmxlbmd0aCksZD0wO2Q8Zi5sZW5ndGg7ZCsrKXBbZF09WnQoZltkXSxuLGwucGFyZW50LG8pO3JldHVybiBwfX0oZSxkLHQsbixyKTt2YXIgdj10Lm9uO2lmKHQub249dC5uYXRpdmVPbixTKGUub3B0aW9ucy5hYnN0cmFjdCkpe3ZhciBoPXQuc2xvdDt0PXt9LGgmJih0LnNsb3Q9aCl9IWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1lLmhvb2t8fChlLmhvb2s9e30pLG49MDtuPFF0Lmxlbmd0aDtuKyspe3ZhciByPVF0W25dO3Rbcl09WXRbcl19fSh0KTt2YXIgbT1lLm9wdGlvbnMubmFtZXx8aTtyZXR1cm4gbmV3IGxlKCJ2dWUtY29tcG9uZW50LSIrZS5jaWQrKG0/Ii0iK206IiIpLHQsdm9pZCAwLHZvaWQgMCx2b2lkIDAsbix7Q3RvcjplLHByb3BzRGF0YTpkLGxpc3RlbmVyczp2LHRhZzppLGNoaWxkcmVuOnJ9LGEpfX19dmFyIHRuPTEsbm49MjtmdW5jdGlvbiBybihlLHQsbixyLGksbyl7cmV0dXJuKEFycmF5LmlzQXJyYXkobil8fFQobikpJiYoaT1yLHI9bixuPXZvaWQgMCksUyhvKSYmKGk9bm4pLGZ1bmN0aW9uKGUsdCxuLHIsaSl7aWYoRChuKSYmRChuLl9fb2JfXykpcmV0dXJuIGZlKCk7RChuKSYmRChuLmlzKSYmKHQ9bi5pcyk7aWYoIXQpcmV0dXJuIGZlKCk7QXJyYXkuaXNBcnJheShyKSYmImZ1bmN0aW9uIj09dHlwZW9mIHJbMF0mJigobj1ufHx7fSkuc2NvcGVkU2xvdHM9e2RlZmF1bHQ6clswXX0sci5sZW5ndGg9MCk7aT09PW5uP3I9b3Qocik6aT09PXRuJiYocj1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKylpZihBcnJheS5pc0FycmF5KGVbdF0pKXJldHVybiBBcnJheS5wcm90b3R5cGUuY29uY2F0LmFwcGx5KFtdLGUpO3JldHVybiBlfShyKSk7dmFyIG8sYTtpZigic3RyaW5nIj09dHlwZW9mIHQpe3ZhciBzO2E9ZS4kdm5vZGUmJmUuJHZub2RlLm5zfHxqLmdldFRhZ05hbWVzcGFjZSh0KSxvPWouaXNSZXNlcnZlZFRhZyh0KT9uZXcgbGUoai5wYXJzZVBsYXRmb3JtVGFnTmFtZSh0KSxuLHIsdm9pZCAwLHZvaWQgMCxlKTpEKHM9TGUoZS4kb3B0aW9ucywiY29tcG9uZW50cyIsdCkpP2VuKHMsbixlLHIsdCk6bmV3IGxlKHQsbixyLHZvaWQgMCx2b2lkIDAsZSl9ZWxzZSBvPWVuKHQsbixlLHIpO3JldHVybiBBcnJheS5pc0FycmF5KG8pP286RChvKT8oRChhKSYmZnVuY3Rpb24gZSh0LG4scil7dC5ucz1uOyJmb3JlaWduT2JqZWN0Ij09PXQudGFnJiYobj12b2lkIDAscj0hMCk7aWYoRCh0LmNoaWxkcmVuKSlmb3IodmFyIGk9MCxvPXQuY2hpbGRyZW4ubGVuZ3RoO2k8bztpKyspe3ZhciBhPXQuY2hpbGRyZW5baV07RChhLnRhZykmJihNKGEubnMpfHxTKHIpJiYic3ZnIiE9PWEudGFnKSYmZShhLG4scil9fShvLGEpLEQobikmJmZ1bmN0aW9uKGUpe1AoZS5zdHlsZSkmJlllKGUuc3R5bGUpO1AoZS5jbGFzcykmJlllKGUuY2xhc3MpfShuKSxvKTpmZSgpfShlLHQsbixyLGkpfXZhciBvbixhbixzbixjbixsbix1bixmbixwbj0wO2Z1bmN0aW9uIGRuKGUpe3ZhciB0PWUub3B0aW9ucztpZihlLnN1cGVyKXt2YXIgbj1kbihlLnN1cGVyKTtpZihuIT09ZS5zdXBlck9wdGlvbnMpe2Uuc3VwZXJPcHRpb25zPW47dmFyIHI9ZnVuY3Rpb24oZSl7dmFyIHQsbj1lLm9wdGlvbnMscj1lLmV4dGVuZE9wdGlvbnMsaT1lLnNlYWxlZE9wdGlvbnM7Zm9yKHZhciBvIGluIG4pbltvXSE9PWlbb10mJih0fHwodD17fSksdFtvXT12bihuW29dLHJbb10saVtvXSkpO3JldHVybiB0fShlKTtyJiZtKGUuZXh0ZW5kT3B0aW9ucyxyKSwodD1lLm9wdGlvbnM9TmUobixlLmV4dGVuZE9wdGlvbnMpKS5uYW1lJiYodC5jb21wb25lbnRzW3QubmFtZV09ZSl9fXJldHVybiB0fWZ1bmN0aW9uIHZuKGUsdCxuKXtpZihBcnJheS5pc0FycmF5KGUpKXt2YXIgcj1bXTtuPUFycmF5LmlzQXJyYXkobik/bjpbbl0sdD1BcnJheS5pc0FycmF5KHQpP3Q6W3RdO2Zvcih2YXIgaT0wO2k8ZS5sZW5ndGg7aSsrKSgwPD10LmluZGV4T2YoZVtpXSl8fG4uaW5kZXhPZihlW2ldKTwwKSYmci5wdXNoKGVbaV0pO3JldHVybiByfXJldHVybiBlfWZ1bmN0aW9uIGhuKGUpe3RoaXMuX2luaXQoZSl9ZnVuY3Rpb24gbW4oZSl7ZS5jaWQ9MDt2YXIgYT0xO2UuZXh0ZW5kPWZ1bmN0aW9uKGUpe2U9ZXx8e307dmFyIHQ9dGhpcyxuPXQuY2lkLHI9ZS5fQ3Rvcnx8KGUuX0N0b3I9e30pO2lmKHJbbl0pcmV0dXJuIHJbbl07dmFyIGk9ZS5uYW1lfHx0Lm9wdGlvbnMubmFtZSxvPWZ1bmN0aW9uKGUpe3RoaXMuX2luaXQoZSl9O3JldHVybigoby5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0LnByb3RvdHlwZSkpLmNvbnN0cnVjdG9yPW8pLmNpZD1hKyssby5vcHRpb25zPU5lKHQub3B0aW9ucyxlKSxvLnN1cGVyPXQsby5vcHRpb25zLnByb3BzJiZmdW5jdGlvbihlKXt2YXIgdD1lLm9wdGlvbnMucHJvcHM7Zm9yKHZhciBuIGluIHQpRXQoZS5wcm90b3R5cGUsIl9wcm9wcyIsbil9KG8pLG8ub3B0aW9ucy5jb21wdXRlZCYmZnVuY3Rpb24oZSl7dmFyIHQ9ZS5vcHRpb25zLmNvbXB1dGVkO2Zvcih2YXIgbiBpbiB0KUx0KGUucHJvdG90eXBlLG4sdFtuXSl9KG8pLG8uZXh0ZW5kPXQuZXh0ZW5kLG8ubWl4aW49dC5taXhpbixvLnVzZT10LnVzZSxrLmZvckVhY2goZnVuY3Rpb24oZSl7b1tlXT10W2VdfSksaSYmKG8ub3B0aW9ucy5jb21wb25lbnRzW2ldPW8pLG8uc3VwZXJPcHRpb25zPXQub3B0aW9ucyxvLmV4dGVuZE9wdGlvbnM9ZSxvLnNlYWxlZE9wdGlvbnM9bSh7fSxvLm9wdGlvbnMpLHJbbl09b319ZnVuY3Rpb24geW4oZSl7cmV0dXJuIGUmJihlLkN0b3Iub3B0aW9ucy5uYW1lfHxlLnRhZyl9ZnVuY3Rpb24gZ24oZSx0KXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT8tMTxlLmluZGV4T2YodCk6InN0cmluZyI9PXR5cGVvZiBlPy0xPGUuc3BsaXQoIiwiKS5pbmRleE9mKHQpOihuPWUsIltvYmplY3QgUmVnRXhwXSI9PT1yLmNhbGwobikmJmUudGVzdCh0KSk7dmFyIG59ZnVuY3Rpb24gX24oZSx0KXt2YXIgbj1lLmNhY2hlLHI9ZS5rZXlzLGk9ZS5fdm5vZGU7Zm9yKHZhciBvIGluIG4pe3ZhciBhPW5bb107aWYoYSl7dmFyIHM9eW4oYS5jb21wb25lbnRPcHRpb25zKTtzJiYhdChzKSYmYm4obixvLHIsaSl9fX1mdW5jdGlvbiBibihlLHQsbixyKXt2YXIgaT1lW3RdOyFpfHxyJiZpLnRhZz09PXIudGFnfHxpLmNvbXBvbmVudEluc3RhbmNlLiRkZXN0cm95KCksZVt0XT1udWxsLGYobix0KX1obi5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24oZSl7dmFyIHQsbixyLGksbz10aGlzO28uX3VpZD1wbisrLG8uX2lzVnVlPSEwLGUmJmUuX2lzQ29tcG9uZW50P2Z1bmN0aW9uKGUsdCl7dmFyIG49ZS4kb3B0aW9ucz1PYmplY3QuY3JlYXRlKGUuY29uc3RydWN0b3Iub3B0aW9ucykscj10Ll9wYXJlbnRWbm9kZTtuLnBhcmVudD10LnBhcmVudCxuLl9wYXJlbnRWbm9kZT1yLG4uX3BhcmVudEVsbT10Ll9wYXJlbnRFbG0sbi5fcmVmRWxtPXQuX3JlZkVsbTt2YXIgaT1yLmNvbXBvbmVudE9wdGlvbnM7bi5wcm9wc0RhdGE9aS5wcm9wc0RhdGEsbi5fcGFyZW50TGlzdGVuZXJzPWkubGlzdGVuZXJzLG4uX3JlbmRlckNoaWxkcmVuPWkuY2hpbGRyZW4sbi5fY29tcG9uZW50VGFnPWkudGFnLHQucmVuZGVyJiYobi5yZW5kZXI9dC5yZW5kZXIsbi5zdGF0aWNSZW5kZXJGbnM9dC5zdGF0aWNSZW5kZXJGbnMpfShvLGUpOm8uJG9wdGlvbnM9TmUoZG4oby5jb25zdHJ1Y3RvciksZXx8e30sbyksZnVuY3Rpb24oZSl7dmFyIHQ9ZS4kb3B0aW9ucyxuPXQucGFyZW50O2lmKG4mJiF0LmFic3RyYWN0KXtmb3IoO24uJG9wdGlvbnMuYWJzdHJhY3QmJm4uJHBhcmVudDspbj1uLiRwYXJlbnQ7bi4kY2hpbGRyZW4ucHVzaChlKX1lLiRwYXJlbnQ9bixlLiRyb290PW4/bi4kcm9vdDplLGUuJGNoaWxkcmVuPVtdLGUuJHJlZnM9e30sZS5fd2F0Y2hlcj1udWxsLGUuX2luYWN0aXZlPW51bGwsZS5fZGlyZWN0SW5hY3RpdmU9ITEsZS5faXNNb3VudGVkPSExLGUuX2lzRGVzdHJveWVkPSExLGUuX2lzQmVpbmdEZXN0cm95ZWQ9ITF9KChvLl9yZW5kZXJQcm94eT1vKS5fc2VsZj1vKSxmdW5jdGlvbihlKXtlLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKSxlLl9oYXNIb29rRXZlbnQ9ITE7dmFyIHQ9ZS4kb3B0aW9ucy5fcGFyZW50TGlzdGVuZXJzO3QmJnB0KGUsdCl9KG8pLGZ1bmN0aW9uKGkpe2kuX3Zub2RlPW51bGwsaS5fc3RhdGljVHJlZXM9bnVsbDt2YXIgZT1pLiRvcHRpb25zLHQ9aS4kdm5vZGU9ZS5fcGFyZW50Vm5vZGUsbj10JiZ0LmNvbnRleHQ7aS4kc2xvdHM9ZHQoZS5fcmVuZGVyQ2hpbGRyZW4sbiksaS4kc2NvcGVkU2xvdHM9eSxpLl9jPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBybihpLGUsdCxuLHIsITEpfSxpLiRjcmVhdGVFbGVtZW50PWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBybihpLGUsdCxuLHIsITApfTt2YXIgcj10JiZ0LmRhdGE7Q2UoaSwiJGF0dHJzIixyJiZyLmF0dHJzfHx5LG51bGwsITApLENlKGksIiRsaXN0ZW5lcnMiLGUuX3BhcmVudExpc3RlbmVyc3x8eSxudWxsLCEwKX0obyksX3QobywiYmVmb3JlQ3JlYXRlIiksKG49RHQoKHQ9bykuJG9wdGlvbnMuaW5qZWN0LHQpKSYmKGdlKCExKSxPYmplY3Qua2V5cyhuKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe0NlKHQsZSxuW2VdKX0pLGdlKCEwKSksanQobyksKGk9KHI9bykuJG9wdGlvbnMucHJvdmlkZSkmJihyLl9wcm92aWRlZD0iZnVuY3Rpb24iPT10eXBlb2YgaT9pLmNhbGwocik6aSksX3QobywiY3JlYXRlZCIpLG8uJG9wdGlvbnMuZWwmJm8uJG1vdW50KG8uJG9wdGlvbnMuZWwpfSxvbj1obixhbj17Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RhdGF9fSxzbj17Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Byb3BzfX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KG9uLnByb3RvdHlwZSwiJGRhdGEiLGFuKSxPYmplY3QuZGVmaW5lUHJvcGVydHkob24ucHJvdG90eXBlLCIkcHJvcHMiLHNuKSxvbi5wcm90b3R5cGUuJHNldD14ZSxvbi5wcm90b3R5cGUuJGRlbGV0ZT1rZSxvbi5wcm90b3R5cGUuJHdhdGNoPWZ1bmN0aW9uKGUsdCxuKXtpZihsKHQpKXJldHVybiBNdCh0aGlzLGUsdCxuKTsobj1ufHx7fSkudXNlcj0hMDt2YXIgcj1uZXcgU3QodGhpcyxlLHQsbik7cmV0dXJuIG4uaW1tZWRpYXRlJiZ0LmNhbGwodGhpcyxyLnZhbHVlKSxmdW5jdGlvbigpe3IudGVhcmRvd24oKX19LGxuPS9eaG9vazovLChjbj1obikucHJvdG90eXBlLiRvbj1mdW5jdGlvbihlLHQpe2lmKEFycmF5LmlzQXJyYXkoZSkpZm9yKHZhciBuPTAscj1lLmxlbmd0aDtuPHI7bisrKXRoaXMuJG9uKGVbbl0sdCk7ZWxzZSh0aGlzLl9ldmVudHNbZV18fCh0aGlzLl9ldmVudHNbZV09W10pKS5wdXNoKHQpLGxuLnRlc3QoZSkmJih0aGlzLl9oYXNIb29rRXZlbnQ9ITApO3JldHVybiB0aGlzfSxjbi5wcm90b3R5cGUuJG9uY2U9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzO2Z1bmN0aW9uIHIoKXtuLiRvZmYoZSxyKSx0LmFwcGx5KG4sYXJndW1lbnRzKX1yZXR1cm4gci5mbj10LG4uJG9uKGUsciksbn0sY24ucHJvdG90eXBlLiRvZmY9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzO2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiBuLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKSxuO2lmKEFycmF5LmlzQXJyYXkoZSkpe2Zvcih2YXIgcj0wLGk9ZS5sZW5ndGg7cjxpO3IrKyl0aGlzLiRvZmYoZVtyXSx0KTtyZXR1cm4gbn12YXIgbz1uLl9ldmVudHNbZV07aWYoIW8pcmV0dXJuIG47aWYoIXQpcmV0dXJuIG4uX2V2ZW50c1tlXT1udWxsLG47aWYodClmb3IodmFyIGEscz1vLmxlbmd0aDtzLS07KWlmKChhPW9bc10pPT09dHx8YS5mbj09PXQpe28uc3BsaWNlKHMsMSk7YnJlYWt9cmV0dXJuIG59LGNuLnByb3RvdHlwZS4kZW1pdD1mdW5jdGlvbih0KXt2YXIgbj10aGlzLGU9bi5fZXZlbnRzW3RdO2lmKGUpe2U9MTxlLmxlbmd0aD9oKGUpOmU7Zm9yKHZhciByPWgoYXJndW1lbnRzLDEpLGk9MCxvPWUubGVuZ3RoO2k8bztpKyspdHJ5e2VbaV0uYXBwbHkobixyKX1jYXRjaChlKXtGZShlLG4sJ2V2ZW50IGhhbmRsZXIgZm9yICInK3QrJyInKX19cmV0dXJuIG59LCh1bj1obikucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzO24uX2lzTW91bnRlZCYmX3QobiwiYmVmb3JlVXBkYXRlIik7dmFyIHI9bi4kZWwsaT1uLl92bm9kZSxvPW10OyhtdD1uKS5fdm5vZGU9ZSxpP24uJGVsPW4uX19wYXRjaF9fKGksZSk6KG4uJGVsPW4uX19wYXRjaF9fKG4uJGVsLGUsdCwhMSxuLiRvcHRpb25zLl9wYXJlbnRFbG0sbi4kb3B0aW9ucy5fcmVmRWxtKSxuLiRvcHRpb25zLl9wYXJlbnRFbG09bi4kb3B0aW9ucy5fcmVmRWxtPW51bGwpLG10PW8sciYmKHIuX192dWVfXz1udWxsKSxuLiRlbCYmKG4uJGVsLl9fdnVlX189biksbi4kdm5vZGUmJm4uJHBhcmVudCYmbi4kdm5vZGU9PT1uLiRwYXJlbnQuX3Zub2RlJiYobi4kcGFyZW50LiRlbD1uLiRlbCl9LHVuLnByb3RvdHlwZS4kZm9yY2VVcGRhdGU9ZnVuY3Rpb24oKXt0aGlzLl93YXRjaGVyJiZ0aGlzLl93YXRjaGVyLnVwZGF0ZSgpfSx1bi5wcm90b3R5cGUuJGRlc3Ryb3k9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO2lmKCFlLl9pc0JlaW5nRGVzdHJveWVkKXtfdChlLCJiZWZvcmVEZXN0cm95IiksZS5faXNCZWluZ0Rlc3Ryb3llZD0hMDt2YXIgdD1lLiRwYXJlbnQ7IXR8fHQuX2lzQmVpbmdEZXN0cm95ZWR8fGUuJG9wdGlvbnMuYWJzdHJhY3R8fGYodC4kY2hpbGRyZW4sZSksZS5fd2F0Y2hlciYmZS5fd2F0Y2hlci50ZWFyZG93bigpO2Zvcih2YXIgbj1lLl93YXRjaGVycy5sZW5ndGg7bi0tOyllLl93YXRjaGVyc1tuXS50ZWFyZG93bigpO2UuX2RhdGEuX19vYl9fJiZlLl9kYXRhLl9fb2JfXy52bUNvdW50LS0sZS5faXNEZXN0cm95ZWQ9ITAsZS5fX3BhdGNoX18oZS5fdm5vZGUsbnVsbCksX3QoZSwiZGVzdHJveWVkIiksZS4kb2ZmKCksZS4kZWwmJihlLiRlbC5fX3Z1ZV9fPW51bGwpLGUuJHZub2RlJiYoZS4kdm5vZGUucGFyZW50PW51bGwpfX0sV3QoKGZuPWhuKS5wcm90b3R5cGUpLGZuLnByb3RvdHlwZS4kbmV4dFRpY2s9ZnVuY3Rpb24oZSl7cmV0dXJuIFplKGUsdGhpcyl9LGZuLnByb3RvdHlwZS5fcmVuZGVyPWZ1bmN0aW9uKCl7dmFyIHQsbj10aGlzLGU9bi4kb3B0aW9ucyxyPWUucmVuZGVyLGk9ZS5fcGFyZW50Vm5vZGU7aSYmKG4uJHNjb3BlZFNsb3RzPWkuZGF0YS5zY29wZWRTbG90c3x8eSksbi4kdm5vZGU9aTt0cnl7dD1yLmNhbGwobi5fcmVuZGVyUHJveHksbi4kY3JlYXRlRWxlbWVudCl9Y2F0Y2goZSl7RmUoZSxuLCJyZW5kZXIiKSx0PW4uX3Zub2RlfXJldHVybiB0IGluc3RhbmNlb2YgbGV8fCh0PWZlKCkpLHQucGFyZW50PWksdH07dmFyICRuLHduLENuLHhuPVtTdHJpbmcsUmVnRXhwLEFycmF5XSxrbj17S2VlcEFsaXZlOntuYW1lOiJrZWVwLWFsaXZlIixhYnN0cmFjdDohMCxwcm9wczp7aW5jbHVkZTp4bixleGNsdWRlOnhuLG1heDpbU3RyaW5nLE51bWJlcl19LGNyZWF0ZWQ6ZnVuY3Rpb24oKXt0aGlzLmNhY2hlPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5rZXlzPVtdfSxkZXN0cm95ZWQ6ZnVuY3Rpb24oKXtmb3IodmFyIGUgaW4gdGhpcy5jYWNoZSlibih0aGlzLmNhY2hlLGUsdGhpcy5rZXlzKX0sbW91bnRlZDpmdW5jdGlvbigpe3ZhciBlPXRoaXM7dGhpcy4kd2F0Y2goImluY2x1ZGUiLGZ1bmN0aW9uKHQpe19uKGUsZnVuY3Rpb24oZSl7cmV0dXJuIGduKHQsZSl9KX0pLHRoaXMuJHdhdGNoKCJleGNsdWRlIixmdW5jdGlvbih0KXtfbihlLGZ1bmN0aW9uKGUpe3JldHVybiFnbih0LGUpfSl9KX0scmVuZGVyOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy4kc2xvdHMuZGVmYXVsdCx0PWx0KGUpLG49dCYmdC5jb21wb25lbnRPcHRpb25zO2lmKG4pe3ZhciByPXluKG4pLGk9dGhpcy5pbmNsdWRlLG89dGhpcy5leGNsdWRlO2lmKGkmJighcnx8IWduKGkscikpfHxvJiZyJiZnbihvLHIpKXJldHVybiB0O3ZhciBhPXRoaXMuY2FjaGUscz10aGlzLmtleXMsYz1udWxsPT10LmtleT9uLkN0b3IuY2lkKyhuLnRhZz8iOjoiK24udGFnOiIiKTp0LmtleTthW2NdPyh0LmNvbXBvbmVudEluc3RhbmNlPWFbY10uY29tcG9uZW50SW5zdGFuY2UsZihzLGMpLHMucHVzaChjKSk6KGFbY109dCxzLnB1c2goYyksdGhpcy5tYXgmJnMubGVuZ3RoPnBhcnNlSW50KHRoaXMubWF4KSYmYm4oYSxzWzBdLHMsdGhpcy5fdm5vZGUpKSx0LmRhdGEua2VlcEFsaXZlPSEwfXJldHVybiB0fHxlJiZlWzBdfX19OyRuPWhuLENuPXtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gan19LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSgkbiwiY29uZmlnIixDbiksJG4udXRpbD17d2FybjpyZSxleHRlbmQ6bSxtZXJnZU9wdGlvbnM6TmUsZGVmaW5lUmVhY3RpdmU6Q2V9LCRuLnNldD14ZSwkbi5kZWxldGU9a2UsJG4ubmV4dFRpY2s9WmUsJG4ub3B0aW9ucz1PYmplY3QuY3JlYXRlKG51bGwpLGsuZm9yRWFjaChmdW5jdGlvbihlKXskbi5vcHRpb25zW2UrInMiXT1PYmplY3QuY3JlYXRlKG51bGwpfSksbSgoJG4ub3B0aW9ucy5fYmFzZT0kbikub3B0aW9ucy5jb21wb25lbnRzLGtuKSwkbi51c2U9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5faW5zdGFsbGVkUGx1Z2luc3x8KHRoaXMuX2luc3RhbGxlZFBsdWdpbnM9W10pO2lmKC0xPHQuaW5kZXhPZihlKSlyZXR1cm4gdGhpczt2YXIgbj1oKGFyZ3VtZW50cywxKTtyZXR1cm4gbi51bnNoaWZ0KHRoaXMpLCJmdW5jdGlvbiI9PXR5cGVvZiBlLmluc3RhbGw/ZS5pbnN0YWxsLmFwcGx5KGUsbik6ImZ1bmN0aW9uIj09dHlwZW9mIGUmJmUuYXBwbHkobnVsbCxuKSx0LnB1c2goZSksdGhpc30sJG4ubWl4aW49ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMub3B0aW9ucz1OZSh0aGlzLm9wdGlvbnMsZSksdGhpc30sbW4oJG4pLHduPSRuLGsuZm9yRWFjaChmdW5jdGlvbihuKXt3bltuXT1mdW5jdGlvbihlLHQpe3JldHVybiB0PygiY29tcG9uZW50Ij09PW4mJmwodCkmJih0Lm5hbWU9dC5uYW1lfHxlLHQ9dGhpcy5vcHRpb25zLl9iYXNlLmV4dGVuZCh0KSksImRpcmVjdGl2ZSI9PT1uJiYiZnVuY3Rpb24iPT10eXBlb2YgdCYmKHQ9e2JpbmQ6dCx1cGRhdGU6dH0pLHRoaXMub3B0aW9uc1tuKyJzIl1bZV09dCk6dGhpcy5vcHRpb25zW24rInMiXVtlXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoaG4ucHJvdG90eXBlLCIkaXNTZXJ2ZXIiLHtnZXQ6WX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShobi5wcm90b3R5cGUsIiRzc3JDb250ZXh0Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJHZub2RlJiZ0aGlzLiR2bm9kZS5zc3JDb250ZXh0fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShobiwiRnVuY3Rpb25hbFJlbmRlckNvbnRleHQiLHt2YWx1ZTpHdH0pLGhuLnZlcnNpb249IjIuNS4xNyI7dmFyIEFuPXMoInN0eWxlLGNsYXNzIiksT249cygiaW5wdXQsdGV4dGFyZWEsb3B0aW9uLHNlbGVjdCxwcm9ncmVzcyIpLFNuPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4idmFsdWUiPT09biYmT24oZSkmJiJidXR0b24iIT09dHx8InNlbGVjdGVkIj09PW4mJiJvcHRpb24iPT09ZXx8ImNoZWNrZWQiPT09biYmImlucHV0Ij09PWV8fCJtdXRlZCI9PT1uJiYidmlkZW8iPT09ZX0sVG49cygiY29udGVudGVkaXRhYmxlLGRyYWdnYWJsZSxzcGVsbGNoZWNrIiksRW49cygiYWxsb3dmdWxsc2NyZWVuLGFzeW5jLGF1dG9mb2N1cyxhdXRvcGxheSxjaGVja2VkLGNvbXBhY3QsY29udHJvbHMsZGVjbGFyZSxkZWZhdWx0LGRlZmF1bHRjaGVja2VkLGRlZmF1bHRtdXRlZCxkZWZhdWx0c2VsZWN0ZWQsZGVmZXIsZGlzYWJsZWQsZW5hYmxlZCxmb3Jtbm92YWxpZGF0ZSxoaWRkZW4saW5kZXRlcm1pbmF0ZSxpbmVydCxpc21hcCxpdGVtc2NvcGUsbG9vcCxtdWx0aXBsZSxtdXRlZCxub2hyZWYsbm9yZXNpemUsbm9zaGFkZSxub3ZhbGlkYXRlLG5vd3JhcCxvcGVuLHBhdXNlb25leGl0LHJlYWRvbmx5LHJlcXVpcmVkLHJldmVyc2VkLHNjb3BlZCxzZWFtbGVzcyxzZWxlY3RlZCxzb3J0YWJsZSx0cmFuc2xhdGUsdHJ1ZXNwZWVkLHR5cGVtdXN0bWF0Y2gsdmlzaWJsZSIpLGpuPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIixObj1mdW5jdGlvbihlKXtyZXR1cm4iOiI9PT1lLmNoYXJBdCg1KSYmInhsaW5rIj09PWUuc2xpY2UoMCw1KX0sTG49ZnVuY3Rpb24oZSl7cmV0dXJuIE5uKGUpP2Uuc2xpY2UoNixlLmxlbmd0aCk6IiJ9LEluPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lfHwhMT09PWV9O2Z1bmN0aW9uIE1uKGUpe2Zvcih2YXIgdD1lLmRhdGEsbj1lLHI9ZTtEKHIuY29tcG9uZW50SW5zdGFuY2UpOykocj1yLmNvbXBvbmVudEluc3RhbmNlLl92bm9kZSkmJnIuZGF0YSYmKHQ9RG4oci5kYXRhLHQpKTtmb3IoO0Qobj1uLnBhcmVudCk7KW4mJm4uZGF0YSYmKHQ9RG4odCxuLmRhdGEpKTtyZXR1cm4gZnVuY3Rpb24oZSx0KXtpZihEKGUpfHxEKHQpKXJldHVybiBQbihlLEZuKHQpKTtyZXR1cm4iIn0odC5zdGF0aWNDbGFzcyx0LmNsYXNzKX1mdW5jdGlvbiBEbihlLHQpe3JldHVybntzdGF0aWNDbGFzczpQbihlLnN0YXRpY0NsYXNzLHQuc3RhdGljQ2xhc3MpLGNsYXNzOkQoZS5jbGFzcyk/W2UuY2xhc3MsdC5jbGFzc106dC5jbGFzc319ZnVuY3Rpb24gUG4oZSx0KXtyZXR1cm4gZT90P2UrIiAiK3Q6ZTp0fHwiIn1mdW5jdGlvbiBGbihlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9mdW5jdGlvbihlKXtmb3IodmFyIHQsbj0iIixyPTAsaT1lLmxlbmd0aDtyPGk7cisrKUQodD1GbihlW3JdKSkmJiIiIT09dCYmKG4mJihuKz0iICIpLG4rPXQpO3JldHVybiBufShlKTpQKGUpP2Z1bmN0aW9uKGUpe3ZhciB0PSIiO2Zvcih2YXIgbiBpbiBlKWVbbl0mJih0JiYodCs9IiAiKSx0Kz1uKTtyZXR1cm4gdH0oZSk6InN0cmluZyI9PXR5cGVvZiBlP2U6IiJ9dmFyIFJuPXtzdmc6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixtYXRoOiJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MIn0sSG49cygiaHRtbCxib2R5LGJhc2UsaGVhZCxsaW5rLG1ldGEsc3R5bGUsdGl0bGUsYWRkcmVzcyxhcnRpY2xlLGFzaWRlLGZvb3RlcixoZWFkZXIsaDEsaDIsaDMsaDQsaDUsaDYsaGdyb3VwLG5hdixzZWN0aW9uLGRpdixkZCxkbCxkdCxmaWdjYXB0aW9uLGZpZ3VyZSxwaWN0dXJlLGhyLGltZyxsaSxtYWluLG9sLHAscHJlLHVsLGEsYixhYmJyLGJkaSxiZG8sYnIsY2l0ZSxjb2RlLGRhdGEsZGZuLGVtLGksa2JkLG1hcmsscSxycCxydCxydGMscnVieSxzLHNhbXAsc21hbGwsc3BhbixzdHJvbmcsc3ViLHN1cCx0aW1lLHUsdmFyLHdicixhcmVhLGF1ZGlvLG1hcCx0cmFjayx2aWRlbyxlbWJlZCxvYmplY3QscGFyYW0sc291cmNlLGNhbnZhcyxzY3JpcHQsbm9zY3JpcHQsZGVsLGlucyxjYXB0aW9uLGNvbCxjb2xncm91cCx0YWJsZSx0aGVhZCx0Ym9keSx0ZCx0aCx0cixidXR0b24sZGF0YWxpc3QsZmllbGRzZXQsZm9ybSxpbnB1dCxsYWJlbCxsZWdlbmQsbWV0ZXIsb3B0Z3JvdXAsb3B0aW9uLG91dHB1dCxwcm9ncmVzcyxzZWxlY3QsdGV4dGFyZWEsZGV0YWlscyxkaWFsb2csbWVudSxtZW51aXRlbSxzdW1tYXJ5LGNvbnRlbnQsZWxlbWVudCxzaGFkb3csdGVtcGxhdGUsYmxvY2txdW90ZSxpZnJhbWUsdGZvb3QiKSxCbj1zKCJzdmcsYW5pbWF0ZSxjaXJjbGUsY2xpcHBhdGgsY3Vyc29yLGRlZnMsZGVzYyxlbGxpcHNlLGZpbHRlcixmb250LWZhY2UsZm9yZWlnbk9iamVjdCxnLGdseXBoLGltYWdlLGxpbmUsbWFya2VyLG1hc2ssbWlzc2luZy1nbHlwaCxwYXRoLHBhdHRlcm4scG9seWdvbixwb2x5bGluZSxyZWN0LHN3aXRjaCxzeW1ib2wsdGV4dCx0ZXh0cGF0aCx0c3Bhbix1c2UsdmlldyIsITApLFVuPWZ1bmN0aW9uKGUpe3JldHVybiBIbihlKXx8Qm4oZSl9O2Z1bmN0aW9uIFZuKGUpe3JldHVybiBCbihlKT8ic3ZnIjoibWF0aCI9PT1lPyJtYXRoIjp2b2lkIDB9dmFyIHpuPU9iamVjdC5jcmVhdGUobnVsbCk7dmFyIEtuPXMoInRleHQsbnVtYmVyLHBhc3N3b3JkLHNlYXJjaCxlbWFpbCx0ZWwsdXJsIik7ZnVuY3Rpb24gSm4oZSl7aWYoInN0cmluZyI9PXR5cGVvZiBlKXt2YXIgdD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGUpO3JldHVybiB0fHxkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKX1yZXR1cm4gZX12YXIgcW49T2JqZWN0LmZyZWV6ZSh7Y3JlYXRlRWxlbWVudDpmdW5jdGlvbihlLHQpe3ZhciBuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoZSk7cmV0dXJuInNlbGVjdCIhPT1lfHx0LmRhdGEmJnQuZGF0YS5hdHRycyYmdm9pZCAwIT09dC5kYXRhLmF0dHJzLm11bHRpcGxlJiZuLnNldEF0dHJpYnV0ZSgibXVsdGlwbGUiLCJtdWx0aXBsZSIpLG59LGNyZWF0ZUVsZW1lbnROUzpmdW5jdGlvbihlLHQpe3JldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoUm5bZV0sdCl9LGNyZWF0ZVRleHROb2RlOmZ1bmN0aW9uKGUpe3JldHVybiBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShlKX0sY3JlYXRlQ29tbWVudDpmdW5jdGlvbihlKXtyZXR1cm4gZG9jdW1lbnQuY3JlYXRlQ29tbWVudChlKX0saW5zZXJ0QmVmb3JlOmZ1bmN0aW9uKGUsdCxuKXtlLmluc2VydEJlZm9yZSh0LG4pfSxyZW1vdmVDaGlsZDpmdW5jdGlvbihlLHQpe2UucmVtb3ZlQ2hpbGQodCl9LGFwcGVuZENoaWxkOmZ1bmN0aW9uKGUsdCl7ZS5hcHBlbmRDaGlsZCh0KX0scGFyZW50Tm9kZTpmdW5jdGlvbihlKXtyZXR1cm4gZS5wYXJlbnROb2RlfSxuZXh0U2libGluZzpmdW5jdGlvbihlKXtyZXR1cm4gZS5uZXh0U2libGluZ30sdGFnTmFtZTpmdW5jdGlvbihlKXtyZXR1cm4gZS50YWdOYW1lfSxzZXRUZXh0Q29udGVudDpmdW5jdGlvbihlLHQpe2UudGV4dENvbnRlbnQ9dH0sc2V0U3R5bGVTY29wZTpmdW5jdGlvbihlLHQpe2Uuc2V0QXR0cmlidXRlKHQsIiIpfX0pLFduPXtjcmVhdGU6ZnVuY3Rpb24oZSx0KXtHbih0KX0sdXBkYXRlOmZ1bmN0aW9uKGUsdCl7ZS5kYXRhLnJlZiE9PXQuZGF0YS5yZWYmJihHbihlLCEwKSxHbih0KSl9LGRlc3Ryb3k6ZnVuY3Rpb24oZSl7R24oZSwhMCl9fTtmdW5jdGlvbiBHbihlLHQpe3ZhciBuPWUuZGF0YS5yZWY7aWYoRChuKSl7dmFyIHI9ZS5jb250ZXh0LGk9ZS5jb21wb25lbnRJbnN0YW5jZXx8ZS5lbG0sbz1yLiRyZWZzO3Q/QXJyYXkuaXNBcnJheShvW25dKT9mKG9bbl0saSk6b1tuXT09PWkmJihvW25dPXZvaWQgMCk6ZS5kYXRhLnJlZkluRm9yP0FycmF5LmlzQXJyYXkob1tuXSk/b1tuXS5pbmRleE9mKGkpPDAmJm9bbl0ucHVzaChpKTpvW25dPVtpXTpvW25dPWl9fXZhciBabj1uZXcgbGUoIiIse30sW10pLFhuPVsiY3JlYXRlIiwiYWN0aXZhdGUiLCJ1cGRhdGUiLCJyZW1vdmUiLCJkZXN0cm95Il07ZnVuY3Rpb24gWW4oZSx0KXtyZXR1cm4gZS5rZXk9PT10LmtleSYmKGUudGFnPT09dC50YWcmJmUuaXNDb21tZW50PT09dC5pc0NvbW1lbnQmJkQoZS5kYXRhKT09PUQodC5kYXRhKSYmZnVuY3Rpb24oZSx0KXtpZigiaW5wdXQiIT09ZS50YWcpcmV0dXJuITA7dmFyIG4scj1EKG49ZS5kYXRhKSYmRChuPW4uYXR0cnMpJiZuLnR5cGUsaT1EKG49dC5kYXRhKSYmRChuPW4uYXR0cnMpJiZuLnR5cGU7cmV0dXJuIHI9PT1pfHxLbihyKSYmS24oaSl9KGUsdCl8fFMoZS5pc0FzeW5jUGxhY2Vob2xkZXIpJiZlLmFzeW5jRmFjdG9yeT09PXQuYXN5bmNGYWN0b3J5JiZNKHQuYXN5bmNGYWN0b3J5LmVycm9yKSl9ZnVuY3Rpb24gUW4oZSx0LG4pe3ZhciByLGksbz17fTtmb3Iocj10O3I8PW47KytyKUQoaT1lW3JdLmtleSkmJihvW2ldPXIpO3JldHVybiBvfXZhciBlcj17Y3JlYXRlOnRyLHVwZGF0ZTp0cixkZXN0cm95OmZ1bmN0aW9uKGUpe3RyKGUsWm4pfX07ZnVuY3Rpb24gdHIoZSx0KXsoZS5kYXRhLmRpcmVjdGl2ZXN8fHQuZGF0YS5kaXJlY3RpdmVzKSYmZnVuY3Rpb24odCxuKXt2YXIgZSxyLGksbz10PT09Wm4sYT1uPT09Wm4scz1ycih0LmRhdGEuZGlyZWN0aXZlcyx0LmNvbnRleHQpLGM9cnIobi5kYXRhLmRpcmVjdGl2ZXMsbi5jb250ZXh0KSxsPVtdLHU9W107Zm9yKGUgaW4gYylyPXNbZV0saT1jW2VdLHI/KGkub2xkVmFsdWU9ci52YWx1ZSxpcihpLCJ1cGRhdGUiLG4sdCksaS5kZWYmJmkuZGVmLmNvbXBvbmVudFVwZGF0ZWQmJnUucHVzaChpKSk6KGlyKGksImJpbmQiLG4sdCksaS5kZWYmJmkuZGVmLmluc2VydGVkJiZsLnB1c2goaSkpO2lmKGwubGVuZ3RoKXt2YXIgZj1mdW5jdGlvbigpe2Zvcih2YXIgZT0wO2U8bC5sZW5ndGg7ZSsrKWlyKGxbZV0sImluc2VydGVkIixuLHQpfTtvP3J0KG4sImluc2VydCIsZik6ZigpfXUubGVuZ3RoJiZydChuLCJwb3N0cGF0Y2giLGZ1bmN0aW9uKCl7Zm9yKHZhciBlPTA7ZTx1Lmxlbmd0aDtlKyspaXIodVtlXSwiY29tcG9uZW50VXBkYXRlZCIsbix0KX0pO2lmKCFvKWZvcihlIGluIHMpY1tlXXx8aXIoc1tlXSwidW5iaW5kIix0LHQsYSl9KGUsdCl9dmFyIG5yPU9iamVjdC5jcmVhdGUobnVsbCk7ZnVuY3Rpb24gcnIoZSx0KXt2YXIgbixyLGksbz1PYmplY3QuY3JlYXRlKG51bGwpO2lmKCFlKXJldHVybiBvO2ZvcihuPTA7bjxlLmxlbmd0aDtuKyspKHI9ZVtuXSkubW9kaWZpZXJzfHwoci5tb2RpZmllcnM9bnIpLChvWyhpPXIsaS5yYXdOYW1lfHxpLm5hbWUrIi4iK09iamVjdC5rZXlzKGkubW9kaWZpZXJzfHx7fSkuam9pbigiLiIpKV09cikuZGVmPUxlKHQuJG9wdGlvbnMsImRpcmVjdGl2ZXMiLHIubmFtZSk7cmV0dXJuIG99ZnVuY3Rpb24gaXIodCxuLHIsZSxpKXt2YXIgbz10LmRlZiYmdC5kZWZbbl07aWYobyl0cnl7byhyLmVsbSx0LHIsZSxpKX1jYXRjaChlKXtGZShlLHIuY29udGV4dCwiZGlyZWN0aXZlICIrdC5uYW1lKyIgIituKyIgaG9vayIpfX12YXIgb3I9W1duLGVyXTtmdW5jdGlvbiBhcihlLHQpe3ZhciBuPXQuY29tcG9uZW50T3B0aW9ucztpZighKEQobikmJiExPT09bi5DdG9yLm9wdGlvbnMuaW5oZXJpdEF0dHJzfHxNKGUuZGF0YS5hdHRycykmJk0odC5kYXRhLmF0dHJzKSkpe3ZhciByLGksbz10LmVsbSxhPWUuZGF0YS5hdHRyc3x8e30scz10LmRhdGEuYXR0cnN8fHt9O2ZvcihyIGluIEQocy5fX29iX18pJiYocz10LmRhdGEuYXR0cnM9bSh7fSxzKSkscylpPXNbcl0sYVtyXSE9PWkmJnNyKG8scixpKTtmb3IociBpbihLfHxxKSYmcy52YWx1ZSE9PWEudmFsdWUmJnNyKG8sInZhbHVlIixzLnZhbHVlKSxhKU0oc1tyXSkmJihObihyKT9vLnJlbW92ZUF0dHJpYnV0ZU5TKGpuLExuKHIpKTpUbihyKXx8by5yZW1vdmVBdHRyaWJ1dGUocikpfX1mdW5jdGlvbiBzcihlLHQsbil7LTE8ZS50YWdOYW1lLmluZGV4T2YoIi0iKT9jcihlLHQsbik6RW4odCk/SW4obik/ZS5yZW1vdmVBdHRyaWJ1dGUodCk6KG49ImFsbG93ZnVsbHNjcmVlbiI9PT10JiYiRU1CRUQiPT09ZS50YWdOYW1lPyJ0cnVlIjp0LGUuc2V0QXR0cmlidXRlKHQsbikpOlRuKHQpP2Uuc2V0QXR0cmlidXRlKHQsSW4obil8fCJmYWxzZSI9PT1uPyJmYWxzZSI6InRydWUiKTpObih0KT9JbihuKT9lLnJlbW92ZUF0dHJpYnV0ZU5TKGpuLExuKHQpKTplLnNldEF0dHJpYnV0ZU5TKGpuLHQsbik6Y3IoZSx0LG4pfWZ1bmN0aW9uIGNyKHQsZSxuKXtpZihJbihuKSl0LnJlbW92ZUF0dHJpYnV0ZShlKTtlbHNle2lmKEsmJiFKJiYiVEVYVEFSRUEiPT09dC50YWdOYW1lJiYicGxhY2Vob2xkZXIiPT09ZSYmIXQuX19pZXBoKXt2YXIgcj1mdW5jdGlvbihlKXtlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiaW5wdXQiLHIpfTt0LmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IixyKSx0Ll9faWVwaD0hMH10LnNldEF0dHJpYnV0ZShlLG4pfX12YXIgbHI9e2NyZWF0ZTphcix1cGRhdGU6YXJ9O2Z1bmN0aW9uIHVyKGUsdCl7dmFyIG49dC5lbG0scj10LmRhdGEsaT1lLmRhdGE7aWYoIShNKHIuc3RhdGljQ2xhc3MpJiZNKHIuY2xhc3MpJiYoTShpKXx8TShpLnN0YXRpY0NsYXNzKSYmTShpLmNsYXNzKSkpKXt2YXIgbz1Nbih0KSxhPW4uX3RyYW5zaXRpb25DbGFzc2VzO0QoYSkmJihvPVBuKG8sRm4oYSkpKSxvIT09bi5fcHJldkNsYXNzJiYobi5zZXRBdHRyaWJ1dGUoImNsYXNzIixvKSxuLl9wcmV2Q2xhc3M9byl9fXZhciBmcixwcixkcix2cixocixtcix5cj17Y3JlYXRlOnVyLHVwZGF0ZTp1cn0sZ3I9L1tcdykuK1wtXyRcXV0vO2Z1bmN0aW9uIF9yKGUpe3ZhciB0LG4scixpLG8sYT0hMSxzPSExLGM9ITEsbD0hMSx1PTAsZj0wLHA9MCxkPTA7Zm9yKHI9MDtyPGUubGVuZ3RoO3IrKylpZihuPXQsdD1lLmNoYXJDb2RlQXQociksYSkzOT09PXQmJjkyIT09biYmKGE9ITEpO2Vsc2UgaWYocykzND09PXQmJjkyIT09biYmKHM9ITEpO2Vsc2UgaWYoYyk5Nj09PXQmJjkyIT09biYmKGM9ITEpO2Vsc2UgaWYobCk0Nz09PXQmJjkyIT09biYmKGw9ITEpO2Vsc2UgaWYoMTI0IT09dHx8MTI0PT09ZS5jaGFyQ29kZUF0KHIrMSl8fDEyND09PWUuY2hhckNvZGVBdChyLTEpfHx1fHxmfHxwKXtzd2l0Y2godCl7Y2FzZSAzNDpzPSEwO2JyZWFrO2Nhc2UgMzk6YT0hMDticmVhaztjYXNlIDk2OmM9ITA7YnJlYWs7Y2FzZSA0MDpwKys7YnJlYWs7Y2FzZSA0MTpwLS07YnJlYWs7Y2FzZSA5MTpmKys7YnJlYWs7Y2FzZSA5MzpmLS07YnJlYWs7Y2FzZSAxMjM6dSsrO2JyZWFrO2Nhc2UgMTI1OnUtLX1pZig0Nz09PXQpe2Zvcih2YXIgdj1yLTEsaD12b2lkIDA7MDw9diYmIiAiPT09KGg9ZS5jaGFyQXQodikpO3YtLSk7aCYmZ3IudGVzdChoKXx8KGw9ITApfX1lbHNlIHZvaWQgMD09PWk/KGQ9cisxLGk9ZS5zbGljZSgwLHIpLnRyaW0oKSk6bSgpO2Z1bmN0aW9uIG0oKXsob3x8KG89W10pKS5wdXNoKGUuc2xpY2UoZCxyKS50cmltKCkpLGQ9cisxfWlmKHZvaWQgMD09PWk/aT1lLnNsaWNlKDAscikudHJpbSgpOjAhPT1kJiZtKCksbylmb3Iocj0wO3I8by5sZW5ndGg7cisrKWk9YnIoaSxvW3JdKTtyZXR1cm4gaX1mdW5jdGlvbiBicihlLHQpe3ZhciBuPXQuaW5kZXhPZigiKCIpO2lmKG48MClyZXR1cm4nX2YoIicrdCsnIikoJytlKyIpIjt2YXIgcj10LnNsaWNlKDAsbiksaT10LnNsaWNlKG4rMSk7cmV0dXJuJ19mKCInK3IrJyIpKCcrZSsoIikiIT09aT8iLCIraTppKX1mdW5jdGlvbiAkcihlKXtjb25zb2xlLmVycm9yKCJbVnVlIGNvbXBpbGVyXTogIitlKX1mdW5jdGlvbiB3cihlLHQpe3JldHVybiBlP2UubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlW3RdfSkuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlfSk6W119ZnVuY3Rpb24gQ3IoZSx0LG4peyhlLnByb3BzfHwoZS5wcm9wcz1bXSkpLnB1c2goe25hbWU6dCx2YWx1ZTpufSksZS5wbGFpbj0hMX1mdW5jdGlvbiB4cihlLHQsbil7KGUuYXR0cnN8fChlLmF0dHJzPVtdKSkucHVzaCh7bmFtZTp0LHZhbHVlOm59KSxlLnBsYWluPSExfWZ1bmN0aW9uIGtyKGUsdCxuKXtlLmF0dHJzTWFwW3RdPW4sZS5hdHRyc0xpc3QucHVzaCh7bmFtZTp0LHZhbHVlOm59KX1mdW5jdGlvbiBBcihlLHQsbixyLGksbyl7dmFyIGE7KHI9cnx8eSkuY2FwdHVyZSYmKGRlbGV0ZSByLmNhcHR1cmUsdD0iISIrdCksci5vbmNlJiYoZGVsZXRlIHIub25jZSx0PSJ+Iit0KSxyLnBhc3NpdmUmJihkZWxldGUgci5wYXNzaXZlLHQ9IiYiK3QpLCJjbGljayI9PT10JiYoci5yaWdodD8odD0iY29udGV4dG1lbnUiLGRlbGV0ZSByLnJpZ2h0KTpyLm1pZGRsZSYmKHQ9Im1vdXNldXAiKSksci5uYXRpdmU/KGRlbGV0ZSByLm5hdGl2ZSxhPWUubmF0aXZlRXZlbnRzfHwoZS5uYXRpdmVFdmVudHM9e30pKTphPWUuZXZlbnRzfHwoZS5ldmVudHM9e30pO3ZhciBzPXt2YWx1ZTpuLnRyaW0oKX07ciE9PXkmJihzLm1vZGlmaWVycz1yKTt2YXIgYz1hW3RdO0FycmF5LmlzQXJyYXkoYyk/aT9jLnVuc2hpZnQocyk6Yy5wdXNoKHMpOmFbdF09Yz9pP1tzLGNdOltjLHNdOnMsZS5wbGFpbj0hMX1mdW5jdGlvbiBPcihlLHQsbil7dmFyIHI9U3IoZSwiOiIrdCl8fFNyKGUsInYtYmluZDoiK3QpO2lmKG51bGwhPXIpcmV0dXJuIF9yKHIpO2lmKCExIT09bil7dmFyIGk9U3IoZSx0KTtpZihudWxsIT1pKXJldHVybiBKU09OLnN0cmluZ2lmeShpKX19ZnVuY3Rpb24gU3IoZSx0LG4pe3ZhciByO2lmKG51bGwhPShyPWUuYXR0cnNNYXBbdF0pKWZvcih2YXIgaT1lLmF0dHJzTGlzdCxvPTAsYT1pLmxlbmd0aDtvPGE7bysrKWlmKGlbb10ubmFtZT09PXQpe2kuc3BsaWNlKG8sMSk7YnJlYWt9cmV0dXJuIG4mJmRlbGV0ZSBlLmF0dHJzTWFwW3RdLHJ9ZnVuY3Rpb24gVHIoZSx0LG4pe3ZhciByPW58fHt9LGk9ci5udW1iZXIsbz0iJCR2IixhPW87ci50cmltJiYoYT0iKHR5cGVvZiAkJHYgPT09ICdzdHJpbmcnPyAkJHYudHJpbSgpOiAkJHYpIiksaSYmKGE9Il9uKCIrYSsiKSIpO3ZhciBzPUVyKHQsYSk7ZS5tb2RlbD17dmFsdWU6IigiK3QrIikiLGV4cHJlc3Npb246JyInK3QrJyInLGNhbGxiYWNrOiJmdW5jdGlvbiAoJCR2KSB7IitzKyJ9In19ZnVuY3Rpb24gRXIoZSx0KXt2YXIgbj1mdW5jdGlvbihlKXtpZihlPWUudHJpbSgpLGZyPWUubGVuZ3RoLGUuaW5kZXhPZigiWyIpPDB8fGUubGFzdEluZGV4T2YoIl0iKTxmci0xKXJldHVybi0xPCh2cj1lLmxhc3RJbmRleE9mKCIuIikpP3tleHA6ZS5zbGljZSgwLHZyKSxrZXk6JyInK2Uuc2xpY2UodnIrMSkrJyInfTp7ZXhwOmUsa2V5Om51bGx9O3ByPWUsdnI9aHI9bXI9MDtmb3IoOyFOcigpOylMcihkcj1qcigpKT9Ncihkcik6OTE9PT1kciYmSXIoZHIpO3JldHVybntleHA6ZS5zbGljZSgwLGhyKSxrZXk6ZS5zbGljZShocisxLG1yKX19KGUpO3JldHVybiBudWxsPT09bi5rZXk/ZSsiPSIrdDoiJHNldCgiK24uZXhwKyIsICIrbi5rZXkrIiwgIit0KyIpIn1mdW5jdGlvbiBqcigpe3JldHVybiBwci5jaGFyQ29kZUF0KCsrdnIpfWZ1bmN0aW9uIE5yKCl7cmV0dXJuIGZyPD12cn1mdW5jdGlvbiBMcihlKXtyZXR1cm4gMzQ9PT1lfHwzOT09PWV9ZnVuY3Rpb24gSXIoZSl7dmFyIHQ9MTtmb3IoaHI9dnI7IU5yKCk7KWlmKExyKGU9anIoKSkpTXIoZSk7ZWxzZSBpZig5MT09PWUmJnQrKyw5Mz09PWUmJnQtLSwwPT09dCl7bXI9dnI7YnJlYWt9fWZ1bmN0aW9uIE1yKGUpe2Zvcih2YXIgdD1lOyFOcigpJiYoZT1qcigpKSE9PXQ7KTt9dmFyIERyLFByPSJfX3IiLEZyPSJfX2MiO2Z1bmN0aW9uIFJyKGUsdCxuLHIsaSl7dmFyIG8sYSxzLGMsbDt0PShvPXQpLl93aXRoVGFza3x8KG8uX3dpdGhUYXNrPWZ1bmN0aW9uKCl7SmU9ITA7dmFyIGU9by5hcHBseShudWxsLGFyZ3VtZW50cyk7cmV0dXJuIEplPSExLGV9KSxuJiYoYT10LHM9ZSxjPXIsbD1Ecix0PWZ1bmN0aW9uIGUoKXtudWxsIT09YS5hcHBseShudWxsLGFyZ3VtZW50cykmJkhyKHMsZSxjLGwpfSksRHIuYWRkRXZlbnRMaXN0ZW5lcihlLHQsWj97Y2FwdHVyZTpyLHBhc3NpdmU6aX06cil9ZnVuY3Rpb24gSHIoZSx0LG4scil7KHJ8fERyKS5yZW1vdmVFdmVudExpc3RlbmVyKGUsdC5fd2l0aFRhc2t8fHQsbil9ZnVuY3Rpb24gQnIoZSx0KXtpZighTShlLmRhdGEub24pfHwhTSh0LmRhdGEub24pKXt2YXIgbj10LmRhdGEub258fHt9LHI9ZS5kYXRhLm9ufHx7fTtEcj10LmVsbSxmdW5jdGlvbihlKXtpZihEKGVbUHJdKSl7dmFyIHQ9Sz8iY2hhbmdlIjoiaW5wdXQiO2VbdF09W10uY29uY2F0KGVbUHJdLGVbdF18fFtdKSxkZWxldGUgZVtQcl19RChlW0ZyXSkmJihlLmNoYW5nZT1bXS5jb25jYXQoZVtGcl0sZS5jaGFuZ2V8fFtdKSxkZWxldGUgZVtGcl0pfShuKSxudChuLHIsUnIsSHIsdC5jb250ZXh0KSxEcj12b2lkIDB9fXZhciBVcj17Y3JlYXRlOkJyLHVwZGF0ZTpCcn07ZnVuY3Rpb24gVnIoZSx0KXtpZighTShlLmRhdGEuZG9tUHJvcHMpfHwhTSh0LmRhdGEuZG9tUHJvcHMpKXt2YXIgbixyLGksbyxhPXQuZWxtLHM9ZS5kYXRhLmRvbVByb3BzfHx7fSxjPXQuZGF0YS5kb21Qcm9wc3x8e307Zm9yKG4gaW4gRChjLl9fb2JfXykmJihjPXQuZGF0YS5kb21Qcm9wcz1tKHt9LGMpKSxzKU0oY1tuXSkmJihhW25dPSIiKTtmb3IobiBpbiBjKXtpZihyPWNbbl0sInRleHRDb250ZW50Ij09PW58fCJpbm5lckhUTUwiPT09bil7aWYodC5jaGlsZHJlbiYmKHQuY2hpbGRyZW4ubGVuZ3RoPTApLHI9PT1zW25dKWNvbnRpbnVlOzE9PT1hLmNoaWxkTm9kZXMubGVuZ3RoJiZhLnJlbW92ZUNoaWxkKGEuY2hpbGROb2Rlc1swXSl9aWYoInZhbHVlIj09PW4pe3ZhciBsPU0oYS5fdmFsdWU9cik/IiI6U3RyaW5nKHIpO289bCwoaT1hKS5jb21wb3Npbmd8fCJPUFRJT04iIT09aS50YWdOYW1lJiYhZnVuY3Rpb24oZSx0KXt2YXIgbj0hMDt0cnl7bj1kb2N1bWVudC5hY3RpdmVFbGVtZW50IT09ZX1jYXRjaChlKXt9cmV0dXJuIG4mJmUudmFsdWUhPT10fShpLG8pJiYhZnVuY3Rpb24oZSx0KXt2YXIgbj1lLnZhbHVlLHI9ZS5fdk1vZGlmaWVycztpZihEKHIpKXtpZihyLmxhenkpcmV0dXJuITE7aWYoci5udW1iZXIpcmV0dXJuIEYobikhPT1GKHQpO2lmKHIudHJpbSlyZXR1cm4gbi50cmltKCkhPT10LnRyaW0oKX1yZXR1cm4gbiE9PXR9KGksbyl8fChhLnZhbHVlPWwpfWVsc2UgYVtuXT1yfX19dmFyIHpyPXtjcmVhdGU6VnIsdXBkYXRlOlZyfSxLcj1lKGZ1bmN0aW9uKGUpe3ZhciBuPXt9LHI9LzooLispLztyZXR1cm4gZS5zcGxpdCgvOyg/IVteKF0qXCkpL2cpLmZvckVhY2goZnVuY3Rpb24oZSl7aWYoZSl7dmFyIHQ9ZS5zcGxpdChyKTsxPHQubGVuZ3RoJiYoblt0WzBdLnRyaW0oKV09dFsxXS50cmltKCkpfX0pLG59KTtmdW5jdGlvbiBKcihlKXt2YXIgdD1xcihlLnN0eWxlKTtyZXR1cm4gZS5zdGF0aWNTdHlsZT9tKGUuc3RhdGljU3R5bGUsdCk6dH1mdW5jdGlvbiBxcihlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9iKGUpOiJzdHJpbmciPT10eXBlb2YgZT9LcihlKTplfXZhciBXcixHcj0vXi0tLyxacj0vXHMqIWltcG9ydGFudCQvLFhyPWZ1bmN0aW9uKGUsdCxuKXtpZihHci50ZXN0KHQpKWUuc3R5bGUuc2V0UHJvcGVydHkodCxuKTtlbHNlIGlmKFpyLnRlc3QobikpZS5zdHlsZS5zZXRQcm9wZXJ0eSh0LG4ucmVwbGFjZShaciwiIiksImltcG9ydGFudCIpO2Vsc2V7dmFyIHI9UXIodCk7aWYoQXJyYXkuaXNBcnJheShuKSlmb3IodmFyIGk9MCxvPW4ubGVuZ3RoO2k8bztpKyspZS5zdHlsZVtyXT1uW2ldO2Vsc2UgZS5zdHlsZVtyXT1ufX0sWXI9WyJXZWJraXQiLCJNb3oiLCJtcyJdLFFyPWUoZnVuY3Rpb24oZSl7aWYoV3I9V3J8fGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLnN0eWxlLCJmaWx0ZXIiIT09KGU9ZyhlKSkmJmUgaW4gV3IpcmV0dXJuIGU7Zm9yKHZhciB0PWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrZS5zbGljZSgxKSxuPTA7bjxZci5sZW5ndGg7bisrKXt2YXIgcj1ZcltuXSt0O2lmKHIgaW4gV3IpcmV0dXJuIHJ9fSk7ZnVuY3Rpb24gZWkoZSx0KXt2YXIgbj10LmRhdGEscj1lLmRhdGE7aWYoIShNKG4uc3RhdGljU3R5bGUpJiZNKG4uc3R5bGUpJiZNKHIuc3RhdGljU3R5bGUpJiZNKHIuc3R5bGUpKSl7dmFyIGksbyxhPXQuZWxtLHM9ci5zdGF0aWNTdHlsZSxjPXIubm9ybWFsaXplZFN0eWxlfHxyLnN0eWxlfHx7fSxsPXN8fGMsdT1xcih0LmRhdGEuc3R5bGUpfHx7fTt0LmRhdGEubm9ybWFsaXplZFN0eWxlPUQodS5fX29iX18pP20oe30sdSk6dTt2YXIgZj1mdW5jdGlvbihlLHQpe3ZhciBuLHI9e307aWYodClmb3IodmFyIGk9ZTtpLmNvbXBvbmVudEluc3RhbmNlOykoaT1pLmNvbXBvbmVudEluc3RhbmNlLl92bm9kZSkmJmkuZGF0YSYmKG49SnIoaS5kYXRhKSkmJm0ocixuKTsobj1KcihlLmRhdGEpKSYmbShyLG4pO2Zvcih2YXIgbz1lO289by5wYXJlbnQ7KW8uZGF0YSYmKG49SnIoby5kYXRhKSkmJm0ocixuKTtyZXR1cm4gcn0odCwhMCk7Zm9yKG8gaW4gbClNKGZbb10pJiZYcihhLG8sIiIpO2ZvcihvIGluIGYpKGk9ZltvXSkhPT1sW29dJiZYcihhLG8sbnVsbD09aT8iIjppKX19dmFyIHRpPXtjcmVhdGU6ZWksdXBkYXRlOmVpfTtmdW5jdGlvbiBuaSh0LGUpe2lmKGUmJihlPWUudHJpbSgpKSlpZih0LmNsYXNzTGlzdCktMTxlLmluZGV4T2YoIiAiKT9lLnNwbGl0KC9ccysvKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3JldHVybiB0LmNsYXNzTGlzdC5hZGQoZSl9KTp0LmNsYXNzTGlzdC5hZGQoZSk7ZWxzZXt2YXIgbj0iICIrKHQuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIikrIiAiO24uaW5kZXhPZigiICIrZSsiICIpPDAmJnQuc2V0QXR0cmlidXRlKCJjbGFzcyIsKG4rZSkudHJpbSgpKX19ZnVuY3Rpb24gcmkodCxlKXtpZihlJiYoZT1lLnRyaW0oKSkpaWYodC5jbGFzc0xpc3QpLTE8ZS5pbmRleE9mKCIgIik/ZS5zcGxpdCgvXHMrLykuZm9yRWFjaChmdW5jdGlvbihlKXtyZXR1cm4gdC5jbGFzc0xpc3QucmVtb3ZlKGUpfSk6dC5jbGFzc0xpc3QucmVtb3ZlKGUpLHQuY2xhc3NMaXN0Lmxlbmd0aHx8dC5yZW1vdmVBdHRyaWJ1dGUoImNsYXNzIik7ZWxzZXtmb3IodmFyIG49IiAiKyh0LmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiIpKyIgIixyPSIgIitlKyIgIjswPD1uLmluZGV4T2Yocik7KW49bi5yZXBsYWNlKHIsIiAiKTsobj1uLnRyaW0oKSk/dC5zZXRBdHRyaWJ1dGUoImNsYXNzIixuKTp0LnJlbW92ZUF0dHJpYnV0ZSgiY2xhc3MiKX19ZnVuY3Rpb24gaWkoZSl7aWYoZSl7aWYoIm9iamVjdCI9PXR5cGVvZiBlKXt2YXIgdD17fTtyZXR1cm4hMSE9PWUuY3NzJiZtKHQsb2koZS5uYW1lfHwidiIpKSxtKHQsZSksdH1yZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/b2koZSk6dm9pZCAwfX12YXIgb2k9ZShmdW5jdGlvbihlKXtyZXR1cm57ZW50ZXJDbGFzczplKyItZW50ZXIiLGVudGVyVG9DbGFzczplKyItZW50ZXItdG8iLGVudGVyQWN0aXZlQ2xhc3M6ZSsiLWVudGVyLWFjdGl2ZSIsbGVhdmVDbGFzczplKyItbGVhdmUiLGxlYXZlVG9DbGFzczplKyItbGVhdmUtdG8iLGxlYXZlQWN0aXZlQ2xhc3M6ZSsiLWxlYXZlLWFjdGl2ZSJ9fSksYWk9QiYmIUosc2k9InRyYW5zaXRpb24iLGNpPSJhbmltYXRpb24iLGxpPSJ0cmFuc2l0aW9uIix1aT0idHJhbnNpdGlvbmVuZCIsZmk9ImFuaW1hdGlvbiIscGk9ImFuaW1hdGlvbmVuZCI7YWkmJih2b2lkIDA9PT13aW5kb3cub250cmFuc2l0aW9uZW5kJiZ2b2lkIDAhPT13aW5kb3cub253ZWJraXR0cmFuc2l0aW9uZW5kJiYobGk9IldlYmtpdFRyYW5zaXRpb24iLHVpPSJ3ZWJraXRUcmFuc2l0aW9uRW5kIiksdm9pZCAwPT09d2luZG93Lm9uYW5pbWF0aW9uZW5kJiZ2b2lkIDAhPT13aW5kb3cub253ZWJraXRhbmltYXRpb25lbmQmJihmaT0iV2Via2l0QW5pbWF0aW9uIixwaT0id2Via2l0QW5pbWF0aW9uRW5kIikpO3ZhciBkaT1CP3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU/d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZS5iaW5kKHdpbmRvdyk6c2V0VGltZW91dDpmdW5jdGlvbihlKXtyZXR1cm4gZSgpfTtmdW5jdGlvbiB2aShlKXtkaShmdW5jdGlvbigpe2RpKGUpfSl9ZnVuY3Rpb24gaGkoZSx0KXt2YXIgbj1lLl90cmFuc2l0aW9uQ2xhc3Nlc3x8KGUuX3RyYW5zaXRpb25DbGFzc2VzPVtdKTtuLmluZGV4T2YodCk8MCYmKG4ucHVzaCh0KSxuaShlLHQpKX1mdW5jdGlvbiBtaShlLHQpe2UuX3RyYW5zaXRpb25DbGFzc2VzJiZmKGUuX3RyYW5zaXRpb25DbGFzc2VzLHQpLHJpKGUsdCl9ZnVuY3Rpb24geWkodCxlLG4pe3ZhciByPV9pKHQsZSksaT1yLnR5cGUsbz1yLnRpbWVvdXQsYT1yLnByb3BDb3VudDtpZighaSlyZXR1cm4gbigpO3ZhciBzPWk9PT1zaT91aTpwaSxjPTAsbD1mdW5jdGlvbigpe3QucmVtb3ZlRXZlbnRMaXN0ZW5lcihzLHUpLG4oKX0sdT1mdW5jdGlvbihlKXtlLnRhcmdldD09PXQmJisrYz49YSYmbCgpfTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YzxhJiZsKCl9LG8rMSksdC5hZGRFdmVudExpc3RlbmVyKHMsdSl9dmFyIGdpPS9cYih0cmFuc2Zvcm18YWxsKSgsfCQpLztmdW5jdGlvbiBfaShlLHQpe3ZhciBuLHI9d2luZG93LmdldENvbXB1dGVkU3R5bGUoZSksaT1yW2xpKyJEZWxheSJdLnNwbGl0KCIsICIpLG89cltsaSsiRHVyYXRpb24iXS5zcGxpdCgiLCAiKSxhPWJpKGksbykscz1yW2ZpKyJEZWxheSJdLnNwbGl0KCIsICIpLGM9cltmaSsiRHVyYXRpb24iXS5zcGxpdCgiLCAiKSxsPWJpKHMsYyksdT0wLGY9MDtyZXR1cm4gdD09PXNpPzA8YSYmKG49c2ksdT1hLGY9by5sZW5ndGgpOnQ9PT1jaT8wPGwmJihuPWNpLHU9bCxmPWMubGVuZ3RoKTpmPShuPTA8KHU9TWF0aC5tYXgoYSxsKSk/bDxhP3NpOmNpOm51bGwpP249PT1zaT9vLmxlbmd0aDpjLmxlbmd0aDowLHt0eXBlOm4sdGltZW91dDp1LHByb3BDb3VudDpmLGhhc1RyYW5zZm9ybTpuPT09c2kmJmdpLnRlc3QocltsaSsiUHJvcGVydHkiXSl9fWZ1bmN0aW9uIGJpKG4sZSl7Zm9yKDtuLmxlbmd0aDxlLmxlbmd0aDspbj1uLmNvbmNhdChuKTtyZXR1cm4gTWF0aC5tYXguYXBwbHkobnVsbCxlLm1hcChmdW5jdGlvbihlLHQpe3JldHVybiAkaShlKSskaShuW3RdKX0pKX1mdW5jdGlvbiAkaShlKXtyZXR1cm4gMWUzKk51bWJlcihlLnNsaWNlKDAsLTEpKX1mdW5jdGlvbiB3aShuLGUpe3ZhciByPW4uZWxtO0Qoci5fbGVhdmVDYikmJihyLl9sZWF2ZUNiLmNhbmNlbGxlZD0hMCxyLl9sZWF2ZUNiKCkpO3ZhciB0PWlpKG4uZGF0YS50cmFuc2l0aW9uKTtpZighTSh0KSYmIUQoci5fZW50ZXJDYikmJjE9PT1yLm5vZGVUeXBlKXtmb3IodmFyIGk9dC5jc3Msbz10LnR5cGUsYT10LmVudGVyQ2xhc3Mscz10LmVudGVyVG9DbGFzcyxjPXQuZW50ZXJBY3RpdmVDbGFzcyxsPXQuYXBwZWFyQ2xhc3MsdT10LmFwcGVhclRvQ2xhc3MsZj10LmFwcGVhckFjdGl2ZUNsYXNzLHA9dC5iZWZvcmVFbnRlcixkPXQuZW50ZXIsdj10LmFmdGVyRW50ZXIsaD10LmVudGVyQ2FuY2VsbGVkLG09dC5iZWZvcmVBcHBlYXIseT10LmFwcGVhcixnPXQuYWZ0ZXJBcHBlYXIsXz10LmFwcGVhckNhbmNlbGxlZCxiPXQuZHVyYXRpb24sJD1tdCx3PW10LiR2bm9kZTt3JiZ3LnBhcmVudDspJD0odz13LnBhcmVudCkuY29udGV4dDt2YXIgQz0hJC5faXNNb3VudGVkfHwhbi5pc1Jvb3RJbnNlcnQ7aWYoIUN8fHl8fCIiPT09eSl7dmFyIHg9QyYmbD9sOmEsaz1DJiZmP2Y6YyxBPUMmJnU/dTpzLE89QyYmbXx8cCxTPUMmJiJmdW5jdGlvbiI9PXR5cGVvZiB5P3k6ZCxUPUMmJmd8fHYsRT1DJiZffHxoLGo9RihQKGIpP2IuZW50ZXI6YiksTj0hMSE9PWkmJiFKLEw9a2koUyksST1yLl9lbnRlckNiPVIoZnVuY3Rpb24oKXtOJiYobWkocixBKSxtaShyLGspKSxJLmNhbmNlbGxlZD8oTiYmbWkocix4KSxFJiZFKHIpKTpUJiZUKHIpLHIuX2VudGVyQ2I9bnVsbH0pO24uZGF0YS5zaG93fHxydChuLCJpbnNlcnQiLGZ1bmN0aW9uKCl7dmFyIGU9ci5wYXJlbnROb2RlLHQ9ZSYmZS5fcGVuZGluZyYmZS5fcGVuZGluZ1tuLmtleV07dCYmdC50YWc9PT1uLnRhZyYmdC5lbG0uX2xlYXZlQ2ImJnQuZWxtLl9sZWF2ZUNiKCksUyYmUyhyLEkpfSksTyYmTyhyKSxOJiYoaGkocix4KSxoaShyLGspLHZpKGZ1bmN0aW9uKCl7bWkocix4KSxJLmNhbmNlbGxlZHx8KGhpKHIsQSksTHx8KHhpKGopP3NldFRpbWVvdXQoSSxqKTp5aShyLG8sSSkpKX0pKSxuLmRhdGEuc2hvdyYmKGUmJmUoKSxTJiZTKHIsSSkpLE58fEx8fEkoKX19fWZ1bmN0aW9uIENpKGUsdCl7dmFyIG49ZS5lbG07RChuLl9lbnRlckNiKSYmKG4uX2VudGVyQ2IuY2FuY2VsbGVkPSEwLG4uX2VudGVyQ2IoKSk7dmFyIHI9aWkoZS5kYXRhLnRyYW5zaXRpb24pO2lmKE0ocil8fDEhPT1uLm5vZGVUeXBlKXJldHVybiB0KCk7aWYoIUQobi5fbGVhdmVDYikpe3ZhciBpPXIuY3NzLG89ci50eXBlLGE9ci5sZWF2ZUNsYXNzLHM9ci5sZWF2ZVRvQ2xhc3MsYz1yLmxlYXZlQWN0aXZlQ2xhc3MsbD1yLmJlZm9yZUxlYXZlLHU9ci5sZWF2ZSxmPXIuYWZ0ZXJMZWF2ZSxwPXIubGVhdmVDYW5jZWxsZWQsZD1yLmRlbGF5TGVhdmUsdj1yLmR1cmF0aW9uLGg9ITEhPT1pJiYhSixtPWtpKHUpLHk9RihQKHYpP3YubGVhdmU6diksZz1uLl9sZWF2ZUNiPVIoZnVuY3Rpb24oKXtuLnBhcmVudE5vZGUmJm4ucGFyZW50Tm9kZS5fcGVuZGluZyYmKG4ucGFyZW50Tm9kZS5fcGVuZGluZ1tlLmtleV09bnVsbCksaCYmKG1pKG4scyksbWkobixjKSksZy5jYW5jZWxsZWQ/KGgmJm1pKG4sYSkscCYmcChuKSk6KHQoKSxmJiZmKG4pKSxuLl9sZWF2ZUNiPW51bGx9KTtkP2QoXyk6XygpfWZ1bmN0aW9uIF8oKXtnLmNhbmNlbGxlZHx8KGUuZGF0YS5zaG93fHwoKG4ucGFyZW50Tm9kZS5fcGVuZGluZ3x8KG4ucGFyZW50Tm9kZS5fcGVuZGluZz17fSkpW2Uua2V5XT1lKSxsJiZsKG4pLGgmJihoaShuLGEpLGhpKG4sYyksdmkoZnVuY3Rpb24oKXttaShuLGEpLGcuY2FuY2VsbGVkfHwoaGkobixzKSxtfHwoeGkoeSk/c2V0VGltZW91dChnLHkpOnlpKG4sbyxnKSkpfSkpLHUmJnUobixnKSxofHxtfHxnKCkpfX1mdW5jdGlvbiB4aShlKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGUmJiFpc05hTihlKX1mdW5jdGlvbiBraShlKXtpZihNKGUpKXJldHVybiExO3ZhciB0PWUuZm5zO3JldHVybiBEKHQpP2tpKEFycmF5LmlzQXJyYXkodCk/dFswXTp0KToxPChlLl9sZW5ndGh8fGUubGVuZ3RoKX1mdW5jdGlvbiBBaShlLHQpeyEwIT09dC5kYXRhLnNob3cmJndpKHQpfXZhciBPaT1mdW5jdGlvbihlKXt2YXIgcix0LGc9e30sbj1lLm1vZHVsZXMsXz1lLm5vZGVPcHM7Zm9yKHI9MDtyPFhuLmxlbmd0aDsrK3IpZm9yKGdbWG5bcl1dPVtdLHQ9MDt0PG4ubGVuZ3RoOysrdClEKG5bdF1bWG5bcl1dKSYmZ1tYbltyXV0ucHVzaChuW3RdW1huW3JdXSk7ZnVuY3Rpb24gbyhlKXt2YXIgdD1fLnBhcmVudE5vZGUoZSk7RCh0KSYmXy5yZW1vdmVDaGlsZCh0LGUpfWZ1bmN0aW9uIGIoZSx0LG4scixpLG8sYSl7aWYoRChlLmVsbSkmJkQobykmJihlPW9bYV09ZGUoZSkpLGUuaXNSb290SW5zZXJ0PSFpLCFmdW5jdGlvbihlLHQsbixyKXt2YXIgaT1lLmRhdGE7aWYoRChpKSl7dmFyIG89RChlLmNvbXBvbmVudEluc3RhbmNlKSYmaS5rZWVwQWxpdmU7aWYoRChpPWkuaG9vaykmJkQoaT1pLmluaXQpJiZpKGUsITEsbixyKSxEKGUuY29tcG9uZW50SW5zdGFuY2UpKXJldHVybiBkKGUsdCksUyhvKSYmZnVuY3Rpb24oZSx0LG4scil7Zm9yKHZhciBpLG89ZTtvLmNvbXBvbmVudEluc3RhbmNlOylpZihvPW8uY29tcG9uZW50SW5zdGFuY2UuX3Zub2RlLEQoaT1vLmRhdGEpJiZEKGk9aS50cmFuc2l0aW9uKSl7Zm9yKGk9MDtpPGcuYWN0aXZhdGUubGVuZ3RoOysraSlnLmFjdGl2YXRlW2ldKFpuLG8pO3QucHVzaChvKTticmVha311KG4sZS5lbG0scil9KGUsdCxuLHIpLCEwfX0oZSx0LG4scikpe3ZhciBzPWUuZGF0YSxjPWUuY2hpbGRyZW4sbD1lLnRhZztEKGwpPyhlLmVsbT1lLm5zP18uY3JlYXRlRWxlbWVudE5TKGUubnMsbCk6Xy5jcmVhdGVFbGVtZW50KGwsZSksZihlKSx2KGUsYyx0KSxEKHMpJiZoKGUsdCkpOlMoZS5pc0NvbW1lbnQpP2UuZWxtPV8uY3JlYXRlQ29tbWVudChlLnRleHQpOmUuZWxtPV8uY3JlYXRlVGV4dE5vZGUoZS50ZXh0KSx1KG4sZS5lbG0scil9fWZ1bmN0aW9uIGQoZSx0KXtEKGUuZGF0YS5wZW5kaW5nSW5zZXJ0KSYmKHQucHVzaC5hcHBseSh0LGUuZGF0YS5wZW5kaW5nSW5zZXJ0KSxlLmRhdGEucGVuZGluZ0luc2VydD1udWxsKSxlLmVsbT1lLmNvbXBvbmVudEluc3RhbmNlLiRlbCwkKGUpPyhoKGUsdCksZihlKSk6KEduKGUpLHQucHVzaChlKSl9ZnVuY3Rpb24gdShlLHQsbil7RChlKSYmKEQobik/bi5wYXJlbnROb2RlPT09ZSYmXy5pbnNlcnRCZWZvcmUoZSx0LG4pOl8uYXBwZW5kQ2hpbGQoZSx0KSl9ZnVuY3Rpb24gdihlLHQsbil7aWYoQXJyYXkuaXNBcnJheSh0KSlmb3IodmFyIHI9MDtyPHQubGVuZ3RoOysrciliKHRbcl0sbixlLmVsbSxudWxsLCEwLHQscik7ZWxzZSBUKGUudGV4dCkmJl8uYXBwZW5kQ2hpbGQoZS5lbG0sXy5jcmVhdGVUZXh0Tm9kZShTdHJpbmcoZS50ZXh0KSkpfWZ1bmN0aW9uICQoZSl7Zm9yKDtlLmNvbXBvbmVudEluc3RhbmNlOyllPWUuY29tcG9uZW50SW5zdGFuY2UuX3Zub2RlO3JldHVybiBEKGUudGFnKX1mdW5jdGlvbiBoKGUsdCl7Zm9yKHZhciBuPTA7bjxnLmNyZWF0ZS5sZW5ndGg7KytuKWcuY3JlYXRlW25dKFpuLGUpO0Qocj1lLmRhdGEuaG9vaykmJihEKHIuY3JlYXRlKSYmci5jcmVhdGUoWm4sZSksRChyLmluc2VydCkmJnQucHVzaChlKSl9ZnVuY3Rpb24gZihlKXt2YXIgdDtpZihEKHQ9ZS5mblNjb3BlSWQpKV8uc2V0U3R5bGVTY29wZShlLmVsbSx0KTtlbHNlIGZvcih2YXIgbj1lO247KUQodD1uLmNvbnRleHQpJiZEKHQ9dC4kb3B0aW9ucy5fc2NvcGVJZCkmJl8uc2V0U3R5bGVTY29wZShlLmVsbSx0KSxuPW4ucGFyZW50O0QodD1tdCkmJnQhPT1lLmNvbnRleHQmJnQhPT1lLmZuQ29udGV4dCYmRCh0PXQuJG9wdGlvbnMuX3Njb3BlSWQpJiZfLnNldFN0eWxlU2NvcGUoZS5lbG0sdCl9ZnVuY3Rpb24geShlLHQsbixyLGksbyl7Zm9yKDtyPD1pOysrciliKG5bcl0sbyxlLHQsITEsbixyKX1mdW5jdGlvbiB3KGUpe3ZhciB0LG4scj1lLmRhdGE7aWYoRChyKSlmb3IoRCh0PXIuaG9vaykmJkQodD10LmRlc3Ryb3kpJiZ0KGUpLHQ9MDt0PGcuZGVzdHJveS5sZW5ndGg7Kyt0KWcuZGVzdHJveVt0XShlKTtpZihEKHQ9ZS5jaGlsZHJlbikpZm9yKG49MDtuPGUuY2hpbGRyZW4ubGVuZ3RoOysrbil3KGUuY2hpbGRyZW5bbl0pfWZ1bmN0aW9uIEMoZSx0LG4scil7Zm9yKDtuPD1yOysrbil7dmFyIGk9dFtuXTtEKGkpJiYoRChpLnRhZyk/KGEoaSksdyhpKSk6byhpLmVsbSkpfX1mdW5jdGlvbiBhKGUsdCl7aWYoRCh0KXx8RChlLmRhdGEpKXt2YXIgbixyPWcucmVtb3ZlLmxlbmd0aCsxO2ZvcihEKHQpP3QubGlzdGVuZXJzKz1yOnQ9ZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBuKCl7MD09LS1uLmxpc3RlbmVycyYmbyhlKX1yZXR1cm4gbi5saXN0ZW5lcnM9dCxufShlLmVsbSxyKSxEKG49ZS5jb21wb25lbnRJbnN0YW5jZSkmJkQobj1uLl92bm9kZSkmJkQobi5kYXRhKSYmYShuLHQpLG49MDtuPGcucmVtb3ZlLmxlbmd0aDsrK24pZy5yZW1vdmVbbl0oZSx0KTtEKG49ZS5kYXRhLmhvb2spJiZEKG49bi5yZW1vdmUpP24oZSx0KTp0KCl9ZWxzZSBvKGUuZWxtKX1mdW5jdGlvbiB4KGUsdCxuLHIpe2Zvcih2YXIgaT1uO2k8cjtpKyspe3ZhciBvPXRbaV07aWYoRChvKSYmWW4oZSxvKSlyZXR1cm4gaX19ZnVuY3Rpb24gayhlLHQsbixyKXtpZihlIT09dCl7dmFyIGk9dC5lbG09ZS5lbG07aWYoUyhlLmlzQXN5bmNQbGFjZWhvbGRlcikpRCh0LmFzeW5jRmFjdG9yeS5yZXNvbHZlZCk/TyhlLmVsbSx0LG4pOnQuaXNBc3luY1BsYWNlaG9sZGVyPSEwO2Vsc2UgaWYoUyh0LmlzU3RhdGljKSYmUyhlLmlzU3RhdGljKSYmdC5rZXk9PT1lLmtleSYmKFModC5pc0Nsb25lZCl8fFModC5pc09uY2UpKSl0LmNvbXBvbmVudEluc3RhbmNlPWUuY29tcG9uZW50SW5zdGFuY2U7ZWxzZXt2YXIgbyxhPXQuZGF0YTtEKGEpJiZEKG89YS5ob29rKSYmRChvPW8ucHJlcGF0Y2gpJiZvKGUsdCk7dmFyIHM9ZS5jaGlsZHJlbixjPXQuY2hpbGRyZW47aWYoRChhKSYmJCh0KSl7Zm9yKG89MDtvPGcudXBkYXRlLmxlbmd0aDsrK28pZy51cGRhdGVbb10oZSx0KTtEKG89YS5ob29rKSYmRChvPW8udXBkYXRlKSYmbyhlLHQpfU0odC50ZXh0KT9EKHMpJiZEKGMpP3MhPT1jJiZmdW5jdGlvbihlLHQsbixyLGkpe2Zvcih2YXIgbyxhLHMsYz0wLGw9MCx1PXQubGVuZ3RoLTEsZj10WzBdLHA9dFt1XSxkPW4ubGVuZ3RoLTEsdj1uWzBdLGg9bltkXSxtPSFpO2M8PXUmJmw8PWQ7KU0oZik/Zj10WysrY106TShwKT9wPXRbLS11XTpZbihmLHYpPyhrKGYsdixyKSxmPXRbKytjXSx2PW5bKytsXSk6WW4ocCxoKT8oayhwLGgscikscD10Wy0tdV0saD1uWy0tZF0pOlluKGYsaCk/KGsoZixoLHIpLG0mJl8uaW5zZXJ0QmVmb3JlKGUsZi5lbG0sXy5uZXh0U2libGluZyhwLmVsbSkpLGY9dFsrK2NdLGg9blstLWRdKTooWW4ocCx2KT8oayhwLHYsciksbSYmXy5pbnNlcnRCZWZvcmUoZSxwLmVsbSxmLmVsbSkscD10Wy0tdV0pOihNKG8pJiYobz1Rbih0LGMsdSkpLE0oYT1EKHYua2V5KT9vW3Yua2V5XTp4KHYsdCxjLHUpKT9iKHYscixlLGYuZWxtLCExLG4sbCk6WW4ocz10W2FdLHYpPyhrKHMsdixyKSx0W2FdPXZvaWQgMCxtJiZfLmluc2VydEJlZm9yZShlLHMuZWxtLGYuZWxtKSk6Yih2LHIsZSxmLmVsbSwhMSxuLGwpKSx2PW5bKytsXSk7dTxjP3koZSxNKG5bZCsxXSk/bnVsbDpuW2QrMV0uZWxtLG4sbCxkLHIpOmQ8bCYmQygwLHQsYyx1KX0oaSxzLGMsbixyKTpEKGMpPyhEKGUudGV4dCkmJl8uc2V0VGV4dENvbnRlbnQoaSwiIikseShpLG51bGwsYywwLGMubGVuZ3RoLTEsbikpOkQocyk/QygwLHMsMCxzLmxlbmd0aC0xKTpEKGUudGV4dCkmJl8uc2V0VGV4dENvbnRlbnQoaSwiIik6ZS50ZXh0IT09dC50ZXh0JiZfLnNldFRleHRDb250ZW50KGksdC50ZXh0KSxEKGEpJiZEKG89YS5ob29rKSYmRChvPW8ucG9zdHBhdGNoKSYmbyhlLHQpfX19ZnVuY3Rpb24gQShlLHQsbil7aWYoUyhuKSYmRChlLnBhcmVudCkpZS5wYXJlbnQuZGF0YS5wZW5kaW5nSW5zZXJ0PXQ7ZWxzZSBmb3IodmFyIHI9MDtyPHQubGVuZ3RoOysrcil0W3JdLmRhdGEuaG9vay5pbnNlcnQodFtyXSl9dmFyIG09cygiYXR0cnMsY2xhc3Msc3RhdGljQ2xhc3Msc3RhdGljU3R5bGUsa2V5Iik7ZnVuY3Rpb24gTyhlLHQsbixyKXt2YXIgaSxvPXQudGFnLGE9dC5kYXRhLHM9dC5jaGlsZHJlbjtpZihyPXJ8fGEmJmEucHJlLHQuZWxtPWUsUyh0LmlzQ29tbWVudCkmJkQodC5hc3luY0ZhY3RvcnkpKXJldHVybiB0LmlzQXN5bmNQbGFjZWhvbGRlcj0hMDtpZihEKGEpJiYoRChpPWEuaG9vaykmJkQoaT1pLmluaXQpJiZpKHQsITApLEQoaT10LmNvbXBvbmVudEluc3RhbmNlKSkpcmV0dXJuIGQodCxuKSwhMDtpZihEKG8pKXtpZihEKHMpKWlmKGUuaGFzQ2hpbGROb2RlcygpKWlmKEQoaT1hKSYmRChpPWkuZG9tUHJvcHMpJiZEKGk9aS5pbm5lckhUTUwpKXtpZihpIT09ZS5pbm5lckhUTUwpcmV0dXJuITF9ZWxzZXtmb3IodmFyIGM9ITAsbD1lLmZpcnN0Q2hpbGQsdT0wO3U8cy5sZW5ndGg7dSsrKXtpZighbHx8IU8obCxzW3VdLG4scikpe2M9ITE7YnJlYWt9bD1sLm5leHRTaWJsaW5nfWlmKCFjfHxsKXJldHVybiExfWVsc2Ugdih0LHMsbik7aWYoRChhKSl7dmFyIGY9ITE7Zm9yKHZhciBwIGluIGEpaWYoIW0ocCkpe2Y9ITAsaCh0LG4pO2JyZWFrfSFmJiZhLmNsYXNzJiZZZShhLmNsYXNzKX19ZWxzZSBlLmRhdGEhPT10LnRleHQmJihlLmRhdGE9dC50ZXh0KTtyZXR1cm4hMH1yZXR1cm4gZnVuY3Rpb24oZSx0LG4scixpLG8pe2lmKCFNKHQpKXt2YXIgYSxzPSExLGM9W107aWYoTShlKSlzPSEwLGIodCxjLGksbyk7ZWxzZXt2YXIgbD1EKGUubm9kZVR5cGUpO2lmKCFsJiZZbihlLHQpKWsoZSx0LGMscik7ZWxzZXtpZihsKXtpZigxPT09ZS5ub2RlVHlwZSYmZS5oYXNBdHRyaWJ1dGUoRSkmJihlLnJlbW92ZUF0dHJpYnV0ZShFKSxuPSEwKSxTKG4pJiZPKGUsdCxjKSlyZXR1cm4gQSh0LGMsITApLGU7YT1lLGU9bmV3IGxlKF8udGFnTmFtZShhKS50b0xvd2VyQ2FzZSgpLHt9LFtdLHZvaWQgMCxhKX12YXIgdT1lLmVsbSxmPV8ucGFyZW50Tm9kZSh1KTtpZihiKHQsYyx1Ll9sZWF2ZUNiP251bGw6ZixfLm5leHRTaWJsaW5nKHUpKSxEKHQucGFyZW50KSlmb3IodmFyIHA9dC5wYXJlbnQsZD0kKHQpO3A7KXtmb3IodmFyIHY9MDt2PGcuZGVzdHJveS5sZW5ndGg7Kyt2KWcuZGVzdHJveVt2XShwKTtpZihwLmVsbT10LmVsbSxkKXtmb3IodmFyIGg9MDtoPGcuY3JlYXRlLmxlbmd0aDsrK2gpZy5jcmVhdGVbaF0oWm4scCk7dmFyIG09cC5kYXRhLmhvb2suaW5zZXJ0O2lmKG0ubWVyZ2VkKWZvcih2YXIgeT0xO3k8bS5mbnMubGVuZ3RoO3krKyltLmZuc1t5XSgpfWVsc2UgR24ocCk7cD1wLnBhcmVudH1EKGYpP0MoMCxbZV0sMCwwKTpEKGUudGFnKSYmdyhlKX19cmV0dXJuIEEodCxjLHMpLHQuZWxtfUQoZSkmJncoZSl9fSh7bm9kZU9wczpxbixtb2R1bGVzOltscix5cixVcix6cix0aSxCP3tjcmVhdGU6QWksYWN0aXZhdGU6QWkscmVtb3ZlOmZ1bmN0aW9uKGUsdCl7ITAhPT1lLmRhdGEuc2hvdz9DaShlLHQpOnQoKX19Ont9XS5jb25jYXQob3IpfSk7SiYmZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigic2VsZWN0aW9uY2hhbmdlIixmdW5jdGlvbigpe3ZhciBlPWRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7ZSYmZS52bW9kZWwmJk1pKGUsImlucHV0Iil9KTt2YXIgU2k9e2luc2VydGVkOmZ1bmN0aW9uKGUsdCxuLHIpeyJzZWxlY3QiPT09bi50YWc/KHIuZWxtJiYhci5lbG0uX3ZPcHRpb25zP3J0KG4sInBvc3RwYXRjaCIsZnVuY3Rpb24oKXtTaS5jb21wb25lbnRVcGRhdGVkKGUsdCxuKX0pOlRpKGUsdCxuLmNvbnRleHQpLGUuX3ZPcHRpb25zPVtdLm1hcC5jYWxsKGUub3B0aW9ucyxOaSkpOigidGV4dGFyZWEiPT09bi50YWd8fEtuKGUudHlwZSkpJiYoZS5fdk1vZGlmaWVycz10Lm1vZGlmaWVycyx0Lm1vZGlmaWVycy5sYXp5fHwoZS5hZGRFdmVudExpc3RlbmVyKCJjb21wb3NpdGlvbnN0YXJ0IixMaSksZS5hZGRFdmVudExpc3RlbmVyKCJjb21wb3NpdGlvbmVuZCIsSWkpLGUuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIixJaSksSiYmKGUudm1vZGVsPSEwKSkpfSxjb21wb25lbnRVcGRhdGVkOmZ1bmN0aW9uKGUsdCxuKXtpZigic2VsZWN0Ij09PW4udGFnKXtUaShlLHQsbi5jb250ZXh0KTt2YXIgcj1lLl92T3B0aW9ucyxpPWUuX3ZPcHRpb25zPVtdLm1hcC5jYWxsKGUub3B0aW9ucyxOaSk7aWYoaS5zb21lKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIUMoZSxyW3RdKX0pKShlLm11bHRpcGxlP3QudmFsdWUuc29tZShmdW5jdGlvbihlKXtyZXR1cm4gamkoZSxpKX0pOnQudmFsdWUhPT10Lm9sZFZhbHVlJiZqaSh0LnZhbHVlLGkpKSYmTWkoZSwiY2hhbmdlIil9fX07ZnVuY3Rpb24gVGkoZSx0LG4pe0VpKGUsdCxuKSwoS3x8cSkmJnNldFRpbWVvdXQoZnVuY3Rpb24oKXtFaShlLHQsbil9LDApfWZ1bmN0aW9uIEVpKGUsdCxuKXt2YXIgcj10LnZhbHVlLGk9ZS5tdWx0aXBsZTtpZighaXx8QXJyYXkuaXNBcnJheShyKSl7Zm9yKHZhciBvLGEscz0wLGM9ZS5vcHRpb25zLmxlbmd0aDtzPGM7cysrKWlmKGE9ZS5vcHRpb25zW3NdLGkpbz0tMTx4KHIsTmkoYSkpLGEuc2VsZWN0ZWQhPT1vJiYoYS5zZWxlY3RlZD1vKTtlbHNlIGlmKEMoTmkoYSkscikpcmV0dXJuIHZvaWQoZS5zZWxlY3RlZEluZGV4IT09cyYmKGUuc2VsZWN0ZWRJbmRleD1zKSk7aXx8KGUuc2VsZWN0ZWRJbmRleD0tMSl9fWZ1bmN0aW9uIGppKHQsZSl7cmV0dXJuIGUuZXZlcnkoZnVuY3Rpb24oZSl7cmV0dXJuIUMoZSx0KX0pfWZ1bmN0aW9uIE5pKGUpe3JldHVybiJfdmFsdWUiaW4gZT9lLl92YWx1ZTplLnZhbHVlfWZ1bmN0aW9uIExpKGUpe2UudGFyZ2V0LmNvbXBvc2luZz0hMH1mdW5jdGlvbiBJaShlKXtlLnRhcmdldC5jb21wb3NpbmcmJihlLnRhcmdldC5jb21wb3Npbmc9ITEsTWkoZS50YXJnZXQsImlucHV0IikpfWZ1bmN0aW9uIE1pKGUsdCl7dmFyIG49ZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkhUTUxFdmVudHMiKTtuLmluaXRFdmVudCh0LCEwLCEwKSxlLmRpc3BhdGNoRXZlbnQobil9ZnVuY3Rpb24gRGkoZSl7cmV0dXJuIWUuY29tcG9uZW50SW5zdGFuY2V8fGUuZGF0YSYmZS5kYXRhLnRyYW5zaXRpb24/ZTpEaShlLmNvbXBvbmVudEluc3RhbmNlLl92bm9kZSl9dmFyIFBpPXttb2RlbDpTaSxzaG93OntiaW5kOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10LnZhbHVlLGk9KG49RGkobikpLmRhdGEmJm4uZGF0YS50cmFuc2l0aW9uLG89ZS5fX3ZPcmlnaW5hbERpc3BsYXk9Im5vbmUiPT09ZS5zdHlsZS5kaXNwbGF5PyIiOmUuc3R5bGUuZGlzcGxheTtyJiZpPyhuLmRhdGEuc2hvdz0hMCx3aShuLGZ1bmN0aW9uKCl7ZS5zdHlsZS5kaXNwbGF5PW99KSk6ZS5zdHlsZS5kaXNwbGF5PXI/bzoibm9uZSJ9LHVwZGF0ZTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dC52YWx1ZTshciE9IXQub2xkVmFsdWUmJigobj1EaShuKSkuZGF0YSYmbi5kYXRhLnRyYW5zaXRpb24/KG4uZGF0YS5zaG93PSEwLHI/d2kobixmdW5jdGlvbigpe2Uuc3R5bGUuZGlzcGxheT1lLl9fdk9yaWdpbmFsRGlzcGxheX0pOkNpKG4sZnVuY3Rpb24oKXtlLnN0eWxlLmRpc3BsYXk9Im5vbmUifSkpOmUuc3R5bGUuZGlzcGxheT1yP2UuX192T3JpZ2luYWxEaXNwbGF5OiJub25lIil9LHVuYmluZDpmdW5jdGlvbihlLHQsbixyLGkpe2l8fChlLnN0eWxlLmRpc3BsYXk9ZS5fX3ZPcmlnaW5hbERpc3BsYXkpfX19LEZpPXtuYW1lOlN0cmluZyxhcHBlYXI6Qm9vbGVhbixjc3M6Qm9vbGVhbixtb2RlOlN0cmluZyx0eXBlOlN0cmluZyxlbnRlckNsYXNzOlN0cmluZyxsZWF2ZUNsYXNzOlN0cmluZyxlbnRlclRvQ2xhc3M6U3RyaW5nLGxlYXZlVG9DbGFzczpTdHJpbmcsZW50ZXJBY3RpdmVDbGFzczpTdHJpbmcsbGVhdmVBY3RpdmVDbGFzczpTdHJpbmcsYXBwZWFyQ2xhc3M6U3RyaW5nLGFwcGVhckFjdGl2ZUNsYXNzOlN0cmluZyxhcHBlYXJUb0NsYXNzOlN0cmluZyxkdXJhdGlvbjpbTnVtYmVyLFN0cmluZyxPYmplY3RdfTtmdW5jdGlvbiBSaShlKXt2YXIgdD1lJiZlLmNvbXBvbmVudE9wdGlvbnM7cmV0dXJuIHQmJnQuQ3Rvci5vcHRpb25zLmFic3RyYWN0P1JpKGx0KHQuY2hpbGRyZW4pKTplfWZ1bmN0aW9uIEhpKGUpe3ZhciB0PXt9LG49ZS4kb3B0aW9ucztmb3IodmFyIHIgaW4gbi5wcm9wc0RhdGEpdFtyXT1lW3JdO3ZhciBpPW4uX3BhcmVudExpc3RlbmVycztmb3IodmFyIG8gaW4gaSl0W2cobyldPWlbb107cmV0dXJuIHR9ZnVuY3Rpb24gQmkoZSx0KXtpZigvXGQta2VlcC1hbGl2ZSQvLnRlc3QodC50YWcpKXJldHVybiBlKCJrZWVwLWFsaXZlIix7cHJvcHM6dC5jb21wb25lbnRPcHRpb25zLnByb3BzRGF0YX0pfXZhciBVaT17bmFtZToidHJhbnNpdGlvbiIscHJvcHM6RmksYWJzdHJhY3Q6ITAscmVuZGVyOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsbj10aGlzLiRzbG90cy5kZWZhdWx0O2lmKG4mJihuPW4uZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLnRhZ3x8Y3QoZSl9KSkubGVuZ3RoKXt2YXIgcj10aGlzLm1vZGUsaT1uWzBdO2lmKGZ1bmN0aW9uKGUpe2Zvcig7ZT1lLnBhcmVudDspaWYoZS5kYXRhLnRyYW5zaXRpb24pcmV0dXJuITB9KHRoaXMuJHZub2RlKSlyZXR1cm4gaTt2YXIgbz1SaShpKTtpZighbylyZXR1cm4gaTtpZih0aGlzLl9sZWF2aW5nKXJldHVybiBCaShlLGkpO3ZhciBhPSJfX3RyYW5zaXRpb24tIit0aGlzLl91aWQrIi0iO28ua2V5PW51bGw9PW8ua2V5P28uaXNDb21tZW50P2ErImNvbW1lbnQiOmErby50YWc6VChvLmtleSk/MD09PVN0cmluZyhvLmtleSkuaW5kZXhPZihhKT9vLmtleTphK28ua2V5Om8ua2V5O3ZhciBzLGMsbD0oby5kYXRhfHwoby5kYXRhPXt9KSkudHJhbnNpdGlvbj1IaSh0aGlzKSx1PXRoaXMuX3Zub2RlLGY9UmkodSk7aWYoby5kYXRhLmRpcmVjdGl2ZXMmJm8uZGF0YS5kaXJlY3RpdmVzLnNvbWUoZnVuY3Rpb24oZSl7cmV0dXJuInNob3ciPT09ZS5uYW1lfSkmJihvLmRhdGEuc2hvdz0hMCksZiYmZi5kYXRhJiYocz1vLChjPWYpLmtleSE9PXMua2V5fHxjLnRhZyE9PXMudGFnKSYmIWN0KGYpJiYoIWYuY29tcG9uZW50SW5zdGFuY2V8fCFmLmNvbXBvbmVudEluc3RhbmNlLl92bm9kZS5pc0NvbW1lbnQpKXt2YXIgcD1mLmRhdGEudHJhbnNpdGlvbj1tKHt9LGwpO2lmKCJvdXQtaW4iPT09cilyZXR1cm4gdGhpcy5fbGVhdmluZz0hMCxydChwLCJhZnRlckxlYXZlIixmdW5jdGlvbigpe3QuX2xlYXZpbmc9ITEsdC4kZm9yY2VVcGRhdGUoKX0pLEJpKGUsaSk7aWYoImluLW91dCI9PT1yKXtpZihjdChvKSlyZXR1cm4gdTt2YXIgZCx2PWZ1bmN0aW9uKCl7ZCgpfTtydChsLCJhZnRlckVudGVyIix2KSxydChsLCJlbnRlckNhbmNlbGxlZCIsdikscnQocCwiZGVsYXlMZWF2ZSIsZnVuY3Rpb24oZSl7ZD1lfSl9fXJldHVybiBpfX19LFZpPW0oe3RhZzpTdHJpbmcsbW92ZUNsYXNzOlN0cmluZ30sRmkpO2Z1bmN0aW9uIHppKGUpe2UuZWxtLl9tb3ZlQ2ImJmUuZWxtLl9tb3ZlQ2IoKSxlLmVsbS5fZW50ZXJDYiYmZS5lbG0uX2VudGVyQ2IoKX1mdW5jdGlvbiBLaShlKXtlLmRhdGEubmV3UG9zPWUuZWxtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpfWZ1bmN0aW9uIEppKGUpe3ZhciB0PWUuZGF0YS5wb3Msbj1lLmRhdGEubmV3UG9zLHI9dC5sZWZ0LW4ubGVmdCxpPXQudG9wLW4udG9wO2lmKHJ8fGkpe2UuZGF0YS5tb3ZlZD0hMDt2YXIgbz1lLmVsbS5zdHlsZTtvLnRyYW5zZm9ybT1vLldlYmtpdFRyYW5zZm9ybT0idHJhbnNsYXRlKCIrcisicHgsIitpKyJweCkiLG8udHJhbnNpdGlvbkR1cmF0aW9uPSIwcyJ9fWRlbGV0ZSBWaS5tb2RlO3ZhciBxaT17VHJhbnNpdGlvbjpVaSxUcmFuc2l0aW9uR3JvdXA6e3Byb3BzOlZpLHJlbmRlcjpmdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy50YWd8fHRoaXMuJHZub2RlLmRhdGEudGFnfHwic3BhbiIsbj1PYmplY3QuY3JlYXRlKG51bGwpLHI9dGhpcy5wcmV2Q2hpbGRyZW49dGhpcy5jaGlsZHJlbixpPXRoaXMuJHNsb3RzLmRlZmF1bHR8fFtdLG89dGhpcy5jaGlsZHJlbj1bXSxhPUhpKHRoaXMpLHM9MDtzPGkubGVuZ3RoO3MrKyl7dmFyIGM9aVtzXTtjLnRhZyYmbnVsbCE9Yy5rZXkmJjAhPT1TdHJpbmcoYy5rZXkpLmluZGV4T2YoIl9fdmxpc3QiKSYmKG8ucHVzaChjKSwoKG5bYy5rZXldPWMpLmRhdGF8fChjLmRhdGE9e30pKS50cmFuc2l0aW9uPWEpfWlmKHIpe2Zvcih2YXIgbD1bXSx1PVtdLGY9MDtmPHIubGVuZ3RoO2YrKyl7dmFyIHA9cltmXTtwLmRhdGEudHJhbnNpdGlvbj1hLHAuZGF0YS5wb3M9cC5lbG0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbltwLmtleV0/bC5wdXNoKHApOnUucHVzaChwKX10aGlzLmtlcHQ9ZSh0LG51bGwsbCksdGhpcy5yZW1vdmVkPXV9cmV0dXJuIGUodCxudWxsLG8pfSxiZWZvcmVVcGRhdGU6ZnVuY3Rpb24oKXt0aGlzLl9fcGF0Y2hfXyh0aGlzLl92bm9kZSx0aGlzLmtlcHQsITEsITApLHRoaXMuX3Zub2RlPXRoaXMua2VwdH0sdXBkYXRlZDpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJldkNoaWxkcmVuLHI9dGhpcy5tb3ZlQ2xhc3N8fCh0aGlzLm5hbWV8fCJ2IikrIi1tb3ZlIjtlLmxlbmd0aCYmdGhpcy5oYXNNb3ZlKGVbMF0uZWxtLHIpJiYoZS5mb3JFYWNoKHppKSxlLmZvckVhY2goS2kpLGUuZm9yRWFjaChKaSksdGhpcy5fcmVmbG93PWRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0LGUuZm9yRWFjaChmdW5jdGlvbihlKXtpZihlLmRhdGEubW92ZWQpe3ZhciBuPWUuZWxtLHQ9bi5zdHlsZTtoaShuLHIpLHQudHJhbnNmb3JtPXQuV2Via2l0VHJhbnNmb3JtPXQudHJhbnNpdGlvbkR1cmF0aW9uPSIiLG4uYWRkRXZlbnRMaXN0ZW5lcih1aSxuLl9tb3ZlQ2I9ZnVuY3Rpb24gZSh0KXt0JiYhL3RyYW5zZm9ybSQvLnRlc3QodC5wcm9wZXJ0eU5hbWUpfHwobi5yZW1vdmVFdmVudExpc3RlbmVyKHVpLGUpLG4uX21vdmVDYj1udWxsLG1pKG4scikpfSl9fSkpfSxtZXRob2RzOntoYXNNb3ZlOmZ1bmN0aW9uKGUsdCl7aWYoIWFpKXJldHVybiExO2lmKHRoaXMuX2hhc01vdmUpcmV0dXJuIHRoaXMuX2hhc01vdmU7dmFyIG49ZS5jbG9uZU5vZGUoKTtlLl90cmFuc2l0aW9uQ2xhc3NlcyYmZS5fdHJhbnNpdGlvbkNsYXNzZXMuZm9yRWFjaChmdW5jdGlvbihlKXtyaShuLGUpfSksbmkobix0KSxuLnN0eWxlLmRpc3BsYXk9Im5vbmUiLHRoaXMuJGVsLmFwcGVuZENoaWxkKG4pO3ZhciByPV9pKG4pO3JldHVybiB0aGlzLiRlbC5yZW1vdmVDaGlsZChuKSx0aGlzLl9oYXNNb3ZlPXIuaGFzVHJhbnNmb3JtfX19fTtobi5jb25maWcubXVzdFVzZVByb3A9U24saG4uY29uZmlnLmlzUmVzZXJ2ZWRUYWc9VW4saG4uY29uZmlnLmlzUmVzZXJ2ZWRBdHRyPUFuLGhuLmNvbmZpZy5nZXRUYWdOYW1lc3BhY2U9Vm4saG4uY29uZmlnLmlzVW5rbm93bkVsZW1lbnQ9ZnVuY3Rpb24oZSl7aWYoIUIpcmV0dXJuITA7aWYoVW4oZSkpcmV0dXJuITE7aWYoZT1lLnRvTG93ZXJDYXNlKCksbnVsbCE9em5bZV0pcmV0dXJuIHpuW2VdO3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoZSk7cmV0dXJuLTE8ZS5pbmRleE9mKCItIik/em5bZV09dC5jb25zdHJ1Y3Rvcj09PXdpbmRvdy5IVE1MVW5rbm93bkVsZW1lbnR8fHQuY29uc3RydWN0b3I9PT13aW5kb3cuSFRNTEVsZW1lbnQ6em5bZV09L0hUTUxVbmtub3duRWxlbWVudC8udGVzdCh0LnRvU3RyaW5nKCkpfSxtKGhuLm9wdGlvbnMuZGlyZWN0aXZlcyxQaSksbShobi5vcHRpb25zLmNvbXBvbmVudHMscWkpLGhuLnByb3RvdHlwZS5fX3BhdGNoX189Qj9PaTokLGhuLnByb3RvdHlwZS4kbW91bnQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT1lJiZCP0puKGUpOnZvaWQgMCxyPWUsaT10LChuPXRoaXMpLiRlbD1yLG4uJG9wdGlvbnMucmVuZGVyfHwobi4kb3B0aW9ucy5yZW5kZXI9ZmUpLF90KG4sImJlZm9yZU1vdW50IiksbmV3IFN0KG4sZnVuY3Rpb24oKXtuLl91cGRhdGUobi5fcmVuZGVyKCksaSl9LCQsbnVsbCwhMCksaT0hMSxudWxsPT1uLiR2bm9kZSYmKG4uX2lzTW91bnRlZD0hMCxfdChuLCJtb3VudGVkIikpLG47dmFyIG4scixpfSxCJiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ai5kZXZ0b29scyYmUSYmUS5lbWl0KCJpbml0Iixobil9LDApO3ZhciBXaT0vXHtceygoPzoufFxuKSs/KVx9XH0vZyxHaT0vWy0uKis/XiR7fSgpfFtcXVwvXFxdL2csWmk9ZShmdW5jdGlvbihlKXt2YXIgdD1lWzBdLnJlcGxhY2UoR2ksIlxcJCYiKSxuPWVbMV0ucmVwbGFjZShHaSwiXFwkJiIpO3JldHVybiBuZXcgUmVnRXhwKHQrIigoPzoufFxcbikrPykiK24sImciKX0pO3ZhciBYaT17c3RhdGljS2V5czpbInN0YXRpY0NsYXNzIl0sdHJhbnNmb3JtTm9kZTpmdW5jdGlvbihlLHQpe3Qud2Fybjt2YXIgbj1TcihlLCJjbGFzcyIpO24mJihlLnN0YXRpY0NsYXNzPUpTT04uc3RyaW5naWZ5KG4pKTt2YXIgcj1PcihlLCJjbGFzcyIsITEpO3ImJihlLmNsYXNzQmluZGluZz1yKX0sZ2VuRGF0YTpmdW5jdGlvbihlKXt2YXIgdD0iIjtyZXR1cm4gZS5zdGF0aWNDbGFzcyYmKHQrPSJzdGF0aWNDbGFzczoiK2Uuc3RhdGljQ2xhc3MrIiwiKSxlLmNsYXNzQmluZGluZyYmKHQrPSJjbGFzczoiK2UuY2xhc3NCaW5kaW5nKyIsIiksdH19O3ZhciBZaSxRaT17c3RhdGljS2V5czpbInN0YXRpY1N0eWxlIl0sdHJhbnNmb3JtTm9kZTpmdW5jdGlvbihlLHQpe3Qud2Fybjt2YXIgbj1TcihlLCJzdHlsZSIpO24mJihlLnN0YXRpY1N0eWxlPUpTT04uc3RyaW5naWZ5KEtyKG4pKSk7dmFyIHI9T3IoZSwic3R5bGUiLCExKTtyJiYoZS5zdHlsZUJpbmRpbmc9cil9LGdlbkRhdGE6ZnVuY3Rpb24oZSl7dmFyIHQ9IiI7cmV0dXJuIGUuc3RhdGljU3R5bGUmJih0Kz0ic3RhdGljU3R5bGU6IitlLnN0YXRpY1N0eWxlKyIsIiksZS5zdHlsZUJpbmRpbmcmJih0Kz0ic3R5bGU6KCIrZS5zdHlsZUJpbmRpbmcrIiksIiksdH19LGVvPWZ1bmN0aW9uKGUpe3JldHVybihZaT1ZaXx8ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpLmlubmVySFRNTD1lLFlpLnRleHRDb250ZW50fSx0bz1zKCJhcmVhLGJhc2UsYnIsY29sLGVtYmVkLGZyYW1lLGhyLGltZyxpbnB1dCxpc2luZGV4LGtleWdlbixsaW5rLG1ldGEscGFyYW0sc291cmNlLHRyYWNrLHdiciIpLG5vPXMoImNvbGdyb3VwLGRkLGR0LGxpLG9wdGlvbnMscCx0ZCx0Zm9vdCx0aCx0aGVhZCx0cixzb3VyY2UiKSxybz1zKCJhZGRyZXNzLGFydGljbGUsYXNpZGUsYmFzZSxibG9ja3F1b3RlLGJvZHksY2FwdGlvbixjb2wsY29sZ3JvdXAsZGQsZGV0YWlscyxkaWFsb2csZGl2LGRsLGR0LGZpZWxkc2V0LGZpZ2NhcHRpb24sZmlndXJlLGZvb3Rlcixmb3JtLGgxLGgyLGgzLGg0LGg1LGg2LGhlYWQsaGVhZGVyLGhncm91cCxocixodG1sLGxlZ2VuZCxsaSxtZW51aXRlbSxtZXRhLG9wdGdyb3VwLG9wdGlvbixwYXJhbSxycCxydCxzb3VyY2Usc3R5bGUsc3VtbWFyeSx0Ym9keSx0ZCx0Zm9vdCx0aCx0aGVhZCx0aXRsZSx0cix0cmFjayIpLGlvPS9eXHMqKFteXHMiJzw+XC89XSspKD86XHMqKD0pXHMqKD86IihbXiJdKikiK3wnKFteJ10qKScrfChbXlxzIic9PD5gXSspKSk/Lyxvbz0iW2EtekEtWl9dW1xcd1xcLVxcLl0qIixhbz0iKCg/OiIrb28rIlxcOik/IitvbysiKSIsc289bmV3IFJlZ0V4cCgiXjwiK2FvKSxjbz0vXlxzKihcLz8pPi8sbG89bmV3IFJlZ0V4cCgiXjxcXC8iK2FvKyJbXj5dKj4iKSx1bz0vXjwhRE9DVFlQRSBbXj5dKz4vaSxmbz0vXjwhXC0tLyxwbz0vXjwhXFsvLHZvPSExOyJ4Ii5yZXBsYWNlKC94KC4pPy9nLGZ1bmN0aW9uKGUsdCl7dm89IiI9PT10fSk7dmFyIGhvPXMoInNjcmlwdCxzdHlsZSx0ZXh0YXJlYSIsITApLG1vPXt9LHlvPXsiJmx0OyI6IjwiLCImZ3Q7IjoiPiIsIiZxdW90OyI6JyInLCImYW1wOyI6IiYiLCImIzEwOyI6IlxuIiwiJiM5OyI6Ilx0In0sZ289LyYoPzpsdHxndHxxdW90fGFtcCk7L2csX289LyYoPzpsdHxndHxxdW90fGFtcHwjMTB8IzkpOy9nLGJvPXMoInByZSx0ZXh0YXJlYSIsITApLCRvPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUmJmJvKGUpJiYiXG4iPT09dFswXX07dmFyIHdvLENvLHhvLGtvLEFvLE9vLFNvLFRvLEVvPS9eQHxedi1vbjovLGpvPS9edi18XkB8XjovLE5vPS8oW15dKj8pXHMrKD86aW58b2YpXHMrKFteXSopLyxMbz0vLChbXixcfVxdXSopKD86LChbXixcfVxdXSopKT8kLyxJbz0vXlwofFwpJC9nLE1vPS86KC4qKSQvLERvPS9eOnxedi1iaW5kOi8sUG89L1wuW14uXSsvZyxGbz1lKGVvKTtmdW5jdGlvbiBSbyhlLHQsbil7cmV0dXJue3R5cGU6MSx0YWc6ZSxhdHRyc0xpc3Q6dCxhdHRyc01hcDpmdW5jdGlvbihlKXtmb3IodmFyIHQ9e30sbj0wLHI9ZS5sZW5ndGg7bjxyO24rKyl0W2Vbbl0ubmFtZV09ZVtuXS52YWx1ZTtyZXR1cm4gdH0odCkscGFyZW50Om4sY2hpbGRyZW46W119fWZ1bmN0aW9uIEhvKGUscCl7d289cC53YXJufHwkcixPbz1wLmlzUHJlVGFnfHxPLFNvPXAubXVzdFVzZVByb3B8fE8sVG89cC5nZXRUYWdOYW1lc3BhY2V8fE8seG89d3IocC5tb2R1bGVzLCJ0cmFuc2Zvcm1Ob2RlIiksa289d3IocC5tb2R1bGVzLCJwcmVUcmFuc2Zvcm1Ob2RlIiksQW89d3IocC5tb2R1bGVzLCJwb3N0VHJhbnNmb3JtTm9kZSIpLENvPXAuZGVsaW1pdGVyczt2YXIgZCx2LGg9W10saT0hMSE9PXAucHJlc2VydmVXaGl0ZXNwYWNlLG09ITEseT0hMTtmdW5jdGlvbiBnKGUpe2UucHJlJiYobT0hMSksT28oZS50YWcpJiYoeT0hMSk7Zm9yKHZhciB0PTA7dDxBby5sZW5ndGg7dCsrKUFvW3RdKGUscCl9cmV0dXJuIGZ1bmN0aW9uKGksZCl7Zm9yKHZhciBlLHYsaD1bXSxtPWQuZXhwZWN0SFRNTCx5PWQuaXNVbmFyeVRhZ3x8TyxnPWQuY2FuQmVMZWZ0T3BlblRhZ3x8TyxhPTA7aTspe2lmKGU9aSx2JiZobyh2KSl7dmFyIHI9MCxvPXYudG9Mb3dlckNhc2UoKSx0PW1vW29dfHwobW9bb109bmV3IFJlZ0V4cCgiKFtcXHNcXFNdKj8pKDwvIitvKyJbXj5dKj4pIiwiaSIpKSxuPWkucmVwbGFjZSh0LGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gcj1uLmxlbmd0aCxobyhvKXx8Im5vc2NyaXB0Ij09PW98fCh0PXQucmVwbGFjZSgvPCFcLS0oW1xzXFNdKj8pLS0+L2csIiQxIikucmVwbGFjZSgvPCFcW0NEQVRBXFsoW1xzXFNdKj8pXV0+L2csIiQxIikpLCRvKG8sdCkmJih0PXQuc2xpY2UoMSkpLGQuY2hhcnMmJmQuY2hhcnModCksIiJ9KTthKz1pLmxlbmd0aC1uLmxlbmd0aCxpPW4sQShvLGEtcixhKX1lbHNle3ZhciBzPWkuaW5kZXhPZigiPCIpO2lmKDA9PT1zKXtpZihmby50ZXN0KGkpKXt2YXIgYz1pLmluZGV4T2YoIi0tXHgzZSIpO2lmKDA8PWMpe2Quc2hvdWxkS2VlcENvbW1lbnQmJmQuY29tbWVudChpLnN1YnN0cmluZyg0LGMpKSxDKGMrMyk7Y29udGludWV9fWlmKHBvLnRlc3QoaSkpe3ZhciBsPWkuaW5kZXhPZigiXT4iKTtpZigwPD1sKXtDKGwrMik7Y29udGludWV9fXZhciB1PWkubWF0Y2godW8pO2lmKHUpe0ModVswXS5sZW5ndGgpO2NvbnRpbnVlfXZhciBmPWkubWF0Y2gobG8pO2lmKGYpe3ZhciBwPWE7QyhmWzBdLmxlbmd0aCksQShmWzFdLHAsYSk7Y29udGludWV9dmFyIF89eCgpO2lmKF8pe2soXyksJG8odixpKSYmQygxKTtjb250aW51ZX19dmFyIGI9dm9pZCAwLCQ9dm9pZCAwLHc9dm9pZCAwO2lmKDA8PXMpe2ZvcigkPWkuc2xpY2Uocyk7IShsby50ZXN0KCQpfHxzby50ZXN0KCQpfHxmby50ZXN0KCQpfHxwby50ZXN0KCQpfHwodz0kLmluZGV4T2YoIjwiLDEpKTwwKTspcys9dywkPWkuc2xpY2Uocyk7Yj1pLnN1YnN0cmluZygwLHMpLEMocyl9czwwJiYoYj1pLGk9IiIpLGQuY2hhcnMmJmImJmQuY2hhcnMoYil9aWYoaT09PWUpe2QuY2hhcnMmJmQuY2hhcnMoaSk7YnJlYWt9fWZ1bmN0aW9uIEMoZSl7YSs9ZSxpPWkuc3Vic3RyaW5nKGUpfWZ1bmN0aW9uIHgoKXt2YXIgZT1pLm1hdGNoKHNvKTtpZihlKXt2YXIgdCxuLHI9e3RhZ05hbWU6ZVsxXSxhdHRyczpbXSxzdGFydDphfTtmb3IoQyhlWzBdLmxlbmd0aCk7ISh0PWkubWF0Y2goY28pKSYmKG49aS5tYXRjaChpbykpOylDKG5bMF0ubGVuZ3RoKSxyLmF0dHJzLnB1c2gobik7aWYodClyZXR1cm4gci51bmFyeVNsYXNoPXRbMV0sQyh0WzBdLmxlbmd0aCksci5lbmQ9YSxyfX1mdW5jdGlvbiBrKGUpe3ZhciB0PWUudGFnTmFtZSxuPWUudW5hcnlTbGFzaDttJiYoInAiPT09diYmcm8odCkmJkEodiksZyh0KSYmdj09PXQmJkEodCkpO2Zvcih2YXIgcixpLG8sYT15KHQpfHwhIW4scz1lLmF0dHJzLmxlbmd0aCxjPW5ldyBBcnJheShzKSxsPTA7bDxzO2wrKyl7dmFyIHU9ZS5hdHRyc1tsXTt2byYmLTE9PT11WzBdLmluZGV4T2YoJyIiJykmJigiIj09PXVbM10mJmRlbGV0ZSB1WzNdLCIiPT09dVs0XSYmZGVsZXRlIHVbNF0sIiI9PT11WzVdJiZkZWxldGUgdVs1XSk7dmFyIGY9dVszXXx8dVs0XXx8dVs1XXx8IiIscD0iYSI9PT10JiYiaHJlZiI9PT11WzFdP2Quc2hvdWxkRGVjb2RlTmV3bGluZXNGb3JIcmVmOmQuc2hvdWxkRGVjb2RlTmV3bGluZXM7Y1tsXT17bmFtZTp1WzFdLHZhbHVlOihyPWYsaT1wLG89aT9fbzpnbyxyLnJlcGxhY2UobyxmdW5jdGlvbihlKXtyZXR1cm4geW9bZV19KSl9fWF8fChoLnB1c2goe3RhZzp0LGxvd2VyQ2FzZWRUYWc6dC50b0xvd2VyQ2FzZSgpLGF0dHJzOmN9KSx2PXQpLGQuc3RhcnQmJmQuc3RhcnQodCxjLGEsZS5zdGFydCxlLmVuZCl9ZnVuY3Rpb24gQShlLHQsbil7dmFyIHIsaTtpZihudWxsPT10JiYodD1hKSxudWxsPT1uJiYobj1hKSxlJiYoaT1lLnRvTG93ZXJDYXNlKCkpLGUpZm9yKHI9aC5sZW5ndGgtMTswPD1yJiZoW3JdLmxvd2VyQ2FzZWRUYWchPT1pO3ItLSk7ZWxzZSByPTA7aWYoMDw9cil7Zm9yKHZhciBvPWgubGVuZ3RoLTE7cjw9bztvLS0pZC5lbmQmJmQuZW5kKGhbb10udGFnLHQsbik7aC5sZW5ndGg9cix2PXImJmhbci0xXS50YWd9ZWxzZSJiciI9PT1pP2Quc3RhcnQmJmQuc3RhcnQoZSxbXSwhMCx0LG4pOiJwIj09PWkmJihkLnN0YXJ0JiZkLnN0YXJ0KGUsW10sITEsdCxuKSxkLmVuZCYmZC5lbmQoZSx0LG4pKX1BKCl9KGUse3dhcm46d28sZXhwZWN0SFRNTDpwLmV4cGVjdEhUTUwsaXNVbmFyeVRhZzpwLmlzVW5hcnlUYWcsY2FuQmVMZWZ0T3BlblRhZzpwLmNhbkJlTGVmdE9wZW5UYWcsc2hvdWxkRGVjb2RlTmV3bGluZXM6cC5zaG91bGREZWNvZGVOZXdsaW5lcyxzaG91bGREZWNvZGVOZXdsaW5lc0ZvckhyZWY6cC5zaG91bGREZWNvZGVOZXdsaW5lc0ZvckhyZWYsc2hvdWxkS2VlcENvbW1lbnQ6cC5jb21tZW50cyxzdGFydDpmdW5jdGlvbihlLHQsbil7dmFyIHI9diYmdi5uc3x8VG8oZSk7SyYmInN2ZyI9PT1yJiYodD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9W10sbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcj1lW25dO0tvLnRlc3Qoci5uYW1lKXx8KHIubmFtZT1yLm5hbWUucmVwbGFjZShKbywiIiksdC5wdXNoKHIpKX1yZXR1cm4gdH0odCkpO3ZhciBpLG8sYSxzLGMsbD1SbyhlLHQsdik7ciYmKGwubnM9ciksInN0eWxlIiE9PShpPWwpLnRhZyYmKCJzY3JpcHQiIT09aS50YWd8fGkuYXR0cnNNYXAudHlwZSYmInRleHQvamF2YXNjcmlwdCIhPT1pLmF0dHJzTWFwLnR5cGUpfHxZKCl8fChsLmZvcmJpZGRlbj0hMCk7Zm9yKHZhciB1PTA7dTxrby5sZW5ndGg7dSsrKWw9a29bdV0obCxwKXx8bDtpZihtfHwobnVsbCE9U3Iobz1sLCJ2LXByZSIpJiYoby5wcmU9ITApLGwucHJlJiYobT0hMCkpLE9vKGwudGFnKSYmKHk9ITApLG0/ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5hdHRyc0xpc3QubGVuZ3RoO2lmKHQpZm9yKHZhciBuPWUuYXR0cnM9bmV3IEFycmF5KHQpLHI9MDtyPHQ7cisrKW5bcl09e25hbWU6ZS5hdHRyc0xpc3Rbcl0ubmFtZSx2YWx1ZTpKU09OLnN0cmluZ2lmeShlLmF0dHJzTGlzdFtyXS52YWx1ZSl9O2Vsc2UgZS5wcmV8fChlLnBsYWluPSEwKX0obCk6bC5wcm9jZXNzZWR8fChVbyhsKSxmdW5jdGlvbihlKXt2YXIgdD1TcihlLCJ2LWlmIik7aWYodCllLmlmPXQsVm8oZSx7ZXhwOnQsYmxvY2s6ZX0pO2Vsc2V7bnVsbCE9U3IoZSwidi1lbHNlIikmJihlLmVsc2U9ITApO3ZhciBuPVNyKGUsInYtZWxzZS1pZiIpO24mJihlLmVsc2VpZj1uKX19KGwpLG51bGwhPVNyKGE9bCwidi1vbmNlIikmJihhLm9uY2U9ITApLEJvKGwscCkpLGQ/aC5sZW5ndGh8fGQuaWYmJihsLmVsc2VpZnx8bC5lbHNlKSYmVm8oZCx7ZXhwOmwuZWxzZWlmLGJsb2NrOmx9KTpkPWwsdiYmIWwuZm9yYmlkZGVuKWlmKGwuZWxzZWlmfHxsLmVsc2Upcz1sLChjPWZ1bmN0aW9uKGUpe3ZhciB0PWUubGVuZ3RoO2Zvcig7dC0tOyl7aWYoMT09PWVbdF0udHlwZSlyZXR1cm4gZVt0XTtlLnBvcCgpfX0odi5jaGlsZHJlbikpJiZjLmlmJiZWbyhjLHtleHA6cy5lbHNlaWYsYmxvY2s6c30pO2Vsc2UgaWYobC5zbG90U2NvcGUpe3YucGxhaW49ITE7dmFyIGY9bC5zbG90VGFyZ2V0fHwnImRlZmF1bHQiJzsodi5zY29wZWRTbG90c3x8KHYuc2NvcGVkU2xvdHM9e30pKVtmXT1sfWVsc2Ugdi5jaGlsZHJlbi5wdXNoKGwpLGwucGFyZW50PXY7bj9nKGwpOih2PWwsaC5wdXNoKGwpKX0sZW5kOmZ1bmN0aW9uKCl7dmFyIGU9aFtoLmxlbmd0aC0xXSx0PWUuY2hpbGRyZW5bZS5jaGlsZHJlbi5sZW5ndGgtMV07dCYmMz09PXQudHlwZSYmIiAiPT09dC50ZXh0JiYheSYmZS5jaGlsZHJlbi5wb3AoKSxoLmxlbmd0aC09MSx2PWhbaC5sZW5ndGgtMV0sZyhlKX0sY2hhcnM6ZnVuY3Rpb24oZSl7aWYodiYmKCFLfHwidGV4dGFyZWEiIT09di50YWd8fHYuYXR0cnNNYXAucGxhY2Vob2xkZXIhPT1lKSl7dmFyIHQsbixyPXYuY2hpbGRyZW47aWYoZT15fHxlLnRyaW0oKT8ic2NyaXB0Ij09PSh0PXYpLnRhZ3x8InN0eWxlIj09PXQudGFnP2U6Rm8oZSk6aSYmci5sZW5ndGg/IiAiOiIiKSFtJiYiICIhPT1lJiYobj1mdW5jdGlvbihlLHQpe3ZhciBuPXQ/WmkodCk6V2k7aWYobi50ZXN0KGUpKXtmb3IodmFyIHIsaSxvLGE9W10scz1bXSxjPW4ubGFzdEluZGV4PTA7cj1uLmV4ZWMoZSk7KXtjPChpPXIuaW5kZXgpJiYocy5wdXNoKG89ZS5zbGljZShjLGkpKSxhLnB1c2goSlNPTi5zdHJpbmdpZnkobykpKTt2YXIgbD1fcihyWzFdLnRyaW0oKSk7YS5wdXNoKCJfcygiK2wrIikiKSxzLnB1c2goeyJAYmluZGluZyI6bH0pLGM9aStyWzBdLmxlbmd0aH1yZXR1cm4gYzxlLmxlbmd0aCYmKHMucHVzaChvPWUuc2xpY2UoYykpLGEucHVzaChKU09OLnN0cmluZ2lmeShvKSkpLHtleHByZXNzaW9uOmEuam9pbigiKyIpLHRva2VuczpzfX19KGUsQ28pKT9yLnB1c2goe3R5cGU6MixleHByZXNzaW9uOm4uZXhwcmVzc2lvbix0b2tlbnM6bi50b2tlbnMsdGV4dDplfSk6IiAiPT09ZSYmci5sZW5ndGgmJiIgIj09PXJbci5sZW5ndGgtMV0udGV4dHx8ci5wdXNoKHt0eXBlOjMsdGV4dDplfSl9fSxjb21tZW50OmZ1bmN0aW9uKGUpe3YuY2hpbGRyZW4ucHVzaCh7dHlwZTozLHRleHQ6ZSxpc0NvbW1lbnQ6ITB9KX19KSxkfWZ1bmN0aW9uIEJvKGUsdCl7dmFyIG4scixpLG87KHI9T3Iobj1lLCJrZXkiKSkmJihuLmtleT1yKSxlLnBsYWluPSFlLmtleSYmIWUuYXR0cnNMaXN0Lmxlbmd0aCwobz1PcihpPWUsInJlZiIpKSYmKGkucmVmPW8saS5yZWZJbkZvcj1mdW5jdGlvbihlKXtmb3IodmFyIHQ9ZTt0Oyl7aWYodm9pZCAwIT09dC5mb3IpcmV0dXJuITA7dD10LnBhcmVudH1yZXR1cm4hMX0oaSkpLGZ1bmN0aW9uKGUpe2lmKCJzbG90Ij09PWUudGFnKWUuc2xvdE5hbWU9T3IoZSwibmFtZSIpO2Vsc2V7dmFyIHQ7InRlbXBsYXRlIj09PWUudGFnPyh0PVNyKGUsInNjb3BlIiksZS5zbG90U2NvcGU9dHx8U3IoZSwic2xvdC1zY29wZSIpKToodD1TcihlLCJzbG90LXNjb3BlIikpJiYoZS5zbG90U2NvcGU9dCk7dmFyIG49T3IoZSwic2xvdCIpO24mJihlLnNsb3RUYXJnZXQ9JyIiJz09PW4/JyJkZWZhdWx0Iic6biwidGVtcGxhdGUiPT09ZS50YWd8fGUuc2xvdFNjb3BlfHx4cihlLCJzbG90IixuKSl9fShlKSxmdW5jdGlvbihlKXt2YXIgdDsodD1PcihlLCJpcyIpKSYmKGUuY29tcG9uZW50PXQpO251bGwhPVNyKGUsImlubGluZS10ZW1wbGF0ZSIpJiYoZS5pbmxpbmVUZW1wbGF0ZT0hMCl9KGUpO2Zvcih2YXIgYT0wO2E8eG8ubGVuZ3RoO2ErKyllPXhvW2FdKGUsdCl8fGU7IWZ1bmN0aW9uKGUpe3ZhciB0LG4scixpLG8sYSxzLGM9ZS5hdHRyc0xpc3Q7Zm9yKHQ9MCxuPWMubGVuZ3RoO3Q8bjt0KyspaWYocj1pPWNbdF0ubmFtZSxvPWNbdF0udmFsdWUsam8udGVzdChyKSlpZihlLmhhc0JpbmRpbmdzPSEwLChhPXpvKHIpKSYmKHI9ci5yZXBsYWNlKFBvLCIiKSksRG8udGVzdChyKSlyPXIucmVwbGFjZShEbywiIiksbz1fcihvKSxzPSExLGEmJihhLnByb3AmJihzPSEwLCJpbm5lckh0bWwiPT09KHI9ZyhyKSkmJihyPSJpbm5lckhUTUwiKSksYS5jYW1lbCYmKHI9ZyhyKSksYS5zeW5jJiZBcihlLCJ1cGRhdGU6IitnKHIpLEVyKG8sIiRldmVudCIpKSksc3x8IWUuY29tcG9uZW50JiZTbyhlLnRhZyxlLmF0dHJzTWFwLnR5cGUscik/Q3IoZSxyLG8pOnhyKGUscixvKTtlbHNlIGlmKEVvLnRlc3Qocikpcj1yLnJlcGxhY2UoRW8sIiIpLEFyKGUscixvLGEsITEpO2Vsc2V7dmFyIGw9KHI9ci5yZXBsYWNlKGpvLCIiKSkubWF0Y2goTW8pLHU9bCYmbFsxXTt1JiYocj1yLnNsaWNlKDAsLSh1Lmxlbmd0aCsxKSkpLHA9cixkPWksdj1vLGg9dSxtPWEsKChmPWUpLmRpcmVjdGl2ZXN8fChmLmRpcmVjdGl2ZXM9W10pKS5wdXNoKHtuYW1lOnAscmF3TmFtZTpkLHZhbHVlOnYsYXJnOmgsbW9kaWZpZXJzOm19KSxmLnBsYWluPSExfWVsc2UgeHIoZSxyLEpTT04uc3RyaW5naWZ5KG8pKSwhZS5jb21wb25lbnQmJiJtdXRlZCI9PT1yJiZTbyhlLnRhZyxlLmF0dHJzTWFwLnR5cGUscikmJkNyKGUsciwidHJ1ZSIpO3ZhciBmLHAsZCx2LGgsbX0oZSl9ZnVuY3Rpb24gVW8oZSl7dmFyIHQ7aWYodD1TcihlLCJ2LWZvciIpKXt2YXIgbj1mdW5jdGlvbihlKXt2YXIgdD1lLm1hdGNoKE5vKTtpZighdClyZXR1cm47dmFyIG49e307bi5mb3I9dFsyXS50cmltKCk7dmFyIHI9dFsxXS50cmltKCkucmVwbGFjZShJbywiIiksaT1yLm1hdGNoKExvKTtpPyhuLmFsaWFzPXIucmVwbGFjZShMbywiIiksbi5pdGVyYXRvcjE9aVsxXS50cmltKCksaVsyXSYmKG4uaXRlcmF0b3IyPWlbMl0udHJpbSgpKSk6bi5hbGlhcz1yO3JldHVybiBufSh0KTtuJiZtKGUsbil9fWZ1bmN0aW9uIFZvKGUsdCl7ZS5pZkNvbmRpdGlvbnN8fChlLmlmQ29uZGl0aW9ucz1bXSksZS5pZkNvbmRpdGlvbnMucHVzaCh0KX1mdW5jdGlvbiB6byhlKXt2YXIgdD1lLm1hdGNoKFBvKTtpZih0KXt2YXIgbj17fTtyZXR1cm4gdC5mb3JFYWNoKGZ1bmN0aW9uKGUpe25bZS5zbGljZSgxKV09ITB9KSxufX12YXIgS289L154bWxuczpOU1xkKy8sSm89L15OU1xkKzovO2Z1bmN0aW9uIHFvKGUpe3JldHVybiBSbyhlLnRhZyxlLmF0dHJzTGlzdC5zbGljZSgpLGUucGFyZW50KX12YXIgV289W1hpLFFpLHtwcmVUcmFuc2Zvcm1Ob2RlOmZ1bmN0aW9uKGUsdCl7aWYoImlucHV0Ij09PWUudGFnKXt2YXIgbixyPWUuYXR0cnNNYXA7aWYoIXJbInYtbW9kZWwiXSlyZXR1cm47aWYoKHJbIjp0eXBlIl18fHJbInYtYmluZDp0eXBlIl0pJiYobj1PcihlLCJ0eXBlIikpLHIudHlwZXx8bnx8IXJbInYtYmluZCJdfHwobj0iKCIrclsidi1iaW5kIl0rIikudHlwZSIpLG4pe3ZhciBpPVNyKGUsInYtaWYiLCEwKSxvPWk/IiYmKCIraSsiKSI6IiIsYT1udWxsIT1TcihlLCJ2LWVsc2UiLCEwKSxzPVNyKGUsInYtZWxzZS1pZiIsITApLGM9cW8oZSk7VW8oYyksa3IoYywidHlwZSIsImNoZWNrYm94IiksQm8oYyx0KSxjLnByb2Nlc3NlZD0hMCxjLmlmPSIoIituKyIpPT09J2NoZWNrYm94JyIrbyxWbyhjLHtleHA6Yy5pZixibG9jazpjfSk7dmFyIGw9cW8oZSk7U3IobCwidi1mb3IiLCEwKSxrcihsLCJ0eXBlIiwicmFkaW8iKSxCbyhsLHQpLFZvKGMse2V4cDoiKCIrbisiKT09PSdyYWRpbyciK28sYmxvY2s6bH0pO3ZhciB1PXFvKGUpO3JldHVybiBTcih1LCJ2LWZvciIsITApLGtyKHUsIjp0eXBlIixuKSxCbyh1LHQpLFZvKGMse2V4cDppLGJsb2NrOnV9KSxhP2MuZWxzZT0hMDpzJiYoYy5lbHNlaWY9cyksY319fX1dO3ZhciBHbyxabyxYbyxZbz17ZXhwZWN0SFRNTDohMCxtb2R1bGVzOldvLGRpcmVjdGl2ZXM6e21vZGVsOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG8sYSxzLGMsbCx1LGYscCxkLHYsaCxtLHksZyxfPXQudmFsdWUsYj10Lm1vZGlmaWVycywkPWUudGFnLHc9ZS5hdHRyc01hcC50eXBlO2lmKGUuY29tcG9uZW50KXJldHVybiBUcihlLF8sYiksITE7aWYoInNlbGVjdCI9PT0kKWg9ZSxtPV8sZz0oZz0ndmFyICQkc2VsZWN0ZWRWYWwgPSBBcnJheS5wcm90b3R5cGUuZmlsdGVyLmNhbGwoJGV2ZW50LnRhcmdldC5vcHRpb25zLGZ1bmN0aW9uKG8pe3JldHVybiBvLnNlbGVjdGVkfSkubWFwKGZ1bmN0aW9uKG8pe3ZhciB2YWwgPSAiX3ZhbHVlIiBpbiBvID8gby5fdmFsdWUgOiBvLnZhbHVlO3JldHVybiAnKygoeT1iKSYmeS5udW1iZXI/Il9uKHZhbCkiOiJ2YWwiKSsifSk7IikrIiAiK0VyKG0sIiRldmVudC50YXJnZXQubXVsdGlwbGUgPyAkJHNlbGVjdGVkVmFsIDogJCRzZWxlY3RlZFZhbFswXSIpLEFyKGgsImNoYW5nZSIsZyxudWxsLCEwKTtlbHNlIGlmKCJpbnB1dCI9PT0kJiYiY2hlY2tib3giPT09dyljPWUsbD1fLGY9KHU9YikmJnUubnVtYmVyLHA9T3IoYywidmFsdWUiKXx8Im51bGwiLGQ9T3IoYywidHJ1ZS12YWx1ZSIpfHwidHJ1ZSIsdj1PcihjLCJmYWxzZS12YWx1ZSIpfHwiZmFsc2UiLENyKGMsImNoZWNrZWQiLCJBcnJheS5pc0FycmF5KCIrbCsiKT9faSgiK2wrIiwiK3ArIik+LTEiKygidHJ1ZSI9PT1kPyI6KCIrbCsiKSI6IjpfcSgiK2wrIiwiK2QrIikiKSksQXIoYywiY2hhbmdlIiwidmFyICQkYT0iK2wrIiwkJGVsPSRldmVudC50YXJnZXQsJCRjPSQkZWwuY2hlY2tlZD8oIitkKyIpOigiK3YrIik7aWYoQXJyYXkuaXNBcnJheSgkJGEpKXt2YXIgJCR2PSIrKGY/Il9uKCIrcCsiKSI6cCkrIiwkJGk9X2koJCRhLCQkdik7aWYoJCRlbC5jaGVja2VkKXskJGk8MCYmKCIrRXIobCwiJCRhLmNvbmNhdChbJCR2XSkiKSsiKX1lbHNleyQkaT4tMSYmKCIrRXIobCwiJCRhLnNsaWNlKDAsJCRpKS5jb25jYXQoJCRhLnNsaWNlKCQkaSsxKSkiKSsiKX19ZWxzZXsiK0VyKGwsIiQkYyIpKyJ9IixudWxsLCEwKTtlbHNlIGlmKCJpbnB1dCI9PT0kJiYicmFkaW8iPT09dylyPWUsaT1fLGE9KG89YikmJm8ubnVtYmVyLHM9T3IociwidmFsdWUiKXx8Im51bGwiLENyKHIsImNoZWNrZWQiLCJfcSgiK2krIiwiKyhzPWE/Il9uKCIrcysiKSI6cykrIikiKSxBcihyLCJjaGFuZ2UiLEVyKGkscyksbnVsbCwhMCk7ZWxzZSBpZigiaW5wdXQiPT09JHx8InRleHRhcmVhIj09PSQpIWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lLmF0dHJzTWFwLnR5cGUsaT1ufHx7fSxvPWkubGF6eSxhPWkubnVtYmVyLHM9aS50cmltLGM9IW8mJiJyYW5nZSIhPT1yLGw9bz8iY2hhbmdlIjoicmFuZ2UiPT09cj9QcjoiaW5wdXQiLHU9IiRldmVudC50YXJnZXQudmFsdWUiO3MmJih1PSIkZXZlbnQudGFyZ2V0LnZhbHVlLnRyaW0oKSIpLGEmJih1PSJfbigiK3UrIikiKTt2YXIgZj1Fcih0LHUpO2MmJihmPSJpZigkZXZlbnQudGFyZ2V0LmNvbXBvc2luZylyZXR1cm47IitmKSxDcihlLCJ2YWx1ZSIsIigiK3QrIikiKSxBcihlLGwsZixudWxsLCEwKSwoc3x8YSkmJkFyKGUsImJsdXIiLCIkZm9yY2VVcGRhdGUoKSIpfShlLF8sYik7ZWxzZSBpZighai5pc1Jlc2VydmVkVGFnKCQpKXJldHVybiBUcihlLF8sYiksITE7cmV0dXJuITB9LHRleHQ6ZnVuY3Rpb24oZSx0KXt0LnZhbHVlJiZDcihlLCJ0ZXh0Q29udGVudCIsIl9zKCIrdC52YWx1ZSsiKSIpfSxodG1sOmZ1bmN0aW9uKGUsdCl7dC52YWx1ZSYmQ3IoZSwiaW5uZXJIVE1MIiwiX3MoIit0LnZhbHVlKyIpIil9fSxpc1ByZVRhZzpmdW5jdGlvbihlKXtyZXR1cm4icHJlIj09PWV9LGlzVW5hcnlUYWc6dG8sbXVzdFVzZVByb3A6U24sY2FuQmVMZWZ0T3BlblRhZzpubyxpc1Jlc2VydmVkVGFnOlVuLGdldFRhZ05hbWVzcGFjZTpWbixzdGF0aWNLZXlzOihHbz1XbyxHby5yZWR1Y2UoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jb25jYXQodC5zdGF0aWNLZXlzfHxbXSl9LFtdKS5qb2luKCIsIikpfSxRbz1lKGZ1bmN0aW9uKGUpe3JldHVybiBzKCJ0eXBlLHRhZyxhdHRyc0xpc3QsYXR0cnNNYXAscGxhaW4scGFyZW50LGNoaWxkcmVuLGF0dHJzIisoZT8iLCIrZToiIikpfSk7ZnVuY3Rpb24gZWEoZSx0KXtlJiYoWm89UW8odC5zdGF0aWNLZXlzfHwiIiksWG89dC5pc1Jlc2VydmVkVGFnfHxPLGZ1bmN0aW9uIGUodCl7dC5zdGF0aWM9ZnVuY3Rpb24oZSl7aWYoMj09PWUudHlwZSlyZXR1cm4hMTtpZigzPT09ZS50eXBlKXJldHVybiEwO3JldHVybiEoIWUucHJlJiYoZS5oYXNCaW5kaW5nc3x8ZS5pZnx8ZS5mb3J8fGMoZS50YWcpfHwhWG8oZS50YWcpfHxmdW5jdGlvbihlKXtmb3IoO2UucGFyZW50Oyl7aWYoInRlbXBsYXRlIiE9PShlPWUucGFyZW50KS50YWcpcmV0dXJuITE7aWYoZS5mb3IpcmV0dXJuITB9cmV0dXJuITF9KGUpfHwhT2JqZWN0LmtleXMoZSkuZXZlcnkoWm8pKSl9KHQpO2lmKDE9PT10LnR5cGUpe2lmKCFYbyh0LnRhZykmJiJzbG90IiE9PXQudGFnJiZudWxsPT10LmF0dHJzTWFwWyJpbmxpbmUtdGVtcGxhdGUiXSlyZXR1cm47Zm9yKHZhciBuPTAscj10LmNoaWxkcmVuLmxlbmd0aDtuPHI7bisrKXt2YXIgaT10LmNoaWxkcmVuW25dO2UoaSksaS5zdGF0aWN8fCh0LnN0YXRpYz0hMSl9aWYodC5pZkNvbmRpdGlvbnMpZm9yKHZhciBvPTEsYT10LmlmQ29uZGl0aW9ucy5sZW5ndGg7bzxhO28rKyl7dmFyIHM9dC5pZkNvbmRpdGlvbnNbb10uYmxvY2s7ZShzKSxzLnN0YXRpY3x8KHQuc3RhdGljPSExKX19fShlKSxmdW5jdGlvbiBlKHQsbil7aWYoMT09PXQudHlwZSl7aWYoKHQuc3RhdGljfHx0Lm9uY2UpJiYodC5zdGF0aWNJbkZvcj1uKSx0LnN0YXRpYyYmdC5jaGlsZHJlbi5sZW5ndGgmJigxIT09dC5jaGlsZHJlbi5sZW5ndGh8fDMhPT10LmNoaWxkcmVuWzBdLnR5cGUpKXJldHVybiB2b2lkKHQuc3RhdGljUm9vdD0hMCk7aWYodC5zdGF0aWNSb290PSExLHQuY2hpbGRyZW4pZm9yKHZhciByPTAsaT10LmNoaWxkcmVuLmxlbmd0aDtyPGk7cisrKWUodC5jaGlsZHJlbltyXSxufHwhIXQuZm9yKTtpZih0LmlmQ29uZGl0aW9ucylmb3IodmFyIG89MSxhPXQuaWZDb25kaXRpb25zLmxlbmd0aDtvPGE7bysrKWUodC5pZkNvbmRpdGlvbnNbb10uYmxvY2ssbil9fShlLCExKSl9dmFyIHRhPS9eKFtcdyRfXSt8XChbXildKj9cKSlccyo9PnxeZnVuY3Rpb25ccypcKC8sbmE9L15bQS1aYS16XyRdW1x3JF0qKD86XC5bQS1aYS16XyRdW1x3JF0qfFxbJ1teJ10qPyddfFxbIlteIl0qPyJdfFxbXGQrXXxcW1tBLVphLXpfJF1bXHckXSpdKSokLyxyYT17ZXNjOjI3LHRhYjo5LGVudGVyOjEzLHNwYWNlOjMyLHVwOjM4LGxlZnQ6MzcscmlnaHQ6MzksZG93bjo0MCxkZWxldGU6WzgsNDZdfSxpYT17ZXNjOiJFc2NhcGUiLHRhYjoiVGFiIixlbnRlcjoiRW50ZXIiLHNwYWNlOiIgIix1cDpbIlVwIiwiQXJyb3dVcCJdLGxlZnQ6WyJMZWZ0IiwiQXJyb3dMZWZ0Il0scmlnaHQ6WyJSaWdodCIsIkFycm93UmlnaHQiXSxkb3duOlsiRG93biIsIkFycm93RG93biJdLGRlbGV0ZTpbIkJhY2tzcGFjZSIsIkRlbGV0ZSJdfSxvYT1mdW5jdGlvbihlKXtyZXR1cm4iaWYoIitlKyIpcmV0dXJuIG51bGw7In0sYWE9e3N0b3A6IiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsiLHByZXZlbnQ6IiRldmVudC5wcmV2ZW50RGVmYXVsdCgpOyIsc2VsZjpvYSgiJGV2ZW50LnRhcmdldCAhPT0gJGV2ZW50LmN1cnJlbnRUYXJnZXQiKSxjdHJsOm9hKCIhJGV2ZW50LmN0cmxLZXkiKSxzaGlmdDpvYSgiISRldmVudC5zaGlmdEtleSIpLGFsdDpvYSgiISRldmVudC5hbHRLZXkiKSxtZXRhOm9hKCIhJGV2ZW50Lm1ldGFLZXkiKSxsZWZ0Om9hKCInYnV0dG9uJyBpbiAkZXZlbnQgJiYgJGV2ZW50LmJ1dHRvbiAhPT0gMCIpLG1pZGRsZTpvYSgiJ2J1dHRvbicgaW4gJGV2ZW50ICYmICRldmVudC5idXR0b24gIT09IDEiKSxyaWdodDpvYSgiJ2J1dHRvbicgaW4gJGV2ZW50ICYmICRldmVudC5idXR0b24gIT09IDIiKX07ZnVuY3Rpb24gc2EoZSx0LG4pe3ZhciByPXQ/Im5hdGl2ZU9uOnsiOiJvbjp7Ijtmb3IodmFyIGkgaW4gZSlyKz0nIicraSsnIjonK2NhKGksZVtpXSkrIiwiO3JldHVybiByLnNsaWNlKDAsLTEpKyJ9In1mdW5jdGlvbiBjYSh0LGUpe2lmKCFlKXJldHVybiJmdW5jdGlvbigpe30iO2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIlsiK2UubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBjYSh0LGUpfSkuam9pbigiLCIpKyJdIjt2YXIgbj1uYS50ZXN0KGUudmFsdWUpLHI9dGEudGVzdChlLnZhbHVlKTtpZihlLm1vZGlmaWVycyl7dmFyIGk9IiIsbz0iIixhPVtdO2Zvcih2YXIgcyBpbiBlLm1vZGlmaWVycylpZihhYVtzXSlvKz1hYVtzXSxyYVtzXSYmYS5wdXNoKHMpO2Vsc2UgaWYoImV4YWN0Ij09PXMpe3ZhciBjPWUubW9kaWZpZXJzO28rPW9hKFsiY3RybCIsInNoaWZ0IiwiYWx0IiwibWV0YSJdLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hY1tlXX0pLm1hcChmdW5jdGlvbihlKXtyZXR1cm4iJGV2ZW50LiIrZSsiS2V5In0pLmpvaW4oInx8IikpfWVsc2UgYS5wdXNoKHMpO3JldHVybiBhLmxlbmd0aCYmKGkrPSJpZighKCdidXR0b24nIGluICRldmVudCkmJiIrYS5tYXAobGEpLmpvaW4oIiYmIikrIilyZXR1cm4gbnVsbDsiKSxvJiYoaSs9byksImZ1bmN0aW9uKCRldmVudCl7IitpKyhuPyJyZXR1cm4gIitlLnZhbHVlKyIoJGV2ZW50KSI6cj8icmV0dXJuICgiK2UudmFsdWUrIikoJGV2ZW50KSI6ZS52YWx1ZSkrIn0ifXJldHVybiBufHxyP2UudmFsdWU6ImZ1bmN0aW9uKCRldmVudCl7IitlLnZhbHVlKyJ9In1mdW5jdGlvbiBsYShlKXt2YXIgdD1wYXJzZUludChlLDEwKTtpZih0KXJldHVybiIkZXZlbnQua2V5Q29kZSE9PSIrdDt2YXIgbj1yYVtlXSxyPWlhW2VdO3JldHVybiJfaygkZXZlbnQua2V5Q29kZSwiK0pTT04uc3RyaW5naWZ5KGUpKyIsIitKU09OLnN0cmluZ2lmeShuKSsiLCRldmVudC5rZXksIitKU09OLnN0cmluZ2lmeShyKSsiKSJ9dmFyIHVhPXtvbjpmdW5jdGlvbihlLHQpe2Uud3JhcExpc3RlbmVycz1mdW5jdGlvbihlKXtyZXR1cm4iX2coIitlKyIsIit0LnZhbHVlKyIpIn19LGJpbmQ6ZnVuY3Rpb24odCxuKXt0LndyYXBEYXRhPWZ1bmN0aW9uKGUpe3JldHVybiJfYigiK2UrIiwnIit0LnRhZysiJywiK24udmFsdWUrIiwiKyhuLm1vZGlmaWVycyYmbi5tb2RpZmllcnMucHJvcD8idHJ1ZSI6ImZhbHNlIikrKG4ubW9kaWZpZXJzJiZuLm1vZGlmaWVycy5zeW5jPyIsdHJ1ZSI6IiIpKyIpIn19LGNsb2FrOiR9LGZhPWZ1bmN0aW9uKGUpe3RoaXMub3B0aW9ucz1lLHRoaXMud2Fybj1lLndhcm58fCRyLHRoaXMudHJhbnNmb3Jtcz13cihlLm1vZHVsZXMsInRyYW5zZm9ybUNvZGUiKSx0aGlzLmRhdGFHZW5GbnM9d3IoZS5tb2R1bGVzLCJnZW5EYXRhIiksdGhpcy5kaXJlY3RpdmVzPW0obSh7fSx1YSksZS5kaXJlY3RpdmVzKTt2YXIgdD1lLmlzUmVzZXJ2ZWRUYWd8fE87dGhpcy5tYXliZUNvbXBvbmVudD1mdW5jdGlvbihlKXtyZXR1cm4hdChlLnRhZyl9LHRoaXMub25jZUlkPTAsdGhpcy5zdGF0aWNSZW5kZXJGbnM9W119O2Z1bmN0aW9uIHBhKGUsdCl7dmFyIG49bmV3IGZhKHQpO3JldHVybntyZW5kZXI6IndpdGgodGhpcyl7cmV0dXJuICIrKGU/ZGEoZSxuKTonX2MoImRpdiIpJykrIn0iLHN0YXRpY1JlbmRlckZuczpuLnN0YXRpY1JlbmRlckZuc319ZnVuY3Rpb24gZGEoZSx0KXtpZihlLnN0YXRpY1Jvb3QmJiFlLnN0YXRpY1Byb2Nlc3NlZClyZXR1cm4gdmEoZSx0KTtpZihlLm9uY2UmJiFlLm9uY2VQcm9jZXNzZWQpcmV0dXJuIGhhKGUsdCk7aWYoZS5mb3ImJiFlLmZvclByb2Nlc3NlZClyZXR1cm4gZj10LHY9KHU9ZSkuZm9yLGg9dS5hbGlhcyxtPXUuaXRlcmF0b3IxPyIsIit1Lml0ZXJhdG9yMToiIix5PXUuaXRlcmF0b3IyPyIsIit1Lml0ZXJhdG9yMjoiIix1LmZvclByb2Nlc3NlZD0hMCwoZHx8Il9sIikrIigoIit2KyIpLGZ1bmN0aW9uKCIraCttK3krIil7cmV0dXJuICIrKHB8fGRhKSh1LGYpKyJ9KSI7aWYoZS5pZiYmIWUuaWZQcm9jZXNzZWQpcmV0dXJuIG1hKGUsdCk7aWYoInRlbXBsYXRlIiE9PWUudGFnfHxlLnNsb3RUYXJnZXQpe2lmKCJzbG90Ij09PWUudGFnKXJldHVybiBmdW5jdGlvbihlLHQpe3ZhciBuPWUuc2xvdE5hbWV8fCciZGVmYXVsdCInLHI9X2EoZSx0KSxpPSJfdCgiK24rKHI/IiwiK3I6IiIpLG89ZS5hdHRycyYmInsiK2UuYXR0cnMubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBnKGUubmFtZSkrIjoiK2UudmFsdWV9KS5qb2luKCIsIikrIn0iLGE9ZS5hdHRyc01hcFsidi1iaW5kIl07IW8mJiFhfHxyfHwoaSs9IixudWxsIik7byYmKGkrPSIsIitvKTthJiYoaSs9KG8/IiI6IixudWxsIikrIiwiK2EpO3JldHVybiBpKyIpIn0oZSx0KTt2YXIgbjtpZihlLmNvbXBvbmVudClhPWUuY29tcG9uZW50LGM9dCxsPShzPWUpLmlubGluZVRlbXBsYXRlP251bGw6X2EocyxjLCEwKSxuPSJfYygiK2ErIiwiK3lhKHMsYykrKGw/IiwiK2w6IiIpKyIpIjtlbHNle3ZhciByPWUucGxhaW4/dm9pZCAwOnlhKGUsdCksaT1lLmlubGluZVRlbXBsYXRlP251bGw6X2EoZSx0LCEwKTtuPSJfYygnIitlLnRhZysiJyIrKHI/IiwiK3I6IiIpKyhpPyIsIitpOiIiKSsiKSJ9Zm9yKHZhciBvPTA7bzx0LnRyYW5zZm9ybXMubGVuZ3RoO28rKyluPXQudHJhbnNmb3Jtc1tvXShlLG4pO3JldHVybiBufXJldHVybiBfYShlLHQpfHwidm9pZCAwIjt2YXIgYSxzLGMsbCx1LGYscCxkLHYsaCxtLHl9ZnVuY3Rpb24gdmEoZSx0KXtyZXR1cm4gZS5zdGF0aWNQcm9jZXNzZWQ9ITAsdC5zdGF0aWNSZW5kZXJGbnMucHVzaCgid2l0aCh0aGlzKXtyZXR1cm4gIitkYShlLHQpKyJ9IiksIl9tKCIrKHQuc3RhdGljUmVuZGVyRm5zLmxlbmd0aC0xKSsoZS5zdGF0aWNJbkZvcj8iLHRydWUiOiIiKSsiKSJ9ZnVuY3Rpb24gaGEoZSx0KXtpZihlLm9uY2VQcm9jZXNzZWQ9ITAsZS5pZiYmIWUuaWZQcm9jZXNzZWQpcmV0dXJuIG1hKGUsdCk7aWYoZS5zdGF0aWNJbkZvcil7Zm9yKHZhciBuPSIiLHI9ZS5wYXJlbnQ7cjspe2lmKHIuZm9yKXtuPXIua2V5O2JyZWFrfXI9ci5wYXJlbnR9cmV0dXJuIG4/Il9vKCIrZGEoZSx0KSsiLCIrdC5vbmNlSWQrKysiLCIrbisiKSI6ZGEoZSx0KX1yZXR1cm4gdmEoZSx0KX1mdW5jdGlvbiBtYShlLHQsbixyKXtyZXR1cm4gZS5pZlByb2Nlc3NlZD0hMCxmdW5jdGlvbiBlKHQsbixyLGkpe2lmKCF0Lmxlbmd0aClyZXR1cm4gaXx8Il9lKCkiO3ZhciBvPXQuc2hpZnQoKTtyZXR1cm4gby5leHA/IigiK28uZXhwKyIpPyIrYShvLmJsb2NrKSsiOiIrZSh0LG4scixpKToiIithKG8uYmxvY2spO2Z1bmN0aW9uIGEoZSl7cmV0dXJuIHI/cihlLG4pOmUub25jZT9oYShlLG4pOmRhKGUsbil9fShlLmlmQ29uZGl0aW9ucy5zbGljZSgpLHQsbixyKX1mdW5jdGlvbiB5YShlLHQpe3ZhciBuLHIsaT0ieyIsbz1mdW5jdGlvbihlLHQpe3ZhciBuPWUuZGlyZWN0aXZlcztpZighbilyZXR1cm47dmFyIHIsaSxvLGEscz0iZGlyZWN0aXZlczpbIixjPSExO2ZvcihyPTAsaT1uLmxlbmd0aDtyPGk7cisrKXtvPW5bcl0sYT0hMDt2YXIgbD10LmRpcmVjdGl2ZXNbby5uYW1lXTtsJiYoYT0hIWwoZSxvLHQud2FybikpLGEmJihjPSEwLHMrPSd7bmFtZToiJytvLm5hbWUrJyIscmF3TmFtZToiJytvLnJhd05hbWUrJyInKyhvLnZhbHVlPyIsdmFsdWU6KCIrby52YWx1ZSsiKSxleHByZXNzaW9uOiIrSlNPTi5zdHJpbmdpZnkoby52YWx1ZSk6IiIpKyhvLmFyZz8nLGFyZzoiJytvLmFyZysnIic6IiIpKyhvLm1vZGlmaWVycz8iLG1vZGlmaWVyczoiK0pTT04uc3RyaW5naWZ5KG8ubW9kaWZpZXJzKToiIikrIn0sIil9aWYoYylyZXR1cm4gcy5zbGljZSgwLC0xKSsiXSJ9KGUsdCk7byYmKGkrPW8rIiwiKSxlLmtleSYmKGkrPSJrZXk6IitlLmtleSsiLCIpLGUucmVmJiYoaSs9InJlZjoiK2UucmVmKyIsIiksZS5yZWZJbkZvciYmKGkrPSJyZWZJbkZvcjp0cnVlLCIpLGUucHJlJiYoaSs9InByZTp0cnVlLCIpLGUuY29tcG9uZW50JiYoaSs9J3RhZzoiJytlLnRhZysnIiwnKTtmb3IodmFyIGE9MDthPHQuZGF0YUdlbkZucy5sZW5ndGg7YSsrKWkrPXQuZGF0YUdlbkZuc1thXShlKTtpZihlLmF0dHJzJiYoaSs9ImF0dHJzOnsiK3dhKGUuYXR0cnMpKyJ9LCIpLGUucHJvcHMmJihpKz0iZG9tUHJvcHM6eyIrd2EoZS5wcm9wcykrIn0sIiksZS5ldmVudHMmJihpKz1zYShlLmV2ZW50cywhMSx0Lndhcm4pKyIsIiksZS5uYXRpdmVFdmVudHMmJihpKz1zYShlLm5hdGl2ZUV2ZW50cywhMCx0Lndhcm4pKyIsIiksZS5zbG90VGFyZ2V0JiYhZS5zbG90U2NvcGUmJihpKz0ic2xvdDoiK2Uuc2xvdFRhcmdldCsiLCIpLGUuc2NvcGVkU2xvdHMmJihpKz0obj1lLnNjb3BlZFNsb3RzLHI9dCwic2NvcGVkU2xvdHM6X3UoWyIrT2JqZWN0LmtleXMobikubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBnYShlLG5bZV0scil9KS5qb2luKCIsIikrIl0pLCIpKSxlLm1vZGVsJiYoaSs9Im1vZGVsOnt2YWx1ZToiK2UubW9kZWwudmFsdWUrIixjYWxsYmFjazoiK2UubW9kZWwuY2FsbGJhY2srIixleHByZXNzaW9uOiIrZS5tb2RlbC5leHByZXNzaW9uKyJ9LCIpLGUuaW5saW5lVGVtcGxhdGUpe3ZhciBzPWZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5jaGlsZHJlblswXTtpZigxPT09bi50eXBlKXt2YXIgcj1wYShuLHQub3B0aW9ucyk7cmV0dXJuImlubGluZVRlbXBsYXRlOntyZW5kZXI6ZnVuY3Rpb24oKXsiK3IucmVuZGVyKyJ9LHN0YXRpY1JlbmRlckZuczpbIityLnN0YXRpY1JlbmRlckZucy5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuImZ1bmN0aW9uKCl7IitlKyJ9In0pLmpvaW4oIiwiKSsiXX0ifX0oZSx0KTtzJiYoaSs9cysiLCIpfXJldHVybiBpPWkucmVwbGFjZSgvLCQvLCIiKSsifSIsZS53cmFwRGF0YSYmKGk9ZS53cmFwRGF0YShpKSksZS53cmFwTGlzdGVuZXJzJiYoaT1lLndyYXBMaXN0ZW5lcnMoaSkpLGl9ZnVuY3Rpb24gZ2EoZSx0LG4pe3JldHVybiB0LmZvciYmIXQuZm9yUHJvY2Vzc2VkPyhyPWUsbz1uLGE9KGk9dCkuZm9yLHM9aS5hbGlhcyxjPWkuaXRlcmF0b3IxPyIsIitpLml0ZXJhdG9yMToiIixsPWkuaXRlcmF0b3IyPyIsIitpLml0ZXJhdG9yMjoiIixpLmZvclByb2Nlc3NlZD0hMCwiX2woKCIrYSsiKSxmdW5jdGlvbigiK3MrYytsKyIpe3JldHVybiAiK2dhKHIsaSxvKSsifSkiKToie2tleToiK2UrIixmbjoiKygiZnVuY3Rpb24oIitTdHJpbmcodC5zbG90U2NvcGUpKyIpe3JldHVybiAiKygidGVtcGxhdGUiPT09dC50YWc/dC5pZj90LmlmKyI/IisoX2EodCxuKXx8InVuZGVmaW5lZCIpKyI6dW5kZWZpbmVkIjpfYSh0LG4pfHwidW5kZWZpbmVkIjpkYSh0LG4pKSsifSIpKyJ9Ijt2YXIgcixpLG8sYSxzLGMsbH1mdW5jdGlvbiBfYShlLHQsbixyLGkpe3ZhciBvPWUuY2hpbGRyZW47aWYoby5sZW5ndGgpe3ZhciBhPW9bMF07aWYoMT09PW8ubGVuZ3RoJiZhLmZvciYmInRlbXBsYXRlIiE9PWEudGFnJiYic2xvdCIhPT1hLnRhZylyZXR1cm4ocnx8ZGEpKGEsdCk7dmFyIHM9bj9mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0wLHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIGk9ZVtyXTtpZigxPT09aS50eXBlKXtpZihiYShpKXx8aS5pZkNvbmRpdGlvbnMmJmkuaWZDb25kaXRpb25zLnNvbWUoZnVuY3Rpb24oZSl7cmV0dXJuIGJhKGUuYmxvY2spfSkpe249MjticmVha30odChpKXx8aS5pZkNvbmRpdGlvbnMmJmkuaWZDb25kaXRpb25zLnNvbWUoZnVuY3Rpb24oZSl7cmV0dXJuIHQoZS5ibG9jayl9KSkmJihuPTEpfX1yZXR1cm4gbn0obyx0Lm1heWJlQ29tcG9uZW50KTowLGM9aXx8JGE7cmV0dXJuIlsiK28ubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBjKGUsdCl9KS5qb2luKCIsIikrIl0iKyhzPyIsIitzOiIiKX19ZnVuY3Rpb24gYmEoZSl7cmV0dXJuIHZvaWQgMCE9PWUuZm9yfHwidGVtcGxhdGUiPT09ZS50YWd8fCJzbG90Ij09PWUudGFnfWZ1bmN0aW9uICRhKGUsdCl7cmV0dXJuIDE9PT1lLnR5cGU/ZGEoZSx0KTozPT09ZS50eXBlJiZlLmlzQ29tbWVudD8ocj1lLCJfZSgiK0pTT04uc3RyaW5naWZ5KHIudGV4dCkrIikiKToiX3YoIisoMj09PShuPWUpLnR5cGU/bi5leHByZXNzaW9uOkNhKEpTT04uc3RyaW5naWZ5KG4udGV4dCkpKSsiKSI7dmFyIG4scn1mdW5jdGlvbiB3YShlKXtmb3IodmFyIHQ9IiIsbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcj1lW25dO3QrPSciJytyLm5hbWUrJyI6JytDYShyLnZhbHVlKSsiLCJ9cmV0dXJuIHQuc2xpY2UoMCwtMSl9ZnVuY3Rpb24gQ2EoZSl7cmV0dXJuIGUucmVwbGFjZSgvXHUyMDI4L2csIlxcdTIwMjgiKS5yZXBsYWNlKC9cdTIwMjkvZywiXFx1MjAyOSIpfW5ldyBSZWdFeHAoIlxcYiIrImRvLGlmLGZvcixsZXQsbmV3LHRyeSx2YXIsY2FzZSxlbHNlLHdpdGgsYXdhaXQsYnJlYWssY2F0Y2gsY2xhc3MsY29uc3Qsc3VwZXIsdGhyb3csd2hpbGUseWllbGQsZGVsZXRlLGV4cG9ydCxpbXBvcnQscmV0dXJuLHN3aXRjaCxkZWZhdWx0LGV4dGVuZHMsZmluYWxseSxjb250aW51ZSxkZWJ1Z2dlcixmdW5jdGlvbixhcmd1bWVudHMiLnNwbGl0KCIsIikuam9pbigiXFxifFxcYiIpKyJcXGIiKSxuZXcgUmVnRXhwKCJcXGIiKyJkZWxldGUsdHlwZW9mLHZvaWQiLnNwbGl0KCIsIikuam9pbigiXFxzKlxcKFteXFwpXSpcXCl8XFxiIikrIlxccypcXChbXlxcKV0qXFwpIik7ZnVuY3Rpb24geGEodCxuKXt0cnl7cmV0dXJuIG5ldyBGdW5jdGlvbih0KX1jYXRjaChlKXtyZXR1cm4gbi5wdXNoKHtlcnI6ZSxjb2RlOnR9KSwkfX12YXIga2EsQWEsT2E9KGthPWZ1bmN0aW9uKGUsdCl7dmFyIG49SG8oZS50cmltKCksdCk7ITEhPT10Lm9wdGltaXplJiZlYShuLHQpO3ZhciByPXBhKG4sdCk7cmV0dXJue2FzdDpuLHJlbmRlcjpyLnJlbmRlcixzdGF0aWNSZW5kZXJGbnM6ci5zdGF0aWNSZW5kZXJGbnN9fSxmdW5jdGlvbihzKXtmdW5jdGlvbiBlKGUsdCl7dmFyIG49T2JqZWN0LmNyZWF0ZShzKSxyPVtdLGk9W107aWYobi53YXJuPWZ1bmN0aW9uKGUsdCl7KHQ/aTpyKS5wdXNoKGUpfSx0KWZvcih2YXIgbyBpbiB0Lm1vZHVsZXMmJihuLm1vZHVsZXM9KHMubW9kdWxlc3x8W10pLmNvbmNhdCh0Lm1vZHVsZXMpKSx0LmRpcmVjdGl2ZXMmJihuLmRpcmVjdGl2ZXM9bShPYmplY3QuY3JlYXRlKHMuZGlyZWN0aXZlc3x8bnVsbCksdC5kaXJlY3RpdmVzKSksdCkibW9kdWxlcyIhPT1vJiYiZGlyZWN0aXZlcyIhPT1vJiYobltvXT10W29dKTt2YXIgYT1rYShlLG4pO3JldHVybiBhLmVycm9ycz1yLGEudGlwcz1pLGF9cmV0dXJue2NvbXBpbGU6ZSxjb21waWxlVG9GdW5jdGlvbnM6KGM9ZSxsPU9iamVjdC5jcmVhdGUobnVsbCksZnVuY3Rpb24oZSx0LG4peyh0PW0oe30sdCkpLndhcm4sZGVsZXRlIHQud2Fybjt2YXIgcj10LmRlbGltaXRlcnM/U3RyaW5nKHQuZGVsaW1pdGVycykrZTplO2lmKGxbcl0pcmV0dXJuIGxbcl07dmFyIGk9YyhlLHQpLG89e30sYT1bXTtyZXR1cm4gby5yZW5kZXI9eGEoaS5yZW5kZXIsYSksby5zdGF0aWNSZW5kZXJGbnM9aS5zdGF0aWNSZW5kZXJGbnMubWFwKGZ1bmN0aW9uKGUpe3JldHVybiB4YShlLGEpfSksbFtyXT1vfSl9O3ZhciBjLGx9KShZbykuY29tcGlsZVRvRnVuY3Rpb25zO2Z1bmN0aW9uIFNhKGUpe3JldHVybihBYT1BYXx8ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpLmlubmVySFRNTD1lPyc8YSBocmVmPSJcbiIvPic6JzxkaXYgYT0iXG4iLz4nLDA8QWEuaW5uZXJIVE1MLmluZGV4T2YoIiYjMTA7Iil9dmFyIFRhPSEhQiYmU2EoITEpLEVhPSEhQiYmU2EoITApLGphPWUoZnVuY3Rpb24oZSl7dmFyIHQ9Sm4oZSk7cmV0dXJuIHQmJnQuaW5uZXJIVE1MfSksTmE9aG4ucHJvdG90eXBlLiRtb3VudDtyZXR1cm4gaG4ucHJvdG90eXBlLiRtb3VudD1mdW5jdGlvbihlLHQpe2lmKChlPWUmJkpuKGUpKT09PWRvY3VtZW50LmJvZHl8fGU9PT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpcmV0dXJuIHRoaXM7dmFyIG49dGhpcy4kb3B0aW9ucztpZighbi5yZW5kZXIpe3ZhciByPW4udGVtcGxhdGU7aWYocilpZigic3RyaW5nIj09dHlwZW9mIHIpIiMiPT09ci5jaGFyQXQoMCkmJihyPWphKHIpKTtlbHNle2lmKCFyLm5vZGVUeXBlKXJldHVybiB0aGlzO3I9ci5pbm5lckhUTUx9ZWxzZSBlJiYocj1mdW5jdGlvbihlKXt7aWYoZS5vdXRlckhUTUwpcmV0dXJuIGUub3V0ZXJIVE1MO3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiB0LmFwcGVuZENoaWxkKGUuY2xvbmVOb2RlKCEwKSksdC5pbm5lckhUTUx9fShlKSk7aWYocil7dmFyIGk9T2Eocix7c2hvdWxkRGVjb2RlTmV3bGluZXM6VGEsc2hvdWxkRGVjb2RlTmV3bGluZXNGb3JIcmVmOkVhLGRlbGltaXRlcnM6bi5kZWxpbWl0ZXJzLGNvbW1lbnRzOm4uY29tbWVudHN9LHRoaXMpLG89aS5yZW5kZXIsYT1pLnN0YXRpY1JlbmRlckZucztuLnJlbmRlcj1vLG4uc3RhdGljUmVuZGVyRm5zPWF9fXJldHVybiBOYS5jYWxsKHRoaXMsZSx0KX0saG4uY29tcGlsZT1PYSxobn0pOw=='></script>   

	<style id='style_magazine_css'>
		body{
			overflow:hidden;
//			background-color:#fcfcfc;
//			background-color:darkslategray;
			background-color:wheat;
			background-color:#FFFDDA;
			margin:0;
			padding:0;
			}

.magazine-viewport .container{
	position:absolute;
	top:50%;
	left:50%;
	width:922px;
	height:600px;
	margin:auto;
}

.magazine-viewport .magazine{
	width:922px;
	height:600px;
	left:-461px;
	top:-300px;
}

.magazine-viewport .page{
	width:461px;
	height:600px;
	background-color:white;
	background-repeat:no-repeat;
	background-size:100% 100%;
}

.magazine-viewport .zoomer .region{
	display:none;
}

.magazine .region{
	position:absolute;
	overflow:hidden;
	background:#0066FF;
	opacity:0.2;
	-webkit-border-radius:10px;
	-moz-border-radius:10px;
	-ms-border-radius:10px;
	-o-border-radius:10px;
	border-radius:10px;
	cursor:pointer;
	-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=20)";
	filter: alpha(opacity=20);
}

.magazine .region:hover{
	opacity:0.5;
	-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
	filter: alpha(opacity=50);
}

.magazine .region.zoom{
	opacity:0.01;
	-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=1)";
	filter: alpha(opacity=1);
}

.magazine .region.zoom:hover{
	opacity:0.2;
	-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=20)";
	filter: alpha(opacity=20);
}

.magazine .page{
	-webkit-box-shadow:0 0 20px rgba(0,0,0,0.2);
	-moz-box-shadow:0 0 20px rgba(0,0,0,0.2);
	-ms-box-shadow:0 0 20px rgba(0,0,0,0.2);
	-o-box-shadow:0 0 20px rgba(0,0,0,0.2);
	box-shadow:0 0 20px rgba(0,0,0,0.2);
}

.magazine-viewport .page img{
	-webkit-touch-callout: none;
	-webkit-user-select: none;
	-khtml-user-select: none;
	-moz-user-select: none;
	-ms-user-select: none;
	user-select: none;
	margin:0;
}

.magazine .even .gradient{
	position:absolute;
	top:0;
	left:0;
	width:100%;
	height:100%;

	background:-webkit-gradient(linear, left top, right top, color-stop(0.95, rgba(0,0,0,0)), color-stop(1, rgba(0,0,0,0.2)));
	background-image:-webkit-linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.2) 100%);
	background-image:-moz-linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.2) 100%);
	background-image:-ms-linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.2) 100%);
	background-image:-o-linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.2) 100%);
	background-image:linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.2) 100%);
}

.magazine .odd .gradient{
	position:absolute;
	top:0;
	left:0;
	width:100%;
	height:100%;

	background:-webkit-gradient(linear, right top, left top, color-stop(0.95, rgba(0,0,0,0)), color-stop(1, rgba(0,0,0,0.15)));
	background-image:-webkit-linear-gradient(right, rgba(0,0,0,0) 95%, rgba(0,0,0,0.15) 100%);
	background-image:-moz-linear-gradient(right, rgba(0,0,0,0) 95%, rgba(0,0,0,0.15) 100%);
	background-image:-ms-linear-gradient(right, rgba(0,0,0,0) 95%, rgba(0,0,0,0.15) 100%);
	background-image:-o-linear-gradient(right, rgba(0,0,0,0) 95%, rgba(0,0,0,0.15) 100%);
	background-image:linear-gradient(right, rgba(0,0,0,0) 95%, rgba(0,0,0,0.15) 100%);
}

.magazine-viewport .zoom-in .even .gradient,
.magazine-viewport .zoom-in .odd .gradient{

	display:none;

}

.magazine-viewport .loader{
	background-image:url(../pics/loader.gif);
	width:22px;
	height:22px;
	position:absolute;
	top:280px;
	left:219px;
}

.magazine-viewport .shadow{
	-webkit-transition: -webkit-box-shadow 0.5s;
	-moz-transition: -moz-box-shadow 0.5s;
	-o-transition: -webkit-box-shadow 0.5s;
	-ms-transition: -ms-box-shadow 0.5s;

	-webkit-box-shadow:0 0 20px #ccc;
	-moz-box-shadow:0 0 20px #ccc;
	-o-box-shadow:0 0 20px #ccc;
	-ms-box-shadow:0 0 20px #ccc;
	box-shadow:0 0 20px #ccc;
}

.magazine-viewport .next-button,
.magazine-viewport .previous-button{
	width:22px;
	height:600px;
	position:absolute;
	top:0;
}

.magazine-viewport .next-button{
	right:-22px;
	-webkit-border-radius:0 15px 15px 0;
	-moz-border-radius:0 15px 15px 0;
	-ms-border-radius:0 15px 15px 0;
	-o-border-radius:0 15px 15px 0;
	border-radius:0 15px 15px 0;
}

.magazine-viewport .previous-button{
	left:-22px;
	-webkit-border-radius:15px 0 0 15px;
	-moz-border-radius:15px 0 0 15px;
	-ms-border-radius:15px 0 0 15px;
	-o-border-radius:15px 0 0 15px;
	border-radius:15px 0 0 15px;
}

.magazine-viewport .previous-button-hover,
.magazine-viewport .next-button-hover{
	background-color:rgba(0,0,0, 0.2);
}

.magazine-viewport .previous-button-hover,
.magazine-viewport .previous-button-down{
	background-image:url(../pics/arrows.png);
	background-position:-4px 284px;
	background-repeat:no-repeat;
}

.magazine-viewport .previous-button-down,
.magazine-viewport .next-button-down{
	background-color:rgba(0,0,0, 0.4);
}

.magazine-viewport .next-button-hover,
.magazine-viewport .next-button-down{
	background-image:url(../pics/arrows.png);
	background-position:-38px 284px;
	background-repeat:no-repeat;
}

.magazine-viewport .zoom-in .next-button,
.magazine-viewport .zoom-in .previous-button{
	display:none;
}

.animated{
	-webkit-transition:margin-left 0.5s;
	-moz-transition:margin-left 0.5s;
	-ms-transition:margin-left 0.5s;
	-o-transition:margin-left 0.5s;
	transition:margin-left 0.5s;
}

.thumbnails{
//	position:absolute;
	bottom:0;
	left:0;
	width:100%;
	height:140px;
	z-index:1;
}

.thumbnails > div{
	width:1050px;
	height:100px;
	margin:20px auto;
}

.thumbnails ul{
	margin:0;
	padding:0;
	text-align:center;
	-webkit-transform:scale3d(0.5, 0.5, 1);
	-moz-transform:scale3d(0.5, 0.5, 1);
	-o-transform:scale3d(0.5, 0.5, 1);
	-ms-transform:scale3d(0.5, 0.5, 1);
	transform:scale3d(0.5, 0.5, 1);
	-webkit-transition:-webkit-transform ease-in-out 100ms;
	-moz-transition:-moz-transform ease-in-out 100ms;
	-ms-transition:-ms-transform ease-in-out 100ms;
	-o-transition:-o-transform ease-in-out 100ms;
	transition:transform ease-in-out 100ms;
}

.thumbanils-touch ul{
	-webkit-transform:none;
	-moz-transform:none;
	-o-transform:none;
	-ms-transform:none;
	transform:none;
}

.thumbnails-hover ul{
	-webkit-transform:scale3d(0.6, 0.6, 1);
	-moz-transform:scale3d(0.6, 0.6, 1);
	-o-transform:scale3d(0.6, 0.6, 1);
	-ms-transform:scale3d(0.6, 0.6, 1);
	transform:scale3d(0.6, 0.6, 1);
}

.thumbnails li{
	list-style:none;
	display:inline-block;
	margin:0 5px;
	-webkit-box-shadow:0 0 10px #ccc;
	-moz-box-shadow:0 0 10px #ccc;
	-ms-box-shadow:0 0 10px #ccc;
	-o-box-shadow:0 0 10px #ccc;
	box-shadow:0 0 10px  #ccc;
	-webkit-transition:-webkit-transform 60ms;
	-moz-transition:-webkit-transform 60ms;
	-o-transition:-webkit-transform 60ms;
	-ms-transition:-webkit-transform 60ms;
	transition:-webkit-transform 60ms;
}

.thumbnails li span{
	display:none;
}

.thumbnails .current{
	-webkit-box-shadow:0 0 10px red;
	-moz-box-shadow:0 0 10px red;
	-ms-box-shadow:0 0 10px red;
	-o-box-shadow:0 0 10px red;
	box-shadow:0 0 10px red;
}

.thumbnails .thumb-hover{
	-webkit-transform:scale3d(1.3, 1.3, 1);
	-moz-transform:scale3d(1.3, 1.3, 1);
	-o-transform:scale3d(1.3, 1.3, 1);
	-ms-transform:scale3d(1.3, 1.3, 1);
	transform:scale3d(1.3, 1.3, 1);

	-webkit-box-shadow:0 0 10px #666;
	-moz-box-shadow:0 0 10px #666;
	-ms-box-shadow:0 0 10px #666;
	-o-box-shadow:0 0 10px #666;
	box-shadow:0 0 10px #666;
}

.thumbanils-touch .thumb-hover{
	-webkit-transform:none;
	-moz-transform:none;
	-o-transform:none;
	-ms-transform:none;
	transform:none;
}

.thumbnails .thumb-hover span{
	position:absolute;
	bottom:-30px;
	left:0;
	z-index:2;
	width:100%;
	height:30px;
	font:bold 15px arial;
	line-height:30px;
	color:#666;
	display:block;
	cursor:default;
}

.thumbnails img{
	float:left;
}

.exit-message{
	position: absolute;
	top:10px;
	left:0;
	width:100%;
	height:40px;
	z-index:10000;
}

.exit-message > div{
	width:140px;
	height:30px;
	margin:auto;
	background:rgba(0,0,0,0.5);
	text-align:center;
	font:12px arial;
	line-height:30px;
	color:white;
	-webkit-border-radius:10px;
	-moz-border-radius:10px;
	-ms-border-radius:10px;
	-o-border-radius:10px;
	border-radius:10px;
}

.zoom-icon{
	position:absolute;
	z-index:1000;
	width:22px;
	height:22px;
	top:10px;
	right:10px;
//	background-image:url(../pics/zoom-icons.png);
	background-image:url(fb/html/magazine/pics/zoom-icons.png);
	background-size:88px 22px;
}

.zoom-icon-in{
	background-position:0 0;
	cursor: pointer;
}

.zoom-icon-in.zoom-icon-in-hover{
	background-position:-22px 0;
	cursor: pointer;
}

.zoom-icon-out{
	background-position:-44px 0;
}

.zoom-icon-out.zoom-icon-out-hover{
	background-position:-66px 0;
	cursor: pointer;
}

.bottom{
	position:absolute;
	left:0;
	bottom:0;
	width:100%;
}
		</style>

<script id="fb_magazine_js">
/*
 * Magazine sample
*/

function addPage(page, book) {

	var id, pages = book.turn('pages');

	// Create a new element for this page
	var element = $('<div />', {});

// Add the page to the flipbook
// Add the initial HTML
// It will contain a loader indicator and a gradient
	if (book.turn('addPage', element, page)) {
		element.html('<div class="gradient"></div><div class="loader"></div>');
// Load the page
		loadPage(page, element);
		}
	}

// Create an image element
	function loadPage(page, pageElement) {
		var img = $('<img />');
		img.mousedown(function(e) {
			e.preventDefault();
			});
		img.load(function() {
		
// Set the size
// Add the image to the page after loaded
// Remove the loader indicator
			$(this).css({width: '100%', height: '100%'});
			$(this).appendTo(pageElement);
			pageElement.find('.loader').remove();
			});

// Load the page
		var pagelist = new Array();
		var pagelist_len = 0;
		var src = "";
		var ajaks = "";
		pagelist = load_pagelist();
		pagelist_len = pagelist.length;	


		var htmout = "";
//		alert( "BUGS_470 pageslist="+pageslist+" page="+page+" pages_len="+pages_len );
		var splitlim = pagelist[page].split("|").length;
		src = pagelist[page].split("|")[splitlim-1];

//		src = pagelist[page].split("|")[12];
//		alert( "BUGS_490 page="+page+" pages_len="+pages_len+" src="+src );
//		img.attr('src', 'pages/' +  page + '.jpg');

//		var src_default = '/imgs/gif/spacers/giphy_spacers_01.gif';
//		var src_default = '/imgs/gif/spacers/giphy_jkwii_head.gif';
//		var src_default = '/imgs/gif/spacers/giphy_spacer10.gif';
//		var src_default = '/imgs/gif/spacers/giphy_spacer13.gif';
//		var src_default = '/imgs/gif/spacers/giphy_spacer15.gif';
//		var src_notfound = '/imgs/gif/spacers/giphy_spacer19.gif';
//		var src_notfound = '/imgs/gif/gif_bugs/giphy_anthead.gif';
//		var src_notfound = '/imgs/gif/gif_bugs/giphy_bugs_alien_bodyscan.gif';
		var src_notfound = '/imgs/gif/gif_bugs/giphy_bugs_alien_digits.gif';
		var src_notfound = '/imgs/gif/notfound.gif';
		if( filecheck(src)) {
//			alert("BUGS_5001 ___found src="+src );
			img.attr('src', src);
			}
		else {
//			alert("BUGS_5002 NOTFOUND src_notfound="+src_notfound );
			img.attr('src', src_notfound );
			}
		var pagelim=pagelist.length;	
		htmout += '<div id="div_fblink" >';
		htmout += '	<h1>page='+page+' of '+pagelim+' src='+src+'</h1>';
		htmout += '<img src="'+src+'" ';
		htmout += ' onclick="window.open(\''+src+'\');return false;"';
		htmout += ' alt="'+src+'" ';
		htmout += ' height=50 border=0 draggable="true" >';
		htmout += '	</div>';
		if( document.getElementById('div_fblink')) {
			document.getElementById('div_fblink').innerHTML=htmout;
			}
		loadRegions(page, pageElement);
		}

// Zoom in / Zoom out
	function zoomTo(event) {

		setTimeout(function() {
			if ($('.magazine-viewport').data().regionClicked) {
				$('.magazine-viewport').data().regionClicked = false;
			} else {
				if ($('.magazine-viewport').zoom('value')==1) {
					$('.magazine-viewport').zoom('zoomIn', event);
				} else {
					$('.magazine-viewport').zoom('zoomOut');
				}
			}
		}, 1);

}



// Load regions

	function loadRegions(page, element) {
		var fp_js = "pages/js/"+page+"-regions.json";
//		$.getJSON('pages/'+page+'-regions.json').
//		$.getJSON('pages/js/'+page+'-regions.json').
		$.getJSON(fp_js).
			done(function(data) {
				$.each(data, function(key, region) {
					addRegion(region, element);
				});
			});
		}

// Add region

function addRegion(region, pageElement) {
	
	var reg = $('<div />', {'class': 'region  ' + region['class']}),
		options = $('.magazine').turn('options'),
		pageWidth = options.width/2,
		pageHeight = options.height;

	reg.css({
		top: Math.round(region.y/pageHeight*100)+'%',
		left: Math.round(region.x/pageWidth*100)+'%',
		width: Math.round(region.width/pageWidth*100)+'%',
		height: Math.round(region.height/pageHeight*100)+'%'
	}).attr('region-data', $.param(region.data||''));


	reg.appendTo(pageElement);
}

// Process click on a region

function regionClick(event) {

	var region = $(event.target);

	if (region.hasClass('region')) {

		$('.magazine-viewport').data().regionClicked = true;
		
		setTimeout(function() {
			$('.magazine-viewport').data().regionClicked = false;
		}, 100);
		
		var regionType = $.trim(region.attr('class').replace('region', ''));

		return processRegion(region, regionType);

	}

}

// Process the data of every region

function processRegion(region, regionType) {

	data = decodeParams(region.attr('region-data'));

	switch (regionType) {
		case 'link' :

			window.open(data.url);

		break;
		case 'zoom' :

			var regionOffset = region.offset(),
				viewportOffset = $('.magazine-viewport').offset(),
				pos = {
					x: regionOffset.left-viewportOffset.left,
					y: regionOffset.top-viewportOffset.top
				};

			$('.magazine-viewport').zoom('zoomIn', pos);

		break;
		case 'to-page' :

			$('.magazine').turn('page', data.page);

		break;
	}

}

// Load large page

	function loadLargePage(page, pageElement) {
		var img = $('<img />');
		img.load(function() {
			var prevImg = pageElement.find('img');
			$(this).css({width: '100%', height: '100%'});
			$(this).appendTo(pageElement);
			prevImg.remove();
			});

// Loadnew page
		var pagelist = new Array();
		var pagelist_len = pagelist.length;
		var j=0;
		var src = "";
//		alert("BUGS_610 loadSmallPage page="+page+" pagelist="+pagelist );
		pagelist = load_pagelist();
		pagelist_len = pagelist.length;
//		src = "pages/"+page+".jpg";


		var splitlim=pagelist[page].split("|").length;
//		src = pagelist[page].split( "|" )[12];
		src = pagelist[page].split( "|" )[splitlim-1];

		var zn_src_path = execTest(src);
		var zn_src_file = splitTest(src);
		var zn_src = zn_src_path.replace( zn_src_file, "zn/zn_"+zn_src_file );
		var tn_src = zn_src_path.replace( zn_src_file, "tn/tn_"+zn_src_file ).replace(".jpg",".png");
//		var zn_src = zn_src_path + "zn/zn_"+zn_src_file;

//		alert( "BUGS_685 src="+src );
//		alert( "BUGS_687 zn_src="+zn_src );
//		alert( "BUGS_688 tn_src="+tn_src );




//		alert("BUGS_620 loadLargePage page="+page+" pages_len="+pages_len+" src="+src );
//		alert("BUGS_621 loadLargePage pages="+pages+" pages_len="+pages_len );
//		alert("BUGS_622 loadLargePage window.pages="+window.pages+" pages_len="+pages_len );
//		img.attr('src', 'pages/' +  page + '.jpg');
//		img.attr('src', 'pages/' +  page + '-large.jpg');
//		img.attr('src', 'pages/zn/zn_' +  page + '.jpg');
		img.attr('src', zn_src );
		}

// Load small page

function loadSmallPage(page, pageElement) {
	var img = pageElement.find('img');
	img.css({width: '100%', height: '100%'});
	img.unbind('load');

// Loadnew page
	var pagelist = new Array();
	var pagelist_len = pagelist.length;
	var j=0;
	var src = "";
//	alert("BUGS_610 loadSmallPage page="+page+" pagelist="+pagelist );
	pagelist = load_pagelist();
	pagelist_len = pagelist.length;
	var splitlim=pagelist[page].split("|").length;
	src = "pages/"+page+".jpg";
	src = pagelist[page].split( "|" )[splitlim-1];
//	src = pagelist[page].split( "|" )[12];
//	alert("BUGS_650 loadSmallPage page="+page+" pages_len="+pages_len+" src="+src );
//	alert("BUGS_651 loadSmallPage pages="+pages+" pages_len="+pages_len );
//	alert("BUGS_652 loadSmallPage window.pages="+window.pages+" pages_len="+pages_len );
//	img.attr('src', 'pages/' +  page + '.jpg');
	img.attr('src', src );
	}

// http://code.google.com/p/chromium/issues/detail?id=128488

	function isChrome() {
		return navigator.userAgent.indexOf('Chrome')!=-1;
		}

	function disableControls(page) {
		if (page==1)
			$('.previous-button').hide();
		else
			$('.previous-button').show();
					
		if (page==$('.magazine').turn('pages'))
			$('.next-button').hide();
		else
			$('.next-button').show();
}

// Set the width and height for the viewport

function resizeViewport() {

	var width = $(window).width(),
		height = $(window).height(),
		options = $('.magazine').turn('options');

	$('.magazine').removeClass('animated');

	$('.magazine-viewport').css({
		width: width,
		height: height
	}).
	zoom('resize');


	if ($('.magazine').turn('zoom')==1) {
		var bound = calculateBound({
			width: options.width,
			height: options.height,
			boundWidth: Math.min(options.width, width),
			boundHeight: Math.min(options.height, height)
		});

		if (bound.width%2!==0)
			bound.width-=1;

			
		if (bound.width!=$('.magazine').width() || bound.height!=$('.magazine').height()) {

			$('.magazine').turn('size', bound.width, bound.height);

			if ($('.magazine').turn('page')==1)
				$('.magazine').turn('peel', 'br');

			$('.next-button').css({height: bound.height, backgroundPosition: '-38px '+(bound.height/2-32/2)+'px'});
			$('.previous-button').css({height: bound.height, backgroundPosition: '-4px '+(bound.height/2-32/2)+'px'});
		}

		$('.magazine').css({top: -bound.height/2, left: -bound.width/2});
	}

	var magazineOffset = $('.magazine').offset(),
		boundH = height - magazineOffset.top - $('.magazine').height(),
		marginTop = (boundH - $('.thumbnails > div').height()) / 2;

	if (marginTop<0) {
		$('.thumbnails').css({height:1});
	} else {
		$('.thumbnails').css({height: boundH});
		$('.thumbnails > div').css({marginTop: marginTop});
	}

	if (magazineOffset.top<$('.made').height())
		$('.made').hide();
	else
		$('.made').show();

	$('.magazine').addClass('animated');
	
}


// Number of views in a flipbook

function numberOfViews(book) {
	return book.turn('pages') / 2 + 1;
}

// Current view in a flipbook

function getViewNumber(book, page) {
	return parseInt((page || book.turn('page'))/2 + 1, 10);
}

function moveBar(yes) {
	if (Modernizr && Modernizr.csstransforms) {
		$('#slider .ui-slider-handle').css({zIndex: yes ? -1 : 10000});
	}
}

function setPreview(view) {

	var previewWidth = 112,
		previewHeight = 73,
//		previewSrc = 'pages/preview.jpg',
		previewSrc = 'imgs/preview.jpg',
		preview = $(_thumbPreview.children(':first')),
		numPages = (view==1 || view==$('#slider').slider('option', 'max')) ? 1 : 2,
		width = (numPages==1) ? previewWidth/2 : previewWidth;

	_thumbPreview.
		addClass('no-transition').
		css({width: width + 15,
			height: previewHeight + 15,
			top: -previewHeight - 30,
			left: ($($('#slider').children(':first')).width() - width - 15)/2
		});

	preview.css({
		width: width,
		height: previewHeight
	});

	if (preview.css('background-image')==='' ||
		preview.css('background-image')=='none') {

		preview.css({backgroundImage: 'url(' + previewSrc + ')'});

		setTimeout(function(){
			_thumbPreview.removeClass('no-transition');
		}, 0);

	}

	preview.css({backgroundPosition:
		'0px -'+((view-1)*previewHeight)+'px'
	});
}

// Width of the flipbook when zoomed in

function largeMagazineWidth() {
	
	return 2214;

}

// decode URL Parameters

function decodeParams(data) {

	var parts = data.split('&'), d, obj = {};

	for (var i =0; i<parts.length; i++) {
		d = parts[i].split('=');
		obj[decodeURIComponent(d[0])] = decodeURIComponent(d[1]);
	}

	return obj;
}

// Calculate the width and height of a square within another square

function calculateBound(d) {
	
	var bound = {width: d.width, height: d.height};

	if (bound.width>d.boundWidth || bound.height>d.boundHeight) {
		
		var rel = bound.width/bound.height;

		if (d.boundWidth/rel>d.boundHeight && d.boundHeight*rel<=d.boundWidth) {
			
			bound.width = Math.round(d.boundHeight*rel);
			bound.height = d.boundHeight;

		} else {
			
			bound.width = d.boundWidth;
			bound.height = Math.round(d.boundWidth/rel);
		
		}
			}
		return bound;
		}
	</script>

	<script id="script_load_pagelist_head" >
		function load_pagelist_head() {
var pagelist_head_jtfdcr=
`||||||||/fb/jtfdcr/pages/1.jpg
||||||||/fb/jtfdcr/pages/2.jpg
||||||||/fb/jtfdcr/pages/3.jpg
||||||||/fb/jtfdcr/pages/4.jpg
||||||||/fb/jtfdcr/pages/5.jpg
||||||||/fb/jtfdcr/pages/6.jpg
||||||||/fb/jtfdcr/pages/7.jpg
||||||||/fb/jtfdcr/pages/8.jpg
||||||||/fb/jtfdcr/pages/9.jpg
||||||||/fb/jtfdcr/pages/10.jpg
||||||||/fb/jtfdcr/pages/11.jpg
||||||||/fb/jtfdcr/pages/12.jpg
||||||||/fb/jtfdcr/pages/13.jpg
||||||||/fb/jtfdcr/pages/14.jpg`;

var pagelist_head_pages=``;

var pagelist_head=
`pages/1.jpg
pages/2.jpg
pages/3.jpg
pages/4.jpg
pages/5.jpg
pages/6.jpg
pages/7.jpg
pages/8.jpg
pages/9.jpg
pages/10.jpg
pages/11.jpg
pages/12.jpg
pages/13.jpg
pages/14.jpg
pages/15.jpg
pages/16.jpg
pages/17.jpg
pages/18.jpg
pages/19.jpg
pages/20.jpg
pages/21.jpg
pages/22.jpg
pages/23.jpg
pages/24.jpg
pages/25.jpg
pages/26.jpg
pages/27.jpg
pages/28.jpg
pages/29.jpg
pages/30.jpg
pages/31.jpg
pages/32.jpg
pages/33.jpg
pages/34.jpg
pages/35.jpg
pages/36.jpg
pages/37.jpg
pages/38.jpg
pages/39.jpg
pages/40.jpg
pages/41.jpg
pages/42.jpg
pages/43.jpg
pages/44.jpg
pages/45.jpg
pages/46.jpg
pages/47.jpg
pages/48.jpg
pages/49.jpg
pages/50.jpg
pages/51.jpg
pages/52.jpg
pages/53.jpg
pages/54.jpg
pages/55.jpg
pages/56.jpg
pages/57.jpg
pages/58.jpg
pages/59.jpg
pages/60.jpg
pages/61.jpg
pages/62.jpg
pages/63.jpg
pages/64.jpg`;
		return( pagelist_head.split("\n"));
		}
		</script>



	<script id="script_load_pagelist_pages" >
		function load_pagelist_pages() {
var pagelist_pages =
`pages/0.jpg
pages/1.jpg
pages/2.jpg
pages/3.jpg
pages/4.jpg
pages/5.jpg
pages/6.jpg
pages/7.jpg
pages/8.jpg
pages/9.jpg
pages/10.jpg
pages/11.jpg
pages/12.jpg
pages/13.jpg
pages/14.jpg
pages/15.jpg
pages/16.jpg
pages/17.jpg
pages/18.jpg
pages/19.jpg
pages/20.jpg
pages/21.jpg
pages/22.jpg
pages/23.jpg
pages/24.jpg
pages/25.jpg
pages/26.jpg
pages/27.jpg
pages/28.jpg
pages/29.jpg
pages/30.jpg
pages/31.jpg
pages/32.jpg
pages/33.jpg
pages/34.jpg
pages/35.jpg
pages/36.jpg
pages/notfound.jpg
pages/37.jpg
pages/38.jpg
pages/39.jpg
pages/40.jpg
pages/41.jpg
pages/42.jpg
pages/43.jpg
pages/44.jpg
pages/45.jpg
pages/46.jpg
pages/47.jpg
pages/48.jpg
pages/49.jpg
pages/50.jpg
pages/51.jpg
pages/52.jpg
pages/53.jpg
pages/54.jpg
pages/55.jpg
pages/56.jpg
pages/57.jpg
pages/58.jpg
pages/59.jpg
pages/60.jpg
pages/61.jpg
pages/62.jpg
pages/63.jpg
pages/64.jpg
pages/65.jpg
pages/66.jpg
pages/67.jpg
pages/68.jpg
pages/69.jpg
pages/70.jpg
pages/71.jpg
/fb/cards/pages/med_eyepatch_lele_IMG_0257.jpg
/fb/cards/pages/med_eyepatch_lele_IMG_0258.jpg
/fb/cards/pages/med_eyepatchedge_lele_IMG_0259.jpg
/fb/cards/pages/med_eyepatchedge_lele_IMG_0260.jpg
/fb/cards/pages/med_sunglasses_lele_IMG_0261.jpg
/fb/cards/pages/med_sunglasses_lele_IMG_0262.jpg
/fb/cards/pages/med_tape_lele_IMG_0265.jpg
/fb/cards/pages/med_tape_leleIMG_0266.jpg
/fb/cards/pages/thanks_med_dr_lele.jpg
/fb/jtfdcr/imgs/jtfdc_20200704_0000_gazibo_privatedrive_keepout_IMG_9434.png";
/fb/cards/pages/anniversary_doves.jpg
/fb/cards/pages/babyhankds.jpg
/fb/cards/pages/birthday_19940816.jpg
/fb/cards/pages/birthday_20200821.jpg
/fb/cards/pages/invite_anniversary.jpg
/fb/cards/pages/invite_anniversary_boop.jpg
/fb/cards/pages/invite_anniversary_kid.jpg
/fb/cards/pages/invite_anniversary_mouse.jpg
/fb/cards/pages/invite_coffee.jpg
/fb/cards/pages/invite_exclusive.jpg
/fb/cards/pages/invite_gov.jpg
/fb/cards/pages/invite_kt.jpg
/fb/cards/pages/invite_reindependence.jpg
/fb/cards/pages/invite_vip.jpg
/fb/cards/pages/invite_vip_deutsch.jpg
/fb/cards/pages/invite_vip_usa.jpg
/fb/cards/pages/med.jpg
/fb/cards/pages/reply.jpg
/fb/cards/pages/reunion_1971.jpg
/fb/cards/pages/reunion_1975.jpg
/fb/cards/pages/roses.jpg
/fb/cards/pages/thanks_bluehost.jpg
/fb/cards/pages/thanks_bluehost_card.jpg
/fb/cards/pages/thanks_med.jpg
/fb/cards/pages/thanks_med_dr_lele.jpg
/fb/cards/pages/thanks_pretty.jpg
/fb/cards/pages/token.jpg
/fb/cards/pages/vip.jpg
/fb/cards/pages/invite_vip_usa.jpg
/fb/cards/pages/invite_vip_deutsch.jpg
/fb/cards/pages/anniversary_doves.jpg
/fb/cards/pages/babyhankds.jpg
/fb/cards/pages/birthday_19940816.jpg
/fb/cards/pages/birthday_20200821.jpg
/fb/cards/pages/invite_anniversary.jpg
/fb/cards/pages/invite_coffee.jpg
/fb/cards/pages/invite_exclusive.jpg
/fb/cards/pages/invite_gov.jpg
/fb/cards/pages/invite_kt.jpg
/fb/cards/pages/invite_vip.jpg
/fb/cards/pages/med.jpg
/fb/cards/pages/reply.jpg
/fb/cards/pages/reunion_1971.jpg
/fb/cards/pages/reunion_1975.jpg
/fb/cards/pages/roses.jpg
/fb/cards/pages/thanks_bluehost.jpg
/fb/cards/pages/thanks_bluehost_card.jpg
/fb/cards/pages/thanks_med.jpg
/fb/cards/pages/thanks_pretty.jpg
/fb/cards/pages/token.jpg
/fb/cards/pages/vip.jp
fb/jtfdcr/imgs/jtfdc_20200704_0000_gazibo_privatedrive_keepout_IMG_9434.png";
/fb/mk/imgs/angel01.jpg
/fb/mk/imgs/angel02.jpg
/fb/mk/imgs/iron_hort.jpg
/fb/mk/imgs/iron_hort_seven_emboss.jpg
/fb/mk/imgs/iron_left.jpg
/fb/mk/imgs/iron_left_insert.jpg
/fb/mk/imgs/jewel_mk_angelpy.jpg
/fb/mk/imgs/jewel_mk_page.jpg
/fb/mk/imgs/jewel_mk_page2.jpg
/fb/mk/imgs/jewel_mk_page2_fire.jpg
/fb/mk/imgs/jewel_mk_page_plain.jpg
/fb/mk/imgs/jewel_mk_page_smoke.jpg
/fb/mk/imgs/parchment.jpg
/fb/mk/imgs/textures1.jpg
fb/jtfdcr/imgs/jtfdc_20200704_0000_gazibo_privatedrive_keepout_IMG_9434.png";
/imgs/gif/giphy_hotcold/giphy_cubewave.gif
/imgs/gif/giphy_hotcold/giphy_patrico_heating_n_cooling.gif
/imgs/gif/giphy_hotcold/giphy_patrico_island.gif
/imgs/gif/giphy_hotcold/giphy_patrico_pyramid_03.gif
/imgs/gif/giphy_hotcold/giphy_fan01.gif
/imgs/gif/giphy_hotcold/giphy_fan02.gif
/imgs/gif/giphy_hotcold/giphy_fan03.gif
/imgs/gif/giphy_hotcold/giphy_fan04.gif
/imgs/gif/giphy_hotcold/giphy_fan05.gif
/imgs/gif/giphy_hotcold/giphy_fan06.gif
/imgs/gif/giphy_hotcold/giphy_fan08.gif
/imgs/gif/giphy_hotcold/giphy_fan09.gif
/imgs/gif/giphy_hotcold/giphy_fan10.gif
/imgs/gif/giphy_hotcold/giphy_fan11.gif
/imgs/gif/giphy_hotcold/giphy_fan12.gif
/imgs/gif/giphy_hotcold/giphy_fan13.gif
/imgs/gif/giphy_hotcold/giphy_fan14.gif
/imgs/gif/giphy_hotcold/giphy_fan15.gif
/imgs/gif/giphy_hotcold/giphy_heatcool_01.gif
/imgs/gif/giphy_hotcold/giphy_heatcool_02.gif
/imgs/gif/giphy_hotcold/giphy_heatcool_03.gif
/imgs/gif/giphy_hotcold/giphy_heatcool_04.gif
/imgs/gif/giphy_hotcold/giphy_heatcool_05.gif
/imgs/gif/giphy_hotcold/giphy_helix.gif
/imgs/gif/giphy_hotcold/giphy_patrico_02.gif
/imgs/gif/giphy_hotcold/giphy_patrico_cube.gif
/imgs/gif/giphy_hotcold/giphy_patrico_fanbed.gif
/imgs/gif/giphy_hotcold/giphy_patrico_pyramid_04.gif
/imgs/gif/giphy_hotcold/giphy_patrico_pyramid_hot.gif
/imgs/gif/giphy_hotcold/giphy_patrico_ripple.gif
fb/jtfdcr/imgs/jtfdc_20200704_0000_gazibo_privatedrive_keepout_IMG_9434.png";
/imgs/gif/giphy_hotcold/giphy_chill.gif
/imgs/gif/giphy_hotcold/giphy_chill_01.gif
/imgs/gif/giphy_hotcold/giphy_cool.gif
/imgs/gif/giphy_hotcold/giphy_cool07.gif
/imgs/gif/giphy_hotcold/giphy_cool_02.gif
/imgs/gif/giphy_hotcold/giphy_cool_03.gif
/imgs/gif/giphy_hotcold/giphy_cool_04.gif
/imgs/gif/giphy_hotcold/giphy_cool_06.gif
/imgs/gif/giphy_hotcold/giphy_cool_08.gif
/imgs/gif/giphy_hotcold/giphy_cool_09.gif
/imgs/gif/giphy_hotcold/giphy_cool_11.gif
/imgs/gif/giphy_hotcold/giphy_cool_12.gif
/imgs/gif/giphy_hotcold/giphy_patrico_ripple2.gif
/imgs/gif/giphy_hotcold/giphy_silverglobman.gif
/imgs/gif/giphy_hotcold/giphy_sphereflux.gif
/imgs/gif/giphy_hotcold/giphy_spring.gif
/imgs/gif/giphy_hotcold/giphy_temp_01.gif
fb/jtfdcr/imgs/jtfdc_20200704_0000_gazibo_privatedrive_keepout_IMG_9434.png";
/fb/jtfdcr/imgs/law_riezmanberger_connor_tyler.jpg
/fb/jtfdcr/imgs/ko0us_5000dollars.jpg
/fb/jtfdcr/imgs/laweruup4hoa1.jpg
/fb/jtfdcr/imgs/laweruup4hoa2.jpg
/fb/jtfdcr/imgs/laweruup4hoa3.jpg
/fb/jtfdcr/imgs/laweruup4hoa4.jpg
/fb/jtfdcr/imgs/laweruup4hoa5.jpg
/fb/jtfdcr/imgs/laweruup4hoa6.jpg
/fb/jtfdcr/imgs/laweruup4hoa7.jpg
/fb/jtfdcr/imgs/laweruup4hoa1.jpg
/fb/jtfdcr/imgs/IMG_5704_jtfdc_eagle_s.JPG
/fb/jtfdcr/imgs/IMG_5792.JPG
/fb/jtfdcr/imgs/IMG_6212.JPG
/fb/jtfdcr/imgs/IMG_5605.JPG
/fb/jtfdcr/imgs/IMG_5611_jtfdc_original_notrespassing_willbeprosecuted.jpg
/fb/jtfdcr/imgs/IMG_6827.JPG
/fb/jtfdcr/imgs/IMG_6828.JPG
/fb/jtfdcr/imgs/IMG_6830.JPG
/fb/jtfdcr/imgs/IMG_6833.JPG
/fb/jtfdcr/imgs/IMG_6834.JPG
/fb/jtfdcr/imgs/IMG_6836.JPG
/fb/jtfdcr/ings/IMG_6837.JPG
/fb/jtfdcr/ings/IMG_6838.JPG
/fb/jtfdcr/ings/IMG_6839.JPG
/fb/jtfdcr/ings/IMG_6840.JPG
/fb/jtfdcr/ings/IMG_6841.JPG
/fb/jtfdcr/ings/IMG_6842.JPG
/fb/jtfdcr/ings/IMG_6843.JPG
/fb/jtfdcr/ings/IMG_6844.JPG
/fb/jtfdcr/ings/IMG_6845.JPG
/fb/jtfdcr/ings/IMG_6846.JPG
/fb/jtfdcr/ings/IMG_6847.JPG|jtfinc_road
/fb/jtfdcr/imgs/IMG_6857.JPG|jtf31_fiona_freeroam 
/fb/jtfdcr/imgs/IMG_6851.JPG|streetbill_10500
/fb/jtfdcr/imgs/IMG_6969.JPG|jtf39_byrd_horse_n_barn
/fb/jtfdcr/imgs/IMG_7211.JPG|jtfinc_pothole
/fb/jtfdcr/imgs/IMG_7214.JPG|jtfinc_pothole
/fb/jtfdcr/imgs/IMG_7232.JPG|jtfinc_entrance
/fb/jtfdcr/imgs/IMG_7242.JPG|jtf31_sawhorse_n_andypark
/fb/jtfdcr/imgs/IMG_7288.JPG|jtf31_fiona_freeroam_collerless
/fb/jtfdcr/imgs/IMG_7450.JPG|kid_n_dog_payyourdues
/fb/jtfdcr/imgs/IMG_7709.JPG|jtf29_vandalism_60yr_heirloom_push_mower
/fb/jtfdcr/imgs/IMG_7710.JPG|jtf29_vandalism_gatengutter
/fb/jtfdcr/imgs/IMG_7723.JPG|jtf28_jtf30_confering
/fb/jtfdcr/imgs/IMG_7767.JPG|jtfdc_stalkarounds_jtf39_gannon_treebutchers
/fb/jtfdcr/imgs/7794.JPG|stlc_health_nohelp
/fb/jtfdcr/imgs/7836.JPG|jtfdc_private_drive_notresspassing_treeposting
/fb/jtfdcr/imgs/7840.JPG|jtf2930_easment_blocked
/fb/jtfdcr/imgs/7856.JPG|jtf39_byrd_jtf38_seigrest_three_big_dogs
/fb/jtfdcr/imgs/7858.JPG|jtf29_driveway_jtf39_traffic_damage
/fb/jtfdcr/imgs/9592.JPG|jtfdc_eagle_south
/fb/jtfdcr/imgs/9455.JPG|jtfdc_private_property_trellise_post
/fb/jtfdcr/imgs/9593.JPG|jtfdc_eagles_n_easement
/fb/jtfdcr/imgs/20050107_052701_1858593.jpg|jtf2930_shared_barn_area_drydock
/fb/jtfdcr/imgs/20050107_052701_1858594.jpg|jtf2930_shared_barn_area_carpark
/fb/jtfdcr/imgs/AUT_0730.JPG|jtfdc_entrance_2001
/fb/jtfdcr/imgs/AUT_0869.JPG|jtf2930_shared_drive
/fb/jtfdcr/imgs/AUT_1340.JPG|jtf2930_shared_barn_area_trashdump
/fb/jtfdcr/imgs/AUT_1342.JPG|jtf2930_shared_barn_area
/fb/jtfdcr/imgs/AUT_1593.JPG|jtfdc_egress_sawhorse_n_fence
/fb/jtfdcr/imgs/IMG_0143.JPG|skwii
/fb/jtfdcr/imgs/IMG_0149.JPG|skwii
/fb/jtfdcr/imgs/IMG_0150.JPG|jkwii
/fb/jtfdcr/imgs/IMG_0151.JPG|jkwii_bottle_coke_n_smoke
/fb/jtfdcr/imgs/IMG_0159.JPG|jak1
/fb/jtfdcr/imgs/IMG_0161.JPG|skwii
/fb/jtfdcr/imgs/columbia_pw_adminiwii_ko2us.png
/fb/jtfdcr/imgs/community_police.jpg
/fb/jtfdcr/imgs/defford_boat.jpg
/fb/jtfdcr/imgs/gavel_band.jpg
/fb/jtfdcr/imgs/IMG_0167.JPG|jsk2
/fb/jtfdcr/imgs/IMG_0176.JPG|jak3
/fb/jtfdcr/imgs/IMG_0199.JPG|strawberrybush
/fb/jtfdcr/imgs/IMG_0490.JPG|kids_cycle
/fb/jtfdcr/imgs/440px-Torah_and_jad.jpg|scroll
/fb/jtfdcr/imgs/340px-Sachsenspiegel|oldbook
/fb/jtfdcr/imgs/IMG_0651.JPG|jtf31_street_attack_jtf34_doggie
/fb/jtfdcr/imgs/IMG_3978_20150716_0636.JPG|jtf2939_driveway_entrance
/fb/jtfdcr/imgs/IMG_4190.jpg|jkwii_eyeright
/fb/jtfdcr/imgs/IMG_4191.JPG|jkwii_eyeleft_cataract
/fb/jtfdcr/imgs/IMG_4810_pinkdot_propllne_driveway.JPG|jtf30_driveway_sinkhole
/fb/jtfdcr/imgs/IMG_5167.JPG|jtf30_martin_protection_500feet
/fb/jtfdcr/imgs/IMG_5172.JPG|jtf30_driveway_sinkhole
/fb/jtfdcr/imgs/IMG_6070.JPG|jtf32_donutvanlaw_beware_of_dogs
/fb/jtfdcr/imgs/IMG_7886.JPG|jtfinc_jtf22_commercial_treedumping
/fb/jtfdcr/imgs/IMG_7930.JPG|jtf31_stolen_fencelets
/fb/jtfdcr/imgs/IMG_7935.JPG|jtf30_keepout_jtf29_sawhorse
/fb/jtfdcr/imgs/IMG_7950.JPG|jtf30_driveway_sinkhole_drain_collapse
/fb/jtfdcr/imgs/IMG_7966.JPG|jtf29_slow_driveway_damage
/fb/jtfdcr/imgs/IMG_5792.JPG|20yymmdd_hhmm_jtf39_byrd_threat_take_care_of_you
/fb/jtfdcr/imgs/IMG_6124.JPG|jtf30-2 martin_jack_nocover_survallence
/fb/jtfdcr/imgs/IMG_6728.JPG|paityn_stoop_singing
/fb/jtfdcr/imgs/IMG_6861.JPG|chalkmail_invoice
/fb/jtfdcr/imgs/IMG_7211.JPG|road_pothole
/fb/jtfdcr/imgs/IMG_7214.JPG|road_potholes
/fb/jtfdcr/imgs/IMG_7232.JPG|jtfinc_entrance
/fb/jtfdcr/imgs/IMG_7299.JPG|jtf30_sinkhole_shed_n_drain
/fb/jtfdcr/imgs/IMG_7709.JPG|vandalism_grandfather_hierloom_pushmower
/fb/jtfdcr/imgs/IMG_7710.JPG|vandalism_gate_n_gutter_thuggery
/fb/jtfdcr/imgs/IMG_7894.JPG|police_jahns_notecard
/fb/jtfdcr/imgs/IMG_7896.JPG|jtf32_joann_donovan_took
/fb/jtfdcr/imgs/IMG_7930.JPG|thieft_fenclets_jtf31
/fb/jtfdcr/imgs/IMG_7935.JPG|jtf30_uneasement_sawhorse
/fb/jtfdcr/imgs/IMG_7965.JPG|road_cracks_chalkmail_slow
/fb/jtfdcr/imgs/IMG_7966jtfdc_kids_jtfinc_speedingtrtraffic.JPG|road_cracks_chalkmail_xcross_kids_stop
/fb/jtfdcr/imgs/IMG_7979.JPG|road_jtfdc_abuttment_dip_speedbump_potholes_cracks
/fb/jtfdcr/imgs/IMG_8242.JPG|jtf30-3_doogy_jtf29-2_kidsmower_visit
/fb/jtfdcr/imgs/IMG_8262.JPG|sign_private_property_n_police
/fb/jtfdcr/imgs/IMG_8283.JPG|chalkmail_paityn_carter
/fb/jtfdcr/imgs/IMG_8288.JPG|chalkmail_jtfdc_propertyline_n_trespass_parking
/fb/jtfdcr/imgs/IMG_8433.JPG|kids_mown
/fb/jtfdcr/imgs/IMG_8453.JPG|cute_paityn_grass_byrdcage
/fb/jtfdcr/imgs/IMG_8461.JPG|jtf29_flag
/fb/jtfdcr/imgs/IMG_8479.JPG|chalkmail_jtfdc_noparking_jtf31_gardenbeaver_erase
/fb/jtfdcr/imgs/IMG_8433.JPG|jtf29_driveway_pothole_mitigation_jtf31_uneasement_parking
/fb/jtfdcr/imgs/IMG_8543.JPG|jtf31_uneasement_trespass_parking_sawhorse_relocation
/fb/jtfdcr/imgs/IMG_8560.JPG|chalkmail_townhall_tbd
/fb/jtfdcr/imgs/IMG_8561.JPG|chalkmail_kou_kouniversity_digital_ars_technica
/fb/jtfdcr/imgs/IMG_9385.JPG|jtfdc_flag_little_sawhorse_sign
/fb/jtfdcr/imgs/IMG_9394.JPG|vandalism_gate_n_gutter_ashphalt_collapse
/fb/jtfdcr/imgs/IMG_9396.JPG|vandalism_gate_n_gutter
/fb/jtfdcr/imgs/IMG_9405.JPG|jtf30_sinkhole_pipe_kludge
/fb/jtfdcr/imgs/IMG_9407.JPG|valdalism_grandfathers_heirloom_push_mower
/fb/jtfdcr/imgs/IMG_9408.JPG|valdalism_grandfathers_heirloom_push_mower_close
/fb/jtfdcr/imgs/IMG_9409.JPG|vandalism_nationalguard_mug_black_jtf31_party_driveover
/fb/jtfdcr/imgs/IMG_9423.JPG|vandalism_pre_npr_mug_gold
/fb/jtfdcr/imgs/IMG_9424.JPG|jtf30_realtor_partialy_owned_barn_area
/fb/jtfdcr/imgs/IMG_9425.JPG|jtf30_realtor_located_on_private_cul_de_sak_area
/fb/jtfdcr/imgs/IMG_9429_jkwii_ssm_heartthing.png
/fb/jtfdcr/imgs/IMG_9427.JPG|jtfdc_jak3_sawhorse_schoolbus_stop
/fb/jtfdcr/imgs/alan_w_cohen.jpg
/fb/jtfdcr/imgs/AUT_0869.JPG|jtf2930_orig_asphalt
/fb/jtfdcr/imgs/AUT_1340.JPG|jtf30_barnarea_sharing
/fb/jtfdcr/imgs/AUT_1342.JPG|jtf30_barnarea_sinkhole_erosion_runoff
/fb/jtfdcr/imgs/berea_apt_IMG_2534.jpg
/fb/jtfdcr/imgs/berea_aptIMG_2535.jpg
/fb/jtfdcr/imgs/berea_homeIMG_2538.jpg
/fb/jtfdcr/imgs/chalkmail_jtfdcr_online_soonIMG_2617.jpg
/fb/jtfdcr/imgs/chapel_IMG_2544.jpg
/fb/jtfdcr/imgs/chapel_IMG_2546.jpg
/fb/jtfdcr/imgs/clever-and-do-rite-donuts-cycling-kit-1500127555.jpg
/fb/jtfdcr/imgs/columbia_pw_adminiwii_ko2us.jpg
/fb/jtfdcr/imgs/community_police.jpg|police_jahns_preventive_patrol_activity
/fb/jtfdcr/imgs/defford_boat.jpg
/fb/jtfdcr/imgs/gavel_band.jpg
/fb/jtfdcr/imgs/IMG_0137.JPG|kassil_walter_uniform
/fb/jtfdcr/imgs/IMG_0143.JPG|sk1
/fb/jtfdcr/imgs/IMG_0149.JPG|sk2
/fb/jtfdcr/imgs/IMG_0150.JPG|jk1
/fb/jtfdcr/imgs/IMG_0151.JPG|jk2	euro_bottle_n_smoke
/fb/jtfdcr/imgs/IMG_0161.JPG|sk0
/fb/jtfdcr/imgs/IMG_0159.JPG|jak1
/fb/jtfdcr/imgs/IMG_0167.JPG|jsk2	josh_n_stacy
/fb/jtfdcr/imgs/IMG_0176.JPG|jak3
/fb/jtfdcr/imgs/IMG_0193.JPG|jtf29
/fb/jtfdcr/imgs/IMG_0290.JPG|dogs_jtf30_doogy2
/fb/jtfdcr/imgs/IMG_0490.JPG|kids_blake_carter_cycle
/fb/jtfdcr/imgs/IMG_1611.JPG|defford_auction_markers_fenclets
/fb/jtfdcr/imgs/IMG_1626.JPG|defford_auction_markers_eagles
/fb/jtfdcr/imgs/IMG_1692.JPG|thieft_eagle_north_jtf28-30-31_per_jtf32_donutvanlaw
/fb/jtfdcr/imgs/IMG_1650.jpg|jtf30_sinkhole_shed_close
/fb/jtfdcr/imgs/IMG_4189.jpg|jk_eyes
/fb/jtfdcr/imgs/IMG_4190.jpg|jk_eyes_left
/fb/jtfdcr/imgs/IMG_4191.jpg|jk_eyes_right
/fb/jtfdcr/imgs/IMG_6034_jtfdc_opensawhorse4swatting|swatteam_staging
/fb/jtfdcr/imgs/IMG_6047.JPG|swatteam_onthe_move
/fb/jtfdcr/imgs/IMG_6861.JPG|chalkmail_vanalism_thieft_invoice
/fb/jtfdcr/imgs/IMG_9669.JPG|jtf30_sinkhole_driveway_cracks
/fb/jtfdcr/imgs/IMG_9693.JPG|jtf29_broken_door_latch
/fb/jtfdcr/imgs/jak1_n_glen_wedding_IMG_2598|jak1_n_glen_wedding
/fb/jtfdcr/imgs/jk_smile_IMG_2497.JPG|
/fb/jtfdcr/imgs/jkwii_401k.png
/fb/jtfdcr/imgs/jkwii_active_trusteeIMG_2529.jpg
/fb/jtfdcr/imgs/jkwii4trustee_drivewayIMG_2615.jpg
/fb/jtfdcr/imgs/jkwii4trustee_jkwii4trustee.png
/fb/jtfdcr/imgs/jtf_35155.png|lunar_cresant_period
/fb/jtfdcr/imgs/jtf_mental_1_001.jpg|201608_mental_health_court
/fb/jtfdcr/imgs/jtf29_jenna_sawhorse_kindergarten.png
/fb/jtfdcr/imgs/jtf29_iranian_door_knocker_pretheft.jpg|thieft_prerevolution_iranian_door_knocker_5000_dollars
/fb/jtfdcr/imgs/jtfcd_20150608_stalkaround_trafficIMG_1927.jpg
/fb/jtfdcr/imgs/jtfdc.jpg|jtfinc_byrdview
/fb/jtfdcr/imgs/jtf30_barnshedIMG_1786.jpg|jtf30_sinkhole
/fb/jtfdcr/imgs/jtf30_Christiantdd.jpg
/fb/jtfdcr/imgs/jtf30_doogy2_autonomous_patrol.png
/fb/jtfdcr/imgs/jtf30_doogy2_autonomous_patrol2.png
/fb/jtfdcr/imgs/jtf30_jackcam2.png|jtf30-2_jackie_martin_nocover_survallence
/fb/jtfdcr/imgs/jtf30_jackcam3.png|jtf30-2_jackie_martin_mower_survallence
/fb/jtfdcr/imgs/jtf31_snap_20170123_187589_noparking_party_sign.png
/fb/jtfdcr/imgs/jtf31_snap_20170123_187594+party_whitevan_stalker_middlefingure.png
/fb/jtfdcr/imgs/jtf31_snap_20170123_187594+party_whitevan_stalker_profile2.png
/fb/jtfdcr/imgs/jtf31_snap_20170123_187593_party_whitevan_stalker.png
/fb/jtfdcr/imgs/jtf31_encrochment_sawhorse_eagles2.png
/fb/jtfdcr/imgs/jtf31_encrochment_sawhorse_eagles.png
/fb/jtfdcr/imgs/jtf31_snap_20170123_187599_doublefingers_crotchgrab.png
/fb/jtfdcr/imgs/jtf31_snap_20170123_187600_clownporch_partygame_harrassment2.png
/fb/jtfdcr/imgs/jtf31_streetview_northIMG_9926.jpg
/fb/jtfdcr/imgs/jtf32_doberwatchers_2of4.jpg
/fb/jtfdcr/imgs/jtf32_heidi4_autonomous_patrol.png
/fb/jtfdcr/imgs/jtf32_snap_20170123_187588.jpg|jtf32_joann_donavanlaw_took_n_dog
/fb/jtfdcr/imgs/jtf32_snap_20170123_187585.jpg|jtf32_joann_donavanlaw_took_n_dog
/fb/jtfdcr/imgs/jtf32_snap_20170123_187587.jpg|jtf32_joann_donavanlaw_took_n_dog
/fb/jtfdcr/imgs/jtfdc_001.jpg|sk_court_protect_jtf39_scarygary_byrd
/fb/jtfdcr/imgs/jtfdc_002.jpg|sk_court_protect_jtf39_scarygary_byrd
/fb/jtfdcr/imgs/jtfdc_003.jpg|sk_court_protect_jtf39_scarygary_byrd
/fb/jtfdcr/imgs/jtfdc_003.jpg|sk_court_protect_jtf39_scarygary_byrd
/fb/jtfdcr/imgs/jtf2930_uneasement_sawhorse_closedIMG_9931.jpg
/fb/jtfdcr/imgs/jtfdc_29-30_shared_drive.jpg|road_potholes
/fb/jtfdcr/imgs/jtfdc_018.jpg|jkwii_property_bag
/fb/jtfdcr/imgs/jtfdc_058.jpg|sk_court_protect_jtf39_scarygary_byrd
/fb/jtfdcr/imgs/jtfdc_059.jpg|sk_court_protect_jtf39_scarygary_byrd
/fb/jtfdcr/imgs/jtfdc_060.jpg|sk_court_protect_jtf39_scarygary_byrd
/fb/jtfdcr/imgs/jtfdc_061.jpg|sk_court_protect_jtf39_scarygary_byrd
/fb/jtfdcr/imgs/jtfdc_062.jpg|sk_court_protect_jtf39_scarygary_byrd
/fb/jtfdcr/imgs/jtfdc_063.jpg|sk_court_protect_jtf39_scarygary_byrd
/fb/jtfdcr/imgs/jtfdc_064.jpg|sk_court_protect_jtf39_scarygary_byrd
/fb/jtfdcr/imgs/jtfdc_065.jpg|sk_court_protect_jtf39_scarygary_byrd_handnotes
/fb/jtfdcr/imgs/jtfdc_066.jpg|sk_court_protect_jtf39_scarygary_byrd_handnotes
/fb/jtfdcr/imgs/jtfdc_067.jpg|sk_court_protect_jtf39_scarygary_byrd_klighter
/fb/jtfdcr/imgs/jtfdc_2001.png|started_out_so_nice
/fb/jtfdcr/imgs/jtfdc_2015_jtf31_privatecourtIMG_1834.jpg
/fb/jtfdcr/imgs/jtfdc_2016_1200_jtf30_blanket_survallence_camsIMG_2088.jpg
/fb/jtfdcr/imgs/jtfdc_2930_sinkholeIMG_8515.jpg
/fb/jtfdcr/imgs/jtfdc_201506_0000_jtf30_barnarea_siezureIMG_2132.jpg
/fb/jtfdcr/imgs/jtfdc_201506_0000_shed_sinkhole_umbrellaIMG_2332.jpg
/fb/jtfdcr/imgs/jtfdc_201506_0000_shed_sinkhole_umbrellaIMG_2332.jpg
/fb/jtfdcr/imgs/jtfdc_201506_jtf32_donutvanlaw_stalkaroundtrucksIMG_2280.jpg
/fb/jtfdcr/imgs/jtfdc_201611_000_stalkarounds_weeeksIMG_2029.jpg
/fb/jtfdcr/imgs/jtfdc_20150608_banned_tent_n_telescopeIMG_1876.jpg
/fb/jtfdcr/imgs/jtfdc_20150615_jtf32_donutvanlaw_stalkaround_teamIMG_2226.jpg
/fb/jtfdcr/imgs/jtfdc_20150616_stolen_umbrella_abuttment_sansmanintIMG_1933.jpg
/fb/jtfdcr/imgs/jtfdc_20200704_0000_flagpole_sansflag_since_2015_IMG_9433.jpg
/fb/jtfdcr/imgs/jtfdc_20200704_0000_gazibo_lite_IMG_9438.jpg
/fb/jtfdcr/imgs/jtfdc_20200704_0000_gazibo_gopherhome_IMG_9429.jpg
/fb/jtfdcr/imgs/jtfdc_20200818_1800_trial7_judge_concannon_byrdbell_v_jkwii_1.jpg
/fb/jtfdcr/imgs/jtfdc_20200818_1800_trial7_judge_concannon_byrdbell_v_jkwii_2.jpg
/fb/jtfdcr/imgs/jtfdc_20200818_1800_trial7_judge_concannon_byrdbell_v_jkwii_3.jpg
/fb/jtfdcr/imgs/jtfdc_2020151200_jtf32_donutvanlaw_heidiIMG_1996.jpg
/fb/jtfdcr/imgs/jtfdc_jtf30_located_on_private_cul_de_sac_IMG_9425.jpg
/fb/jtfdcr/imgs/jtfdc_jtf31_tresspass_encroachmentIMG_8288.png
/fb/jtfdcr/imgs/jtfdc_one_family_two_sisters_shared_barn_n_commonsIMG_9434.png
/fb/jtfdcr/imgs/jtfdc_jtf31_tresspass_encroachmentIMG_8288.png
/fb/jtfdcr/imgs/jtfdc_kids_IMG_8424.png
/fb/jtfdcr/imgs/jtfdc_one_family_two_sisters_shared_barn_n_commonsIMG_9434.png
/fb/jtfdcr/imgs/jtfdcr2.jpg|unbelievable_but_all_true
/fb/jtfdcr/imgs/jtfinc_bigtruck_mitigationIMG_9929.jpg|road_potholes
/fb/jtfdcr/imgs/jtfinc_driveway_pothotIMG_1870.jpg
/fb/jtfdcr/imgs/jtfinc_neighborhoodwatchIMG_2787.jpg
/fb/jtfdcr/imgs/jtfinc_pothole_IMG_2867.jpg
/fb/jtfdcr/imgs/jtfinc_vs_jtf29jk_ 1.jpeg
/fb/jtfdcr/imgs/jtfinc_vs_jtf29jk_ 2.jpeg
/fb/jtfdcr/imgs/jtfinc_vs_jtf29jk_ 3.jpeg
/fb/jtfdcr/imgs/jtfinc_vs_jtf29jk_ 4.jpeg
/fb/jtfdcr/imgs/jtfinc_vs_jtf29jk_ 5.jpeg
/fb/jtfdcr/imgs/jtfinc_vs_jtf29jk_ 6.jpeg
/fb/jtfdcr/imgs/kittiblognIMG_2487.jpg
/fb/jtfdcr/imgs/kophone.jpg
/fb/jtfdcr/imgs/ladyj_clingyclothes.jpg
/fb/jtfdcr/imgs/ladyj_silouette.jpg
/fb/jtfdcr/imgs/ladyj_onhi.jpg
/fb/jtfdcr/imgs/paityn_IMG_2227.jpg|dancing
/fb/jtfdcr/imgs/parch_pages.jpg
/fb/jtfdcr/imgs/parch_page2s.jpg
/fb/jtfdcr/imgs/parch4.jpg
/fb/jtfdcr/imgs/parchment1.jpg
/fb/jtfdcr/imgs/proxy.duckduckgo.com.png|law_scales
/fb/jtfdcr/imgs/reauest_for_legal_assistance_snap_20170123_197504.png
/fb/jtfdcr/imgs/reauest_for_legal_assistance_snap_20170123_197505.png
/fb/jtfdcr/imgs/reauest_for_legal_assistance_snap_20170123_197506.png
/fb/jtfdcr/imgs/reauest_for_legal_assistance_snap_20170123_197507.png
/fb/jtfdcr/imgs/reauest_for_legal_assistance_snap_20170123_197508.png
/fb/jtfdcr/imgs/reauest_for_legal_assistance_snap_20170123_197509.png
/fb/jtfdcr/imgs/reauest_for_legal_assistance_snap_20170123_197510.png
/fb/jtfdcr/imgs/reauest_for_legal_assistance_snap_20170123_197511.png
/fb/jtfdcr/imgs/reauest_for_legal_assistance_snap_20170123_197512.png
/fb/jtfdcr/imgs/reauest_for_legal_assistance_snap_20170123_197513.png
/fb/jtfdcr/imgs/reauest_for_legal_assistance_snap_20170123_197514.png
/fb/jtfdcr/imgs/reauest_for_legal_assistance_snap_20170123_197515.png
/fb/jtfdcr/imgs/scale_backglow.jpg
/fb/jtfdcr/imgs/scale_btn.png
/fb/jtfdcr/imgs/scale_flag.jpg
/fb/jtfdcr/imgs/scale_books.jpg
/fb/jtfdcr/imgs/scale_flage_honchair.jpg
/fb/jtfdcr/imgs/scalegavelbooks.jpg
/fb/jtfdcr/imgs/scales_ripples.jpg
/fb/jtfdcr/imgs/screenshot_72_20150716_mp4_04056_yelling_c.jpg
/fb/jtfdcr/imgs/snap_20170123_187540_jtfinc_trucktraffic.png
/fb/jtfdcr/imgs/snap_20170123_187552_jtf29_byrd)_seagrist_tresspass_dogassault1.png
/fb/jtfdcr/imgs/snap_20170123_187561_jtf29_jtf38-39_byrd_segrist_tresspass_threats2.png
/fb/jtfdcr/imgs/snap_20170123_187569_jtf29_ljackmow_notresspas_per_new_jtfdc_trustyelder.png
/fb/jtfdcr/imgs/snap_20170123_187570_jtf30_invisible_kids_in_new_speeding_trunaround_lane.png
/fb/jtfdcr/imgs/snap_20170123_187573_police_101_sk_jak2_stlc_property_from_officers_monroe_jahnz.png|sk_jak2_police_A101
/fb/jtfdcr/imgs/snap_20170123_187574_jtf32_bigtruck2jtfdc.png
/fb/jtfdcr/imgs/snap_20170123_187575_jtf29_sawhorse_jtf31_theft.png
/fb/jtfdcr/imgs/snap_20170123_187577_jtf32_neigbood_preservation_police_bedroom_pictures.png
/fb/jtfdcr/imgs/snap_20170123_187576_jtf32_preservation_police_yellowsticker_frenzy.png
/fb/jtfdcr/imgs/snap_20170123_197519.png
/fb/jtfdcr/imgs/snap_20170123_197533_homeowners_wardoff_misled_gps_drivers.png
/fb/jtfdcr/imgs/snap_20170123_197534_wrong_gps.png
/fb/jtfdcr/imgs/snap_20170123_197536_map_souix_passage.png
/fb/jtfdcr/imgs/snap_20170123_197537.png|jtfinc_map
/fb/jtfdcr/imgs/snap_20170123_197538.png|jtfinc_map
/fb/jtfdcr/imgs/snap_20170123_197541.png|jtfdc_abuttment_map
/fb/jtfdcr/imgs/snap_20170123_197542_jtfinc_south_turnaround.png
/fb/jtfdcr/imgs/snap_20170123_197544.png|jtfdc_driveway_map
/fb/jtfdcr/imgs/snap_20170123_197545.png|jtfdc_driveway_map
/fb/jtfdcr/imgs/snap_20170123_197547.png|jtfdc_driveway_map
/fb/jtfdcr/imgs/snap_20170123_197567.png|jtf32_donutvanlaw_dog_n_cycle_club
/fb/jtfdcr/imgs/snap_20170123_197565.png|jtfdc_byrdseye_view_map
/fb/jtfdcr/imgs/waxpaper.jpg
/fb/jtfdcr/imgs/wood_posters.jpg
/fb/jtfdcr/imgs/zn_donutvanlaw_takings_all_took.jpg
/fb/jtfdcr/imgs/jtfdc_20170731_jtf29_mailbox_not_blocked_IMG_1048.JPG
/pages/1_automoosezone.jpg
/pages/1_kids_front_automoosezone.jpg
/pages/1_stop_automoosezone.jpg
/pages/2_automoosezone.jpg
/pages/10_automoosezone.jpg
/pages/12_automoosezone.jpg
/pages/13_automoosezone.jpg
/pages/49_automoosezone.jpg
/pages/50_automoosezone.jpg
/pages/54_automoosezone.jpg
/pages/58_automoosezone.jpg
/pages/60_automoosezone.jpg
/pages/62_automoosezone.jpg
/pages/63_automoosezone.jpg
/pages/64_automoosezone.jpg
/pages/69_automoosezone.jpg
/pages/71_automoosezone.jpg
/pages/IMG_3702_automoosezone.jpg
/pages/IMG_3884b_automoosezone.jpg
/pages/IMG_5611_jtfdc_original_notrespassing_willbeprosecuted_automoosezone.jpg
/pages/IMG_7600b_automoosezone.jpg
/pages/IMG_7615b_automoosezone.jpg
/pages/IMG_7636b_automoosezone.jpg
/pages/IMG_7639b_automoosezone.jpg
/pages/0.jpg
/pages/1.jpg
/pages/2.jpg
/pages/3.jpg
/pages/4.jpg
/pages/5.jpg
/pages/6.jpg
/pages/7.jpg
/pages/8.jpg
/pages/9.jpg
/pages/10.jpg
/pages/11.jpg
/pages/11b.jpg
/pages/12.jpg
/pages/12b.jpg
/pages/13.jpg
/pages/14.jpg
/pages/15.jpg
/pages/16.jpg
/pages/16b.jpg
/pages/17.jpg
/pages/18.jpg
/pages/19.jpg
/pages/1_kids_front.jpg
/pages/1_stop.jpg
/pages/20.jpg
/pages/2017181-1818_002b.jpg
/pages/21.jpg
/pages/22.jpg
/pages/23.jpg
/pages/24.jpg
/pages/25.jpg
/pages/26.jpg
/pages/27.jpg
/pages/28.jpg
/pages/29.jpg
/pages/2b.jpg
/pages/30.jpg
/pages/31.jpg
/pages/32.jpg
/pages/33.jpg
/pages/34.jpg
/pages/35.jpg
/pages/36.jpg
/pages/37.jpg
/pages/38.jpg
/pages/39.jpg
/pages/3a.jpg
/pages/40.jpg
/pages/41.jpg
/pages/42.jpg
/pages/43.jpg
/pages/44.jpg
/pages/45.jpg
/pages/46.jpg
/pages/47.jpg
/pages/48.jpg
/pages/49.jpg
/pages/50.jpg
/pages/51.jpg
/pages/52.jpg
/pages/53.jpg
/pages/54.jpg
/pages/55.jpg
/pages/56.jpg
/pages/57.jpg
/pages/58.jpg
/pages/59.jpg
/pages/60.jpg
/pages/61.jpg
/pages/62.jpg
/pages/63.jpg
/pages/64.jpg
/pages/65.jpg
/pages/66.jpg
/pages/67.jpg
/pages/68.jpg
/pages/69.jpg
/pages/70.jpg
/pages/71.jpg
/imgs/gif/alien_tek/donujt.gif
/imgs/gif/alien_tek/a11_flipbook.gif
/imgs/gif/alien_tek/afda.gif
/imgs/gif/alien_tek/applewait.gif
/imgs/gif/alien_tek/asdfadfad.gif
/imgs/gif/alien_tek/cityspiral.gif
/imgs/gif/alien_tek/cobe4.gif
/imgs/gif/alien_tek/drip1.gif
/imgs/gif/alien_tek/floaters.gif
/imgs/gif/alien_tek/icepalace.gif
/imgs/gif/alien_tek/lit2.gif
/imgs/gif/alien_tek/lite1.gif
/imgs/gif/alien_tek/litecrystle.gif
/imgs/gif/alien_tek/med1.gif
/imgs/gif/alien_tek/med19.gif
/imgs/gif/alien_tek/med3.gif
/imgs/gif/alien_tek/med5.gif
/imgs/gif/alien_tek/med6.gif
/imgs/gif/alien_tek/medpump.gif
/imgs/gif/alien_tek/medskin.gif
/imgs/gif/alien_tek/mek1.gif
/imgs/gif/alien_tek/mek12.gif
/imgs/gif/alien_tek/mek17.gif
/imgs/gif/alien_tek/mek2.gif
/imgs/gif/alien_tek/mek3.gif
/imgs/gif/alien_tek/mek5.gif
/imgs/gif/alien_tek/mek7.gif
/imgs/gif/alien_tek/mek8.gif
/imgs/gif/alien_tek/mek9.gif
/imgs/gif/alien_tek/memcore.gif
/imgs/gif/alien_tek/merd2.gif
/imgs/gif/alien_tek/octopus.gif
/imgs/gif/alien_tek/org1.gif
/imgs/gif/alien_tek/photons.gif
/imgs/gif/alien_tek/pip2.gif
/imgs/gif/alien_tek/pulsehelix.gif
/imgs/gif/alien_tek/smoke.gif
/imgs/gif/alien_tek/static4.gif
/imgs/gif/alien_tek/su5_67_h_1340.gif
/imgs/gif/alien_tek/tesla.gif
/imgs/gif/alien_tek/wave.gif
/imgs/gif/byrdpucker/giph_horse_distotiony.gif
/imgs/gif/byrdpucker/giph_horse_smerky.gif
/imgs/gif/byrdpucker/giphy._horse_glittergif.gif
/imgs/gif/byrdpucker/giphy._horse_koballsgif.gif
/imgs/gif/byrdpucker/giphy_bugs_boundry.gif
/imgs/gif/byrdpucker/giphy_bugs_jaildoors.gif
/imgs/gif/byrdpucker/giphy_bugs_pase.gif
/imgs/gif/byrdpucker/giphy_bugs_sstop.gif
/imgs/gif/byrdpucker/giphy_bugs_takaway.gif
/imgs/gif/byrdpucker/giphy_bugs_wakeup.gif
/imgs/gif/byrdpucker/giphy_byrdpucker_dog_n_pony_show.gif
/imgs/gif/byrdpucker/giphy_cruella_1.gif
/imgs/gif/byrdpucker/giphy_cruella_2.gif
/imgs/gif/byrdpucker/giphy_cubemembrain.gif
/imgs/gif/byrdpucker/giphy_cycle.gif
/imgs/gif/byrdpucker/giphy_cycle_circle.gif
/imgs/gif/byrdpucker/giphy_cycle_dog.gif
/imgs/gif/byrdpucker/giphy_cycle_jtf39.gif
/imgs/gif/byrdpucker/giphy_cycle_legs.gif
/imgs/gif/byrdpucker/giphy_cycle_rodent.gif
/imgs/gif/byrdpucker/giphy_dogpaddle.gif
/imgs/gif/byrdpucker/giphy_dogs1.gif
/imgs/gif/byrdpucker/giphy_dogygym.gif
/imgs/gif/byrdpucker/giphy_horse_soccor.gif
/imgs/gif/byrdpucker/giphy_horse_views.gif
/imgs/gif/byrdpucker/giphy_horsefish.gif
/imgs/gif/byrdpucker/giphy_horseg_girl_vintage.gif
/imgs/gif/byrdpucker/giphy_horseguy_pranser.gif
/imgs/gif/byrdpucker/giphy_horserun_pencil.gif
/imgs/gif/byrdpucker/giphy_horserun_vintage.gif
/imgs/gif/byrdpucker/giphy_koponies.gif
/imgs/gif/byrdpucker/giphy_magicdoors2.gif
/imgs/gif/byrdpucker/giphy_magicscary_shadows.gif
/imgs/gif/byrdpucker/giphy_magicspecter2.gif
/imgs/gif/byrdpucker/giphy_mrevil.gif
/imgs/gif/byrdpucker/giphy_mtfail.gif
/imgs/gif/byrdpucker/giphy_pinocio_1.gif
/imgs/gif/byrdpucker/giphy_pinocioa_2.gif
/imgs/gif/byrdpucker/giphy_pinocioa_4.gif
/imgs/gif/byrdpucker/giphy_wicked_curtains_closel_.gif
/imgs/gif/crazy/giph_imnotcrazyy.gif
/imgs/gif/crazy/giphy_containment.gif
/imgs/gif/crazy/giphy_crazy3.gif
/imgs/gif/crazy/giphy_crazy5.gif
/imgs/gif/crazy/giphy_crazy_blond.gif
/imgs/gif/crazy/giphy_crazy_mickey.gif
/imgs/gif/crazy/giphy_crazy_princess.gif
/imgs/gif/crazy/giphy_crazy_simsoncalass.gif
/imgs/gif/crazy/giphy_crazy_smilyface.gif
/imgs/gif/crazy/giphy_crazyguy.gif
/imgs/gif/crazy/giphy_crazylady.gif
/imgs/gif/crazy/giphy_crazyorb.gif
/imgs/gif/crazy/giphy_crazytoon.gif
/imgs/gif/crazy/giphy_derbyguy.gif
/imgs/gif/crazy/giphy_dracual_onoff.gif
/imgs/gif/crazy/giphy_duck_crazy.gif
/imgs/gif/crazy/giphy_duckcrash.gif
/imgs/gif/crazy/giphy_einstein.gif
/imgs/gif/crazy/giphy_einstein_wabblehead.gif
/imgs/gif/crazy/giphy_expression_dancer.gif
/imgs/gif/crazy/giphy_fingerwave.gif
/imgs/gif/crazy/giphy_ladyscarey.gif
/imgs/gif/crazy/giphy_magicorb_laddle.gif
/imgs/gif/crazy/giphy_nerdy.gif
/imgs/gif/crazy/giphy_rumshower.gif
/imgs/gif/crazy/giphy_science_frank.gif
/imgs/gif/crazy/giphy_screamer.gif
/imgs/gif/crazy/giphy_showergirl.gif
/imgs/gif/crazy/giphy_smile.gif
/imgs/gif/crazy/giphy_smileyshark.gif
/imgs/gif/crazy/giphy_time_waites.gif
/imgs/gif/crazy/giphy_timeguy_late.gif
/imgs/gif/crazy/giphy_zoom_crazyguy.gif
/imgs/gif/cute/bee.gif
/imgs/gif/cute/boop.gif
/imgs/gif/cute/CA 4th 027 copy.gif
/imgs/gif/cute/CA 4th 027.gif
/imgs/gif/cute/catas.gif
/imgs/gif/cute/cats.gif
/imgs/gif/cute/cd81506101b9407dec74b5635a70fb16.gif
/imgs/gif/cute/crayons.gif
/imgs/gif/cute/disb.gif
/imgs/gif/cute/dogconfusion.gif
/imgs/gif/cute/fireworks.gif
/imgs/gif/cute/fireworks13.gif
/imgs/gif/cute/fireworks3.gif
/imgs/gif/cute/fireworks4.gif
/imgs/gif/cute/fish-swimming.gif
/imgs/gif/cute/fish.gif
/imgs/gif/cute/gipdicehy.gif
/imgs/gif/cute/gipdisneyhy.gif
/imgs/gif/cute/gipfadfahy.gif
/imgs/gif/cute/giphy.gif
/imgs/gif/cute/kid.gif
/imgs/gif/cute/party.gif
/imgs/gif/cute/photonorb.gif
/imgs/gif/cute/sfg.gif
/imgs/gif/cute/spinning-arrow-right.gif
/imgs/gif/firebubbles.gif
/imgs/gif/firebubblesb.gif
/imgs/gif/firebubblesd.gif
/imgs/gif/firebubblesp.gif
/imgs/gif/firebubblesq.gif
/imgs/gif/focus/giph_focus_kidy.gif
/imgs/gif/focus/giph_focus_simpson.gif
/imgs/gif/focus/giph_watchery.gif
/imgs/gif/focus/giphy._eyeball_glossygif.gif
/imgs/gif/focus/giphy_eye_1.gif
/imgs/gif/focus/giphy_eye_owl.gif
/imgs/gif/focus/giphy_eyes2mouth.gif
/imgs/gif/focus/giphy_eyes_linedraw.gif
/imgs/gif/focus/giphy_facemasks.gif
/imgs/gif/focus/giphy_focus_3dglasses.gif
/imgs/gif/focus/giphy_focus_dali.gif
/imgs/gif/focus/giphy_focus_goggles.gif
/imgs/gif/focus/giphy_focus_iris.gif
/imgs/gif/focus/giphy_focus_koglasses.gif
/imgs/gif/focus/giphy_focus_sleuth.gif
/imgs/gif/gif_bugs/giph_bugs_bellydancery.gif
/imgs/gif/gif_bugs/giph_bugs_monster_outy.gif
/imgs/gif/gif_bugs/giph_bugs_peppy_heartsy.gif
/imgs/gif/gif_bugs/giph_kiti_earthrise.gif
/imgs/gif/gif_bugs/giph_kiti_flyingsaucersy.gif
/imgs/gif/gif_bugs/giph_kiti_unicorn.gif
/imgs/gif/gif_bugs/giph_the_end1y.gif
/imgs/gif/gif_bugs/giphy.=_bugs_beepbeep_cliff.gif
/imgs/gif/gif_bugs/giphy._bugs_apple_androidgif.gif
/imgs/gif/gif_bugs/giphy4.gif
/imgs/gif/gif_bugs/giphy_alien_tek0721.gif
/imgs/gif/gif_bugs/giphy_anthead.gif
/imgs/gif/gif_bugs/giphy_beepbeep_ropebride.gif
/imgs/gif/gif_bugs/giphy_box_conveyor.gif
/imgs/gif/gif_bugs/giphy_box_spinners.gif
/imgs/gif/gif_bugs/giphy_boxhop.gif
/imgs/gif/gif_bugs/giphy_boxopen.gif
/imgs/gif/gif_bugs/giphy_boxs_amazon.gif
/imgs/gif/gif_bugs/giphy_boxtoon.gif
/imgs/gif/gif_bugs/giphy_bugs_alian_upskirt.gif
/imgs/gif/gif_bugs/giphy_bugs_alien.gif
/imgs/gif/gif_bugs/giphy_bugs_alien_bodyscan.gif
/imgs/gif/gif_bugs/giphy_bugs_alien_digits.gif
/imgs/gif/gif_bugs/giphy_bugs_alien_dog.gif
/imgs/gif/gif_bugs/giphy_bugs_alien_flagplan.gif
/imgs/gif/gif_bugs/giphy_bugs_alien_judge.gif
/imgs/gif/gif_bugs/giphy_bugs_attention.gif
/imgs/gif/gif_bugs/giphy_bugs_beepbeep_bizcard.gif
/imgs/gif/gif_bugs/giphy_bugs_beepbeep_byrdman.gif
/imgs/gif/gif_bugs/giphy_bugs_beepbeep_dont_have_the_heart.gif
/imgs/gif/gif_bugs/giphy_bugs_beepbeep_fallin.gif
/imgs/gif/gif_bugs/giphy_bugs_birdcat.gif
/imgs/gif/gif_bugs/giphy_bugs_bow.gif
/imgs/gif/gif_bugs/giphy_bugs_brunhilda.gif
/imgs/gif/gif_bugs/giphy_bugs_bugattack.gif
/imgs/gif/gif_bugs/giphy_bugs_bull.gif
/imgs/gif/gif_bugs/giphy_bugs_deal_with_it.gif
/imgs/gif/gif_bugs/giphy_bugs_ducklightergif.gif
/imgs/gif/gif_bugs/giphy_bugs_evil_castle.gif
/imgs/gif/gif_bugs/giphy_bugs_excuse_me.gif
/imgs/gif/gif_bugs/giphy_bugs_eyeroll.gif
/imgs/gif/gif_bugs/giphy_bugs_fire.gif
/imgs/gif/gif_bugs/giphy_bugs_heart_skipping.gif
/imgs/gif/gif_bugs/giphy_bugs_heaven_fall.gif
/imgs/gif/gif_bugs/giphy_bugs_hencook.gif
/imgs/gif/gif_bugs/giphy_bugs_heyyou.gif
/imgs/gif/gif_bugs/giphy_bugs_inspiration.gif
/imgs/gif/gif_bugs/giphy_bugs_jailbuny.gif
/imgs/gif/gif_bugs/giphy_bugs_jailsam.gif
/imgs/gif/gif_bugs/giphy_bugs_jitters_sip.gif
/imgs/gif/gif_bugs/giphy_bugs_kiti_jitters.gif
/imgs/gif/gif_bugs/giphy_bugs_mess.gif
/imgs/gif/gif_bugs/giphy_bugs_monster_conon.gif
/imgs/gif/gif_bugs/giphy_bugs_monster_contained.gif
/imgs/gif/gif_bugs/giphy_bugs_monster_doorbar.gif
/imgs/gif/gif_bugs/giphy_bugs_monster_flee.gif
/imgs/gif/gif_bugs/giphy_bugs_monster_grab.gif
/imgs/gif/gif_bugs/giphy_bugs_monster_scare.gif
/imgs/gif/gif_bugs/giphy_bugs_monster_stalk.gif
/imgs/gif/gif_bugs/giphy_bugs_monster_stalk2.gif
/imgs/gif/gif_bugs/giphy_bugs_now_we_dance.gif
/imgs/gif/gif_bugs/giphy_bugs_one_more_time.gif
/imgs/gif/gif_bugs/giphy_bugs_pagecut.gif
/imgs/gif/gif_bugs/giphy_bugs_peppy_kiss.gif
/imgs/gif/gif_bugs/giphy_bugs_piano.gif
/imgs/gif/gif_bugs/giphy_bugs_play_this_game.gif
/imgs/gif/gif_bugs/giphy_bugs_pot.gif
/imgs/gif/gif_bugs/giphy_bugs_rockette.gif
/imgs/gif/gif_bugs/giphy_bugs_rocky.gif
/imgs/gif/gif_bugs/giphy_bugs_season.gif
/imgs/gif/gif_bugs/giphy_bugs_shave.gif
/imgs/gif/gif_bugs/giphy_bugs_slots.gif
/imgs/gif/gif_bugs/giphy_bugs_start.gif
/imgs/gif/gif_bugs/giphy_bugs_target.gif
/imgs/gif/gif_bugs/giphy_bugs_thats_all_folks.gif
/imgs/gif/gif_bugs/giphy_bugs_tooth.gif
/imgs/gif/gif_bugs/giphy_bugs_tv_western.gif
/imgs/gif/gif_bugs/giphy_bugs_tweetybird.gif
/imgs/gif/gif_bugs/giphy_bugs_wanted.gif
/imgs/gif/gif_bugs/giphy_bugs_what_a_maroon.gif
/imgs/gif/gif_bugs/giphy_bugs_whitehorse.gif
/imgs/gif/gif_bugs/giphy_bugs_yipe.gif
/imgs/gif/gif_bugs/giphy_chain_n_torus.gif
/imgs/gif/gif_bugs/giphy_chaos.gif
/imgs/gif/gif_bugs/giphy_checkerboard.gif
/imgs/gif/gif_bugs/giphy_choc_girl_tomuch.gif
/imgs/gif/gif_bugs/giphy_choc_kid.gif
/imgs/gif/gif_bugs/giphy_choc_kid2.gif
/imgs/gif/gif_bugs/giphy_choc_lucy.gif
/imgs/gif/gif_bugs/giphy_choc_pour1.gif
/imgs/gif/gif_bugs/giphy_choc_princess.gif
/imgs/gif/gif_bugs/giphy_choc_selfmed.gif
/imgs/gif/gif_bugs/giphy_clapguy.gif
/imgs/gif/gif_bugs/giphy_corners.gif
/imgs/gif/gif_bugs/giphy_corners2.gif
/imgs/gif/gif_bugs/giphy_crown.gif
/imgs/gif/gif_bugs/giphy_diamond_tubing.gif
/imgs/gif/gif_bugs/giphy_digit_copypaste.gif
/imgs/gif/gif_bugs/giphy_dog_fan.gif
/imgs/gif/gif_bugs/giphy_dogewaves.gif
/imgs/gif/gif_bugs/giphy_escalator.gif
/imgs/gif/gif_bugs/giphy_eyebug_hover.gif
/imgs/gif/gif_bugs/giphy_eyefly.gif
/imgs/gif/gif_bugs/giphy_fantube.gif
/imgs/gif/gif_bugs/giphy_gillligan.gif
/imgs/gif/gif_bugs/giphy_go__barbells.gif
/imgs/gif/gif_bugs/giphy_godtwiddle.gif
/imgs/gif/gif_bugs/giphy_kali_0721_a.gif
/imgs/gif/gif_bugs/giphy_kali_boxs.gif
/imgs/gif/gif_bugs/giphy_kali_cirles.gif
/imgs/gif/gif_bugs/giphy_kiti_boxclose.gif
/imgs/gif/gif_bugs/giphy_kiti_boxlid.gif
/imgs/gif/gif_bugs/giphy_kiti_boxthru.gif
/imgs/gif/gif_bugs/giphy_kiti_inabox.gif
/imgs/gif/gif_bugs/giphy_kiti_lightning.gif
/imgs/gif/gif_bugs/giphy_kitisews.gif
/imgs/gif/gif_bugs/giphy_kity_wings.gif
/imgs/gif/gif_bugs/giphy_konabus_loosewheels.gif
/imgs/gif/gif_bugs/giphy_kt_baseball.gif
/imgs/gif/gif_bugs/giphy_lineart.gif
/imgs/gif/gif_bugs/giphy_lineart2.gif
/imgs/gif/gif_bugs/giphy_mouthballs.gif
/imgs/gif/gif_bugs/giphy_mouthtube.gif
/imgs/gif/gif_bugs/giphy_orb_stamper.gif
/imgs/gif/gif_bugs/giphy_orb_stars_.gif
/imgs/gif/gif_bugs/giphy_orb_wave.gif
/imgs/gif/gif_bugs/giphy_orbs_0721b.gif
/imgs/gif/gif_bugs/giphy_orbs_bubbles.gif
/imgs/gif/gif_bugs/giphy_orbs_pods.gif
/imgs/gif/gif_bugs/giphy_org0721a.gif
/imgs/gif/gif_bugs/giphy_ringman.gif
/imgs/gif/gif_bugs/giphy_skateboard_torus.gif
/imgs/gif/gif_bugs/giphy_sketch_laps.gif
/imgs/gif/gif_bugs/giphy_spinner_white.gif
/imgs/gif/gif_bugs/giphy_star_bounce.gif
/imgs/gif/gif_bugs/giphy_tanklite.gif
/imgs/gif/gif_bugs/giphy_thats_all_folks_porky.gif
/imgs/gif/gif_bugs/giphy_the_end2.gif
/imgs/gif/gif_bugs/giphy_the_end_shade.gif
/imgs/gif/gif_bugs/giphy_thinkguy.gif
/imgs/gif/gif_bugs/giphy_triangles.gif
/imgs/gif/gif_bugs/giphy_undulator.gif
/imgs/gif/gif_bugs/giphy_wrap_it_up.gif
/imgs/gif/gif_spinners/giph_headsy.gif
/imgs/gif/gif_spinners/giphy_0rbs21.gif
/imgs/gif/gif_spinners/giphy_ali_ropeadope.gif
/imgs/gif/gif_spinners/giphy_ball_in_box.gif
/imgs/gif/gif_spinners/giphy_barcoede.gif
/imgs/gif/gif_spinners/giphy_blow_the_house_down.gif
/imgs/gif/gif_spinners/giphy_bookdeamon.gif
/imgs/gif/gif_spinners/giphy_box_dancing.gif
/imgs/gif/gif_spinners/giphy_box_of_shame.gif
/imgs/gif/gif_spinners/giphy_box_of_shane2.gif
/imgs/gif/gif_spinners/giphy_boxes_in_boxes.gif
/imgs/gif/gif_spinners/giphy_boxes_up.gif
/imgs/gif/gif_spinners/giphy_bugout.gif
/imgs/gif/gif_spinners/giphy_bugs_alien_hothead.gif
/imgs/gif/gif_spinners/giphy_bugs_beepbeep_cliffdoor.gif
/imgs/gif/gif_spinners/giphy_bugs_beepbeep_crusin.gif
/imgs/gif/gif_spinners/giphy_bugs_beepbeep_crusin_sketch.gif
/imgs/gif/gif_spinners/giphy_bugs_piano_finger.gif
/imgs/gif/gif_spinners/giphy_bugwalker.gif
/imgs/gif/gif_spinners/giphy_cinderella_shoe_not4u.gif
/imgs/gif/gif_spinners/giphy_control_panel.gif
/imgs/gif/gif_spinners/giphy_crosses.gif
/imgs/gif/gif_spinners/giphy_cube_undulate.gif
/imgs/gif/gif_spinners/giphy_cubefalls.gif
/imgs/gif/gif_spinners/giphy_cubeline.gif
/imgs/gif/gif_spinners/giphy_evenplaning.gif
/imgs/gif/gif_spinners/giphy_eyet_ears.gif
/imgs/gif/gif_spinners/giphy_finders_eye_heart.gif
/imgs/gif/gif_spinners/giphy_fixit.gif
/imgs/gif/gif_spinners/giphy_fractals.gif
/imgs/gif/gif_spinners/giphy_fuzzy_orb.gif
/imgs/gif/gif_spinners/giphy_fuzzyv.gif
/imgs/gif/gif_spinners/giphy_girl_pokadots.gif
/imgs/gif/gif_spinners/giphy_go_gridwaves.gif
/imgs/gif/gif_spinners/giphy_go_lites_around.gif
/imgs/gif/gif_spinners/giphy_go_square_crosses.gif
/imgs/gif/gif_spinners/giphy_go_squares.gif
/imgs/gif/gif_spinners/giphy_go_squares_3d.gif
/imgs/gif/gif_spinners/giphy_go_wobbles.gif
/imgs/gif/gif_spinners/giphy_gorays.gif
/imgs/gif/gif_spinners/giphy_gradient.gif
/imgs/gif/gif_spinners/giphy_gush.gif
/imgs/gif/gif_spinners/giphy_gushpipes.gif
/imgs/gif/gif_spinners/giphy_guy_fingertalk.gif
/imgs/gif/gif_spinners/giphy_guy_salute.gif
/imgs/gif/gif_spinners/giphy_guy_stand_proud.gif
/imgs/gif/gif_spinners/giphy_guy_thumbs_down.gif
/imgs/gif/gif_spinners/giphy_hallway_wiggle.gif
/imgs/gif/gif_spinners/giphy_hand2sand.gif
/imgs/gif/gif_spinners/giphy_head_androidspin.gif
/imgs/gif/gif_spinners/giphy_head_dog.gif
/imgs/gif/gif_spinners/giphy_head_milkbob.gif
/imgs/gif/gif_spinners/giphy_head_oz.gif
/imgs/gif/gif_spinners/giphy_head_rings.gif
/imgs/gif/gif_spinners/giphy_head_running.gif
/imgs/gif/gif_spinners/giphy_head_spin.gif
/imgs/gif/gif_spinners/giphy_head_thinker.gif
/imgs/gif/gif_spinners/giphy_head_trippy.gif
/imgs/gif/gif_spinners/giphy_head_trippy_suit.gif
/imgs/gif/gif_spinners/giphy_headtoo.gif
/imgs/gif/gif_spinners/giphy_heart.gif
/imgs/gif/gif_spinners/giphy_heart_sunny.gif
/imgs/gif/gif_spinners/giphy_hex_mnaggots.gif
/imgs/gif/gif_spinners/giphy_hockey_snoopy.gif
/imgs/gif/gif_spinners/giphy_js.gif
/imgs/gif/gif_spinners/giphy_jumpher.gif
/imgs/gif/gif_spinners/giphy_kali22.gif
/imgs/gif/gif_spinners/giphy_kali_eyeball.gif
/imgs/gif/gif_spinners/giphy_kids_out_of_boxes.gif
/imgs/gif/gif_spinners/giphy_ko_ali.gif
/imgs/gif/gif_spinners/giphy_konabus_catpillar.gif
/imgs/gif/gif_spinners/giphy_kt_circlemovie.gif
/imgs/gif/gif_spinners/giphy_kt_orb_boxers.gif
/imgs/gif/gif_spinners/giphy_kt_wooky.gif
/imgs/gif/gif_spinners/giphy_laptops.gif
/imgs/gif/gif_spinners/giphy_latern.gif
/imgs/gif/gif_spinners/giphy_layers.gif
/imgs/gif/gif_spinners/giphy_litedisplay.gif
/imgs/gif/gif_spinners/giphy_litehouse_pyramid.gif
/imgs/gif/gif_spinners/giphy_longdress.gif
/imgs/gif/gif_spinners/giphy_man_siluet.gif
/imgs/gif/gif_spinners/giphy_manlaser.gif
/imgs/gif/gif_spinners/giphy_mesh_popcorn.gif
/imgs/gif/gif_spinners/giphy_meshwrap.gif
/imgs/gif/gif_spinners/giphy_network_grid.gif
/imgs/gif/gif_spinners/giphy_network_wiggle.gif
/imgs/gif/gif_spinners/giphy_noise3.gif
/imgs/gif/gif_spinners/giphy_orb_cicle.gif
/imgs/gif/gif_spinners/giphy_orb_drips.gif
/imgs/gif/gif_spinners/giphy_orb_fuzzy.gif
/imgs/gif/gif_spinners/giphy_orb_hary.gif
/imgs/gif/gif_spinners/giphy_orb_in_cube.gif
/imgs/gif/gif_spinners/giphy_orb_jar.gif
/imgs/gif/gif_spinners/giphy_orb_layers.gif
/imgs/gif/gif_spinners/giphy_orb_noise1.gif
/imgs/gif/gif_spinners/giphy_orb_noise2.gif
/imgs/gif/gif_spinners/giphy_orb_noise3.gif
/imgs/gif/gif_spinners/giphy_orb_slow.gif
/imgs/gif/gif_spinners/giphy_orb_spiral.gif
/imgs/gif/gif_spinners/giphy_orb_torus.gif
/imgs/gif/gif_spinners/giphy_orb_tubemesh.gif
/imgs/gif/gif_spinners/giphy_orb_undulate.gif
/imgs/gif/gif_spinners/giphy_orbnois4.gif
/imgs/gif/gif_spinners/giphy_orbtubes.gif
/imgs/gif/gif_spinners/giphy_pagedown.gif
/imgs/gif/gif_spinners/giphy_pastryroad_dunes.gif
/imgs/gif/gif_spinners/giphy_pdf.gif
/imgs/gif/gif_spinners/giphy_pyramid_spirals.gif
/imgs/gif/gif_spinners/giphy_radar.gif
/imgs/gif/gif_spinners/giphy_rectanges.gif
/imgs/gif/gif_spinners/giphy_runningman2.gif
/imgs/gif/gif_spinners/giphy_runningman_atyou.gif
/imgs/gif/gif_spinners/giphy_shades.gif
/imgs/gif/gif_spinners/giphy_spinner2.gif
/imgs/gif/gif_spinners/giphy_spinner3.gif
/imgs/gif/gif_spinners/giphy_spinner8.gif
/imgs/gif/gif_spinners/giphy_spinner9.gif
/imgs/gif/gif_spinners/giphy_spinner_disk.gif
/imgs/gif/gif_spinners/giphy_spinner_orb.gif
/imgs/gif/gif_spinners/giphy_spinner_sumi.gif
/imgs/gif/gif_spinners/giphy_spinners.gif
/imgs/gif/gif_spinners/giphy_spinners_cubes.gif
/imgs/gif/gif_spinners/giphy_spiral.gif
/imgs/gif/gif_spinners/giphy_spiraltwists.gif
/imgs/gif/gif_spinners/giphy_spotlite.gif
/imgs/gif/gif_spinners/giphy_sprial_ripples.gif
/imgs/gif/gif_spinners/giphy_stickynotes.gif
/imgs/gif/gif_spinners/giphy_tetertotter.gif
/imgs/gif/gif_spinners/giphy_toiletpaper.gif
/imgs/gif/gif_spinners/giphy_torusstripes.gif
/imgs/gif/gif_spinners/giphy_tvwatcher.gif
/imgs/gif/gif_spinners/giphy_undulate2.gif
/imgs/gif/gif_spinners/giphy_waveup.gif
/imgs/gif/gif_spinners/giphy_wirebouncer.gif
/imgs/gif/gif_spinners/tumblr_nbuxxtxV3w1tre1zbo1_500.gif
/imgs/gif/gifset_b/apple.gif
/imgs/gif/gifset_b/appleb.gif
/imgs/gif/gifset_b/appleb_1.gif
/imgs/gif/gifset_b/appleb_10.gif
/imgs/gif/gifset_b/appleb_100.gif
/imgs/gif/gifset_b/appleb_2.gif
/imgs/gif/gifset_b/appleb_20.gif
/imgs/gif/gifset_b/appleb_3.gif
/imgs/gif/gifset_b/appleb_30.gif
/imgs/gif/gifset_b/appleb_4.gif
/imgs/gif/gifset_b/appleb_40.gif
/imgs/gif/gifset_b/appleb_5.gif
/imgs/gif/gifset_b/appleb_50.gif
/imgs/gif/gifset_b/appleb_6.gif
/imgs/gif/gifset_b/appleb_7.gif
/imgs/gif/gifset_b/appleb_70.gif
/imgs/gif/gifset_b/appleb_8.gif
/imgs/gif/gifset_b/appleb_80.gif
/imgs/gif/gifset_b/appleb_9.gif
/imgs/gif/gifset_b/appleb_90.gif
/imgs/gif/gifset_b/appled.gif
/imgs/gif/gifset_b/appled_1.gif
/imgs/gif/gifset_b/appled_10.gif
/imgs/gif/gifset_b/appled_100.gif
/imgs/gif/gifset_b/appled_2.gif
/imgs/gif/gifset_b/appled_20.gif
/imgs/gif/gifset_b/appled_3.gif
/imgs/gif/gifset_b/appled_30.gif
/imgs/gif/gifset_b/appled_4.gif
/imgs/gif/gifset_b/appled_40.gif
/imgs/gif/gifset_b/appled_5.gif
/imgs/gif/gifset_b/appled_50.gif
/imgs/gif/gifset_b/appled_6.gif
/imgs/gif/gifset_b/appled_7.gif
/imgs/gif/gifset_b/appled_70.gif
/imgs/gif/gifset_b/appled_8.gif
/imgs/gif/gifset_b/appled_80.gif
/imgs/gif/gifset_b/appled_9.gif
/imgs/gif/gifset_b/appled_90.gif
/imgs/gif/gifset_b/applep.gif
/imgs/gif/gifset_b/applep_1.gif
/imgs/gif/gifset_b/applep_10.gif
/imgs/gif/gifset_b/applep_100.gif
/imgs/gif/gifset_b/applep_2.gif
/imgs/gif/gifset_b/applep_20.gif
/imgs/gif/gifset_b/applep_3.gif
/imgs/gif/gifset_b/applep_30.gif
/imgs/gif/gifset_b/applep_4.gif
/imgs/gif/gifset_b/applep_40.gif
/imgs/gif/gifset_b/applep_5.gif
/imgs/gif/gifset_b/applep_50.gif
/imgs/gif/gifset_b/applep_6.gif
/imgs/gif/gifset_b/applep_7.gif
/imgs/gif/gifset_b/applep_70.gif
/imgs/gif/gifset_b/applep_8.gif
/imgs/gif/gifset_b/applep_80.gif
/imgs/gif/gifset_b/applep_9.gif
/imgs/gif/gifset_b/applep_90.gif
/imgs/gif/gifset_b/appleq.gif
/imgs/gif/gifset_b/appleq_1.gif
/imgs/gif/gifset_b/appleq_10.gif
/imgs/gif/gifset_b/appleq_100.gif
/imgs/gif/gifset_b/appleq_2.gif
/imgs/gif/gifset_b/appleq_20.gif
/imgs/gif/gifset_b/appleq_3.gif
/imgs/gif/gifset_b/appleq_30.gif
/imgs/gif/gifset_b/appleq_4.gif
/imgs/gif/gifset_b/appleq_40.gif
/imgs/gif/gifset_b/appleq_5.gif
/imgs/gif/gifset_b/appleq_50.gif
/imgs/gif/gifset_b/appleq_6.gif
/imgs/gif/gifset_b/appleq_7.gif
/imgs/gif/gifset_b/appleq_70.gif
/imgs/gif/gifset_b/appleq_8.gif
/imgs/gif/gifset_b/appleq_80.gif
/imgs/gif/gifset_b/appleq_9.gif
/imgs/gif/gifset_b/appleq_90.gif
/imgs/gif/gifset_b/awards.gif
/imgs/gif/gifset_b/bh.gif
/imgs/gif/gifset_b/bhb.gif
/imgs/gif/gifset_b/bhb_1.gif
/imgs/gif/gifset_b/bhb_10.gif
/imgs/gif/gifset_b/bhb_100.gif
/imgs/gif/gifset_b/bhb_2.gif
/imgs/gif/gifset_b/bhb_20.gif
/imgs/gif/gifset_b/bhb_3.gif
/imgs/gif/gifset_b/bhb_30.gif
/imgs/gif/gifset_b/bhb_4.gif
/imgs/gif/gifset_b/bhb_40.gif
/imgs/gif/gifset_b/bhb_5.gif
/imgs/gif/gifset_b/bhb_50.gif
/imgs/gif/gifset_b/bhb_6.gif
/imgs/gif/gifset_b/bhb_7.gif
/imgs/gif/gifset_b/bhb_70.gif
/imgs/gif/gifset_b/bhb_8.gif
/imgs/gif/gifset_b/bhb_80.gif
/imgs/gif/gifset_b/bhb_9.gif
/imgs/gif/gifset_b/bhb_90.gif
/imgs/gif/gifset_b/bhd.gif
/imgs/gif/gifset_b/bhd_1.gif
/imgs/gif/gifset_b/bhd_10.gif
/imgs/gif/gifset_b/bhd_100.gif
/imgs/gif/gifset_b/bhd_2.gif
/imgs/gif/gifset_b/bhd_20.gif
/imgs/gif/gifset_b/bhd_3.gif
/imgs/gif/gifset_b/bhd_30.gif
/imgs/gif/gifset_b/bhd_4.gif
/imgs/gif/gifset_b/bhd_40.gif
/imgs/gif/gifset_b/bhd_5.gif
/imgs/gif/gifset_b/bhd_50.gif
/imgs/gif/gifset_b/bhd_6.gif
/imgs/gif/gifset_b/bhd_7.gif
/imgs/gif/gifset_b/bhd_70.gif
/imgs/gif/gifset_b/bhd_8.gif
/imgs/gif/gifset_b/bhd_80.gif
/imgs/gif/gifset_b/bhd_9.gif
/imgs/gif/gifset_b/bhd_90.gif
/imgs/gif/gifset_b/bhp.gif
/imgs/gif/gifset_b/bhp_1.gif
/imgs/gif/gifset_b/bhp_10.gif
/imgs/gif/gifset_b/bhp_100.gif
/imgs/gif/gifset_b/bhp_2.gif
/imgs/gif/gifset_b/bhp_20.gif
/imgs/gif/gifset_b/bhp_3.gif
/imgs/gif/gifset_b/bhp_30.gif
/imgs/gif/gifset_b/bhp_4.gif
/imgs/gif/gifset_b/bhp_40.gif
/imgs/gif/gifset_b/bhp_5.gif
/imgs/gif/gifset_b/bhp_50.gif
/imgs/gif/gifset_b/bhp_6.gif
/imgs/gif/gifset_b/bhp_7.gif
/imgs/gif/gifset_b/bhp_70.gif
/imgs/gif/gifset_b/bhp_8.gif
/imgs/gif/gifset_b/bhp_80.gif
/imgs/gif/gifset_b/bhp_9.gif
/imgs/gif/gifset_b/bhp_90.gif
/imgs/gif/gifset_b/bhq.gif
/imgs/gif/gifset_b/bhq_1.gif
/imgs/gif/gifset_b/bhq_10.gif
/imgs/gif/gifset_b/bhq_100.gif
/imgs/gif/gifset_b/bhq_2.gif
/imgs/gif/gifset_b/bhq_20.gif
/imgs/gif/gifset_b/bhq_3.gif
/imgs/gif/gifset_b/bhq_30.gif
/imgs/gif/gifset_b/bhq_4.gif
/imgs/gif/gifset_b/bhq_40.gif
/imgs/gif/gifset_b/bhq_5.gif
/imgs/gif/gifset_b/bhq_50.gif
/imgs/gif/gifset_b/bhq_6.gif
/imgs/gif/gifset_b/bhq_7.gif
/imgs/gif/gifset_b/bhq_70.gif
/imgs/gif/gifset_b/bhq_8.gif
/imgs/gif/gifset_b/bhq_80.gif
/imgs/gif/gifset_b/bhq_9.gif
/imgs/gif/gifset_b/bhq_90.gif
/imgs/gif/gifset_f/dollars.gif
/imgs/gif/gifset_f/dollarsb.gif
/imgs/gif/gifset_f/dollarsb_1.gif
/imgs/gif/gifset_f/dollarsb_10.gif
/imgs/gif/gifset_f/dollarsb_100.gif
/imgs/gif/gifset_f/dollarsb_2.gif
/imgs/gif/gifset_f/dollarsb_20.gif
/imgs/gif/gifset_f/dollarsb_3.gif
/imgs/gif/gifset_f/dollarsb_30.gif
/imgs/gif/gifset_f/dollarsb_4.gif
/imgs/gif/gifset_f/dollarsb_40.gif
/imgs/gif/gifset_f/dollarsb_5.gif
/imgs/gif/gifset_f/dollarsb_50.gif
/imgs/gif/gifset_f/dollarsb_6.gif
/imgs/gif/gifset_f/dollarsb_7.gif
/imgs/gif/gifset_f/dollarsb_70.gif
/imgs/gif/gifset_f/dollarsb_8.gif
/imgs/gif/gifset_f/dollarsb_80.gif
/imgs/gif/gifset_f/dollarsb_9.gif
/imgs/gif/gifset_f/dollarsb_90.gif
/imgs/gif/gifset_f/dollarsd.gif
/imgs/gif/gifset_f/dollarsd_1.gif
/imgs/gif/gifset_f/dollarsd_10.gif
/imgs/gif/gifset_f/dollarsd_100.gif
/imgs/gif/gifset_f/dollarsd_2.gif
/imgs/gif/gifset_f/dollarsd_20.gif
/imgs/gif/gifset_f/dollarsd_3.gif
/imgs/gif/gifset_f/dollarsd_30.gif
/imgs/gif/gifset_f/dollarsd_4.gif
/imgs/gif/gifset_f/dollarsd_40.gif
/imgs/gif/gifset_f/dollarsd_5.gif
/imgs/gif/gifset_f/dollarsd_50.gif
/imgs/gif/gifset_f/dollarsd_6.gif
/imgs/gif/gifset_f/dollarsd_7.gif
/imgs/gif/gifset_f/dollarsd_70.gif
/imgs/gif/gifset_f/dollarsd_8.gif
/imgs/gif/gifset_f/dollarsd_80.gif
/imgs/gif/gifset_f/dollarsd_9.gif
/imgs/gif/gifset_f/dollarsd_90.gif
/imgs/gif/gifset_f/dollarsp.gif
/imgs/gif/gifset_f/dollarsp_1.gif
/imgs/gif/gifset_f/dollarsp_10.gif
/imgs/gif/gifset_f/dollarsp_100.gif
/imgs/gif/gifset_f/dollarsp_2.gif
/imgs/gif/gifset_f/dollarsp_20.gif
/imgs/gif/gifset_f/dollarsp_3.gif
/imgs/gif/gifset_f/dollarsp_30.gif
/imgs/gif/gifset_f/dollarsp_4.gif
/imgs/gif/gifset_f/dollarsp_40.gif
/imgs/gif/gifset_f/dollarsp_5.gif
/imgs/gif/gifset_f/dollarsp_50.gif
/imgs/gif/gifset_f/dollarsp_6.gif
/imgs/gif/gifset_f/dollarsp_7.gif
/imgs/gif/gifset_f/dollarsp_70.gif
/imgs/gif/gifset_f/dollarsp_8.gif
/imgs/gif/gifset_f/dollarsp_80.gif
/imgs/gif/gifset_f/dollarsp_9.gif
/imgs/gif/gifset_f/dollarsp_90.gif
/imgs/gif/gifset_f/dollarsq.gif
/imgs/gif/gifset_f/dollarsq_1.gif
/imgs/gif/gifset_f/dollarsq_10.gif
/imgs/gif/gifset_f/dollarsq_100.gif
/imgs/gif/gifset_f/dollarsq_2.gif
/imgs/gif/gifset_f/dollarsq_20.gif
/imgs/gif/gifset_f/dollarsq_3.gif
/imgs/gif/gifset_f/dollarsq_30.gif
/imgs/gif/gifset_f/dollarsq_4.gif
/imgs/gif/gifset_f/dollarsq_40.gif
/imgs/gif/gifset_f/dollarsq_5.gif
/imgs/gif/gifset_f/dollarsq_50.gif
/imgs/gif/gifset_f/dollarsq_6.gif
/imgs/gif/gifset_f/dollarsq_7.gif
/imgs/gif/gifset_f/dollarsq_70.gif
/imgs/gif/gifset_f/dollarsq_8.gif
/imgs/gif/gifset_f/dollarsq_80.gif
/imgs/gif/gifset_f/dollarsq_9.gif
/imgs/gif/gifset_f/dollarsq_90.gif
/imgs/gif/gifset_f/eye1.gif
/imgs/gif/gifset_f/eye1b.gif
/imgs/gif/gifset_f/eye1b_1.gif
/imgs/gif/gifset_f/eye1b_10.gif
/imgs/gif/gifset_f/eye1b_100.gif
/imgs/gif/gifset_f/eye1b_2.gif
/imgs/gif/gifset_f/eye1b_20.gif
/imgs/gif/gifset_f/eye1b_3.gif
/imgs/gif/gifset_f/eye1b_30.gif
/imgs/gif/gifset_f/eye1b_4.gif
/imgs/gif/gifset_f/eye1b_40.gif
/imgs/gif/gifset_f/eye1b_5.gif
/imgs/gif/gifset_f/eye1b_50.gif
/imgs/gif/gifset_f/eye1b_6.gif
/imgs/gif/gifset_f/eye1b_7.gif
/imgs/gif/gifset_f/eye1b_70.gif
/imgs/gif/gifset_f/eye1b_8.gif
/imgs/gif/gifset_f/eye1b_80.gif
/imgs/gif/gifset_f/eye1b_9.gif
/imgs/gif/gifset_f/eye1b_90.gif
/imgs/gif/gifset_f/eye1d.gif
/imgs/gif/gifset_f/eye1d_1.gif
/imgs/gif/gifset_f/eye1d_10.gif
/imgs/gif/gifset_f/eye1d_100.gif
/imgs/gif/gifset_f/eye1d_2.gif
/imgs/gif/gifset_f/eye1d_20.gif
/imgs/gif/gifset_f/eye1d_3.gif
/imgs/gif/gifset_f/eye1d_30.gif
/imgs/gif/gifset_f/eye1d_4.gif
/imgs/gif/gifset_f/eye1d_40.gif
/imgs/gif/gifset_f/eye1d_5.gif
/imgs/gif/gifset_f/eye1d_50.gif
/imgs/gif/gifset_f/eye1d_6.gif
/imgs/gif/gifset_f/eye1d_7.gif
/imgs/gif/gifset_f/eye1d_70.gif
/imgs/gif/gifset_f/eye1d_8.gif
/imgs/gif/gifset_f/eye1d_80.gif
/imgs/gif/gifset_f/eye1d_9.gif
/imgs/gif/gifset_f/eye1d_90.gif
/imgs/gif/gifset_f/eye1p.gif
/imgs/gif/gifset_f/eye1p_1.gif
/imgs/gif/gifset_f/eye1p_10.gif
/imgs/gif/gifset_f/eye1p_100.gif
/imgs/gif/gifset_f/eye1p_2.gif
/imgs/gif/gifset_f/eye1p_20.gif
/imgs/gif/gifset_f/eye1p_3.gif
/imgs/gif/gifset_f/eye1p_30.gif
/imgs/gif/gifset_f/eye1p_4.gif
/imgs/gif/gifset_f/eye1p_40.gif
/imgs/gif/gifset_f/eye1p_5.gif
/imgs/gif/gifset_f/eye1p_50.gif
/imgs/gif/gifset_f/eye1p_6.gif
/imgs/gif/gifset_f/eye1p_7.gif
/imgs/gif/gifset_f/eye1p_70.gif
/imgs/gif/gifset_f/eye1p_8.gif
/imgs/gif/gifset_f/eye1p_80.gif
/imgs/gif/gifset_f/eye1p_9.gif
/imgs/gif/gifset_f/eye1p_90.gif
/imgs/gif/gifset_f/eye1q.gif
/imgs/gif/gifset_f/eye1q_1.gif
/imgs/gif/gifset_f/eye1q_10.gif
/imgs/gif/gifset_f/eye1q_100.gif
/imgs/gif/gifset_f/eye1q_2.gif
/imgs/gif/gifset_f/eye1q_20.gif
/imgs/gif/gifset_f/eye1q_3.gif
/imgs/gif/gifset_f/eye1q_30.gif
/imgs/gif/gifset_f/eye1q_4.gif
/imgs/gif/gifset_f/eye1q_40.gif
/imgs/gif/gifset_f/eye1q_5.gif
/imgs/gif/gifset_f/eye1q_50.gif
/imgs/gif/gifset_f/eye1q_6.gif
/imgs/gif/gifset_f/eye1q_7.gif
/imgs/gif/gifset_f/eye1q_70.gif
/imgs/gif/gifset_f/eye1q_8.gif
/imgs/gif/gifset_f/eye1q_80.gif
/imgs/gif/gifset_f/eye1q_9.gif
/imgs/gif/gifset_f/eye1q_90.gif
/imgs/gif/gifset_f/eye2.gif
/imgs/gif/gifset_f/eye2b.gif
/imgs/gif/gifset_f/eye2b_1.gif
/imgs/gif/gifset_f/eye2b_10.gif
/imgs/gif/gifset_f/eye2b_100.gif
/imgs/gif/gifset_f/eye2b_2.gif
/imgs/gif/gifset_f/eye2b_20.gif
/imgs/gif/gifset_f/eye2b_3.gif
/imgs/gif/gifset_f/eye2b_30.gif
/imgs/gif/gifset_f/eye2b_4.gif
/imgs/gif/gifset_f/eye2b_40.gif
/imgs/gif/gifset_f/eye2b_5.gif
/imgs/gif/gifset_f/eye2b_50.gif
/imgs/gif/gifset_f/eye2b_6.gif
/imgs/gif/gifset_f/eye2b_7.gif
/imgs/gif/gifset_f/eye2b_70.gif
/imgs/gif/gifset_f/eye2b_8.gif
/imgs/gif/gifset_f/eye2b_80.gif
/imgs/gif/gifset_f/eye2b_9.gif
/imgs/gif/gifset_f/eye2b_90.gif
/imgs/gif/gifset_f/eye2d.gif
/imgs/gif/gifset_f/eye2d_1.gif
/imgs/gif/gifset_f/eye2d_10.gif
/imgs/gif/gifset_f/eye2d_100.gif
/imgs/gif/gifset_f/eye2d_2.gif
/imgs/gif/gifset_f/eye2d_20.gif
/imgs/gif/gifset_f/eye2d_3.gif
/imgs/gif/gifset_f/eye2d_30.gif
/imgs/gif/gifset_f/eye2d_4.gif
/imgs/gif/gifset_f/eye2d_40.gif
/imgs/gif/gifset_f/eye2d_5.gif
/imgs/gif/gifset_f/eye2d_50.gif
/imgs/gif/gifset_f/eye2d_6.gif
/imgs/gif/gifset_f/eye2d_7.gif
/imgs/gif/gifset_f/eye2d_70.gif
/imgs/gif/gifset_f/eye2d_8.gif
/imgs/gif/gifset_f/eye2d_80.gif
/imgs/gif/gifset_f/eye2d_9.gif
/imgs/gif/gifset_f/eye2d_90.gif
/imgs/gif/gifset_f/eye2p.gif
/imgs/gif/gifset_f/eye2p_1.gif
/imgs/gif/gifset_f/eye2p_10.gif
/imgs/gif/gifset_f/eye2p_100.gif
/imgs/gif/gifset_f/eye2p_2.gif
/imgs/gif/gifset_f/eye2p_20.gif
/imgs/gif/gifset_f/eye2p_3.gif
/imgs/gif/gifset_f/eye2p_30.gif
/imgs/gif/gifset_f/eye2p_4.gif
/imgs/gif/gifset_f/eye2p_40.gif
/imgs/gif/gifset_f/eye2p_5.gif
/imgs/gif/gifset_f/eye2p_50.gif
/imgs/gif/gifset_f/eye2p_6.gif
/imgs/gif/gifset_f/eye2p_7.gif
/imgs/gif/gifset_f/eye2p_70.gif
/imgs/gif/gifset_f/eye2p_8.gif
/imgs/gif/gifset_f/eye2p_80.gif
/imgs/gif/gifset_f/eye2p_9.gif
/imgs/gif/gifset_f/eye2p_90.gif
/imgs/gif/gifset_f/eye2q.gif
/imgs/gif/gifset_f/eye2q_1.gif
/imgs/gif/gifset_f/eye2q_10.gif
/imgs/gif/gifset_f/eye2q_100.gif
/imgs/gif/gifset_f/eye2q_2.gif
/imgs/gif/gifset_f/eye2q_20.gif
/imgs/gif/gifset_f/eye2q_3.gif
/imgs/gif/gifset_f/eye2q_30.gif
/imgs/gif/gifset_f/eye2q_4.gif
/imgs/gif/gifset_f/eye2q_40.gif
/imgs/gif/gifset_f/eye2q_5.gif
/imgs/gif/gifset_f/eye2q_50.gif
/imgs/gif/gifset_f/eye2q_6.gif
/imgs/gif/gifset_f/eye2q_7.gif
/imgs/gif/gifset_f/eye2q_70.gif
/imgs/gif/gifset_f/eye2q_8.gif
/imgs/gif/gifset_f/eye2q_80.gif
/imgs/gif/gifset_f/eye2q_9.gif
/imgs/gif/gifset_f/eye2q_90.gif
/imgs/gif/gifset_f/eye3.gif
/imgs/gif/gifset_f/eye3b.gif
/imgs/gif/gifset_f/eye3b_1.gif
/imgs/gif/gifset_f/eye3b_10.gif
/imgs/gif/gifset_f/eye3b_100.gif
/imgs/gif/gifset_f/eye3b_2.gif
/imgs/gif/gifset_f/eye3b_20.gif
/imgs/gif/gifset_f/eye3b_3.gif
/imgs/gif/gifset_f/eye3b_30.gif
/imgs/gif/gifset_f/eye3b_4.gif
/imgs/gif/gifset_f/eye3b_40.gif
/imgs/gif/gifset_f/eye3b_5.gif
/imgs/gif/gifset_f/eye3b_50.gif
/imgs/gif/gifset_f/eye3b_6.gif
/imgs/gif/gifset_f/eye3b_7.gif
/imgs/gif/gifset_f/eye3b_70.gif
/imgs/gif/gifset_f/eye3b_8.gif
/imgs/gif/gifset_f/eye3b_80.gif
/imgs/gif/gifset_f/eye3b_9.gif
/imgs/gif/gifset_f/eye3b_90.gif
/imgs/gif/gifset_f/eye3d.gif
/imgs/gif/gifset_f/eye3d_1.gif
/imgs/gif/gifset_f/eye3d_10.gif
/imgs/gif/gifset_f/eye3d_100.gif
/imgs/gif/gifset_f/eye3d_2.gif
/imgs/gif/gifset_f/eye3d_20.gif
/imgs/gif/gifset_f/eye3d_3.gif
/imgs/gif/gifset_f/eye3d_30.gif
/imgs/gif/gifset_f/eye3d_4.gif
/imgs/gif/gifset_f/eye3d_40.gif
/imgs/gif/gifset_f/eye3d_5.gif
/imgs/gif/gifset_f/eye3d_50.gif
/imgs/gif/gifset_f/eye3d_6.gif
/imgs/gif/gifset_f/eye3d_7.gif
/imgs/gif/gifset_f/eye3d_70.gif
/imgs/gif/gifset_f/eye3d_8.gif
/imgs/gif/gifset_f/eye3d_80.gif
/imgs/gif/gifset_f/eye3d_9.gif
/imgs/gif/gifset_f/eye3d_90.gif
/imgs/gif/gifset_f/eye3p.gif
/imgs/gif/gifset_f/eye3p_1.gif
/imgs/gif/gifset_f/eye3p_10.gif
/imgs/gif/gifset_f/eye3p_100.gif
/imgs/gif/gifset_f/eye3p_2.gif
/imgs/gif/gifset_f/eye3p_20.gif
/imgs/gif/gifset_f/eye3p_3.gif
/imgs/gif/gifset_f/eye3p_30.gif
/imgs/gif/gifset_f/eye3p_4.gif
/imgs/gif/gifset_f/eye3p_40.gif
/imgs/gif/gifset_f/eye3p_5.gif
/imgs/gif/gifset_f/eye3p_50.gif
/imgs/gif/gifset_f/eye3p_6.gif
/imgs/gif/gifset_f/eye3p_7.gif
/imgs/gif/gifset_f/eye3p_70.gif
/imgs/gif/gifset_f/eye3p_8.gif
/imgs/gif/gifset_f/eye3p_80.gif
/imgs/gif/gifset_f/eye3p_9.gif
/imgs/gif/gifset_f/eye3p_90.gif
/imgs/gif/gifset_f/eye3q.gif
/imgs/gif/gifset_f/eye3q_1.gif
/imgs/gif/gifset_f/eye3q_10.gif
/imgs/gif/gifset_f/eye3q_100.gif
/imgs/gif/gifset_f/eye3q_2.gif
/imgs/gif/gifset_f/eye3q_20.gif
/imgs/gif/gifset_f/eye3q_3.gif
/imgs/gif/gifset_f/eye3q_30.gif
/imgs/gif/gifset_f/eye3q_4.gif
/imgs/gif/gifset_f/eye3q_40.gif
/imgs/gif/gifset_f/eye3q_5.gif
/imgs/gif/gifset_f/eye3q_50.gif
/imgs/gif/gifset_f/eye3q_6.gif
/imgs/gif/gifset_f/eye3q_7.gif
/imgs/gif/gifset_f/eye3q_70.gif
/imgs/gif/gifset_f/eye3q_8.gif
/imgs/gif/gifset_f/eye3q_80.gif
/imgs/gif/gifset_f/eye3q_9.gif
/imgs/gif/gifset_f/eye3q_90.gif
/imgs/gif/gifset_f/film.gif
/imgs/gif/gifset_f/filmb.gif
/imgs/gif/gifset_f/filmb_1.gif
/imgs/gif/gifset_f/filmb_10.gif
/imgs/gif/gifset_f/filmb_100.gif
/imgs/gif/gifset_f/filmb_2.gif
/imgs/gif/gifset_f/filmb_20.gif
/imgs/gif/gifset_f/filmb_3.gif
/imgs/gif/gifset_f/filmb_30.gif
/imgs/gif/gifset_f/filmb_4.gif
/imgs/gif/gifset_f/filmb_40.gif
/imgs/gif/gifset_f/filmb_5.gif
/imgs/gif/gifset_f/filmb_50.gif
/imgs/gif/gifset_f/filmb_6.gif
/imgs/gif/gifset_f/filmb_7.gif
/imgs/gif/gifset_f/filmb_70.gif
/imgs/gif/gifset_f/filmb_8.gif
/imgs/gif/gifset_f/filmb_80.gif
/imgs/gif/gifset_f/filmb_9.gif
/imgs/gif/gifset_f/filmb_90.gif
/imgs/gif/gifset_f/filmd.gif
/imgs/gif/gifset_f/filmd_1.gif
/imgs/gif/gifset_f/filmd_10.gif
/imgs/gif/gifset_f/filmd_100.gif
/imgs/gif/gifset_f/filmd_2.gif
/imgs/gif/gifset_f/filmd_20.gif
/imgs/gif/gifset_f/filmd_3.gif
/imgs/gif/gifset_f/filmd_30.gif
/imgs/gif/gifset_f/filmd_4.gif
/imgs/gif/gifset_f/filmd_40.gif
/imgs/gif/gifset_f/filmd_5.gif
/imgs/gif/gifset_f/filmd_50.gif
/imgs/gif/gifset_f/filmd_6.gif
/imgs/gif/gifset_f/filmd_7.gif
/imgs/gif/gifset_f/filmd_70.gif
/imgs/gif/gifset_f/filmd_8.gif
/imgs/gif/gifset_f/filmd_80.gif
/imgs/gif/gifset_f/filmd_9.gif
/imgs/gif/gifset_f/filmd_90.gif
/imgs/gif/gifset_f/filmp.gif
/imgs/gif/gifset_f/filmp_1.gif
/imgs/gif/gifset_f/filmp_10.gif
/imgs/gif/gifset_f/filmp_100.gif
/imgs/gif/gifset_f/filmp_2.gif
/imgs/gif/gifset_f/filmp_20.gif
/imgs/gif/gifset_f/filmp_3.gif
/imgs/gif/gifset_f/filmp_30.gif
/imgs/gif/gifset_f/filmp_4.gif
/imgs/gif/gifset_f/filmp_40.gif
/imgs/gif/gifset_f/filmp_5.gif
/imgs/gif/gifset_f/filmp_50.gif
/imgs/gif/gifset_f/filmp_6.gif
/imgs/gif/gifset_f/filmp_7.gif
/imgs/gif/gifset_f/filmp_70.gif
/imgs/gif/gifset_f/filmp_8.gif
/imgs/gif/gifset_f/filmp_80.gif
/imgs/gif/gifset_f/filmp_9.gif
/imgs/gif/gifset_f/filmp_90.gif
/imgs/gif/gifset_f/filmq.gif
/imgs/gif/gifset_f/filmq_1.gif
/imgs/gif/gifset_f/filmq_10.gif
/imgs/gif/gifset_f/filmq_100.gif
/imgs/gif/gifset_f/filmq_2.gif
/imgs/gif/gifset_f/filmq_20.gif
/imgs/gif/gifset_f/filmq_3.gif
/imgs/gif/gifset_f/filmq_30.gif
/imgs/gif/gifset_f/filmq_4.gif
/imgs/gif/gifset_f/filmq_40.gif
/imgs/gif/gifset_f/filmq_5.gif
/imgs/gif/gifset_f/filmq_50.gif
/imgs/gif/gifset_f/filmq_6.gif
/imgs/gif/gifset_f/filmq_7.gif
/imgs/gif/gifset_f/filmq_70.gif
/imgs/gif/gifset_f/filmq_8.gif
/imgs/gif/gifset_f/filmq_80.gif
/imgs/gif/gifset_f/filmq_9.gif
/imgs/gif/gifset_f/filmq_90.gif
/imgs/gif/gifset_f/firebubblesb_1.gif
/imgs/gif/gifset_f/firebubblesb_10.gif
/imgs/gif/gifset_f/firebubblesb_100.gif
/imgs/gif/gifset_f/firebubblesb_2.gif
/imgs/gif/gifset_f/firebubblesb_20.gif
/imgs/gif/gifset_f/firebubblesb_3.gif
/imgs/gif/gifset_f/firebubblesb_30.gif
/imgs/gif/gifset_f/firebubblesb_4.gif
/imgs/gif/gifset_f/firebubblesb_40.gif
/imgs/gif/gifset_f/firebubblesb_5.gif
/imgs/gif/gifset_f/firebubblesb_50.gif
/imgs/gif/gifset_f/firebubblesb_6.gif
/imgs/gif/gifset_f/firebubblesb_7.gif
/imgs/gif/gifset_f/firebubblesb_70.gif
/imgs/gif/gifset_f/firebubblesb_8.gif
/imgs/gif/gifset_f/firebubblesb_80.gif
/imgs/gif/gifset_f/firebubblesb_9.gif
/imgs/gif/gifset_f/firebubblesb_90.gif
/imgs/gif/gifset_f/firebubblesd_1.gif
/imgs/gif/gifset_f/firebubblesd_10.gif
/imgs/gif/gifset_f/firebubblesd_100.gif
/imgs/gif/gifset_f/firebubblesd_2.gif
/imgs/gif/gifset_f/firebubblesd_20.gif
/imgs/gif/gifset_f/firebubblesd_3.gif
/imgs/gif/gifset_f/firebubblesd_30.gif
/imgs/gif/gifset_f/firebubblesd_4.gif
/imgs/gif/gifset_f/firebubblesd_40.gif
/imgs/gif/gifset_f/firebubblesd_5.gif
/imgs/gif/gifset_f/firebubblesd_50.gif
/imgs/gif/gifset_f/firebubblesd_6.gif
/imgs/gif/gifset_f/firebubblesd_7.gif
/imgs/gif/gifset_f/firebubblesd_70.gif
/imgs/gif/gifset_f/firebubblesd_8.gif
/imgs/gif/gifset_f/firebubblesd_80.gif
/imgs/gif/gifset_f/firebubblesd_9.gif
/imgs/gif/gifset_f/firebubblesd_90.gif
/imgs/gif/gifset_f/firebubblesp_1.gif
/imgs/gif/gifset_f/firebubblesp_10.gif
/imgs/gif/gifset_f/firebubblesp_100.gif
/imgs/gif/gifset_f/firebubblesp_2.gif
/imgs/gif/gifset_f/firebubblesp_20.gif
/imgs/gif/gifset_f/firebubblesp_3.gif
/imgs/gif/gifset_f/firebubblesp_30.gif
/imgs/gif/gifset_f/firebubblesp_4.gif
/imgs/gif/gifset_f/firebubblesp_40.gif
/imgs/gif/gifset_f/firebubblesp_5.gif
/imgs/gif/gifset_f/firebubblesp_50.gif
/imgs/gif/gifset_f/firebubblesp_6.gif
/imgs/gif/gifset_f/firebubblesp_7.gif
/imgs/gif/gifset_f/firebubblesp_70.gif
/imgs/gif/gifset_f/firebubblesp_8.gif
/imgs/gif/gifset_f/firebubblesp_80.gif
/imgs/gif/gifset_f/firebubblesp_9.gif
/imgs/gif/gifset_f/firebubblesp_90.gif
/imgs/gif/gifset_firebubbles/firework.gif
/imgs/gif/gifset_firebubbles/fireworkb.gif
/imgs/gif/gifset_firebubbles/fireworkb_1.gif
/imgs/gif/gifset_firebubbles/fireworkb_10.gif
/imgs/gif/gifset_firebubbles/fireworkb_100.gif
/imgs/gif/gifset_firebubbles/fireworkb_2.gif
/imgs/gif/gifset_firebubbles/fireworkb_20.gif
/imgs/gif/gifset_firebubbles/fireworkb_3.gif
/imgs/gif/gifset_firebubbles/fireworkb_30.gif
/imgs/gif/gifset_firebubbles/fireworkb_4.gif
/imgs/gif/gifset_firebubbles/fireworkb_40.gif
/imgs/gif/gifset_firebubbles/fireworkb_5.gif
/imgs/gif/gifset_firebubbles/fireworkb_50.gif
/imgs/gif/gifset_firebubbles/fireworkb_6.gif
/imgs/gif/gifset_firebubbles/fireworkb_7.gif
/imgs/gif/gifset_firebubbles/fireworkb_70.gif
/imgs/gif/gifset_firebubbles/fireworkb_8.gif
/imgs/gif/gifset_firebubbles/fireworkb_80.gif
/imgs/gif/gifset_firebubbles/fireworkb_9.gif
/imgs/gif/gifset_firebubbles/fireworkb_90.gif
/imgs/gif/gifset_firebubbles/fireworkd.gif
/imgs/gif/gifset_firebubbles/fireworkd_1.gif
/imgs/gif/gifset_firebubbles/fireworkd_10.gif
/imgs/gif/gifset_firebubbles/fireworkd_100.gif
/imgs/gif/gifset_firebubbles/fireworkd_2.gif
/imgs/gif/gifset_firebubbles/fireworkd_20.gif
/imgs/gif/gifset_firebubbles/fireworkd_3.gif
/imgs/gif/gifset_firebubbles/fireworkd_30.gif
/imgs/gif/gifset_firebubbles/fireworkd_4.gif
/imgs/gif/gifset_firebubbles/fireworkd_40.gif
/imgs/gif/gifset_firebubbles/fireworkd_5.gif
/imgs/gif/gifset_firebubbles/fireworkd_50.gif
/imgs/gif/gifset_firebubbles/fireworkd_6.gif
/imgs/gif/gifset_firebubbles/fireworkd_7.gif
/imgs/gif/gifset_firebubbles/fireworkd_70.gif
/imgs/gif/gifset_firebubbles/fireworkd_8.gif
/imgs/gif/gifset_firebubbles/fireworkd_80.gif
/imgs/gif/gifset_firebubbles/fireworkd_9.gif
/imgs/gif/gifset_firebubbles/fireworkd_90.gif
/imgs/gif/gifset_firebubbles/fireworkp.gif
/imgs/gif/gifset_firebubbles/fireworkp_1.gif
/imgs/gif/gifset_firebubbles/fireworkp_10.gif
/imgs/gif/gifset_firebubbles/fireworkp_100.gif
/imgs/gif/gifset_firebubbles/fireworkp_2.gif
/imgs/gif/gifset_firebubbles/fireworkp_20.gif
/imgs/gif/gifset_firebubbles/fireworkp_3.gif
/imgs/gif/gifset_firebubbles/fireworkp_30.gif
/imgs/gif/gifset_firebubbles/fireworkp_4.gif
/imgs/gif/gifset_firebubbles/fireworkp_40.gif
/imgs/gif/gifset_firebubbles/fireworkp_5.gif
/imgs/gif/gifset_firebubbles/fireworkp_50.gif
/imgs/gif/gifset_firebubbles/fireworkp_6.gif
/imgs/gif/gifset_firebubbles/fireworkp_7.gif
/imgs/gif/gifset_firebubbles/fireworkp_70.gif
/imgs/gif/gifset_firebubbles/fireworkp_8.gif
/imgs/gif/gifset_firebubbles/fireworkp_80.gif
/imgs/gif/gifset_firebubbles/fireworkp_9.gif
/imgs/gif/gifset_firebubbles/fireworkp_90.gif
/imgs/gif/gifset_firebubbles/fireworkq.gif
/imgs/gif/gifset_firebubbles/fireworkq_1.gif
/imgs/gif/gifset_firebubbles/fireworkq_10.gif
/imgs/gif/gifset_firebubbles/fireworkq_100.gif
/imgs/gif/gifset_firebubbles/fireworkq_2.gif
/imgs/gif/gifset_firebubbles/fireworkq_20.gif
/imgs/gif/gifset_firebubbles/fireworkq_3.gif
/imgs/gif/gifset_firebubbles/fireworkq_30.gif
/imgs/gif/gifset_firebubbles/fireworkq_4.gif
/imgs/gif/gifset_firebubbles/fireworkq_40.gif
/imgs/gif/gifset_firebubbles/fireworkq_5.gif
/imgs/gif/gifset_firebubbles/fireworkq_50.gif
/imgs/gif/gifset_firebubbles/fireworkq_6.gif
/imgs/gif/gifset_firebubbles/fireworkq_7.gif
/imgs/gif/gifset_firebubbles/fireworkq_70.gif
/imgs/gif/gifset_firebubbles/fireworkq_8.gif
/imgs/gif/gifset_firebubbles/fireworkq_80.gif
/imgs/gif/gifset_firebubbles/fireworkq_9.gif
/imgs/gif/gifset_firebubbles/fireworkq_90.gif
/imgs/gif/gifset_h/geard2.gif
/imgs/gif/gifset_h/geard2b.gif
/imgs/gif/gifset_h/geard2b_1.gif
/imgs/gif/gifset_h/geard2b_10.gif
/imgs/gif/gifset_h/geard2b_100.gif
/imgs/gif/gifset_h/geard2b_2.gif
/imgs/gif/gifset_h/geard2b_20.gif
/imgs/gif/gifset_h/geard2b_3.gif
/imgs/gif/gifset_h/geard2b_30.gif
/imgs/gif/gifset_h/geard2b_4.gif
/imgs/gif/gifset_h/geard2b_40.gif
/imgs/gif/gifset_h/geard2b_5.gif
/imgs/gif/gifset_h/geard2b_50.gif
/imgs/gif/gifset_h/geard2b_6.gif
/imgs/gif/gifset_h/geard2b_7.gif
/imgs/gif/gifset_h/geard2b_70.gif
/imgs/gif/gifset_h/geard2b_8.gif
/imgs/gif/gifset_h/geard2b_80.gif
/imgs/gif/gifset_h/geard2b_9.gif
/imgs/gif/gifset_h/geard2b_90.gif
/imgs/gif/gifset_h/geard2d.gif
/imgs/gif/gifset_h/geard2d_1.gif
/imgs/gif/gifset_h/geard2d_10.gif
/imgs/gif/gifset_h/geard2d_100.gif
/imgs/gif/gifset_h/geard2d_2.gif
/imgs/gif/gifset_h/geard2d_20.gif
/imgs/gif/gifset_h/geard2d_3.gif
/imgs/gif/gifset_h/geard2d_30.gif
/imgs/gif/gifset_h/geard2d_4.gif
/imgs/gif/gifset_h/geard2d_40.gif
/imgs/gif/gifset_h/geard2d_5.gif
/imgs/gif/gifset_h/geard2d_50.gif
/imgs/gif/gifset_h/geard2d_6.gif
/imgs/gif/gifset_h/geard2d_7.gif
/imgs/gif/gifset_h/geard2d_70.gif
/imgs/gif/gifset_h/geard2d_8.gif
/imgs/gif/gifset_h/geard2d_80.gif
/imgs/gif/gifset_h/geard2d_9.gif
/imgs/gif/gifset_h/geard2d_90.gif
/imgs/gif/gifset_h/geard2p.gif
/imgs/gif/gifset_h/geard2p_1.gif
/imgs/gif/gifset_h/geard2p_10.gif
/imgs/gif/gifset_h/geard2p_100.gif
/imgs/gif/gifset_h/geard2p_2.gif
/imgs/gif/gifset_h/geard2p_20.gif
/imgs/gif/gifset_h/geard2p_3.gif
/imgs/gif/gifset_h/geard2p_30.gif
/imgs/gif/gifset_h/geard2p_4.gif
/imgs/gif/gifset_h/geard2p_40.gif
/imgs/gif/gifset_h/geard2p_5.gif
/imgs/gif/gifset_h/geard2p_50.gif
/imgs/gif/gifset_h/geard2p_6.gif
/imgs/gif/gifset_h/geard2p_7.gif
/imgs/gif/gifset_h/geard2p_70.gif
/imgs/gif/gifset_h/geard2p_8.gif
/imgs/gif/gifset_h/geard2p_80.gif
/imgs/gif/gifset_h/geard2p_9.gif
/imgs/gif/gifset_h/geard2p_90.gif
/imgs/gif/gifset_h/geard2q.gif
/imgs/gif/gifset_h/geard2q_1.gif
/imgs/gif/gifset_h/geard2q_10.gif
/imgs/gif/gifset_h/geard2q_100.gif
/imgs/gif/gifset_h/geard2q_2.gif
/imgs/gif/gifset_h/geard2q_20.gif
/imgs/gif/gifset_h/geard2q_3.gif
/imgs/gif/gifset_h/geard2q_30.gif
/imgs/gif/gifset_h/geard2q_4.gif
/imgs/gif/gifset_h/geard2q_40.gif
/imgs/gif/gifset_h/geard2q_5.gif
/imgs/gif/gifset_h/geard2q_50.gif
/imgs/gif/gifset_h/geard2q_6.gif
/imgs/gif/gifset_h/geard2q_7.gif
/imgs/gif/gifset_h/geard2q_70.gif
/imgs/gif/gifset_h/geard2q_8.gif
/imgs/gif/gifset_h/geard2q_80.gif
/imgs/gif/gifset_h/geard2q_9.gif
/imgs/gif/gifset_h/geard2q_90.gif
/imgs/gif/gifset_h/gears2.gif
/imgs/gif/gifset_h/gears2b.gif
/imgs/gif/gifset_h/gears2b_1.gif
/imgs/gif/gifset_h/gears2b_10.gif
/imgs/gif/gifset_h/gears2b_100.gif
/imgs/gif/gifset_h/gears2b_2.gif
/imgs/gif/gifset_h/gears2b_20.gif
/imgs/gif/gifset_h/gears2b_3.gif
/imgs/gif/gifset_h/gears2b_30.gif
/imgs/gif/gifset_h/gears2b_4.gif
/imgs/gif/gifset_h/gears2b_40.gif
/imgs/gif/gifset_h/gears2b_5.gif
/imgs/gif/gifset_h/gears2b_50.gif
/imgs/gif/gifset_h/gears2b_6.gif
/imgs/gif/gifset_h/gears2b_7.gif
/imgs/gif/gifset_h/gears2b_70.gif
/imgs/gif/gifset_h/gears2b_8.gif
/imgs/gif/gifset_h/gears2b_80.gif
/imgs/gif/gifset_h/gears2b_9.gif
/imgs/gif/gifset_h/gears2b_90.gif
/imgs/gif/gifset_h/gears2d.gif
/imgs/gif/gifset_h/gears2d_1.gif
/imgs/gif/gifset_h/gears2d_10.gif
/imgs/gif/gifset_h/gears2d_100.gif
/imgs/gif/gifset_h/gears2d_2.gif
/imgs/gif/gifset_h/gears2d_20.gif
/imgs/gif/gifset_h/gears2d_3.gif
/imgs/gif/gifset_h/gears2d_30.gif
/imgs/gif/gifset_h/gears2d_4.gif
/imgs/gif/gifset_h/gears2d_40.gif
/imgs/gif/gifset_h/gears2d_5.gif
/imgs/gif/gifset_h/gears2d_50.gif
/imgs/gif/gifset_h/gears2d_6.gif
/imgs/gif/gifset_h/gears2d_7.gif
/imgs/gif/gifset_h/gears2d_70.gif
/imgs/gif/gifset_h/gears2d_8.gif
/imgs/gif/gifset_h/gears2d_80.gif
/imgs/gif/gifset_h/gears2d_9.gif
/imgs/gif/gifset_h/gears2d_90.gif
/imgs/gif/gifset_h/gears2p.gif
/imgs/gif/gifset_h/gears2p_1.gif
/imgs/gif/gifset_h/gears2p_10.gif
/imgs/gif/gifset_h/gears2p_100.gif
/imgs/gif/gifset_h/gears2p_2.gif
/imgs/gif/gifset_h/gears2p_20.gif
/imgs/gif/gifset_h/gears2p_3.gif
/imgs/gif/gifset_h/gears2p_30.gif
/imgs/gif/gifset_h/gears2p_4.gif
/imgs/gif/gifset_h/gears2p_40.gif
/imgs/gif/gifset_h/gears2p_5.gif
/imgs/gif/gifset_h/gears2p_50.gif
/imgs/gif/gifset_h/gears2p_6.gif
/imgs/gif/gifset_h/gears2p_7.gif
/imgs/gif/gifset_h/gears2p_70.gif
/imgs/gif/gifset_h/gears2p_8.gif
/imgs/gif/gifset_h/gears2p_80.gif
/imgs/gif/gifset_h/gears2p_9.gif
/imgs/gif/gifset_h/gears2p_90.gif
/imgs/gif/gifset_h/gears2q.gif
/imgs/gif/gifset_h/gears2q_1.gif
/imgs/gif/gifset_h/gears2q_10.gif
/imgs/gif/gifset_h/gears2q_100.gif
/imgs/gif/gifset_h/gears2q_2.gif
/imgs/gif/gifset_h/gears2q_20.gif
/imgs/gif/gifset_h/gears2q_3.gif
/imgs/gif/gifset_h/gears2q_30.gif
/imgs/gif/gifset_h/gears2q_4.gif
/imgs/gif/gifset_h/gears2q_40.gif
/imgs/gif/gifset_h/gears2q_5.gif
/imgs/gif/gifset_h/gears2q_50.gif
/imgs/gif/gifset_h/gears2q_6.gif
/imgs/gif/gifset_h/gears2q_7.gif
/imgs/gif/gifset_h/gears2q_70.gif
/imgs/gif/gifset_h/gears2q_8.gif
/imgs/gif/gifset_h/gears2q_80.gif
/imgs/gif/gifset_h/gears2q_9.gif
/imgs/gif/gifset_h/gears2q_90.gif
/imgs/gif/gifset_h/header.gif
/imgs/gif/gifset_h/headerb.gif
/imgs/gif/gifset_h/headerb_1.gif
/imgs/gif/gifset_h/headerb_10.gif
/imgs/gif/gifset_h/headerb_100.gif
/imgs/gif/gifset_h/headerb_2.gif
/imgs/gif/gifset_h/headerb_20.gif
/imgs/gif/gifset_h/headerb_3.gif
/imgs/gif/gifset_h/headerb_30.gif
/imgs/gif/gifset_h/headerb_4.gif
/imgs/gif/gifset_h/headerb_40.gif
/imgs/gif/gifset_h/headerb_5.gif
/imgs/gif/gifset_h/headerb_50.gif
/imgs/gif/gifset_h/headerb_6.gif
/imgs/gif/gifset_h/headerb_7.gif
/imgs/gif/gifset_h/headerb_70.gif
/imgs/gif/gifset_h/headerb_8.gif
/imgs/gif/gifset_h/headerb_80.gif
/imgs/gif/gifset_h/headerb_9.gif
/imgs/gif/gifset_h/headerb_90.gif
/imgs/gif/gifset_h/headerd.gif
/imgs/gif/gifset_h/headerd_1.gif
/imgs/gif/gifset_h/headerd_10.gif
/imgs/gif/gifset_h/headerd_100.gif
/imgs/gif/gifset_h/headerd_2.gif
/imgs/gif/gifset_h/headerd_20.gif
/imgs/gif/gifset_h/headerd_3.gif
/imgs/gif/gifset_h/headerd_30.gif
/imgs/gif/gifset_h/headerd_4.gif
/imgs/gif/gifset_h/headerd_40.gif
/imgs/gif/gifset_h/headerd_5.gif
/imgs/gif/gifset_h/headerd_50.gif
/imgs/gif/gifset_h/headerd_6.gif
/imgs/gif/gifset_h/headerd_7.gif
/imgs/gif/gifset_h/headerd_70.gif
/imgs/gif/gifset_h/headerd_8.gif
/imgs/gif/gifset_h/headerd_80.gif
/imgs/gif/gifset_h/headerd_9.gif
/imgs/gif/gifset_h/headerd_90.gif
/imgs/gif/gifset_h/headerp.gif
/imgs/gif/gifset_h/headerp_1.gif
/imgs/gif/gifset_h/headerp_10.gif
/imgs/gif/gifset_h/headerp_100.gif
/imgs/gif/gifset_h/headerp_2.gif
/imgs/gif/gifset_h/headerp_20.gif
/imgs/gif/gifset_h/headerp_3.gif
/imgs/gif/gifset_h/headerp_30.gif
/imgs/gif/gifset_h/headerp_4.gif
/imgs/gif/gifset_h/headerp_40.gif
/imgs/gif/gifset_h/headerp_5.gif
/imgs/gif/gifset_h/headerp_50.gif
/imgs/gif/gifset_h/headerp_6.gif
/imgs/gif/gifset_h/headerp_7.gif
/imgs/gif/gifset_h/headerp_70.gif
/imgs/gif/gifset_h/headerp_8.gif
/imgs/gif/gifset_h/headerp_80.gif
/imgs/gif/gifset_h/headerp_9.gif
/imgs/gif/gifset_h/headerp_90.gif
/imgs/gif/gifset_h/headerq.gif
/imgs/gif/gifset_h/headerq_1.gif
/imgs/gif/gifset_h/headerq_10.gif
/imgs/gif/gifset_h/headerq_100.gif
/imgs/gif/gifset_h/headerq_2.gif
/imgs/gif/gifset_h/headerq_20.gif
/imgs/gif/gifset_h/headerq_3.gif
/imgs/gif/gifset_h/headerq_30.gif
/imgs/gif/gifset_h/headerq_4.gif
/imgs/gif/gifset_h/headerq_40.gif
/imgs/gif/gifset_h/headerq_5.gif
/imgs/gif/gifset_h/headerq_50.gif
/imgs/gif/gifset_h/headerq_6.gif
/imgs/gif/gifset_h/headerq_7.gif
/imgs/gif/gifset_h/headerq_70.gif
/imgs/gif/gifset_h/headerq_8.gif
/imgs/gif/gifset_h/headerq_80.gif
/imgs/gif/gifset_h/headerq_9.gif
/imgs/gif/gifset_h/headerq_90.gif
/imgs/gif/gifset_h/heart.gif
/imgs/gif/gifset_h/heartb.gif
/imgs/gif/gifset_h/heartb_1.gif
/imgs/gif/gifset_h/heartb_10.gif
/imgs/gif/gifset_h/heartb_100.gif
/imgs/gif/gifset_h/heartb_2.gif
/imgs/gif/gifset_h/heartb_20.gif
/imgs/gif/gifset_h/heartb_3.gif
/imgs/gif/gifset_h/heartb_30.gif
/imgs/gif/gifset_h/heartb_4.gif
/imgs/gif/gifset_h/heartb_40.gif
/imgs/gif/gifset_h/heartb_5.gif
/imgs/gif/gifset_h/heartb_50.gif
/imgs/gif/gifset_h/heartb_6.gif
/imgs/gif/gifset_h/heartb_7.gif
/imgs/gif/gifset_h/heartb_70.gif
/imgs/gif/gifset_h/heartb_8.gif
/imgs/gif/gifset_h/heartb_80.gif
/imgs/gif/gifset_h/heartb_9.gif
/imgs/gif/gifset_h/heartb_90.gif
/imgs/gif/gifset_h/heartd.gif
/imgs/gif/gifset_h/heartd_1.gif
/imgs/gif/gifset_h/heartd_10.gif
/imgs/gif/gifset_h/heartd_100.gif
/imgs/gif/gifset_h/heartd_2.gif
/imgs/gif/gifset_h/heartd_20.gif
/imgs/gif/gifset_h/heartd_3.gif
/imgs/gif/gifset_h/heartd_30.gif
/imgs/gif/gifset_h/heartd_4.gif
/imgs/gif/gifset_h/heartd_40.gif
/imgs/gif/gifset_h/heartd_5.gif
/imgs/gif/gifset_h/heartd_50.gif
/imgs/gif/gifset_h/heartd_6.gif
/imgs/gif/gifset_h/heartd_7.gif
/imgs/gif/gifset_h/heartd_70.gif
/imgs/gif/gifset_h/heartd_8.gif
/imgs/gif/gifset_h/heartd_80.gif
/imgs/gif/gifset_h/heartd_9.gif
/imgs/gif/gifset_h/heartd_90.gif
/imgs/gif/gifset_h/heartp.gif
/imgs/gif/gifset_h/heartp_1.gif
/imgs/gif/gifset_h/heartp_10.gif
/imgs/gif/gifset_h/heartp_100.gif
/imgs/gif/gifset_h/heartp_2.gif
/imgs/gif/gifset_h/heartp_20.gif
/imgs/gif/gifset_h/heartp_3.gif
/imgs/gif/gifset_h/heartp_30.gif
/imgs/gif/gifset_h/heartp_4.gif
/imgs/gif/gifset_h/heartp_40.gif
/imgs/gif/gifset_h/heartp_5.gif
/imgs/gif/gifset_h/heartp_50.gif
/imgs/gif/gifset_h/heartp_6.gif
/imgs/gif/gifset_h/heartp_7.gif
/imgs/gif/gifset_h/heartp_70.gif
/imgs/gif/gifset_h/heartp_8.gif
/imgs/gif/gifset_h/heartp_80.gif
/imgs/gif/gifset_h/heartp_9.gif
/imgs/gif/gifset_h/heartp_90.gif
/imgs/gif/gifset_h/heartq.gif
/imgs/gif/gifset_h/heartq_1.gif
/imgs/gif/gifset_h/heartq_10.gif
/imgs/gif/gifset_h/heartq_100.gif
/imgs/gif/gifset_h/heartq_2.gif
/imgs/gif/gifset_h/heartq_20.gif
/imgs/gif/gifset_h/heartq_3.gif
/imgs/gif/gifset_h/heartq_30.gif
/imgs/gif/gifset_h/heartq_4.gif
/imgs/gif/gifset_h/heartq_40.gif
/imgs/gif/gifset_h/heartq_5.gif
/imgs/gif/gifset_h/heartq_50.gif
/imgs/gif/gifset_h/heartq_6.gif
/imgs/gif/gifset_h/heartq_7.gif
/imgs/gif/gifset_h/heartq_70.gif
/imgs/gif/gifset_h/heartq_8.gif
/imgs/gif/gifset_h/heartq_80.gif
/imgs/gif/gifset_h/heartq_9.gif
/imgs/gif/gifset_h/heartq_90.gif
/imgs/gif/gifset_h/helpbean.gif
/imgs/gif/gifset_knots/knot.gif
/imgs/gif/gifset_knots/knot_koeye.gif
/imgs/gif/gifset_knots/knotb.gif
/imgs/gif/gifset_knots/knotb_1.gif
/imgs/gif/gifset_knots/knotb_10.gif
/imgs/gif/gifset_knots/knotb_100.gif
/imgs/gif/gifset_knots/knotb_2.gif
/imgs/gif/gifset_knots/knotb_20.gif
/imgs/gif/gifset_knots/knotb_3.gif
/imgs/gif/gifset_knots/knotb_30.gif
/imgs/gif/gifset_knots/knotb_4.gif
/imgs/gif/gifset_knots/knotb_40.gif
/imgs/gif/gifset_knots/knotb_5.gif
/imgs/gif/gifset_knots/knotb_50.gif
/imgs/gif/gifset_knots/knotb_6.gif
/imgs/gif/gifset_knots/knotb_7.gif
/imgs/gif/gifset_knots/knotb_70.gif
/imgs/gif/gifset_knots/knotb_8.gif
/imgs/gif/gifset_knots/knotb_80.gif
/imgs/gif/gifset_knots/knotb_9.gif
/imgs/gif/gifset_knots/knotb_90.gif
/imgs/gif/gifset_knots/knotd.gif
/imgs/gif/gifset_knots/knotd_1.gif
/imgs/gif/gifset_knots/knotd_10.gif
/imgs/gif/gifset_knots/knotd_100.gif
/imgs/gif/gifset_knots/knotd_2.gif
/imgs/gif/gifset_knots/knotd_20.gif
/imgs/gif/gifset_knots/knotd_3.gif
/imgs/gif/gifset_knots/knotd_30.gif
/imgs/gif/gifset_knots/knotd_4.gif
/imgs/gif/gifset_knots/knotd_40.gif
/imgs/gif/gifset_knots/knotd_5.gif
/imgs/gif/gifset_knots/knotd_50.gif
/imgs/gif/gifset_knots/knotd_6.gif
/imgs/gif/gifset_knots/knotd_7.gif
/imgs/gif/gifset_knots/knotd_70.gif
/imgs/gif/gifset_knots/knotd_8.gif
/imgs/gif/gifset_knots/knotd_80.gif
/imgs/gif/gifset_knots/knotd_9.gif
/imgs/gif/gifset_knots/knotd_90.gif
/imgs/gif/gifset_knots/knotl.gif
/imgs/gif/gifset_knots/knotp.gif
/imgs/gif/gifset_knots/knotp_1.gif
/imgs/gif/gifset_knots/knotp_10.gif
/imgs/gif/gifset_knots/knotp_100.gif
/imgs/gif/gifset_knots/knotp_2.gif
/imgs/gif/gifset_knots/knotp_20.gif
/imgs/gif/gifset_knots/knotp_3.gif
/imgs/gif/gifset_knots/knotp_30.gif
/imgs/gif/gifset_knots/knotp_4.gif
/imgs/gif/gifset_knots/knotp_40.gif
/imgs/gif/gifset_knots/knotp_5.gif
/imgs/gif/gifset_knots/knotp_50.gif
/imgs/gif/gifset_knots/knotp_6.gif
/imgs/gif/gifset_knots/knotp_7.gif
/imgs/gif/gifset_knots/knotp_70.gif
/imgs/gif/gifset_knots/knotp_8.gif
/imgs/gif/gifset_knots/knotp_80.gif
/imgs/gif/gifset_knots/knotp_9.gif
/imgs/gif/gifset_knots/knotp_90.gif
/imgs/gif/gifset_knots/knotq.gif
/imgs/gif/gifset_knots/knotq_1.gif
/imgs/gif/gifset_knots/knotq_10.gif
/imgs/gif/gifset_knots/knotq_100.gif
/imgs/gif/gifset_knots/knotq_2.gif
/imgs/gif/gifset_knots/knotq_20.gif
/imgs/gif/gifset_knots/knotq_3.gif
/imgs/gif/gifset_knots/knotq_30.gif
/imgs/gif/gifset_knots/knotq_4.gif
/imgs/gif/gifset_knots/knotq_40.gif
/imgs/gif/gifset_knots/knotq_5.gif
/imgs/gif/gifset_knots/knotq_50.gif
/imgs/gif/gifset_knots/knotq_6.gif
/imgs/gif/gifset_knots/knotq_7.gif
/imgs/gif/gifset_knots/knotq_70.gif
/imgs/gif/gifset_knots/knotq_8.gif
/imgs/gif/gifset_knots/knotq_80.gif
/imgs/gif/gifset_knots/knotq_9.gif
/imgs/gif/gifset_knots/knotq_90.gif
/imgs/gif/gifset_knots/koeye_knot.gif
/imgs/gif/gifset_knots/koeye_knot_100x40.gif
/imgs/gif/gifset_knots/koeye_knot_200x80.gif
/imgs/gif/gifset_knots/koeye_knot_400x160.gif
/imgs/gif/gifset_knots/koeye_rings.gif
/imgs/gif/gifset_m/laser1.gif
/imgs/gif/gifset_m/laser1b.gif
/imgs/gif/gifset_m/laser1b_1.gif
/imgs/gif/gifset_m/laser1b_10.gif
/imgs/gif/gifset_m/laser1b_100.gif
/imgs/gif/gifset_m/laser1b_2.gif
/imgs/gif/gifset_m/laser1b_20.gif
/imgs/gif/gifset_m/laser1b_3.gif
/imgs/gif/gifset_m/laser1b_30.gif
/imgs/gif/gifset_m/laser1b_4.gif
/imgs/gif/gifset_m/laser1b_40.gif
/imgs/gif/gifset_m/laser1b_5.gif
/imgs/gif/gifset_m/laser1b_50.gif
/imgs/gif/gifset_m/laser1b_6.gif
/imgs/gif/gifset_m/laser1b_7.gif
/imgs/gif/gifset_m/laser1b_70.gif
/imgs/gif/gifset_m/laser1b_8.gif
/imgs/gif/gifset_m/laser1b_80.gif
/imgs/gif/gifset_m/laser1b_9.gif
/imgs/gif/gifset_m/laser1b_90.gif
/imgs/gif/gifset_m/laser1d.gif
/imgs/gif/gifset_m/laser1d_1.gif
/imgs/gif/gifset_m/laser1d_10.gif
/imgs/gif/gifset_m/laser1d_100.gif
/imgs/gif/gifset_m/laser1d_2.gif
/imgs/gif/gifset_m/laser1d_20.gif
/imgs/gif/gifset_m/laser1d_3.gif
/imgs/gif/gifset_m/laser1d_30.gif
/imgs/gif/gifset_m/laser1d_4.gif
/imgs/gif/gifset_m/laser1d_40.gif
/imgs/gif/gifset_m/laser1d_5.gif
/imgs/gif/gifset_m/laser1d_50.gif
/imgs/gif/gifset_m/laser1d_6.gif
/imgs/gif/gifset_m/laser1d_7.gif
/imgs/gif/gifset_m/laser1d_70.gif
/imgs/gif/gifset_m/laser1d_8.gif
/imgs/gif/gifset_m/laser1d_80.gif
/imgs/gif/gifset_m/laser1d_9.gif
/imgs/gif/gifset_m/laser1d_90.gif
/imgs/gif/gifset_m/laser1p.gif
/imgs/gif/gifset_m/laser1p_1.gif
/imgs/gif/gifset_m/laser1p_10.gif
/imgs/gif/gifset_m/laser1p_100.gif
/imgs/gif/gifset_m/laser1p_2.gif
/imgs/gif/gifset_m/laser1p_20.gif
/imgs/gif/gifset_m/laser1p_3.gif
/imgs/gif/gifset_m/laser1p_30.gif
/imgs/gif/gifset_m/laser1p_4.gif
/imgs/gif/gifset_m/laser1p_40.gif
/imgs/gif/gifset_m/laser1p_5.gif
/imgs/gif/gifset_m/laser1p_50.gif
/imgs/gif/gifset_m/laser1p_6.gif
/imgs/gif/gifset_m/laser1p_7.gif
/imgs/gif/gifset_m/laser1p_70.gif
/imgs/gif/gifset_m/laser1p_8.gif
/imgs/gif/gifset_m/laser1p_80.gif
/imgs/gif/gifset_m/laser1p_9.gif
/imgs/gif/gifset_m/laser1p_90.gif
/imgs/gif/gifset_m/laser1q.gif
/imgs/gif/gifset_m/laser1q_1.gif
/imgs/gif/gifset_m/laser1q_10.gif
/imgs/gif/gifset_m/laser1q_100.gif
/imgs/gif/gifset_m/laser1q_2.gif
/imgs/gif/gifset_m/laser1q_20.gif
/imgs/gif/gifset_m/laser1q_3.gif
/imgs/gif/gifset_m/laser1q_30.gif
/imgs/gif/gifset_m/laser1q_4.gif
/imgs/gif/gifset_m/laser1q_40.gif
/imgs/gif/gifset_m/laser1q_5.gif
/imgs/gif/gifset_m/laser1q_50.gif
/imgs/gif/gifset_m/laser1q_6.gif
/imgs/gif/gifset_m/laser1q_7.gif
/imgs/gif/gifset_m/laser1q_70.gif
/imgs/gif/gifset_m/laser1q_8.gif
/imgs/gif/gifset_m/laser1q_80.gif
/imgs/gif/gifset_m/laser1q_9.gif
/imgs/gif/gifset_m/laser1q_90.gif
/imgs/gif/gifset_m/laser2.gif
/imgs/gif/gifset_m/laser2b.gif
/imgs/gif/gifset_m/laser2b_1.gif
/imgs/gif/gifset_m/laser2b_10.gif
/imgs/gif/gifset_m/laser2b_100.gif
/imgs/gif/gifset_m/laser2b_2.gif
/imgs/gif/gifset_m/laser2b_20.gif
/imgs/gif/gifset_m/laser2b_3.gif
/imgs/gif/gifset_m/laser2b_30.gif
/imgs/gif/gifset_m/laser2b_4.gif
/imgs/gif/gifset_m/laser2b_40.gif
/imgs/gif/gifset_m/laser2b_5.gif
/imgs/gif/gifset_m/laser2b_50.gif
/imgs/gif/gifset_m/laser2b_6.gif
/imgs/gif/gifset_m/laser2b_7.gif
/imgs/gif/gifset_m/laser2b_70.gif
/imgs/gif/gifset_m/laser2b_8.gif
/imgs/gif/gifset_m/laser2b_80.gif
/imgs/gif/gifset_m/laser2b_9.gif
/imgs/gif/gifset_m/laser2b_90.gif
/imgs/gif/gifset_m/laser2d.gif
/imgs/gif/gifset_m/laser2d_1.gif
/imgs/gif/gifset_m/laser2d_10.gif
/imgs/gif/gifset_m/laser2d_100.gif
/imgs/gif/gifset_m/laser2d_2.gif
/imgs/gif/gifset_m/laser2d_20.gif
/imgs/gif/gifset_m/laser2d_3.gif
/imgs/gif/gifset_m/laser2d_30.gif
/imgs/gif/gifset_m/laser2d_4.gif
/imgs/gif/gifset_m/laser2d_40.gif
/imgs/gif/gifset_m/laser2d_5.gif
/imgs/gif/gifset_m/laser2d_50.gif
/imgs/gif/gifset_m/laser2d_6.gif
/imgs/gif/gifset_m/laser2d_7.gif
/imgs/gif/gifset_m/laser2d_70.gif
/imgs/gif/gifset_m/laser2d_8.gif
/imgs/gif/gifset_m/laser2d_80.gif
/imgs/gif/gifset_m/laser2d_9.gif
/imgs/gif/gifset_m/laser2d_90.gif
/imgs/gif/gifset_m/laser2p.gif
/imgs/gif/gifset_m/laser2p_1.gif
/imgs/gif/gifset_m/laser2p_10.gif
/imgs/gif/gifset_m/laser2p_100.gif
/imgs/gif/gifset_m/laser2p_2.gif
/imgs/gif/gifset_m/laser2p_20.gif
/imgs/gif/gifset_m/laser2p_3.gif
/imgs/gif/gifset_m/laser2p_30.gif
/imgs/gif/gifset_m/laser2p_4.gif
/imgs/gif/gifset_m/laser2p_40.gif
/imgs/gif/gifset_m/laser2p_5.gif
/imgs/gif/gifset_m/laser2p_50.gif
/imgs/gif/gifset_m/laser2p_6.gif
/imgs/gif/gifset_m/laser2p_7.gif
/imgs/gif/gifset_m/laser2p_70.gif
/imgs/gif/gifset_m/laser2p_8.gif
/imgs/gif/gifset_m/laser2p_80.gif
/imgs/gif/gifset_m/laser2p_9.gif
/imgs/gif/gifset_m/laser2p_90.gif
/imgs/gif/gifset_m/laser2q.gif
/imgs/gif/gifset_m/laser2q_1.gif
/imgs/gif/gifset_m/laser2q_10.gif
/imgs/gif/gifset_m/laser2q_100.gif
/imgs/gif/gifset_m/laser2q_2.gif
/imgs/gif/gifset_m/laser2q_20.gif
/imgs/gif/gifset_m/laser2q_3.gif
/imgs/gif/gifset_m/laser2q_30.gif
/imgs/gif/gifset_m/laser2q_4.gif
/imgs/gif/gifset_m/laser2q_40.gif
/imgs/gif/gifset_m/laser2q_5.gif
/imgs/gif/gifset_m/laser2q_50.gif
/imgs/gif/gifset_m/laser2q_6.gif
/imgs/gif/gifset_m/laser2q_7.gif
/imgs/gif/gifset_m/laser2q_70.gif
/imgs/gif/gifset_m/laser2q_8.gif
/imgs/gif/gifset_m/laser2q_80.gif
/imgs/gif/gifset_m/laser2q_9.gif
/imgs/gif/gifset_m/laser2q_90.gif
/imgs/gif/gifset_m/laser3.gif
/imgs/gif/gifset_m/laser3b.gif
/imgs/gif/gifset_m/laser3b_1.gif
/imgs/gif/gifset_m/laser3b_10.gif
/imgs/gif/gifset_m/laser3b_100.gif
/imgs/gif/gifset_m/laser3b_2.gif
/imgs/gif/gifset_m/laser3b_20.gif
/imgs/gif/gifset_m/laser3b_3.gif
/imgs/gif/gifset_m/laser3b_30.gif
/imgs/gif/gifset_m/laser3b_4.gif
/imgs/gif/gifset_m/laser3b_40.gif
/imgs/gif/gifset_m/laser3b_5.gif
/imgs/gif/gifset_m/laser3b_50.gif
/imgs/gif/gifset_m/laser3b_6.gif
/imgs/gif/gifset_m/laser3b_7.gif
/imgs/gif/gifset_m/laser3b_70.gif
/imgs/gif/gifset_m/laser3b_8.gif
/imgs/gif/gifset_m/laser3b_80.gif
/imgs/gif/gifset_m/laser3b_9.gif
/imgs/gif/gifset_m/laser3b_90.gif
/imgs/gif/gifset_m/laser3d.gif
/imgs/gif/gifset_m/laser3d_1.gif
/imgs/gif/gifset_m/laser3d_10.gif
/imgs/gif/gifset_m/laser3d_100.gif
/imgs/gif/gifset_m/laser3d_2.gif
/imgs/gif/gifset_m/laser3d_20.gif
/imgs/gif/gifset_m/laser3d_3.gif
/imgs/gif/gifset_m/laser3d_30.gif
/imgs/gif/gifset_m/laser3d_4.gif
/imgs/gif/gifset_m/laser3d_40.gif
/imgs/gif/gifset_m/laser3d_5.gif
/imgs/gif/gifset_m/laser3d_50.gif
/imgs/gif/gifset_m/laser3d_6.gif
/imgs/gif/gifset_m/laser3d_7.gif
/imgs/gif/gifset_m/laser3d_70.gif
/imgs/gif/gifset_m/laser3d_8.gif
/imgs/gif/gifset_m/laser3d_80.gif
/imgs/gif/gifset_m/laser3d_9.gif
/imgs/gif/gifset_m/laser3d_90.gif
/imgs/gif/gifset_m/laser3p.gif
/imgs/gif/gifset_m/laser3p_1.gif
/imgs/gif/gifset_m/laser3p_10.gif
/imgs/gif/gifset_m/laser3p_100.gif
/imgs/gif/gifset_m/laser3p_2.gif
/imgs/gif/gifset_m/laser3p_20.gif
/imgs/gif/gifset_m/laser3p_3.gif
/imgs/gif/gifset_m/laser3p_30.gif
/imgs/gif/gifset_m/laser3p_4.gif
/imgs/gif/gifset_m/laser3p_40.gif
/imgs/gif/gifset_m/laser3p_5.gif
/imgs/gif/gifset_m/laser3p_50.gif
/imgs/gif/gifset_m/laser3p_6.gif
/imgs/gif/gifset_m/laser3p_7.gif
/imgs/gif/gifset_m/laser3p_70.gif
/imgs/gif/gifset_m/laser3p_8.gif
/imgs/gif/gifset_m/laser3p_80.gif
/imgs/gif/gifset_m/laser3p_9.gif
/imgs/gif/gifset_m/laser3p_90.gif
/imgs/gif/gifset_m/laser3q.gif
/imgs/gif/gifset_m/laser3q_1.gif
/imgs/gif/gifset_m/laser3q_10.gif
/imgs/gif/gifset_m/laser3q_100.gif
/imgs/gif/gifset_m/laser3q_2.gif
/imgs/gif/gifset_m/laser3q_20.gif
/imgs/gif/gifset_m/laser3q_3.gif
/imgs/gif/gifset_m/laser3q_30.gif
/imgs/gif/gifset_m/laser3q_4.gif
/imgs/gif/gifset_m/laser3q_40.gif
/imgs/gif/gifset_m/laser3q_5.gif
/imgs/gif/gifset_m/laser3q_50.gif
/imgs/gif/gifset_m/laser3q_6.gif
/imgs/gif/gifset_m/laser3q_7.gif
/imgs/gif/gifset_m/laser3q_70.gif
/imgs/gif/gifset_m/laser3q_8.gif
/imgs/gif/gifset_m/laser3q_80.gif
/imgs/gif/gifset_m/laser3q_9.gif
/imgs/gif/gifset_m/laser3q_90.gif
/imgs/gif/gifset_m/meterbars.gif
/imgs/gif/gifset_m/meterbarsb.gif
/imgs/gif/gifset_m/meterbarsb_1.gif
/imgs/gif/gifset_m/meterbarsb_10.gif
/imgs/gif/gifset_m/meterbarsb_100.gif
/imgs/gif/gifset_m/meterbarsb_2.gif
/imgs/gif/gifset_m/meterbarsb_20.gif
/imgs/gif/gifset_m/meterbarsb_3.gif
/imgs/gif/gifset_m/meterbarsb_30.gif
/imgs/gif/gifset_m/meterbarsb_4.gif
/imgs/gif/gifset_m/meterbarsb_40.gif
/imgs/gif/gifset_m/meterbarsb_5.gif
/imgs/gif/gifset_m/meterbarsb_50.gif
/imgs/gif/gifset_m/meterbarsb_6.gif
/imgs/gif/gifset_m/meterbarsb_7.gif
/imgs/gif/gifset_m/meterbarsb_70.gif
/imgs/gif/gifset_m/meterbarsb_8.gif
/imgs/gif/gifset_m/meterbarsb_80.gif
/imgs/gif/gifset_m/meterbarsb_9.gif
/imgs/gif/gifset_m/meterbarsb_90.gif
/imgs/gif/gifset_m/meterbarsd.gif
/imgs/gif/gifset_m/meterbarsd_1.gif
/imgs/gif/gifset_m/meterbarsd_10.gif
/imgs/gif/gifset_m/meterbarsd_100.gif
/imgs/gif/gifset_m/meterbarsd_2.gif
/imgs/gif/gifset_m/meterbarsd_20.gif
/imgs/gif/gifset_m/meterbarsd_3.gif
/imgs/gif/gifset_m/meterbarsd_30.gif
/imgs/gif/gifset_m/meterbarsd_4.gif
/imgs/gif/gifset_m/meterbarsd_40.gif
/imgs/gif/gifset_m/meterbarsd_5.gif
/imgs/gif/gifset_m/meterbarsd_50.gif
/imgs/gif/gifset_m/meterbarsd_6.gif
/imgs/gif/gifset_m/meterbarsd_7.gif
/imgs/gif/gifset_m/meterbarsd_70.gif
/imgs/gif/gifset_m/meterbarsd_8.gif
/imgs/gif/gifset_m/meterbarsd_80.gif
/imgs/gif/gifset_m/meterbarsd_9.gif
/imgs/gif/gifset_m/meterbarsd_90.gif
/imgs/gif/gifset_m/meterbarsp.gif
/imgs/gif/gifset_m/meterbarsp_1.gif
/imgs/gif/gifset_m/meterbarsp_10.gif
/imgs/gif/gifset_m/meterbarsp_100.gif
/imgs/gif/gifset_m/meterbarsp_2.gif
/imgs/gif/gifset_m/meterbarsp_20.gif
/imgs/gif/gifset_m/meterbarsp_3.gif
/imgs/gif/gifset_m/meterbarsp_30.gif
/imgs/gif/gifset_m/meterbarsp_4.gif
/imgs/gif/gifset_m/meterbarsp_40.gif
/imgs/gif/gifset_m/meterbarsp_5.gif
/imgs/gif/gifset_m/meterbarsp_50.gif
/imgs/gif/gifset_m/meterbarsp_6.gif
/imgs/gif/gifset_m/meterbarsp_7.gif
/imgs/gif/gifset_m/meterbarsp_70.gif
/imgs/gif/gifset_m/meterbarsp_8.gif
/imgs/gif/gifset_m/meterbarsp_80.gif
/imgs/gif/gifset_m/meterbarsp_9.gif
/imgs/gif/gifset_m/meterbarsp_90.gif
/imgs/gif/gifset_m/meterbarsq.gif
/imgs/gif/gifset_m/meterbarsq_1.gif
/imgs/gif/gifset_m/meterbarsq_10.gif
/imgs/gif/gifset_m/meterbarsq_100.gif
/imgs/gif/gifset_m/meterbarsq_2.gif
/imgs/gif/gifset_m/meterbarsq_20.gif
/imgs/gif/gifset_m/meterbarsq_3.gif
/imgs/gif/gifset_m/meterbarsq_30.gif
/imgs/gif/gifset_m/meterbarsq_4.gif
/imgs/gif/gifset_m/meterbarsq_40.gif
/imgs/gif/gifset_m/meterbarsq_5.gif
/imgs/gif/gifset_m/meterbarsq_50.gif
/imgs/gif/gifset_m/meterbarsq_6.gif
/imgs/gif/gifset_m/meterbarsq_7.gif
/imgs/gif/gifset_m/meterbarsq_70.gif
/imgs/gif/gifset_m/meterbarsq_8.gif
/imgs/gif/gifset_m/meterbarsq_80.gif
/imgs/gif/gifset_m/meterbarsq_9.gif
/imgs/gif/gifset_m/meterbarsq_90.gif
/imgs/gif/gifset_m/meterdots.gif
/imgs/gif/gifset_m/meterdotsb.gif
/imgs/gif/gifset_m/meterdotsb_1.gif
/imgs/gif/gifset_m/meterdotsb_10.gif
/imgs/gif/gifset_m/meterdotsb_100.gif
/imgs/gif/gifset_m/meterdotsb_2.gif
/imgs/gif/gifset_m/meterdotsb_20.gif
/imgs/gif/gifset_m/meterdotsb_3.gif
/imgs/gif/gifset_m/meterdotsb_30.gif
/imgs/gif/gifset_m/meterdotsb_4.gif
/imgs/gif/gifset_m/meterdotsb_40.gif
/imgs/gif/gifset_m/meterdotsb_5.gif
/imgs/gif/gifset_m/meterdotsb_50.gif
/imgs/gif/gifset_m/meterdotsb_6.gif
/imgs/gif/gifset_m/meterdotsb_7.gif
/imgs/gif/gifset_m/meterdotsb_70.gif
/imgs/gif/gifset_m/meterdotsb_8.gif
/imgs/gif/gifset_m/meterdotsb_80.gif
/imgs/gif/gifset_m/meterdotsb_9.gif
/imgs/gif/gifset_m/meterdotsb_90.gif
/imgs/gif/gifset_m/meterdotsd.gif
/imgs/gif/gifset_m/meterdotsd_1.gif
/imgs/gif/gifset_m/meterdotsd_10.gif
/imgs/gif/gifset_m/meterdotsd_100.gif
/imgs/gif/gifset_m/meterdotsd_2.gif
/imgs/gif/gifset_m/meterdotsd_20.gif
/imgs/gif/gifset_m/meterdotsd_3.gif
/imgs/gif/gifset_m/meterdotsd_30.gif
/imgs/gif/gifset_m/meterdotsd_4.gif
/imgs/gif/gifset_m/meterdotsd_40.gif
/imgs/gif/gifset_m/meterdotsd_5.gif
/imgs/gif/gifset_m/meterdotsd_50.gif
/imgs/gif/gifset_m/meterdotsd_6.gif
/imgs/gif/gifset_m/meterdotsd_7.gif
/imgs/gif/gifset_m/meterdotsd_70.gif
/imgs/gif/gifset_m/meterdotsd_8.gif
/imgs/gif/gifset_m/meterdotsd_80.gif
/imgs/gif/gifset_m/meterdotsd_9.gif
/imgs/gif/gifset_m/meterdotsd_90.gif
/imgs/gif/gifset_m/meterdotsp.gif
/imgs/gif/gifset_m/meterdotsp_1.gif
/imgs/gif/gifset_m/meterdotsp_10.gif
/imgs/gif/gifset_m/meterdotsp_100.gif
/imgs/gif/gifset_m/meterdotsp_2.gif
/imgs/gif/gifset_m/meterdotsp_20.gif
/imgs/gif/gifset_m/meterdotsp_3.gif
/imgs/gif/gifset_m/meterdotsp_30.gif
/imgs/gif/gifset_m/meterdotsp_4.gif
/imgs/gif/gifset_m/meterdotsp_40.gif
/imgs/gif/gifset_m/meterdotsp_5.gif
/imgs/gif/gifset_m/meterdotsp_50.gif
/imgs/gif/gifset_m/meterdotsp_6.gif
/imgs/gif/gifset_m/meterdotsp_7.gif
/imgs/gif/gifset_m/meterdotsp_70.gif
/imgs/gif/gifset_m/meterdotsp_8.gif
/imgs/gif/gifset_m/meterdotsp_80.gif
/imgs/gif/gifset_m/meterdotsp_9.gif
/imgs/gif/gifset_m/meterdotsp_90.gif
/imgs/gif/gifset_m/meterdotsq.gif
/imgs/gif/gifset_m/meterdotsq_1.gif
/imgs/gif/gifset_m/meterdotsq_10.gif
/imgs/gif/gifset_m/meterdotsq_100.gif
/imgs/gif/gifset_m/meterdotsq_2.gif
/imgs/gif/gifset_m/meterdotsq_20.gif
/imgs/gif/gifset_m/meterdotsq_3.gif
/imgs/gif/gifset_m/meterdotsq_30.gif
/imgs/gif/gifset_m/meterdotsq_4.gif
/imgs/gif/gifset_m/meterdotsq_40.gif
/imgs/gif/gifset_m/meterdotsq_5.gif
/imgs/gif/gifset_m/meterdotsq_50.gif
/imgs/gif/gifset_m/meterdotsq_6.gif
/imgs/gif/gifset_m/meterdotsq_7.gif
/imgs/gif/gifset_m/meterdotsq_70.gif
/imgs/gif/gifset_m/meterdotsq_8.gif
/imgs/gif/gifset_m/meterdotsq_80.gif
/imgs/gif/gifset_m/meterdotsq_9.gif
/imgs/gif/gifset_m/meterdotsq_90.gif
/imgs/gif/gifset_r/firebubblesq_1.gif
/imgs/gif/gifset_r/firebubblesq_10.gif
/imgs/gif/gifset_r/firebubblesq_100.gif
/imgs/gif/gifset_r/firebubblesq_2.gif
/imgs/gif/gifset_r/firebubblesq_20.gif
/imgs/gif/gifset_r/firebubblesq_3.gif
/imgs/gif/gifset_r/firebubblesq_30.gif
/imgs/gif/gifset_r/firebubblesq_4.gif
/imgs/gif/gifset_r/firebubblesq_40.gif
/imgs/gif/gifset_r/firebubblesq_5.gif
/imgs/gif/gifset_r/firebubblesq_50.gif
/imgs/gif/gifset_r/firebubblesq_6.gif
/imgs/gif/gifset_r/firebubblesq_7.gif
/imgs/gif/gifset_r/firebubblesq_70.gif
/imgs/gif/gifset_r/firebubblesq_8.gif
/imgs/gif/gifset_r/firebubblesq_80.gif
/imgs/gif/gifset_r/firebubblesq_9.gif
/imgs/gif/gifset_r/firebubblesq_90.gif
/imgs/gif/gifset_r/penny.gif
/imgs/gif/gifset_r/pennyb.gif
/imgs/gif/gifset_r/pennyb_1.gif
/imgs/gif/gifset_r/pennyb_10.gif
/imgs/gif/gifset_r/pennyb_100.gif
/imgs/gif/gifset_r/pennyb_2.gif
/imgs/gif/gifset_r/pennyb_20.gif
/imgs/gif/gifset_r/pennyb_3.gif
/imgs/gif/gifset_r/pennyb_30.gif
/imgs/gif/gifset_r/pennyb_4.gif
/imgs/gif/gifset_r/pennyb_40.gif
/imgs/gif/gifset_r/pennyb_5.gif
/imgs/gif/gifset_r/pennyb_50.gif
/imgs/gif/gifset_r/pennyb_6.gif
/imgs/gif/gifset_r/pennyb_7.gif
/imgs/gif/gifset_r/pennyb_70.gif
/imgs/gif/gifset_r/pennyb_8.gif
/imgs/gif/gifset_r/pennyb_80.gif
/imgs/gif/gifset_r/pennyb_9.gif
/imgs/gif/gifset_r/pennyb_90.gif
/imgs/gif/gifset_r/pennyd.gif
/imgs/gif/gifset_r/pennyd_1.gif
/imgs/gif/gifset_r/pennyd_10.gif
/imgs/gif/gifset_r/pennyd_100.gif
/imgs/gif/gifset_r/pennyd_2.gif
/imgs/gif/gifset_r/pennyd_20.gif
/imgs/gif/gifset_r/pennyd_3.gif
/imgs/gif/gifset_r/pennyd_30.gif
/imgs/gif/gifset_r/pennyd_4.gif
/imgs/gif/gifset_r/pennyd_40.gif
/imgs/gif/gifset_r/pennyd_5.gif
/imgs/gif/gifset_r/pennyd_50.gif
/imgs/gif/gifset_r/pennyd_6.gif
/imgs/gif/gifset_r/pennyd_7.gif
/imgs/gif/gifset_r/pennyd_70.gif
/imgs/gif/gifset_r/pennyd_8.gif
/imgs/gif/gifset_r/pennyd_80.gif
/imgs/gif/gifset_r/pennyd_9.gif
/imgs/gif/gifset_r/pennyd_90.gif
/imgs/gif/gifset_r/pennyp.gif
/imgs/gif/gifset_r/pennyp_1.gif
/imgs/gif/gifset_r/pennyp_10.gif
/imgs/gif/gifset_r/pennyp_100.gif
/imgs/gif/gifset_r/pennyp_2.gif
/imgs/gif/gifset_r/pennyp_20.gif
/imgs/gif/gifset_r/pennyp_3.gif
/imgs/gif/gifset_r/pennyp_30.gif
/imgs/gif/gifset_r/pennyp_4.gif
/imgs/gif/gifset_r/pennyp_40.gif
/imgs/gif/gifset_r/pennyp_5.gif
/imgs/gif/gifset_r/pennyp_50.gif
/imgs/gif/gifset_r/pennyp_6.gif
/imgs/gif/gifset_r/pennyp_7.gif
/imgs/gif/gifset_r/pennyp_70.gif
/imgs/gif/gifset_r/pennyp_8.gif
/imgs/gif/gifset_r/pennyp_80.gif
/imgs/gif/gifset_r/pennyp_9.gif
/imgs/gif/gifset_r/pennyp_90.gif
/imgs/gif/gifset_r/pennyq.gif
/imgs/gif/gifset_r/pennyq_1.gif
/imgs/gif/gifset_r/pennyq_10.gif
/imgs/gif/gifset_r/pennyq_100.gif
/imgs/gif/gifset_r/pennyq_2.gif
/imgs/gif/gifset_r/pennyq_20.gif
/imgs/gif/gifset_r/pennyq_3.gif
/imgs/gif/gifset_r/pennyq_30.gif
/imgs/gif/gifset_r/pennyq_4.gif
/imgs/gif/gifset_r/pennyq_40.gif
/imgs/gif/gifset_r/pennyq_5.gif
/imgs/gif/gifset_r/pennyq_50.gif
/imgs/gif/gifset_r/pennyq_6.gif
/imgs/gif/gifset_r/pennyq_7.gif
/imgs/gif/gifset_r/pennyq_70.gif
/imgs/gif/gifset_r/pennyq_8.gif
/imgs/gif/gifset_r/pennyq_80.gif
/imgs/gif/gifset_r/pennyq_9.gif
/imgs/gif/gifset_r/pennyq_90.gif
/imgs/gif/gifset_r/ringsb_1.gif
/imgs/gif/gifset_r/ringsb_10.gif
/imgs/gif/gifset_r/ringsb_100.gif
/imgs/gif/gifset_r/ringsb_2.gif
/imgs/gif/gifset_r/ringsb_20.gif
/imgs/gif/gifset_r/ringsb_3.gif
/imgs/gif/gifset_r/ringsb_30.gif
/imgs/gif/gifset_r/ringsb_4.gif
/imgs/gif/gifset_r/ringsb_40.gif
/imgs/gif/gifset_r/ringsb_5.gif
/imgs/gif/gifset_r/ringsb_50.gif
/imgs/gif/gifset_r/ringsb_6.gif
/imgs/gif/gifset_r/ringsb_7.gif
/imgs/gif/gifset_r/ringsb_70.gif
/imgs/gif/gifset_r/ringsb_8.gif
/imgs/gif/gifset_r/ringsb_80.gif
/imgs/gif/gifset_r/ringsb_9.gif
/imgs/gif/gifset_r/ringsb_90.gif
/imgs/gif/gifset_r/ringsd_1.gif
/imgs/gif/gifset_r/ringsd_10.gif
/imgs/gif/gifset_r/ringsd_100.gif
/imgs/gif/gifset_r/ringsd_2.gif
/imgs/gif/gifset_r/ringsd_20.gif
/imgs/gif/gifset_r/ringsd_3.gif
/imgs/gif/gifset_r/ringsd_30.gif
/imgs/gif/gifset_r/ringsd_4.gif
/imgs/gif/gifset_r/ringsd_40.gif
/imgs/gif/gifset_r/ringsd_5.gif
/imgs/gif/gifset_r/ringsd_50.gif
/imgs/gif/gifset_r/ringsd_6.gif
/imgs/gif/gifset_r/ringsd_7.gif
/imgs/gif/gifset_r/ringsd_70.gif
/imgs/gif/gifset_r/ringsd_8.gif
/imgs/gif/gifset_r/ringsd_80.gif
/imgs/gif/gifset_r/ringsd_9.gif
/imgs/gif/gifset_r/ringsd_90.gif
/imgs/gif/gifset_r/ringsp_1.gif
/imgs/gif/gifset_r/ringsp_10.gif
/imgs/gif/gifset_r/ringsp_100.gif
/imgs/gif/gifset_r/ringsp_2.gif
/imgs/gif/gifset_r/ringsp_20.gif
/imgs/gif/gifset_r/ringsp_3.gif
/imgs/gif/gifset_r/ringsp_30.gif
/imgs/gif/gifset_r/ringsp_4.gif
/imgs/gif/gifset_r/ringsp_40.gif
/imgs/gif/gifset_r/ringsp_5.gif
/imgs/gif/gifset_r/ringsp_50.gif
/imgs/gif/gifset_r/ringsp_6.gif
/imgs/gif/gifset_r/ringsp_7.gif
/imgs/gif/gifset_r/ringsp_70.gif
/imgs/gif/gifset_r/ringsp_8.gif
/imgs/gif/gifset_r/ringsp_80.gif
/imgs/gif/gifset_r/ringsp_9.gif
/imgs/gif/gifset_r/ringsp_90.gif
/imgs/gif/gifset_r/ringsq_1.gif
/imgs/gif/gifset_r/ringsq_10.gif
/imgs/gif/gifset_r/ringsq_100.gif
/imgs/gif/gifset_r/ringsq_2.gif
/imgs/gif/gifset_r/ringsq_20.gif
/imgs/gif/gifset_r/ringsq_3.gif
/imgs/gif/gifset_r/ringsq_30.gif
/imgs/gif/gifset_r/ringsq_4.gif
/imgs/gif/gifset_r/ringsq_40.gif
/imgs/gif/gifset_r/ringsq_5.gif
/imgs/gif/gifset_r/ringsq_50.gif
/imgs/gif/gifset_r/ringsq_6.gif
/imgs/gif/gifset_r/ringsq_7.gif
/imgs/gif/gifset_r/ringsq_70.gif
/imgs/gif/gifset_r/ringsq_8.gif
/imgs/gif/gifset_r/ringsq_80.gif
/imgs/gif/gifset_r/ringsq_9.gif
/imgs/gif/gifset_r/ringsq_90.gif
/imgs/gif/gifset_r/rotate.gif
/imgs/gif/gifset_r/rotateb.gif
/imgs/gif/gifset_r/rotateb_1.gif
/imgs/gif/gifset_r/rotateb_10.gif
/imgs/gif/gifset_r/rotateb_100.gif
/imgs/gif/gifset_r/rotateb_2.gif
/imgs/gif/gifset_r/rotateb_20.gif
/imgs/gif/gifset_r/rotateb_3.gif
/imgs/gif/gifset_r/rotateb_30.gif
/imgs/gif/gifset_r/rotateb_4.gif
/imgs/gif/gifset_r/rotateb_40.gif
/imgs/gif/gifset_r/rotateb_5.gif
/imgs/gif/gifset_r/rotateb_50.gif
/imgs/gif/gifset_r/rotateb_6.gif
/imgs/gif/gifset_r/rotateb_7.gif
/imgs/gif/gifset_r/rotateb_70.gif
/imgs/gif/gifset_r/rotateb_8.gif
/imgs/gif/gifset_r/rotateb_80.gif
/imgs/gif/gifset_r/rotateb_9.gif
/imgs/gif/gifset_r/rotateb_90.gif
/imgs/gif/gifset_r/rotated.gif
/imgs/gif/gifset_r/rotated_1.gif
/imgs/gif/gifset_r/rotated_10.gif
/imgs/gif/gifset_r/rotated_100.gif
/imgs/gif/gifset_r/rotated_2.gif
/imgs/gif/gifset_r/rotated_20.gif
/imgs/gif/gifset_r/rotated_3.gif
/imgs/gif/gifset_r/rotated_30.gif
/imgs/gif/gifset_r/rotated_4.gif
/imgs/gif/gifset_r/rotated_40.gif
/imgs/gif/gifset_r/rotated_5.gif
/imgs/gif/gifset_r/rotated_50.gif
/imgs/gif/gifset_r/rotated_6.gif
/imgs/gif/gifset_r/rotated_7.gif
/imgs/gif/gifset_r/rotated_70.gif
/imgs/gif/gifset_r/rotated_8.gif
/imgs/gif/gifset_r/rotated_80.gif
/imgs/gif/gifset_r/rotated_9.gif
/imgs/gif/gifset_r/rotated_90.gif
/imgs/gif/gifset_r/rotatep.gif
/imgs/gif/gifset_r/rotatep_1.gif
/imgs/gif/gifset_r/rotatep_10.gif
/imgs/gif/gifset_r/rotatep_100.gif
/imgs/gif/gifset_r/rotatep_2.gif
/imgs/gif/gifset_r/rotatep_20.gif
/imgs/gif/gifset_r/rotatep_3.gif
/imgs/gif/gifset_r/rotatep_30.gif
/imgs/gif/gifset_r/rotatep_4.gif
/imgs/gif/gifset_r/rotatep_40.gif
/imgs/gif/gifset_r/rotatep_5.gif
/imgs/gif/gifset_r/rotatep_50.gif
/imgs/gif/gifset_r/rotatep_6.gif
/imgs/gif/gifset_r/rotatep_7.gif
/imgs/gif/gifset_r/rotatep_70.gif
/imgs/gif/gifset_r/rotatep_8.gif
/imgs/gif/gifset_r/rotatep_80.gif
/imgs/gif/gifset_r/rotatep_9.gif
/imgs/gif/gifset_r/rotatep_90.gif
/imgs/gif/gifset_r/rotateq.gif
/imgs/gif/gifset_r/rotateq_1.gif
/imgs/gif/gifset_r/rotateq_10.gif
/imgs/gif/gifset_r/rotateq_100.gif
/imgs/gif/gifset_r/rotateq_2.gif
/imgs/gif/gifset_r/rotateq_20.gif
/imgs/gif/gifset_r/rotateq_3.gif
/imgs/gif/gifset_r/rotateq_30.gif
/imgs/gif/gifset_r/rotateq_4.gif
/imgs/gif/gifset_r/rotateq_40.gif
/imgs/gif/gifset_r/rotateq_5.gif
/imgs/gif/gifset_r/rotateq_50.gif
/imgs/gif/gifset_r/rotateq_6.gif
/imgs/gif/gifset_r/rotateq_7.gif
/imgs/gif/gifset_r/rotateq_70.gif
/imgs/gif/gifset_r/rotateq_8.gif
/imgs/gif/gifset_r/rotateq_80.gif
/imgs/gif/gifset_r/rotateq_9.gif
/imgs/gif/gifset_r/rotateq_90.gif
/imgs/gif/gifset_t/soccorball.gif
/imgs/gif/gifset_t/soccorballb.gif
/imgs/gif/gifset_t/soccorballb_1.gif
/imgs/gif/gifset_t/soccorballb_10.gif
/imgs/gif/gifset_t/soccorballb_100.gif
/imgs/gif/gifset_t/soccorballb_2.gif
/imgs/gif/gifset_t/soccorballb_20.gif
/imgs/gif/gifset_t/soccorballb_3.gif
/imgs/gif/gifset_t/soccorballb_30.gif
/imgs/gif/gifset_t/soccorballb_4.gif
/imgs/gif/gifset_t/soccorballb_40.gif
/imgs/gif/gifset_t/soccorballb_5.gif
/imgs/gif/gifset_t/soccorballb_50.gif
/imgs/gif/gifset_t/soccorballb_6.gif
/imgs/gif/gifset_t/soccorballb_7.gif
/imgs/gif/gifset_t/soccorballb_70.gif
/imgs/gif/gifset_t/soccorballb_8.gif
/imgs/gif/gifset_t/soccorballb_80.gif
/imgs/gif/gifset_t/soccorballb_9.gif
/imgs/gif/gifset_t/soccorballb_90.gif
/imgs/gif/gifset_t/soccorballd.gif
/imgs/gif/gifset_t/soccorballd_1.gif
/imgs/gif/gifset_t/soccorballd_10.gif
/imgs/gif/gifset_t/soccorballd_100.gif
/imgs/gif/gifset_t/soccorballd_2.gif
/imgs/gif/gifset_t/soccorballd_20.gif
/imgs/gif/gifset_t/soccorballd_3.gif
/imgs/gif/gifset_t/soccorballd_30.gif
/imgs/gif/gifset_t/soccorballd_4.gif
/imgs/gif/gifset_t/soccorballd_40.gif
/imgs/gif/gifset_t/soccorballd_5.gif
/imgs/gif/gifset_t/soccorballd_50.gif
/imgs/gif/gifset_t/soccorballd_6.gif
/imgs/gif/gifset_t/soccorballd_7.gif
/imgs/gif/gifset_t/soccorballd_70.gif
/imgs/gif/gifset_t/soccorballd_8.gif
/imgs/gif/gifset_t/soccorballd_80.gif
/imgs/gif/gifset_t/soccorballd_9.gif
/imgs/gif/gifset_t/soccorballd_90.gif
/imgs/gif/gifset_t/soccorballp.gif
/imgs/gif/gifset_t/soccorballp_1.gif
/imgs/gif/gifset_t/soccorballp_10.gif
/imgs/gif/gifset_t/soccorballp_100.gif
/imgs/gif/gifset_t/soccorballp_2.gif
/imgs/gif/gifset_t/soccorballp_20.gif
/imgs/gif/gifset_t/soccorballp_3.gif
/imgs/gif/gifset_t/soccorballp_30.gif
/imgs/gif/gifset_t/soccorballp_4.gif
/imgs/gif/gifset_t/soccorballp_40.gif
/imgs/gif/gifset_t/soccorballp_5.gif
/imgs/gif/gifset_t/soccorballp_50.gif
/imgs/gif/gifset_t/soccorballp_6.gif
/imgs/gif/gifset_t/soccorballp_7.gif
/imgs/gif/gifset_t/soccorballp_70.gif
/imgs/gif/gifset_t/soccorballp_8.gif
/imgs/gif/gifset_t/soccorballp_80.gif
/imgs/gif/gifset_t/soccorballp_9.gif
/imgs/gif/gifset_t/soccorballp_90.gif
/imgs/gif/gifset_t/soccorballq.gif
/imgs/gif/gifset_t/soccorballq_1.gif
/imgs/gif/gifset_t/soccorballq_10.gif
/imgs/gif/gifset_t/soccorballq_100.gif
/imgs/gif/gifset_t/soccorballq_2.gif
/imgs/gif/gifset_t/soccorballq_20.gif
/imgs/gif/gifset_t/soccorballq_3.gif
/imgs/gif/gifset_t/soccorballq_30.gif
/imgs/gif/gifset_t/soccorballq_4.gif
/imgs/gif/gifset_t/soccorballq_40.gif
/imgs/gif/gifset_t/soccorballq_5.gif
/imgs/gif/gifset_t/soccorballq_50.gif
/imgs/gif/gifset_t/soccorballq_6.gif
/imgs/gif/gifset_t/soccorballq_7.gif
/imgs/gif/gifset_t/soccorballq_70.gif
/imgs/gif/gifset_t/soccorballq_8.gif
/imgs/gif/gifset_t/soccorballq_80.gif
/imgs/gif/gifset_t/soccorballq_9.gif
/imgs/gif/gifset_t/soccorballq_90.gif
/imgs/gif/gifset_t/sun.gif
/imgs/gif/gifset_t/sunb.gif
/imgs/gif/gifset_t/sunb_1.gif
/imgs/gif/gifset_t/sunb_10.gif
/imgs/gif/gifset_t/sunb_100.gif
/imgs/gif/gifset_t/sunb_2.gif
/imgs/gif/gifset_t/sunb_20.gif
/imgs/gif/gifset_t/sunb_3.gif
/imgs/gif/gifset_t/sunb_30.gif
/imgs/gif/gifset_t/sunb_4.gif
/imgs/gif/gifset_t/sunb_40.gif
/imgs/gif/gifset_t/sunb_5.gif
/imgs/gif/gifset_t/sunb_50.gif
/imgs/gif/gifset_t/sunb_6.gif
/imgs/gif/gifset_t/sunb_7.gif
/imgs/gif/gifset_t/sunb_70.gif
/imgs/gif/gifset_t/sunb_8.gif
/imgs/gif/gifset_t/sunb_80.gif
/imgs/gif/gifset_t/sunb_9.gif
/imgs/gif/gifset_t/sunb_90.gif
/imgs/gif/gifset_t/sund.gif
/imgs/gif/gifset_t/sund_1.gif
/imgs/gif/gifset_t/sund_10.gif
/imgs/gif/gifset_t/sund_100.gif
/imgs/gif/gifset_t/sund_2.gif
/imgs/gif/gifset_t/sund_20.gif
/imgs/gif/gifset_t/sund_3.gif
/imgs/gif/gifset_t/sund_30.gif
/imgs/gif/gifset_t/sund_4.gif
/imgs/gif/gifset_t/sund_40.gif
/imgs/gif/gifset_t/sund_5.gif
/imgs/gif/gifset_t/sund_50.gif
/imgs/gif/gifset_t/sund_6.gif
/imgs/gif/gifset_t/sund_7.gif
/imgs/gif/gifset_t/sund_70.gif
/imgs/gif/gifset_t/sund_8.gif
/imgs/gif/gifset_t/sund_80.gif
/imgs/gif/gifset_t/sund_9.gif
/imgs/gif/gifset_t/sund_90.gif
/imgs/gif/gifset_t/sunp.gif
/imgs/gif/gifset_t/sunp_1.gif
/imgs/gif/gifset_t/sunp_10.gif
/imgs/gif/gifset_t/sunp_100.gif
/imgs/gif/gifset_t/sunp_2.gif
/imgs/gif/gifset_t/sunp_20.gif
/imgs/gif/gifset_t/sunp_3.gif
/imgs/gif/gifset_t/sunp_30.gif
/imgs/gif/gifset_t/sunp_4.gif
/imgs/gif/gifset_t/sunp_40.gif
/imgs/gif/gifset_t/sunp_5.gif
/imgs/gif/gifset_t/sunp_50.gif
/imgs/gif/gifset_t/sunp_6.gif
/imgs/gif/gifset_t/sunp_7.gif
/imgs/gif/gifset_t/sunp_70.gif
/imgs/gif/gifset_t/sunp_8.gif
/imgs/gif/gifset_t/sunp_80.gif
/imgs/gif/gifset_t/sunp_9.gif
/imgs/gif/gifset_t/sunp_90.gif
/imgs/gif/gifset_t/sunq.gif
/imgs/gif/gifset_t/sunq_1.gif
/imgs/gif/gifset_t/sunq_10.gif
/imgs/gif/gifset_t/sunq_100.gif
/imgs/gif/gifset_t/sunq_2.gif
/imgs/gif/gifset_t/sunq_20.gif
/imgs/gif/gifset_t/sunq_3.gif
/imgs/gif/gifset_t/sunq_30.gif
/imgs/gif/gifset_t/sunq_4.gif
/imgs/gif/gifset_t/sunq_40.gif
/imgs/gif/gifset_t/sunq_5.gif
/imgs/gif/gifset_t/sunq_50.gif
/imgs/gif/gifset_t/sunq_6.gif
/imgs/gif/gifset_t/sunq_7.gif
/imgs/gif/gifset_t/sunq_70.gif
/imgs/gif/gifset_t/sunq_8.gif
/imgs/gif/gifset_t/sunq_80.gif
/imgs/gif/gifset_t/sunq_9.gif
/imgs/gif/gifset_t/sunq_90.gif
/imgs/gif/gifset_t/taz.gif
/imgs/gif/gifset_t/tazb.gif
/imgs/gif/gifset_t/tazb_1.gif
/imgs/gif/gifset_t/tazb_10.gif
/imgs/gif/gifset_t/tazb_100.gif
/imgs/gif/gifset_t/tazb_2.gif
/imgs/gif/gifset_t/tazb_20.gif
/imgs/gif/gifset_t/tazb_3.gif
/imgs/gif/gifset_t/tazb_30.gif
/imgs/gif/gifset_t/tazb_4.gif
/imgs/gif/gifset_t/tazb_40.gif
/imgs/gif/gifset_t/tazb_5.gif
/imgs/gif/gifset_t/tazb_50.gif
/imgs/gif/gifset_t/tazb_6.gif
/imgs/gif/gifset_t/tazb_7.gif
/imgs/gif/gifset_t/tazb_70.gif
/imgs/gif/gifset_t/tazb_8.gif
/imgs/gif/gifset_t/tazb_80.gif
/imgs/gif/gifset_t/tazb_9.gif
/imgs/gif/gifset_t/tazb_90.gif
/imgs/gif/gifset_t/tazd.gif
/imgs/gif/gifset_t/tazd_1.gif
/imgs/gif/gifset_t/tazd_10.gif
/imgs/gif/gifset_t/tazd_100.gif
/imgs/gif/gifset_t/tazd_2.gif
/imgs/gif/gifset_t/tazd_20.gif
/imgs/gif/gifset_t/tazd_3.gif
/imgs/gif/gifset_t/tazd_30.gif
/imgs/gif/gifset_t/tazd_4.gif
/imgs/gif/gifset_t/tazd_40.gif
/imgs/gif/gifset_t/tazd_5.gif
/imgs/gif/gifset_t/tazd_50.gif
/imgs/gif/gifset_t/tazd_6.gif
/imgs/gif/gifset_t/tazd_7.gif
/imgs/gif/gifset_t/tazd_70.gif
/imgs/gif/gifset_t/tazd_8.gif
/imgs/gif/gifset_t/tazd_80.gif
/imgs/gif/gifset_t/tazd_9.gif
/imgs/gif/gifset_t/tazd_90.gif
/imgs/gif/gifset_t/tazp.gif
/imgs/gif/gifset_t/tazp_1.gif
/imgs/gif/gifset_t/tazp_10.gif
/imgs/gif/gifset_t/tazp_100.gif
/imgs/gif/gifset_t/tazp_2.gif
/imgs/gif/gifset_t/tazp_20.gif
/imgs/gif/gifset_t/tazp_3.gif
/imgs/gif/gifset_t/tazp_30.gif
/imgs/gif/gifset_t/tazp_4.gif
/imgs/gif/gifset_t/tazp_40.gif
/imgs/gif/gifset_t/tazp_5.gif
/imgs/gif/gifset_t/tazp_50.gif
/imgs/gif/gifset_t/tazp_6.gif
/imgs/gif/gifset_t/tazp_7.gif
/imgs/gif/gifset_t/tazp_70.gif
/imgs/gif/gifset_t/tazp_8.gif
/imgs/gif/gifset_t/tazp_80.gif
/imgs/gif/gifset_t/tazp_9.gif
/imgs/gif/gifset_t/tazp_90.gif
/imgs/gif/gifset_t/tazq.gif
/imgs/gif/gifset_t/tazq_1.gif
/imgs/gif/gifset_t/tazq_10.gif
/imgs/gif/gifset_t/tazq_100.gif
/imgs/gif/gifset_t/tazq_2.gif
/imgs/gif/gifset_t/tazq_20.gif
/imgs/gif/gifset_t/tazq_3.gif
/imgs/gif/gifset_t/tazq_30.gif
/imgs/gif/gifset_t/tazq_4.gif
/imgs/gif/gifset_t/tazq_40.gif
/imgs/gif/gifset_t/tazq_5.gif
/imgs/gif/gifset_t/tazq_50.gif
/imgs/gif/gifset_t/tazq_6.gif
/imgs/gif/gifset_t/tazq_7.gif
/imgs/gif/gifset_t/tazq_70.gif
/imgs/gif/gifset_t/tazq_8.gif
/imgs/gif/gifset_t/tazq_80.gif
/imgs/gif/gifset_t/tazq_9.gif
/imgs/gif/gifset_t/tazq_90.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1b.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1b_1.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1b_10.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1b_100.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1b_2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1b_20.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1b_3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1b_30.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1b_4.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1b_40.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1b_5.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1b_50.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1b_6.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1b_7.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1b_70.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1b_8.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1b_80.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1b_9.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1b_90.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1d.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1d_1.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1d_10.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1d_100.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1d_2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1d_20.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1d_3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1d_30.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1d_4.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1d_40.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1d_5.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1d_50.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1d_6.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1d_7.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1d_70.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1d_8.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1d_80.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1d_9.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1d_90.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1p.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1p_1.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1p_10.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1p_100.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1p_2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1p_20.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1p_3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1p_30.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1p_4.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1p_40.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1p_5.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1p_50.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1p_6.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1p_7.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1p_70.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1p_8.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1p_80.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1p_9.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1p_90.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1q.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1q_1.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1q_10.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1q_100.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1q_2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1q_20.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1q_3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1q_30.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1q_4.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1q_40.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1q_5.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1q_50.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1q_6.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1q_7.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1q_70.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1q_8.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1q_80.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1q_9.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1q_90.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2b.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2b_1.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2b_10.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2b_100.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2b_2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2b_20.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2b_3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2b_30.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2b_4.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2b_40.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2b_5.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2b_50.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2b_6.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2b_7.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2b_70.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2b_8.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2b_80.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2b_9.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2b_90.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2d.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2d_1.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2d_10.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2d_100.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2d_2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2d_20.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2d_3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2d_30.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2d_4.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2d_40.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2d_5.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2d_50.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2d_6.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2d_7.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2d_70.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2d_8.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2d_80.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2d_9.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2d_90.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2p.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2p_1.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2p_10.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2p_100.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2p_2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2p_20.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2p_3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2p_30.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2p_4.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2p_40.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2p_5.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2p_50.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2p_6.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2p_7.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2p_70.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2p_8.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2p_80.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2p_9.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2p_90.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2q.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2q_1.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2q_10.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2q_100.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2q_2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2q_20.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2q_3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2q_30.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2q_4.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2q_40.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2q_5.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2q_50.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2q_6.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2q_7.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2q_70.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2q_8.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2q_80.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2q_9.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2q_90.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3b.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3b_1.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3b_10.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3b_100.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3b_2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3b_20.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3b_3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3b_30.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3b_4.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3b_40.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3b_5.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3b_50.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3b_6.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3b_7.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3b_70.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3b_8.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3b_80.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3b_9.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3b_90.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3d.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3d_1.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3d_10.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3d_100.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3d_2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3d_20.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3d_3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3d_30.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3d_4.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3d_40.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3d_5.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3d_50.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3d_6.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3d_7.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3d_70.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3d_8.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3d_80.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3d_9.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3d_90.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3p.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3p_1.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3p_10.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3p_100.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3p_2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3p_20.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3p_3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3p_30.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3p_4.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3p_40.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3p_5.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3p_50.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3p_6.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3p_7.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3p_70.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3p_8.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3p_80.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3p_9.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3p_90.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3q.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3q_1.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3q_10.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3q_100.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3q_2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3q_20.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3q_3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3q_30.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3q_4.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3q_40.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3q_5.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3q_50.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3q_6.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3q_7.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3q_70.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3q_8.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3q_80.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3q_9.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3q_90.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kick.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickb.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickb_1.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickb_10.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickb_100.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickb_2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickb_20.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickb_3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickb_30.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickb_4.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickb_40.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickb_5.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickb_50.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickb_6.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickb_7.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickb_70.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickb_8.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickb_80.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickb_9.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickb_90.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickd.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickd_1.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickd_10.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickd_100.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickd_2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickd_20.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickd_3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickd_30.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickd_4.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickd_40.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickd_5.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickd_50.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickd_6.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickd_7.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickd_70.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickd_8.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickd_80.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickd_9.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickd_90.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickp.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickp_1.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickp_10.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickp_100.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickp_2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickp_20.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickp_3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickp_30.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickp_4.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickp_40.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickp_5.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickp_50.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickp_6.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickp_7.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickp_70.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickp_8.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickp_80.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickp_9.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickp_90.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickq.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickq_1.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickq_10.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickq_100.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickq_2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickq_20.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickq_3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickq_30.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickq_4.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickq_40.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickq_5.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickq_50.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickq_6.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickq_7.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickq_70.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickq_8.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickq_80.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickq_9.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickq_90.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_l.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lb.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lb_1.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lb_10.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lb_100.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lb_2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lb_20.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lb_3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lb_30.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lb_4.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lb_40.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lb_5.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lb_50.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lb_6.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lb_7.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lb_70.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lb_8.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lb_80.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lb_9.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lb_90.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_ld.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_ld_1.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_ld_10.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_ld_100.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_ld_2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_ld_20.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_ld_3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_ld_30.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_ld_4.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_ld_40.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_ld_5.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_ld_50.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_ld_6.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_ld_7.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_ld_70.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_ld_8.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_ld_80.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_ld_9.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_ld_90.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lp.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lp_1.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lp_10.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lp_100.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lp_2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lp_20.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lp_3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lp_30.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lp_4.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lp_40.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lp_5.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lp_50.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lp_6.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lp_7.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lp_70.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lp_8.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lp_80.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lp_9.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lp_90.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lq.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lq_1.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lq_10.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lq_100.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lq_2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lq_20.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lq_3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lq_30.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lq_4.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lq_40.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lq_5.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lq_50.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lq_6.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lq_7.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lq_70.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lq_8.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lq_80.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lq_9.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lq_90.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2b.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2b_1.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2b_10.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2b_100.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2b_2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2b_20.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2b_3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2b_30.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2b_4.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2b_40.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2b_5.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2b_50.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2b_6.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2b_7.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2b_70.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2b_8.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2b_80.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2b_9.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2b_90.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2d.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2d_1.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2d_10.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2d_100.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2d_2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2d_20.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2d_3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2d_30.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2d_4.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2d_40.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2d_5.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2d_50.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2d_6.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2d_7.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2d_70.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2d_8.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2d_80.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2d_9.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2d_90.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2p.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2p_1.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2p_10.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2p_100.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2p_2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2p_20.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2p_3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2p_30.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2p_4.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2p_40.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2p_5.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2p_50.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2p_6.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2p_7.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2p_70.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2p_8.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2p_80.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2p_9.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2p_90.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2q.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2q_1.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2q_10.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2q_100.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2q_2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2q_20.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2q_3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2q_30.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2q_4.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2q_40.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2q_5.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2q_50.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2q_6.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2q_7.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2q_70.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2q_8.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2q_80.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2q_9.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2q_90.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3b.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3b_1.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3b_10.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3b_100.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3b_2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3b_20.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3b_3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3b_30.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3b_4.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3b_40.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3b_5.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3b_50.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3b_6.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3b_7.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3b_70.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3b_8.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3b_80.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3b_9.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3b_90.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3d.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3d_1.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3d_10.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3d_100.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3d_2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3d_20.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3d_3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3d_30.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3d_4.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3d_40.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3d_5.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3d_50.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3d_6.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3d_7.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3d_70.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3d_8.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3d_80.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3d_9.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3d_90.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3p.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3p_1.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3p_10.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3p_100.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3p_2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3p_20.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3p_3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3p_30.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3p_4.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3p_40.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3p_5.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3p_50.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3p_6.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3p_7.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3p_70.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3p_8.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3p_80.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3p_9.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3p_90.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3q.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3q_1.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3q_10.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3q_100.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3q_2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3q_20.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3q_3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3q_30.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3q_4.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3q_40.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3q_5.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3q_50.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3q_6.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3q_7.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3q_70.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3q_8.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3q_80.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3q_9.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3q_90.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4b.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4b_1.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4b_10.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4b_100.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4b_2.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4b_20.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4b_3.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4b_30.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4b_4.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4b_40.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4b_5.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4b_50.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4b_6.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4b_7.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4b_70.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4b_8.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4b_80.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4b_9.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4b_90.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4d.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4d_1.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4d_10.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4d_100.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4d_2.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4d_20.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4d_3.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4d_30.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4d_4.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4d_40.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4d_5.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4d_50.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4d_6.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4d_7.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4d_70.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4d_8.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4d_80.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4d_9.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4d_90.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4p.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4p_1.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4p_10.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4p_100.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4p_2.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4p_20.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4p_3.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4p_30.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4p_4.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4p_40.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4p_5.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4p_50.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4p_6.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4p_7.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4p_70.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4p_8.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4p_80.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4p_9.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4p_90.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4q.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4q_1.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4q_10.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4q_100.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4q_2.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4q_20.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4q_3.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4q_30.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4q_4.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4q_40.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4q_5.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4q_50.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4q_6.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4q_7.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4q_70.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4q_8.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4q_80.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4q_9.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4q_90.gif
/imgs/gif/gifset_w/trophy.gif
/imgs/gif/gifset_w/trophyb.gif
/imgs/gif/gifset_w/trophyb_1.gif
/imgs/gif/gifset_w/trophyb_10.gif
/imgs/gif/gifset_w/trophyb_100.gif
/imgs/gif/gifset_w/trophyb_2.gif
/imgs/gif/gifset_w/trophyb_20.gif
/imgs/gif/gifset_w/trophyb_3.gif
/imgs/gif/gifset_w/trophyb_30.gif
/imgs/gif/gifset_w/trophyb_4.gif
/imgs/gif/gifset_w/trophyb_40.gif
/imgs/gif/gifset_w/trophyb_5.gif
/imgs/gif/gifset_w/trophyb_50.gif
/imgs/gif/gifset_w/trophyb_6.gif
/imgs/gif/gifset_w/trophyb_7.gif
/imgs/gif/gifset_w/trophyb_70.gif
/imgs/gif/gifset_w/trophyb_8.gif
/imgs/gif/gifset_w/trophyb_80.gif
/imgs/gif/gifset_w/trophyb_9.gif
/imgs/gif/gifset_w/trophyb_90.gif
/imgs/gif/gifset_w/trophyd.gif
/imgs/gif/gifset_w/trophyd_1.gif
/imgs/gif/gifset_w/trophyd_10.gif
/imgs/gif/gifset_w/trophyd_100.gif
/imgs/gif/gifset_w/trophyd_2.gif
/imgs/gif/gifset_w/trophyd_20.gif
/imgs/gif/gifset_w/trophyd_3.gif
/imgs/gif/gifset_w/trophyd_30.gif
/imgs/gif/gifset_w/trophyd_4.gif
/imgs/gif/gifset_w/trophyd_40.gif
/imgs/gif/gifset_w/trophyd_5.gif
/imgs/gif/gifset_w/trophyd_50.gif
/imgs/gif/gifset_w/trophyd_6.gif
/imgs/gif/gifset_w/trophyd_7.gif
/imgs/gif/gifset_w/trophyd_70.gif
/imgs/gif/gifset_w/trophyd_8.gif
/imgs/gif/gifset_w/trophyd_80.gif
/imgs/gif/gifset_w/trophyd_9.gif
/imgs/gif/gifset_w/trophyd_90.gif
/imgs/gif/gifset_w/trophyp.gif
/imgs/gif/gifset_w/trophyp_1.gif
/imgs/gif/gifset_w/trophyp_10.gif
/imgs/gif/gifset_w/trophyp_100.gif
/imgs/gif/gifset_w/trophyp_2.gif
/imgs/gif/gifset_w/trophyp_20.gif
/imgs/gif/gifset_w/trophyp_3.gif
/imgs/gif/gifset_w/trophyp_30.gif
/imgs/gif/gifset_w/trophyp_4.gif
/imgs/gif/gifset_w/trophyp_40.gif
/imgs/gif/gifset_w/trophyp_5.gif
/imgs/gif/gifset_w/trophyp_50.gif
/imgs/gif/gifset_w/trophyp_6.gif
/imgs/gif/gifset_w/trophyp_7.gif
/imgs/gif/gifset_w/trophyp_70.gif
/imgs/gif/gifset_w/trophyp_8.gif
/imgs/gif/gifset_w/trophyp_80.gif
/imgs/gif/gifset_w/trophyp_9.gif
/imgs/gif/gifset_w/trophyp_90.gif
/imgs/gif/gifset_w/trophyq.gif
/imgs/gif/gifset_w/trophyq_1.gif
/imgs/gif/gifset_w/trophyq_10.gif
/imgs/gif/gifset_w/trophyq_100.gif
/imgs/gif/gifset_w/trophyq_2.gif
/imgs/gif/gifset_w/trophyq_20.gif
/imgs/gif/gifset_w/trophyq_3.gif
/imgs/gif/gifset_w/trophyq_30.gif
/imgs/gif/gifset_w/trophyq_4.gif
/imgs/gif/gifset_w/trophyq_40.gif
/imgs/gif/gifset_w/trophyq_5.gif
/imgs/gif/gifset_w/trophyq_50.gif
/imgs/gif/gifset_w/trophyq_6.gif
/imgs/gif/gifset_w/trophyq_7.gif
/imgs/gif/gifset_w/trophyq_70.gif
/imgs/gif/gifset_w/trophyq_8.gif
/imgs/gif/gifset_w/trophyq_80.gif
/imgs/gif/gifset_w/trophyq_9.gif
/imgs/gif/gifset_w/trophyq_90.gif
/imgs/gif/gifset_w/warning.gif
/imgs/gif/gifset_w/warningb.gif
/imgs/gif/gifset_w/warningb_1.gif
/imgs/gif/gifset_w/warningb_10.gif
/imgs/gif/gifset_w/warningb_100.gif
/imgs/gif/gifset_w/warningb_2.gif
/imgs/gif/gifset_w/warningb_20.gif
/imgs/gif/gifset_w/warningb_3.gif
/imgs/gif/gifset_w/warningb_30.gif
/imgs/gif/gifset_w/warningb_4.gif
/imgs/gif/gifset_w/warningb_40.gif
/imgs/gif/gifset_w/warningb_5.gif
/imgs/gif/gifset_w/warningb_50.gif
/imgs/gif/gifset_w/warningb_6.gif
/imgs/gif/gifset_w/warningb_7.gif
/imgs/gif/gifset_w/warningb_70.gif
/imgs/gif/gifset_w/warningb_8.gif
/imgs/gif/gifset_w/warningb_80.gif
/imgs/gif/gifset_w/warningb_9.gif
/imgs/gif/gifset_w/warningb_90.gif
/imgs/gif/gifset_w/warningd.gif
/imgs/gif/gifset_w/warningd_1.gif
/imgs/gif/gifset_w/warningd_10.gif
/imgs/gif/gifset_w/warningd_100.gif
/imgs/gif/gifset_w/warningd_2.gif
/imgs/gif/gifset_w/warningd_20.gif
/imgs/gif/gifset_w/warningd_3.gif
/imgs/gif/gifset_w/warningd_30.gif
/imgs/gif/gifset_w/warningd_4.gif
/imgs/gif/gifset_w/warningd_40.gif
/imgs/gif/gifset_w/warningd_5.gif
/imgs/gif/gifset_w/warningd_50.gif
/imgs/gif/gifset_w/warningd_6.gif
/imgs/gif/gifset_w/warningd_7.gif
/imgs/gif/gifset_w/warningd_70.gif
/imgs/gif/gifset_w/warningd_8.gif
/imgs/gif/gifset_w/warningd_80.gif
/imgs/gif/gifset_w/warningd_9.gif
/imgs/gif/gifset_w/warningd_90.gif
/imgs/gif/gifset_w/warningp.gif
/imgs/gif/gifset_w/warningp_1.gif
/imgs/gif/gifset_w/warningp_10.gif
/imgs/gif/gifset_w/warningp_100.gif
/imgs/gif/gifset_w/warningp_2.gif
/imgs/gif/gifset_w/warningp_20.gif
/imgs/gif/gifset_w/warningp_3.gif
/imgs/gif/gifset_w/warningp_30.gif
/imgs/gif/gifset_w/warningp_4.gif
/imgs/gif/gifset_w/warningp_40.gif
/imgs/gif/gifset_w/warningp_5.gif
/imgs/gif/gifset_w/warningp_50.gif
/imgs/gif/gifset_w/warningp_6.gif
/imgs/gif/gifset_w/warningp_7.gif
/imgs/gif/gifset_w/warningp_70.gif
/imgs/gif/gifset_w/warningp_8.gif
/imgs/gif/gifset_w/warningp_80.gif
/imgs/gif/gifset_w/warningp_9.gif
/imgs/gif/gifset_w/warningp_90.gif
/imgs/gif/gifset_w/warningq.gif
/imgs/gif/gifset_w/warningq_1.gif
/imgs/gif/gifset_w/warningq_10.gif
/imgs/gif/gifset_w/warningq_100.gif
/imgs/gif/gifset_w/warningq_2.gif
/imgs/gif/gifset_w/warningq_20.gif
/imgs/gif/gifset_w/warningq_3.gif
/imgs/gif/gifset_w/warningq_30.gif
/imgs/gif/gifset_w/warningq_4.gif
/imgs/gif/gifset_w/warningq_40.gif
/imgs/gif/gifset_w/warningq_5.gif
/imgs/gif/gifset_w/warningq_50.gif
/imgs/gif/gifset_w/warningq_6.gif
/imgs/gif/gifset_w/warningq_7.gif
/imgs/gif/gifset_w/warningq_70.gif
/imgs/gif/gifset_w/warningq_8.gif
/imgs/gif/gifset_w/warningq_80.gif
/imgs/gif/gifset_w/warningq_9.gif
/imgs/gif/gifset_w/warningq_90.gif
/imgs/gif/gifset_w/welcome.gif
/imgs/gif/gifset_w/welcomeb.gif
/imgs/gif/gifset_w/welcomeb_1.gif
/imgs/gif/gifset_w/welcomeb_10.gif
/imgs/gif/gifset_w/welcomeb_100.gif
/imgs/gif/gifset_w/welcomeb_2.gif
/imgs/gif/gifset_w/welcomeb_20.gif
/imgs/gif/gifset_w/welcomeb_3.gif
/imgs/gif/gifset_w/welcomeb_30.gif
/imgs/gif/gifset_w/welcomeb_4.gif
/imgs/gif/gifset_w/welcomeb_40.gif
/imgs/gif/gifset_w/welcomeb_5.gif
/imgs/gif/gifset_w/welcomeb_50.gif
/imgs/gif/gifset_w/welcomeb_6.gif
/imgs/gif/gifset_w/welcomeb_7.gif
/imgs/gif/gifset_w/welcomeb_70.gif
/imgs/gif/gifset_w/welcomeb_8.gif
/imgs/gif/gifset_w/welcomeb_80.gif
/imgs/gif/gifset_w/welcomeb_9.gif
/imgs/gif/gifset_w/welcomeb_90.gif
/imgs/gif/gifset_w/welcomed.gif
/imgs/gif/gifset_w/welcomed_1.gif
/imgs/gif/gifset_w/welcomed_10.gif
/imgs/gif/gifset_w/welcomed_100.gif
/imgs/gif/gifset_w/welcomed_2.gif
/imgs/gif/gifset_w/welcomed_20.gif
/imgs/gif/gifset_w/welcomed_3.gif
/imgs/gif/gifset_w/welcomed_30.gif
/imgs/gif/gifset_w/welcomed_4.gif
/imgs/gif/gifset_w/welcomed_40.gif
/imgs/gif/gifset_w/welcomed_5.gif
/imgs/gif/gifset_w/welcomed_50.gif
/imgs/gif/gifset_w/welcomed_6.gif
/imgs/gif/gifset_w/welcomed_7.gif
/imgs/gif/gifset_w/welcomed_70.gif
/imgs/gif/gifset_w/welcomed_8.gif
/imgs/gif/gifset_w/welcomed_80.gif
/imgs/gif/gifset_w/welcomed_9.gif
/imgs/gif/gifset_w/welcomed_90.gif
/imgs/gif/gifset_w/welcomep.gif
/imgs/gif/gifset_w/welcomep_1.gif
/imgs/gif/gifset_w/welcomep_10.gif
/imgs/gif/gifset_w/welcomep_100.gif
/imgs/gif/gifset_w/welcomep_2.gif
/imgs/gif/gifset_w/welcomep_20.gif
/imgs/gif/gifset_w/welcomep_3.gif
/imgs/gif/gifset_w/welcomep_30.gif
/imgs/gif/gifset_w/welcomep_4.gif
/imgs/gif/gifset_w/welcomep_40.gif
/imgs/gif/gifset_w/welcomep_5.gif
/imgs/gif/gifset_w/welcomep_50.gif
/imgs/gif/gifset_w/welcomep_6.gif
/imgs/gif/gifset_w/welcomep_7.gif
/imgs/gif/gifset_w/welcomep_70.gif
/imgs/gif/gifset_w/welcomep_8.gif
/imgs/gif/gifset_w/welcomep_80.gif
/imgs/gif/gifset_w/welcomep_9.gif
/imgs/gif/gifset_w/welcomep_90.gif
/imgs/gif/gifset_w/welcomeq.gif
/imgs/gif/gifset_w/welcomeq_1.gif
/imgs/gif/gifset_w/welcomeq_10.gif
/imgs/gif/gifset_w/welcomeq_100.gif
/imgs/gif/gifset_w/welcomeq_2.gif
/imgs/gif/gifset_w/welcomeq_20.gif
/imgs/gif/gifset_w/welcomeq_3.gif
/imgs/gif/gifset_w/welcomeq_30.gif
/imgs/gif/gifset_w/welcomeq_4.gif
/imgs/gif/gifset_w/welcomeq_40.gif
/imgs/gif/gifset_w/welcomeq_5.gif
/imgs/gif/gifset_w/welcomeq_50.gif
/imgs/gif/gifset_w/welcomeq_6.gif
/imgs/gif/gifset_w/welcomeq_7.gif
/imgs/gif/gifset_w/welcomeq_70.gif
/imgs/gif/gifset_w/welcomeq_8.gif
/imgs/gif/gifset_w/welcomeq_80.gif
/imgs/gif/gifset_w/welcomeq_9.gif
/imgs/gif/gifset_w/welcomeq_90.gif
/imgs/gif/gifset_w/worksign.gif
/imgs/gif/gifset_w/worksignb.gif
/imgs/gif/gifset_w/worksignb_1.gif
/imgs/gif/gifset_w/worksignb_10.gif
/imgs/gif/gifset_w/worksignb_100.gif
/imgs/gif/gifset_w/worksignb_2.gif
/imgs/gif/gifset_w/worksignb_20.gif
/imgs/gif/gifset_w/worksignb_3.gif
/imgs/gif/gifset_w/worksignb_30.gif
/imgs/gif/gifset_w/worksignb_4.gif
/imgs/gif/gifset_w/worksignb_40.gif
/imgs/gif/gifset_w/worksignb_5.gif
/imgs/gif/gifset_w/worksignb_50.gif
/imgs/gif/gifset_w/worksignb_6.gif
/imgs/gif/gifset_w/worksignb_7.gif
/imgs/gif/gifset_w/worksignb_70.gif
/imgs/gif/gifset_w/worksignb_8.gif
/imgs/gif/gifset_w/worksignb_80.gif
/imgs/gif/gifset_w/worksignb_9.gif
/imgs/gif/gifset_w/worksignb_90.gif
/imgs/gif/gifset_w/worksignd.gif
/imgs/gif/gifset_w/worksignd_1.gif
/imgs/gif/gifset_w/worksignd_10.gif
/imgs/gif/gifset_w/worksignd_100.gif
/imgs/gif/gifset_w/worksignd_2.gif
/imgs/gif/gifset_w/worksignd_20.gif
/imgs/gif/gifset_w/worksignd_3.gif
/imgs/gif/gifset_w/worksignd_30.gif
/imgs/gif/gifset_w/worksignd_4.gif
/imgs/gif/gifset_w/worksignd_40.gif
/imgs/gif/gifset_w/worksignd_5.gif
/imgs/gif/gifset_w/worksignd_50.gif
/imgs/gif/gifset_w/worksignd_6.gif
/imgs/gif/gifset_w/worksignd_7.gif
/imgs/gif/gifset_w/worksignd_70.gif
/imgs/gif/gifset_w/worksignd_8.gif
/imgs/gif/gifset_w/worksignd_80.gif
/imgs/gif/gifset_w/worksignd_9.gif
/imgs/gif/gifset_w/worksignd_90.gif
/imgs/gif/gifset_w/worksignp.gif
/imgs/gif/gifset_w/worksignp_1.gif
/imgs/gif/gifset_w/worksignp_10.gif
/imgs/gif/gifset_w/worksignp_100.gif
/imgs/gif/gifset_w/worksignp_2.gif
/imgs/gif/gifset_w/worksignp_20.gif
/imgs/gif/gifset_w/worksignp_3.gif
/imgs/gif/gifset_w/worksignp_30.gif
/imgs/gif/gifset_w/worksignp_4.gif
/imgs/gif/gifset_w/worksignp_40.gif
/imgs/gif/gifset_w/worksignp_5.gif
/imgs/gif/gifset_w/worksignp_50.gif
/imgs/gif/gifset_w/worksignp_6.gif
/imgs/gif/gifset_w/worksignp_7.gif
/imgs/gif/gifset_w/worksignp_70.gif
/imgs/gif/gifset_w/worksignp_8.gif
/imgs/gif/gifset_w/worksignp_80.gif
/imgs/gif/gifset_w/worksignp_9.gif
/imgs/gif/gifset_w/worksignp_90.gif
/imgs/gif/gifset_w/worksignq.gif
/imgs/gif/gifset_w/worksignq_1.gif
/imgs/gif/gifset_w/worksignq_10.gif
/imgs/gif/gifset_w/worksignq_100.gif
/imgs/gif/gifset_w/worksignq_2.gif
/imgs/gif/gifset_w/worksignq_20.gif
/imgs/gif/gifset_w/worksignq_3.gif
/imgs/gif/gifset_w/worksignq_30.gif
/imgs/gif/gifset_w/worksignq_4.gif
/imgs/gif/gifset_w/worksignq_40.gif
/imgs/gif/gifset_w/worksignq_5.gif
/imgs/gif/gifset_w/worksignq_50.gif
/imgs/gif/gifset_w/worksignq_6.gif
/imgs/gif/gifset_w/worksignq_7.gif
/imgs/gif/gifset_w/worksignq_70.gif
/imgs/gif/gifset_w/worksignq_8.gif
/imgs/gif/gifset_w/worksignq_80.gif
/imgs/gif/gifset_w/worksignq_9.gif
/imgs/gif/gifset_w/worksignq_90.gif
/imgs/gif/giphy_dollars/giph_weight.gif
/imgs/gif/giphy_dollars/giphy._hands2gif.gif
/imgs/gif/giphy_dollars/giphy.gif
/imgs/gif/giphy_dollars/giphy001.gif
/imgs/gif/giphy_dollars/giphy002.gif
/imgs/gif/giphy_dollars/giphy003.gif
/imgs/gif/giphy_dollars/giphy006.gif
/imgs/gif/giphy_dollars/giphy_005.gif
/imgs/gif/giphy_dollars/giphy_armodillo.gif
/imgs/gif/giphy_dollars/giphy_arrors.gif
/imgs/gif/giphy_dollars/giphy_bitcoikn.gif
/imgs/gif/giphy_dollars/giphy_bounce.gif
/imgs/gif/giphy_dollars/giphy_circl30.gif
/imgs/gif/giphy_dollars/giphy_compassion.gif
/imgs/gif/giphy_dollars/giphy_dolla.gif
/imgs/gif/giphy_dollars/giphy_dollar.gif
/imgs/gif/giphy_dollars/giphy_dollar11.gif
/imgs/gif/giphy_dollars/giphy_dolrpool.gif
/imgs/gif/giphy_dollars/giphy_droll_wimsy.gif
/imgs/gif/giphy_dollars/giphy_expression.gif
/imgs/gif/giphy_dollars/giphy_getalawyer_horns.gif
/imgs/gif/giphy_dollars/giphy_go20.gif
/imgs/gif/giphy_dollars/giphy_go3.gif
/imgs/gif/giphy_dollars/giphy_gold.gif
/imgs/gif/giphy_dollars/giphy_gov.gif
/imgs/gif/giphy_dollars/giphy_graph2.gif
/imgs/gif/giphy_dollars/giphy_hallway.gif
/imgs/gif/giphy_dollars/giphy_hands.gif
/imgs/gif/giphy_dollars/giphy_hands2.gif
/imgs/gif/giphy_dollars/giphy_hugs.gif
/imgs/gif/giphy_dollars/giphy_kalidis.gif
/imgs/gif/giphy_dollars/giphy_kinetic.gif
/imgs/gif/giphy_dollars/giphy_konabus.gif
/imgs/gif/giphy_dollars/giphy_konabus_stickr.gif
/imgs/gif/giphy_dollars/giphy_kt30.gif
/imgs/gif/giphy_dollars/giphy_law.gif
/imgs/gif/giphy_dollars/giphy_law01.gif
/imgs/gif/giphy_dollars/giphy_law02.gif
/imgs/gif/giphy_dollars/giphy_letter.gif
/imgs/gif/giphy_dollars/giphy_littletipper.gif
/imgs/gif/giphy_dollars/giphy_makechange.gif
/imgs/gif/giphy_dollars/giphy_moneyclap.gif
/imgs/gif/giphy_dollars/giphy_moneyeye.gif
/imgs/gif/giphy_dollars/giphy_moneymachine.gif
/imgs/gif/giphy_dollars/giphy_moneymonkey.gif
/imgs/gif/giphy_dollars/giphy_moneyspiral.gif
/imgs/gif/giphy_dollars/giphy_monydog.gif
/imgs/gif/giphy_dollars/giphy_mouse/giph_phone04y.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy._nophonegif.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy.gif_construction06.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_constrion20.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_construction01.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_construction02.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_construction03.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_construction04.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_construction08.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_construction09.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_construction11.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_construction12.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_construction15.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_construction21.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_construction25.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_construction_10.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_construction_dogs.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_falling01.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_falling02.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_falling03.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_falling04.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_falling06.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_falling07.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_falling08.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_falling09.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_filecabinat.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_focus10.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_mouse01.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_mouse02.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_mouse03.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_mouse06.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_mouse_konabus.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_phone05.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_phone06.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_snap.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphyfu.gif
/imgs/gif/giphy_dollars/giphy_pano.gif
/imgs/gif/giphy_dollars/giphy_pencil.gif
/imgs/gif/giphy_dollars/giphy_phonepage.gif
/imgs/gif/giphy_dollars/giphy_presentermedia.gif
/imgs/gif/giphy_dollars/giphy_presentermedia2.gif
/imgs/gif/giphy_dollars/giphy_ropeup.gif
/imgs/gif/giphy_dollars/giphy_scrollstats.gif
/imgs/gif/giphy_dollars/giphy_trsansform.gif
/imgs/gif/giphy_dollars/giphy_typer.gif
/imgs/gif/giphy_dollars/giphy_verified.gif
/imgs/gif/giphy_dollars/giphy_water.gif
/imgs/gif/giphy_dollars/giphy_weaigh5.gif
/imgs/gif/giphy_dollars/giphy_weight3.gif
/imgs/gif/giphy_dollars/giphyarrowfire.gif
/imgs/gif/giphy_dollars/giphybuslt.gif
/imgs/gif/giphy_dollars/giphyfocuseyes.gif
/imgs/gif/giphy_dollars/giphygowave'.gif
/imgs/gif/giphy_dollars/giphygraph.gif
/imgs/gif/giphy_dollars/giphymoney_smerf.gif
/imgs/gif/giphy_dollars/giphytwist.gif
/imgs/gif/giphy_dollars/giphyvortex.gif
/imgs/gif/giphy_dollars/giphyweaight2.gif
/imgs/gif/giphy_view30.gif
/imgs/gif/iperms/giphy_army_cleanfun.gif
/imgs/gif/iperms/giphy_army_kiti.gif
/imgs/gif/iperms/giphy_army_marksync.gif
/imgs/gif/iperms/giphy_army_pushups_nohands.gif
/imgs/gif/iperms/giphy_army_seal_sparkle.gif
/imgs/gif/iperms/giphy_army_shake_salure.gif
/imgs/gif/iperms/giphy_army_tankroll.gif
/imgs/gif/iperms/giphy_armydance1.gif
/imgs/gif/iperms/giphy_armymarchn.gif
/imgs/gif/iperms/giphy_armytoon_late.gif
/imgs/gif/iperms/giphy_armywave.gif
/imgs/gif/iperms/giphy_armywave_barrel.gif
/imgs/gif/iperms/giphy_iperms.gif
/imgs/gif/iperms/giphy_iperms_bell.gif
/imgs/gif/iperms/giphy_iperms_strips.gif
/imgs/gif/kali/adfaf.gif
/imgs/gif/kali/kali16.gif
/imgs/gif/kali/kali2.gif
/imgs/gif/kali/kali25.gif
/imgs/gif/kali/kali3.gif
/imgs/gif/kali/kali4.gif
/imgs/gif/kali/kali5.gif
/imgs/gif/kali/kali8].gif
/imgs/gif/kali/kalid1.gif
/imgs/gif/kali/maskflash.gif
/imgs/gif/kali/staic20.gif
/imgs/gif/kali/static1.gif
/imgs/gif/kali/static3.gif
/imgs/gif/kali/static6.gif
/imgs/gif/kitiworks/giphy._kitiworks_read.gif
/imgs/gif/kitiworks/giphy_kiti_ipadfish.gif
/imgs/gif/kitiworks/giphy_kiti_purfect.gif
/imgs/gif/kitiworks/giphy_kitimail.gif
/imgs/gif/kitiworks/giphy_kitionline.gif
/imgs/gif/kitiworks/giphy_kitirunning.gif
/imgs/gif/kitiworks/giphy_kitiwork_bounce.gif
/imgs/gif/kitiworks/giphy_kitiworks_trail.gif
/imgs/gif/kitiworks/giphy_kitiwrites.gif
/imgs/gif/kitiworks/giphy_kocats.gif
/imgs/gif/kitiworks/giphy_news_kitiworks.gif
/imgs/gif/konabus/giphy_konabus10.gif
/imgs/gif/konabus/giphy_konabus11.gif
/imgs/gif/konabus/giphy_konabus13.gif
/imgs/gif/konabus/giphy_konabus14.gif
/imgs/gif/konabus/giphy_konabus20.gif
/imgs/gif/konabus/giphy_skullflowers.gif
/imgs/gif/konabus/giphy_vkonabus03.gif
/imgs/gif/konet/giphy_weave.gif
/imgs/gif/kt/giphy_finger_arat.gif
/imgs/gif/kt/giphy_funnywalking.gif
/imgs/gif/kt/giphy_gymtoss.gif
/imgs/gif/kt/giphy_hand2s.gif
/imgs/gif/kt/giphy_handhither_gloves.gif
/imgs/gif/kt/giphy_hands1.gif
/imgs/gif/kt/giphy_headwaves.gif
/imgs/gif/kt/giphy_homerhandflaling.gif
/imgs/gif/kt/giphy_kt01.gif
/imgs/gif/kt/giphy_kt02.gif
/imgs/gif/kt/giphy_kt03.gif
/imgs/gif/kt/giphy_notes20.gif
/imgs/gif/med/giphy_eyeline.gif
/imgs/gif/med/giphy_eyes_line.gif
/imgs/gif/med/giphy_eyeworms.gif
/imgs/gif/med/giphy_heart01.gif
/imgs/gif/med/giphy_heart02.gif
/imgs/gif/med/giphy_heart04.gif
/imgs/gif/med/giphy_heart06.gif
/imgs/gif/med/giphy_heart10.gif
/imgs/gif/med/giphy_heart11.gif
/imgs/gif/med/giphy_heart12.gif
/imgs/gif/med/giphy_heart13.gif
/imgs/gif/med/giphy_heart15.gif
/imgs/gif/med/giphy_heart16.gif
/imgs/gif/med/giphy_heart17.gif
/imgs/gif/med/giphy_heart18.gif
/imgs/gif/med/giphy_heart19.gif
/imgs/gif/med/giphy_heart20.gif
/imgs/gif/med/giphy_heart21.gif
/imgs/gif/med/giphy_heart22.gif
/imgs/gif/med/giphy_heart23.gif
/imgs/gif/med/giphy_heart24.gif
/imgs/gif/med/giphy_heart25.gif
/imgs/gif/med/giphy_heart26.gif
/imgs/gif/med/giphy_heart27.gif
/imgs/gif/med/giphy_heart28.gif
/imgs/gif/med/giphy_heart29.gif
/imgs/gif/mouse/giphy.gif
/imgs/gif/mouse/giphy_construction01.gif
/imgs/gif/mouse/giphy_construction02.gif
/imgs/gif/mouse/giphy_construction03.gif
/imgs/gif/mouse/giphy_construction04.gif
/imgs/gif/mouse/giphy_construction05.gif
/imgs/gif/mouse/giphy_construction06.gif
/imgs/gif/mouse/giphy_construction07.gif
/imgs/gif/mouse/giphy_construction08.gif
/imgs/gif/mouse/giphy_construction09.gif
/imgs/gif/mouse/giphy_construction10.gif
/imgs/gif/mouse/giphy_construction11.gif
/imgs/gif/mouse/giphy_construction12.gif
/imgs/gif/mouse/giphy_construction13.gif
/imgs/gif/mouse/giphy_construction14.gif
/imgs/gif/mouse/giphy_construction15.gif
/imgs/gif/mouse/giphy_falling01.gif
/imgs/gif/mouse/giphy_falling02.gif
/imgs/gif/mouse/giphy_falling03.gif
/imgs/gif/mouse/giphy_falling04.gif
/imgs/gif/mouse/giphy_falling06.gif
/imgs/gif/mouse/giphy_falling07.gif
/imgs/gif/mouse/giphy_falling08.gif
/imgs/gif/mouse/giphy_falling09.gif
/imgs/gif/mouse/giphy_filecabinat.gif
/imgs/gif/mouse/giphy_focus10.gif
/imgs/gif/mouse/giphy_fu.gif
/imgs/gif/mouse/giphy_mouse01.gif
/imgs/gif/mouse/giphy_mouse02.gif
/imgs/gif/mouse/giphy_mouse03.gif
/imgs/gif/mouse/giphy_mouse06.gif
/imgs/gif/mouse/giphy_mouse_konabus.gif
/imgs/gif/mouse/giphy_phone01.gif
/imgs/gif/mouse/giphy_phone04.gif
/imgs/gif/mouse/giphy_phone05.gif
/imgs/gif/mouse/giphy_phone06.gif
/imgs/gif/mouse/giphy_snap.gif
/imgs/gif/new.gif
/imgs/gif/notes/giphy_konabus16.gif
/imgs/gif/notes/giphy_kt10.gif
/imgs/gif/notes/giphy_notes00.gif
/imgs/gif/notes/giphy_notes01.gif
/imgs/gif/notes/giphy_notes02.gif
/imgs/gif/notes/giphy_notes03.gif
/imgs/gif/notes/giphy_notes04.gif
/imgs/gif/notes/giphy_notes05.gif
/imgs/gif/notes/giphy_notes06.gif
/imgs/gif/notes/giphy_notes07.gif
/imgs/gif/notes/giphy_notes08.gif
/imgs/gif/notes/giphy_notes09.gif
/imgs/gif/notes/giphy_notes10.gif
/imgs/gif/notes/giphy_notes11.gif
/imgs/gif/notes/giphy_notes13.gif
/imgs/gif/notes/giphy_notes15.gif
/imgs/gif/notes/giphy_notes16.gif
/imgs/gif/notes/giphy_notes18.gif
/imgs/gif/notes/giphy_notes19.gif
/imgs/gif/notes/giphy_notes19b.gif
/imgs/gif/notes/giphy_notes23.gif
/imgs/gif/notes/giphy_notes24.gif
/imgs/gif/notes/giphy_notes25.gif
/imgs/gif/notes/giphy_notes26.gif
/imgs/gif/notes/giphy_notes27.gif
/imgs/gif/orbs/balls3.gif
/imgs/gif/orbs/balls4.gif
/imgs/gif/orbs/ballsrainbow.gif
/imgs/gif/orbs/cub1.gif
/imgs/gif/orbs/dia3.gif
/imgs/gif/orbs/diam1.gif
/imgs/gif/orbs/godots.gif
/imgs/gif/orbs/godotss.gif
/imgs/gif/orbs/goripple.gif
/imgs/gif/orbs/helix1.gif
/imgs/gif/orbs/jellyfish.gif
/imgs/gif/orbs/kali11.gif
/imgs/gif/orbs/kali15.gif
/imgs/gif/orbs/kali20.gif
/imgs/gif/orbs/laki21.gif
/imgs/gif/orbs/orb1.gif
/imgs/gif/orbs/orb10.gif
/imgs/gif/orbs/orb11.gif
/imgs/gif/orbs/orb3.gif
/imgs/gif/orbs/orb43.gif
/imgs/gif/orbs/orb6.gif
/imgs/gif/orbs/orb8.gif
/imgs/gif/orbs/orbcryst_alpulse.gif
/imgs/gif/orbs/orbdrip.gif
/imgs/gif/orbs/orbrainbow.gif
/imgs/gif/orbs/orbring.gif
/imgs/gif/orbs/orbspiral.gif
/imgs/gif/orbs/ringcube.gif
/imgs/gif/orbs/rings.gif
/imgs/gif/orbs/rings2.gif
/imgs/gif/orbs/ringworm.gif
/imgs/gif/orbs/rubix.gif
/imgs/gif/orbs/soccorball.gif
/imgs/gif/orbs/sprayfountain.gif
/imgs/gif/orbs/sssfg.gif
/imgs/gif/pastryroad/cakelite.gif
/imgs/gif/pastryroad/giphy._crazycookgif.gif
/imgs/gif/pastryroad/giphy_canydrops.gif
/imgs/gif/pastryroad/giphy_honeydrip.gif
/imgs/gif/pastryroad/giphy_pastryroad_frosting.gif
/imgs/gif/pastryroad/giphy_pastryroad_mixer.gif
/imgs/gif/pastryroad/giphy_woohoo.gif
/imgs/gif/ring.gif
/imgs/gif/ringb.gif
/imgs/gif/ringd.gif
/imgs/gif/ringp.gif
/imgs/gif/ringq.gif
/imgs/gif/rings.gif
/imgs/gif/ringsb.gif
/imgs/gif/ringsd.gif
/imgs/gif/ringsp.gif
/imgs/gif/ringsq.gif
/imgs/gif/spacers/giphy_handkither.gif
/imgs/gif/spacers/giphy_jkwii_head.gif
/imgs/gif/spacers/giphy_jkwii_head2.gif
/imgs/gif/spacers/giphy_spacer_01.gif
/imgs/gif/spacers/giphy_spacer_02.gif
/imgs/gif/spacers/giphy_spacer_03.gif
/imgs/gif/spacers/giphy_spacer_04.gif
/imgs/gif/spacers/giphy_spacer_05.gif
/imgs/gif/spacers/giphy_spacer_07.gif
/imgs/gif/spacers/giphy_spacer_08.gif
/imgs/gif/spacers/giphy_spacer_09.gif
/imgs/gif/spacers/giphy_spacer_10.gif
/imgs/gif/spacers/giphy_spacer_11.gif
/imgs/gif/spacers/giphy_spacer_12.gif
/imgs/gif/spacers/giphy_spacer_13.gif
/imgs/gif/spacers/giphy_spacer_15.gif
/imgs/gif/spacers/giphy_spacer_17.gif
/imgs/gif/spacers/giphy_spacer_19.gif
/imgs/gif/spacers/giphy_spacer_20.gif
/imgs/gif/spacers/giphy_spacer_21.gif
/imgs/gif/spacers/giphy_spacer_22.gif
/imgs/gif/spacers/tn/tn_giphy_handkither.gif
/imgs/gif/spacers/tn/tn_giphy_jkwii_head.gif
/imgs/gif/spacers/tn/tn_giphy_jkwii_head2.gif
/imgs/gif/spacers/tn/tn_giphy_spacer_01.gif
/imgs/gif/spacers/tn/tn_giphy_spacer_02.gif
/imgs/gif/spacers/tn/tn_giphy_spacer_03.gif
/imgs/gif/spacers/tn/tn_giphy_spacer_04.gif
/imgs/gif/spacers/tn/tn_giphy_spacer_05.gif
/imgs/gif/spacers/tn/tn_giphy_spacer_07.gif
/imgs/gif/spacers/tn/tn_giphy_spacer_08.gif
/imgs/gif/spacers/tn/tn_giphy_spacer_09.gif
/imgs/gif/spacers/tn/tn_giphy_spacer_10.gif
/imgs/gif/spacers/tn/tn_giphy_spacer_11.gif
/imgs/gif/spacers/tn/tn_giphy_spacer_12.gif
/imgs/gif/spacers/tn/tn_giphy_spacer_13.gif
/imgs/gif/spacers/tn/tn_giphy_spacer_15.gif
/imgs/gif/spacers/tn/tn_giphy_spacer_17.gif
/imgs/gif/spacers/tn/tn_giphy_spacer_19.gif
/imgs/gif/spacers/tn/tn_giphy_spacer_20.gif
/imgs/gif/spacers/tn/tn_giphy_spacer_21.gif
/imgs/gif/spacers/tn/tn_giphy_spacer_22.gif
/imgs/gif/time/giph_time_ticktocky.gif
/imgs/gif/time/giphy+flag_fireworks.gif
/imgs/gif/time/giphy_circlenumbers.gif
/imgs/gif/time/giphy_kititail.gif
/imgs/gif/time/giphy_konabus_kitibong.gif
/imgs/gif/time/giphy_paperhandling.gif
/imgs/gif/time/giphy_recordtime.gif
/imgs/gif/time/giphy_time1.gif
/imgs/gif/time/giphy_time_1213.gif
/imgs/gif/time/giphy_time_clockrays.gif
/imgs/gif/time/giphy_time_clocks.gif
/imgs/gif/time/giphy_time_cubist.gif
/imgs/gif/time/giphy_time_cycle.gif
/imgs/gif/time/giphy_time_flywheel.gif
/imgs/gif/time/giphy_time_gears.gif
/imgs/gif/time/giphy_time_goo.gif
/imgs/gif/time/giphy_time_hotsand.gif
/imgs/gif/time/giphy_time_kiti_ticktail.gif
/imgs/gif/time/giphy_time_numbers.gif
/imgs/gif/time/giphy_time_running.gif
/imgs/gif/time/giphy_time_schedule.gif
/imgs/gif/time/giphy_time_silouette.gif
/imgs/gif/time/giphy_time_spinn.gif
/imgs/gif/time/giphy_time_spiral.gif
/imgs/gif/time/giphy_time_spiral_up.gif
/imgs/gif/time/giphy_time_strobe.gif
/imgs/gif/time/giphy_time_swingers.gif
/imgs/gif/time/giphy_time_toons.gif
/imgs/gif/time/giphy_time_up.gif
/imgs/gif/time/giphy_timebench.gif
/imgs/gif/time/giphy_timeferro.gif
/imgs/gif/time/giphy_timegirls.gif
/imgs/gif/time/giphy_timeguy.gif
/imgs/gif/time/giphy_timegym.gif
/imgs/gif/time/giphy_timeinky.gif
/imgs/gif/time/giphy_timerunning.gif
/imgs/gif/time/giphy_timespinner.gif
/imgs/gif/time/giphy_timespiral_gold.gif
/imgs/gif/time/giphy_yellowbird_lookin.gif
/imgs/gif/time/stoptheclock.gif
/imgs/gif/time/tn/tn_giph_time_ticktocky.gif
/imgs/gif/time/tn/tn_giphy+flag_fireworks.gif
/imgs/gif/time/tn/tn_giphy_circlenumbers.gif
/imgs/gif/time/tn/tn_giphy_kititail.gif
/imgs/gif/time/tn/tn_giphy_konabus_kitibong.gif
/imgs/gif/time/tn/tn_giphy_paperhandling.gif
/imgs/gif/time/tn/tn_giphy_recordtime.gif
/imgs/gif/time/tn/tn_giphy_time1.gif
/imgs/gif/time/tn/tn_giphy_time_1213.gif
/imgs/gif/time/tn/tn_giphy_time_clockrays.gif
/imgs/gif/time/tn/tn_giphy_time_clocks.gif
/imgs/gif/time/tn/tn_giphy_time_cubist.gif
/imgs/gif/time/tn/tn_giphy_time_cycle.gif
/imgs/gif/time/tn/tn_giphy_time_flywheel.gif
/imgs/gif/time/tn/tn_giphy_time_gears.gif
/imgs/gif/time/tn/tn_giphy_time_goo.gif
/imgs/gif/time/tn/tn_giphy_time_hotsand.gif
/imgs/gif/time/tn/tn_giphy_time_kiti_ticktail.gif
/imgs/gif/time/tn/tn_giphy_time_numbers.gif
/imgs/gif/time/tn/tn_giphy_time_running.gif
/imgs/gif/time/tn/tn_giphy_time_schedule.gif
/imgs/gif/time/tn/tn_giphy_time_silouette.gif
/imgs/gif/time/tn/tn_giphy_time_spinn.gif
/imgs/gif/time/tn/tn_giphy_time_spiral.gif
/imgs/gif/time/tn/tn_giphy_time_spiral_up.gif
/imgs/gif/time/tn/tn_giphy_time_strobe.gif
/imgs/gif/time/tn/tn_giphy_time_swingers.gif
/imgs/gif/time/tn/tn_giphy_time_toons.gif
/imgs/gif/time/tn/tn_giphy_time_up.gif
/imgs/gif/time/tn/tn_giphy_timebench.gif
/imgs/gif/time/tn/tn_giphy_timeferro.gif
/imgs/gif/time/tn/tn_giphy_timegirls.gif
/imgs/gif/time/tn/tn_giphy_timeguy.gif
/imgs/gif/time/tn/tn_giphy_timegym.gif
/imgs/gif/time/tn/tn_giphy_timeinky.gif
/imgs/gif/time/tn/tn_giphy_timerunning.gif
/imgs/gif/time/tn/tn_giphy_timespinner.gif
/imgs/gif/time/tn/tn_giphy_timespiral_gold.gif
/imgs/gif/time/tn/tn_giphy_yellowbird_lookin.gif
/imgs/gif/time/tn/tn_stoptheclock.gif
/imgs/gif/us/giph_jkwii_handglowy.gif
/imgs/gif/us/giph_jkwii_popcorny.gif
/imgs/gif/us/giph_us_snapshot.gif
/imgs/gif/us/giphy_alien_bio3.gif
/imgs/gif/us/giphy_alien_worms.gif
/imgs/gif/us/giphy_book_flipblank.gif
/imgs/gif/us/giphy_book_flipedge.gif
/imgs/gif/us/giphy_book_flipfast.gif
/imgs/gif/us/giphy_book_flipflat.gif
/imgs/gif/us/giphy_book_flipold.gif
/imgs/gif/us/giphy_books_shelf.gif
/imgs/gif/us/giphy_bugs_jaildoorsgif.gif
/imgs/gif/us/giphy_bugs_paper.gif
/imgs/gif/us/giphy_bugs_typer.gif
/imgs/gif/us/giphy_bugs_umbrellagif.gif
/imgs/gif/us/giphy_bugsmugs.gif
/imgs/gif/us/giphy_bulbfire.gif
/imgs/gif/us/giphy_byrdpucker_donutlaw_simpsons.gif
/imgs/gif/us/giphy_byrdpucker_hatgirls.gif
/imgs/gif/us/giphy_byrdpucker_horseheadsgif.gif
/imgs/gif/us/giphy_byrdpucker_scan.gif
/imgs/gif/us/giphy_circles_n_bbs.gif
/imgs/gif/us/giphy_coffee_drip.gif
/imgs/gif/us/giphy_coffee_steam.gif
/imgs/gif/us/giphy_demonhorns.gif
/imgs/gif/us/giphy_flagybanner.gif
/imgs/gif/us/giphy_flipbook.gif
/imgs/gif/us/giphy_flipbook2.gif
/imgs/gif/us/giphy_flipbook_glow.gif
/imgs/gif/us/giphy_flipbooks.gif
/imgs/gif/us/giphy_focus_eyeball_hivey.gif
/imgs/gif/us/giphy_g.gif
/imgs/gif/us/giphy_go_crystalcube.gif
/imgs/gif/us/giphy_gridpart.gif
/imgs/gif/us/giphy_jkwii_glance.gif
/imgs/gif/us/giphy_jkwii_handorb.gif
/imgs/gif/us/giphy_jkwii_headwave2.gif
/imgs/gif/us/giphy_k.gif
/imgs/gif/us/giphy_keyboard_onoff_handtoggle.gif
/imgs/gif/us/giphy_keyboard_round.gif
/imgs/gif/us/giphy_kids_arcstrollers.gif
/imgs/gif/us/giphy_kids_tinkerbel_block.gif
/imgs/gif/us/giphy_kids_tinkerbell_laughblock.gif
/imgs/gif/us/giphy_kids_tinkerbell_leafdoor.gif
/imgs/gif/us/giphy_kids_tinkerbell_stare.gif
/imgs/gif/us/giphy_konabus_bugs_rolln.gif
/imgs/gif/us/giphy_konabus_headsmokn.gif
/imgs/gif/us/giphy_konabus_mushrooms.gif
/imgs/gif/us/giphy_konabus_schrooms.gif
/imgs/gif/us/giphy_koswell50.gif
/imgs/gif/us/giphy_kou_elbowpipes.gif
/imgs/gif/us/giphy_kou_magnets1.gif
/imgs/gif/us/giphy_kou_mercury_steps.gif
/imgs/gif/us/giphy_kou_newschool100.gif
/imgs/gif/us/giphy_kou_science_pour.gif
/imgs/gif/us/giphy_med_headknock1.gif
/imgs/gif/us/giphy_med_heart.gif
/imgs/gif/us/giphy_med_teethgif.gif
/imgs/gif/us/giphy_mistspray.gif
/imgs/gif/us/giphy_news_bookworm.gif
/imgs/gif/us/giphy_news_phone.gif
/imgs/gif/us/giphy_news_presses.gif
/imgs/gif/us/giphy_news_slow.gif
/imgs/gif/us/giphy_news_toon.gif
/imgs/gif/us/giphy_orb7.gif
/imgs/gif/us/giphy_orb_caravan.gif
/imgs/gif/us/giphy_orb_coat.gif
/imgs/gif/us/giphy_orb_crystal.gif
/imgs/gif/us/giphy_orb_cubepulse.gif
/imgs/gif/us/giphy_orb_forward.gif
/imgs/gif/us/giphy_orb_glow.gif
/imgs/gif/us/giphy_orb_linear.gif
/imgs/gif/us/giphy_orb_outgif.gif
/imgs/gif/us/giphy_orb_particles.gif
/imgs/gif/us/giphy_orb_plasmagif.gif
/imgs/gif/us/giphy_orb_spirorbgif.gif
/imgs/gif/us/giphy_orb_static.gif
/imgs/gif/us/giphy_orb_wave.gif
/imgs/gif/us/giphy_orbs_birdseye.gif
/imgs/gif/us/giphy_pastryroad_layersgif.gif
/imgs/gif/us/giphy_pulse.gif
/imgs/gif/us/giphy_pulse_big.gif
/imgs/gif/us/giphy_pulse_cube.gif
/imgs/gif/us/giphy_ringshadows.gif
/imgs/gif/us/giphy_runningman_draw.gif
/imgs/gif/us/giphy_scene_medow_butterfly.gif
/imgs/gif/us/giphy_scene_medow_sky.gif
/imgs/gif/us/giphy_scene_moonpond.gif
/imgs/gif/us/giphy_scene_motiongallery.gif
/imgs/gif/us/giphy_slinky_treadmill.gif
/imgs/gif/us/giphy_spinner1.gif
/imgs/gif/us/giphy_spinner_dark.gif
/imgs/gif/us/giphy_time_platters.gif
/imgs/gif/us/giphy_us_alien_dancers.gif
/imgs/gif/us/giphy_us_babyheads.gif
/imgs/gif/us/giphy_us_ballhead2.gif
/imgs/gif/us/giphy_us_ballheads.gif
/imgs/gif/us/giphy_us_flirty1.gif
/imgs/gif/us/giphy_us_flirty2.gif
/imgs/gif/us/giphy_us_headblinkers.gif
/imgs/gif/us/giphy_us_headline.gif
/imgs/gif/us/giphy_us_headwave.gif
/imgs/gif/us/giphy_us_hive.gif
/imgs/gif/us/giphy_us_hive_walkers.gif
/imgs/gif/us/giphy_us_joggers.gif
/imgs/gif/us/giphy_us_pacer.gif
/imgs/gif/us/giphy_us_toons2.gif
/imgs/gif/us/giphy_us_touch1.gif
/imgs/gif/us/giphy_us_walkers.gif
/imgs/gif/us/giphy_woohoo_mickey.gif
/imgs/gif/us/giphy_xmastrees.gif
/imgs/gif/us/giphy_zensitter.gif
/imgs/gif/us/giphy_zoom_earth.gif
/imgs/gif/us/giphy_zoom_typos_fold.gif
/imgs/gif/us/tn/tn_giph_jkwii_handglowy.gif
/imgs/gif/us/tn/tn_giph_jkwii_popcorny.gif
/imgs/gif/us/tn/tn_giph_us_snapshot.gif
/imgs/gif/us/tn/tn_giphy_alien_bio3.gif
/imgs/gif/us/tn/tn_giphy_alien_worms.gif
/imgs/gif/us/tn/tn_giphy_book_flipblank.gif
/imgs/gif/us/tn/tn_giphy_book_flipedge.gif
/imgs/gif/us/tn/tn_giphy_book_flipfast.gif
/imgs/gif/us/tn/tn_giphy_book_flipflat.gif
/imgs/gif/us/tn/tn_giphy_book_flipold.gif
/imgs/gif/us/tn/tn_giphy_books_shelf.gif
/imgs/gif/us/tn/tn_giphy_bugs_jaildoorsgif.gif
/imgs/gif/us/tn/tn_giphy_bugs_paper.gif
/imgs/gif/us/tn/tn_giphy_bugs_typer.gif
/imgs/gif/us/tn/tn_giphy_bugs_umbrellagif.gif
/imgs/gif/us/tn/tn_giphy_bugsmugs.gif
/imgs/gif/us/tn/tn_giphy_bulbfire.gif
/imgs/gif/us/tn/tn_giphy_byrdpucker_donutlaw_simpsons.gif
/imgs/gif/us/tn/tn_giphy_byrdpucker_hatgirls.gif
/imgs/gif/us/tn/tn_giphy_byrdpucker_horseheadsgif.gif
/imgs/gif/us/tn/tn_giphy_byrdpucker_scan.gif
/imgs/gif/us/tn/tn_giphy_circles_n_bbs.gif
/imgs/gif/us/tn/tn_giphy_coffee_drip.gif
/imgs/gif/us/tn/tn_giphy_coffee_steam.gif
/imgs/gif/us/tn/tn_giphy_demonhorns.gif
/imgs/gif/us/tn/tn_giphy_flagybanner.gif
/imgs/gif/us/tn/tn_giphy_flipbook.gif
/imgs/gif/us/tn/tn_giphy_flipbook2.gif
/imgs/gif/us/tn/tn_giphy_flipbook_glow.gif
/imgs/gif/us/tn/tn_giphy_flipbooks.gif
/imgs/gif/us/tn/tn_giphy_focus_eyeball_hivey.gif
/imgs/gif/us/tn/tn_giphy_g.gif
/imgs/gif/us/tn/tn_giphy_go_crystalcube.gif
/imgs/gif/us/tn/tn_giphy_gridpart.gif
/imgs/gif/us/tn/tn_giphy_jkwii_glance.gif
/imgs/gif/us/tn/tn_giphy_jkwii_handorb.gif
/imgs/gif/us/tn/tn_giphy_jkwii_headwave2.gif
/imgs/gif/us/tn/tn_giphy_k.gif
/imgs/gif/us/tn/tn_giphy_keyboard_onoff_handtoggle.gif
/imgs/gif/us/tn/tn_giphy_keyboard_round.gif
/imgs/gif/us/tn/tn_giphy_kids_arcstrollers.gif
/imgs/gif/us/tn/tn_giphy_kids_tinkerbel_block.gif
/imgs/gif/us/tn/tn_giphy_kids_tinkerbell_laughblock.gif
/imgs/gif/us/tn/tn_giphy_kids_tinkerbell_leafdoor.gif
/imgs/gif/us/tn/tn_giphy_kids_tinkerbell_stare.gif
/imgs/gif/us/tn/tn_giphy_konabus_bugs_rolln.gif
/imgs/gif/us/tn/tn_giphy_konabus_headsmokn.gif
/imgs/gif/us/tn/tn_giphy_konabus_mushrooms.gif
/imgs/gif/us/tn/tn_giphy_konabus_schrooms.gif
/imgs/gif/us/tn/tn_giphy_koswell50.gif
/imgs/gif/us/tn/tn_giphy_kou_elbowpipes.gif
/imgs/gif/us/tn/tn_giphy_kou_magnets1.gif
/imgs/gif/us/tn/tn_giphy_kou_mercury_steps.gif
/imgs/gif/us/tn/tn_giphy_kou_newschool100.gif
/imgs/gif/us/tn/tn_giphy_kou_science_pour.gif
/imgs/gif/us/tn/tn_giphy_med_headknock1.gif
/imgs/gif/us/tn/tn_giphy_med_heart.gif
/imgs/gif/us/tn/tn_giphy_med_teethgif.gif
/imgs/gif/us/tn/tn_giphy_mistspray.gif
/imgs/gif/us/tn/tn_giphy_news_bookworm.gif
/imgs/gif/us/tn/tn_giphy_news_phone.gif
/imgs/gif/us/tn/tn_giphy_news_presses.gif
/imgs/gif/us/tn/tn_giphy_news_slow.gif
/imgs/gif/us/tn/tn_giphy_news_toon.gif
/imgs/gif/us/tn/tn_giphy_orb7.gif
/imgs/gif/us/tn/tn_giphy_orb_caravan.gif
/imgs/gif/us/tn/tn_giphy_orb_coat.gif
/imgs/gif/us/tn/tn_giphy_orb_crystal.gif
/imgs/gif/us/tn/tn_giphy_orb_cubepulse.gif
/imgs/gif/us/tn/tn_giphy_orb_forward.gif
/imgs/gif/us/tn/tn_giphy_orb_glow.gif
/imgs/gif/us/tn/tn_giphy_orb_linear.gif
/imgs/gif/us/tn/tn_giphy_orb_outgif.gif
/imgs/gif/us/tn/tn_giphy_orb_particles.gif
/imgs/gif/us/tn/tn_giphy_orb_plasmagif.gif
/imgs/gif/us/tn/tn_giphy_orb_spirorbgif.gif
/imgs/gif/us/tn/tn_giphy_orb_static.gif
/imgs/gif/us/tn/tn_giphy_orb_wave.gif
/imgs/gif/us/tn/tn_giphy_orbs_birdseye.gif
/imgs/gif/us/tn/tn_giphy_pastryroad_layersgif.gif
/imgs/gif/us/tn/tn_giphy_pulse.gif
/imgs/gif/us/tn/tn_giphy_pulse_big.gif
/imgs/gif/us/tn/tn_giphy_pulse_cube.gif
/imgs/gif/us/tn/tn_giphy_ringshadows.gif
/imgs/gif/us/tn/tn_giphy_runningman_draw.gif
/imgs/gif/us/tn/tn_giphy_scene_medow_butterfly.gif
/imgs/gif/us/tn/tn_giphy_scene_medow_sky.gif
/imgs/gif/us/tn/tn_giphy_scene_moonpond.gif
/imgs/gif/us/tn/tn_giphy_scene_motiongallery.gif
/imgs/gif/us/tn/tn_giphy_slinky_treadmill.gif
/imgs/gif/us/tn/tn_giphy_spinner1.gif
/imgs/gif/us/tn/tn_giphy_spinner_dark.gif
/imgs/gif/us/tn/tn_giphy_time_platters.gif
/imgs/gif/us/tn/tn_giphy_us_alien_dancers.gif
/imgs/gif/us/tn/tn_giphy_us_babyheads.gif
/imgs/gif/us/tn/tn_giphy_us_ballhead2.gif
/imgs/gif/us/tn/tn_giphy_us_ballheads.gif
/imgs/gif/us/tn/tn_giphy_us_flirty1.gif
/imgs/gif/us/tn/tn_giphy_us_flirty2.gif
/imgs/gif/us/tn/tn_giphy_us_headblinkers.gif
/imgs/gif/us/tn/tn_giphy_us_headline.gif
/imgs/gif/us/tn/tn_giphy_us_headwave.gif
/imgs/gif/us/tn/tn_giphy_us_hive.gif
/imgs/gif/us/tn/tn_giphy_us_hive_walkers.gif
/imgs/gif/us/tn/tn_giphy_us_joggers.gif
/imgs/gif/us/tn/tn_giphy_us_pacer.gif
/imgs/gif/us/tn/tn_giphy_us_toons2.gif
/imgs/gif/us/tn/tn_giphy_us_touch1.gif
/imgs/gif/us/tn/tn_giphy_us_walkers.gif
/imgs/gif/us/tn/tn_giphy_woohoo_mickey.gif
/imgs/gif/us/tn/tn_giphy_xmastrees.gif
/imgs/gif/us/tn/tn_giphy_zensitter.gif
/imgs/gif/us/tn/tn_giphy_zoom_earth.gif
/imgs/gif/us/tn/tn_giphy_zoom_typos_fold.gif
/imgs/gif/us_big/giph_us_touch_arms.gif
/imgs/gif/us_big/giphy_alien_bigdancer1.gif
/imgs/gif/us_big/giphy_alien_bigdancer2.gif
/imgs/gif/us_big/giphy_android_anatomy.gif
/imgs/gif/us_big/giphy_boxinbox.gif
/imgs/gif/us_big/giphy_faces2.gif
/imgs/gif/us_big/giphy_finger_team.gif
/imgs/gif/us_big/giphy_focus_android.gif
/imgs/gif/us_big/giphy_jkwii_finger.gif
/imgs/gif/us_big/giphy_jkwii_headwaves2.gif
/imgs/gif/us_big/giphy_keyboard_wavepanel.gif
/imgs/gif/us_big/giphy_kids_bouncedown.gif
/imgs/gif/us_big/giphy_konabus_exhale.gif
/imgs/gif/us_big/giphy_kou_magnet_arc.gif
/imgs/gif/us_big/giphy_kou_magnet_ring.gif
/imgs/gif/us_big/giphy_magnet_link.gif
/imgs/gif/us_big/giphy_med_alien_bio.gif
/imgs/gif/us_big/giphy_med_heart3.gif
/imgs/gif/us_big/giphy_med_implosion.gif
/imgs/gif/us_big/giphy_news_keaton_bignews.gif
/imgs/gif/us_big/giphy_orb_sandripple.gif
/imgs/gif/us_big/giphy_orb_square.gif
/imgs/gif/us_big/giphy_orb_static2.gif
/imgs/gif/us_big/giphy_orbs_concavering.gif
/imgs/gif/us_big/giphy_pastryroad_flipn.gif
/imgs/gif/us_big/giphy_spinner_copper.gif
/imgs/gif/us_big/giphy_us_ballhead_bouncers.gif
/imgs/gif/us_big/giphy_us_gooddeed.gif
/imgs/gif/us_big/giphy_us_hatshake.gif
/imgs/gif/us_big/giphy_us_meet_latex_portal.gif
/imgs/gif/us_big/giphy_us_morph1.gif
/imgs/gif/us_big/giphy_us_morph2.gif
/imgs/gif/us_big/giphy_us_sarandancer.gif
/imgs/gif/us_big/giphy_us_toons1.gif
/imgs/gif/us_big/giphy_zoom_bug.gif
/imgs/gif/view/giphy_us01.gif
/imgs/gif/view/giphy_view00.gif
/imgs/gif/view/giphy_view01.gif
/imgs/gif/view/giphy_view02.gif
/imgs/gif/view/giphy_view03.gif
/imgs/gif/view/giphy_view04.gif
/imgs/gif/view/giphy_view05.gif
/imgs/gif/view/giphy_view06.gif
/imgs/gif/view/giphy_view08.gif
/imgs/gif/view/giphy_view09.gif
/imgs/gif/view/giphy_view10.gif
/imgs/gif/view/giphy_view11.gif
/imgs/gif/view/giphy_view12.gif
/imgs/gif/view/giphy_view13.gif
/imgs/gif/view/giphy_view14.gif
/imgs/gif/view/giphy_view15y.gif
/imgs/gif/view/giphy_view16.gif
/imgs/gif/view/giphy_view17.gif
/imgs/gif/view/giphy_view19.gif
/imgs/gif/view/giphy_view20.gif
/imgs/gif/view/giphy_view21.gif
/imgs/gif/view/giphy_view22.gif
/imgs/gif/view/giphy_view25.gif
/imgs/gif/view/giphy_view26.gif
/imgs/gif/view/giphy_view27.gif
/imgs/gif/view/giphy_view28.gif
/imgs/gif/view/giphy_view29.gif
/imgs/gif/view/giphy_view30.gif
/imgs/gif/view/giphy_view31.gif
/imgs/gif/view/giphy_view32.gif
/imgs/gif/view/giphy_view33.gif
/imgs/gif/view/giphy_view34.gif
/imgs/gif/view/giphy_view35.gif
./pages/defford_boatb.jpg
./pages/donutvanlaw_but_wiis_still_here.jpg
./pages/donutvanlaw_but_wiis_still_here_300.jpg
./pages/donutvanlaw_but_wiis_still_hereb.jpg
./pages/fb_soul.jpg
./pages/floorplan.jpg
./pages/floorplan_jtf29-30.jpg
./pages/floorplan_jtf30-31.jpg
./pages/floorplan_jtfdc-jtf32b.jpg
./pages/floorplan_survey.jpg
./pages/gojs_doogymonitor_donutvanlaw_takings_all_took.jpg
./pages/gojs_doogymonitor_donutvanlaw_takings_all_tookb.jpg
./pages/Hessian_jagerb.jpg
./pages/HS32_policeppu.jpg
./pages/HS39_gannon_tree.jpg
./pages/HS4.jpg
./pages/IMG_0354b.jpg
./pages/IMG_0356b.jpg
./pages/IMG_0448_2.jpg
./pages/IMG_0449.jpg
./pages/IMG_0479b.jpg
./pages/IMG_0482b.jpg
./pages/IMG_0489.jpg
./pages/IMG_0497b.jpg
./pages/IMG_0498.jpg
./pages/IMG_0499.jpg
./pages/IMG_0506.jpg
./pages/IMG_0559.jpg
./pages/IMG_0596b.jpg
./pages/IMG_0612b.jpg
./pages/IMG_0641b.jpg
./pages/IMG_0648b.jpg
./pages/IMG_0711b.jpg
./pages/IMG_0712b.jpg
./pages/IMG_1361b.jpg
./pages/IMG_1554b.jpg
./pages/IMG_1557b.jpg
./pages/IMG_1722b.jpg
./pages/IMG_1730.jpg
./pages/IMG_1770b.jpg
./pages/IMG_1786.jpg
./pages/IMG_1915b.jpg
./pages/IMG_1933b.jpg
./pages/IMG_1953b.jpg
./pages/IMG_1956b.jpg
./pages/IMG_2030b.jpg
./pages/IMG_2122b.jpg
./pages/IMG_2124b.jpg
./pages/IMG_2132b.jpg
./pages/IMG_2133b.jpg
./pages/IMG_2332b.jpg
./pages/IMG_2336b.jpg
./pages/IMG_3077b.jpg
./pages/IMG_3087b.jpg
./pages/IMG_3090b.jpg
./pages/IMG_3158b.jpg
./pages/IMG_3162.jpg
./pages/IMG_3164.jpg
./pages/IMG_3203.jpg
./pages/IMG_3431.jpg
./pages/IMG_3485.jpg
./pages/IMG_3491.jpg
./pages/IMG_3702.jpg
./pages/IMG_3705.jpg
./pages/IMG_3709.jpg
./pages/IMG_3827b.jpg
./pages/IMG_3856b.jpg
./pages/IMG_3881b.jpg
./pages/IMG_3883b.jpg
./pages/IMG_3884b.jpg
./pages/IMG_3893.jpg
./pages/IMG_3989b.jpg
./pages/IMG_3994b.jpg
./pages/IMG_4001b.jpg
./pages/IMG_4002b.jpg
./pages/IMG_5047b.jpg
./pages/IMG_5048b.jpg
./pages/IMG_5053b.jpg
./pages/IMG_5061b.jpg
./pages/IMG_5327.jpg
./pages/IMG_5329b.jpg
./pages/IMG_5386b.jpg
./pages/IMG_5605b.jpg
./pages/IMG_5611_jtfdc_original_notrespassing_willbeprosecuted.jpg
./pages/IMG_6728.jpg
./pages/IMG_6737.jpg
./pages/IMG_7450.jpg
./pages/IMG_7495b.jpg
./pages/IMG_7600b.jpg
./pages/IMG_7615b.jpg
./pages/IMG_7636b.jpg
./pages/IMG_7639b.jpg
./pages/IMG_7836b.jpg
./pages/IMG_7856b.jpg
./pages/IMG_7874b.jpg
./pages/IMG_7875b.jpg
./pages/IMG_7882b.jpg
./pages/IMG_7935b.jpg
./pages/IMG_7957b.jpg
./pages/IMG_7958b.jpg
./pages/IMG_7959b.jpg
./pages/IMG_8080b.jpg
./pages/IMG_8150.jpg
./pages/IMG_8242b.jpg
./pages/IMG_8284b.jpg
./pages/IMG_8329.jpg
./pages/IMG_8424b.jpg
./pages/IMG_8429b.jpg
./pages/IMG_8441b.jpg
./pages/IMG_8450b.jpg
./pages/IMG_8451b.jpg
./pages/IMG_8453b.jpg
./pages/IMG_8461b.jpg
./pages/IMG_8954b.jpg
./pages/IMG_9437_trial3_judge_brown_summary_defense.jpg
./pages/jtf30_Christiantddb.jpg
./pages/jtf30_jackcam1b.jpg
./pages/jtf30_jackcam3b.jpg
./pages/jtf31_snap_20170123_187593_party_whitevan_stalkerb.jpg
./pages/jtf31_snap_20170123_187600_clownporch_partygame_harrassmentb.jpg
./pages/jtf32_doberwatchers_2of4b.jpg
./pages/jtf32_snap_20170123_187588b.jpg
./pages/jtf39_baily_autonomous_patrolb.jpg
./pages/jtfdc_byrdpuckers_dog-n-pony_club.jpg
./pages/jtfdc_jkwiifall_4_jtf31_fionab.jpg
./pages/jtfdc_jtf30_heirloom_mowerer_midnight_stalkaroundIMG_9408b.jpg
./pages/jtfdcr_page_002b.jpg
./pages/jtfdcr_page_005b.jpg
./pages/jtfdcr_page_007b.jpg
./pages/jtfdcr_page_008b.jpg
./pages/jtfdcr_page_009b.jpg
./pages/pagesfb_kudleware.jpg
./pages/screenshot_23968_2.jpg
./pages/screenshot_23979b.jpg
./pages/screenshot_24032b.jpg
./pages/screenshot_24033b.jpg
./pages/screenshot_24036b.jpg
./pages/screenshot_24127b.jpg
./pages/screenshot_24132b.jpg
./pages/snap_20170123_187559_jtfdc_kids_cycle_lapsb.jpg
./pages/snap_20170123_197539_jtfinc_turnaroundb.jpg
./pages/snap_20170123_197616_law_donovan_joann7_contactb.jpg
./pages/snap_20170123_197616b.jpg
./pages/snap_20170123_197661b.jpg
./pages/snap_20170123_197675b.jpg
./pages/snap_20170123_243690.jpg
./pages/snap_20170123_243691.jpg
./pages/tn_jtfdc_20160530_1327_byrd_trustee_threat.jpg
./pages/tn_jtfdc_20190509_1224_jkwii_police_officerbell.jpg
./pages/toposb.jpg
./pages/wood_postersb.jpg
./pages/zn_donutvanlaw_but_wiis_still_here.jpg



`;
			return(pagelist_pages.split("\n"));
			}

		function load_pagelist_chap1() {
//			alert( "BUGS_1000 load_pagelist_chap1" );
var pagelist_chap1 =
`pages/chap1/1.jpg
pages/chap1/2.jpg
pages/chap1/3.jpg
pages/chap1/4.jpg
pages/chap1/5.jpg
pages/chap1/6.jpg
pages/chap1/7.jpg
pages/chap1/8.jpg
pages/chap1/9.jpg
pages/chap1/10.jpg
pages/chap1/11.jpg
pages/chap1/12.jpg
pages/chap1/13.jpg
pages/chap1/14.jpg
pages/chap1/15.jpg
pages/chap1/16.jpg`;
			return( pagelist_chap1.split("\n") );
			}




		function load_pagelist_chap2() {
//			alert( "BUGS_1000 load_pagelist_chap2" );
var pagelist_chap2 =
`pages/chap2/1.jpg
pages/chap2/2.jpg
pages/chap2/3.jpg
pages/chap2/4.jpg
pages/chap2/5.jpg
pages/chap2/6.jpg
pages/chap2/7.jpg
pages/chap2/8.jpg
pages/chap2/9.jpg
pages/chap2/10.jpg
pages/chap2/11.jpg
pages/chap2/12.jpg
pages/chap2/13.jpg
pages/chap2/14.jpg
pages/chap2/16.jpg`;
			return( pagelist_chap2.split("\n") );
			}



		function load_pagelist_chap3() {
//			alert( "BUGS_1000 load_pagelist_chap3" );
var pagelist_chap3 =
`pages/chap3/1.jpg
pages/chap3/2.jpg
pages/chap3/3.jpg
pages/chap3/4.jpg
pages/chap3/5.jpg
pages/chap3/6.jpg
pages/chap3/7.jpg
pages/chap3/8.jpg
pages/chap3/9.jpg
pages/chap3/10.jpg
pages/chap3/11.jpg
pages/chap3/12.jpg
pages/chap3/13.jpg
pages/chap3/14.jpg
pages/chap3/16.jpg`;
			return( pagelist_chap3.split("\n") );
			}

		function load_pagelist_shoebox() {
//			alert( "BUGS_1000 load_shoebox" );
var pagelist_shoebox=
`shoebox/1.jpg
shoebox/2.jpg
shoebox/3.jpg
shoebox/4.jpg
shoebox/5.jpg
shoebox/6.jpg
shoebox/7.jpg
shoebox/8.jpg
shoebox/9.jpg
shoebox/10.jpg
shoebox/11.jpg
shoebox/12.jpg
shoebox/13.jpg
shoebox/14.jpg
/fb/jtfdcr/shoebox/10.jpg
/fb/jtfdcr/shoebox/2.jpg
/fb/jtfdcr/shoebox/20020322_090201_1414191.jpg
/fb/jtfdcr/shoebox/20020322_090301_1414194.jpg
/fb/jtfdcr/shoebox/20020323_182401_1424206.jpg
/fb/jtfdcr/shoebox/20020527_093501_1010103.jpg
/fb/jtfdcr/shoebox/20020527_093501_1010104.jpg
/fb/jtfdcr/shoebox/20020527_095501_1070715.jpg
/fb/jtfdcr/shoebox/20020527_095601_1070717.jpg
/fb/jtfdcr/shoebox/20020527_123401_1070728.jpg
/fb/jtfdcr/shoebox/20020527_123401_1070730.jpg
/fb/jtfdcr/shoebox/20020527_132401_1070735.jpg
/fb/jtfdcr/shoebox/20020527_140901_1070743.jpg
/fb/jtfdcr/shoebox/20020527_140901_1070744.jpg
/fb/jtfdcr/shoebox/20020527_140901_1070745.jpg
/fb/jtfdcr/shoebox/20020527_140901_1070746.jpg
/fb/jtfdcr/shoebox/20020623_180601_1090984.jpg
/fb/jtfdcr/shoebox/20021118_093601_1252573(1).jpg
/fb/jtfdcr/shoebox/20021118_093601_1252573.jpg
/fb/jtfdcr/shoebox/20021118_093601_1252574.jpg
/fb/jtfdcr/shoebox/20021118_093601_1252575.jpg
/fb/jtfdcr/shoebox/20021120_084701_1252600.jpg
/fb/jtfdcr/shoebox/20021122_113301_1272744.jpg
/fb/jtfdcr/shoebox/20021122_113301_1272746.jpg
/fb/jtfdcr/shoebox/20021130_100801_1282877.jpg
/fb/jtfdcr/shoebox/20021201_132601_1292972.jpg
/fb/jtfdcr/shoebox/20021201_132701_1292974.jpg
/fb/jtfdcr/shoebox/20021201_132701_jtfin.jpg
/fb/jtfdcr/shoebox/20021201_132801_1292980.jpg
/fb/jtfdcr/shoebox/20021201_132901_1292986.jpg
/fb/jtfdcr/shoebox/20021204_090301_1292995.jpg
/fb/jtfdcr/shoebox/20021204_104701_1303005.jpg
/fb/jtfdcr/shoebox/20021204_105501_1303010.jpg
/fb/jtfdcr/shoebox/20021204_161501_1303018.jpg
/fb/jtfdcr/shoebox/20021204_161501_1303019.jpg
/fb/jtfdcr/shoebox/20021204_163301_1303026.jpg
/fb/jtfdcr/shoebox/20021207_104801_1303064.jpg
/fb/jtfdcr/shoebox/20021207_105001_1303067.jpg
/fb/jtfdcr/shoebox/20021214_105101_1303095.jpg
/fb/jtfdcr/shoebox/20021215_150101_1313120.jpg
/fb/jtfdcr/shoebox/20021215_150101_1313121.jpg
/fb/jtfdcr/shoebox/20021215_150701_1313125.jpg
/fb/jtfdcr/shoebox/20021215_150801_1313128.jpg
/fb/jtfdcr/shoebox/20021225_105901_1313160.jpg
/fb/jtfdcr/shoebox/20050105_054001_1858560.jpg
/fb/jtfdcr/shoebox/20050105_054001_1858561.jpg
/fb/jtfdcr/shoebox/20050107_052201_1858570.jpg
/fb/jtfdcr/shoebox/20050107_052401_1858581.jpg
/fb/jtfdcr/shoebox/20050107_052401_1858585.jpg
/fb/jtfdcr/shoebox/20050107_052701_1858593.jpg
/fb/jtfdcr/shoebox/20050107_052701_1858594.jpg
/fb/jtfdcr/shoebox/20050107_052701_1858597.jpg
/fb/jtfdcr/shoebox/20050107_053401_1868638.jpg
/fb/jtfdcr/shoebox/20050108_044601_1868681.jpg
/fb/jtfdcr/shoebox/20050108_044601_1868684.jpg
/fb/jtfdcr/shoebox/20050109_031201_1878702.jpg
/fb/jtfdcr/shoebox/20070507_185501_1010108.jpg
/fb/jtfdcr/shoebox/20080905_182801_1373709.jpg
/fb/jtfdcr/shoebox/20080914_094801_1373727.jpg
/fb/jtfdcr/shoebox/20080927_092701_1373761.jpg
/fb/jtfdcr/shoebox/20080927_092701_1373762.jpg
/fb/jtfdcr/shoebox/20080927_092801_1373763.jpg
/fb/jtfdcr/shoebox/20080927_092801_1373764.jpg
/fb/jtfdcr/shoebox/20080927_092801_1373765.jpg
/fb/jtfdcr/shoebox/20080927_092801_1373766.jpg
/fb/jtfdcr/shoebox/20080927_092901_1373768.jpg
/fb/jtfdcr/shoebox/20080927_092901_1373769.jpg
/fb/jtfdcr/shoebox/20080927_095601_1373770.jpg
/fb/jtfdcr/shoebox/20090322_241401_1404085.jpg
/fb/jtfdcr/shoebox/20090322_241401_1404088.jpg
/fb/jtfdcr/shoebox/20090322_241401_1404089.jpg
/fb/jtfdcr/shoebox/20090425_142201_2464664.jpg
/fb/jtfdcr/shoebox/20090425_142301_2464670.jpg
/fb/jtfdcr/shoebox/20091002_160801_1474760.jpg
/fb/jtfdcr/shoebox/20091002_160801_1474761.jpg
/fb/jtfdcr/shoebox/20091002_160901_1474763.jpg
/fb/jtfdcr/shoebox/20091003_142401_1474777.jpg
/fb/jtfdcr/shoebox/20151221_011.jpg
/fb/jtfdcr/shoebox/20161007_jtflaw_001.jpg
/fb/jtfdcr/shoebox/20161007_jtflaw_064.jpg
/fb/jtfdcr/shoebox/20161007_jtflaw_065.jpg
/fb/jtfdcr/shoebox/20161007_jtflaw_066.jpg
/fb/jtfdcr/shoebox/220px-Once_Upon_A_Time_In_America1.jpg
/fb/jtfdcr/shoebox/220px-Uncle_Sam's_Thanksgiving_Dinner_(November_1869),_by_Thomas_Nast.jpg
/fb/jtfdcr/shoebox/220px-Uncle_Sam_Memorial_Statue,_Arlington,_MA_-_Samuel_Wilson.jpg
/fb/jtfdcr/shoebox/220px-Uncle_Sam_needs_that_extra_shovelful.jpg
/fb/jtfdcr/shoebox/3.jpg
/fb/jtfdcr/shoebox/4.jpg
/fb/jtfdcr/shoebox/5 not-so-obvious Finder features new Mac users might not know %7C MacYourself.jpg
/fb/jtfdcr/shoebox/5.jpg
/fb/jtfdcr/shoebox/5_yard_wagon.jpg
/fb/jtfdcr/shoebox/5hiMs.jpg
/fb/jtfdcr/shoebox/6.jpg
/fb/jtfdcr/shoebox/673120.jpg
/fb/jtfdcr/shoebox/6_driveway.jpg
/fb/jtfdcr/shoebox/7.jpg
/fb/jtfdcr/shoebox/7_court.jpg
/fb/jtfdcr/shoebox/8.jpg
/fb/jtfdcr/shoebox/9.jpg
/fb/jtfdcr/shoebox/9557_fiona_runs_201506_001.jpg
/fb/jtfdcr/shoebox/9557_fiona_runs_201506_002.jpg
/fb/jtfdcr/shoebox/9558_byrd_trustee_threat_201505_001.jpg
/fb/jtfdcr/shoebox/9558_byrd_trustee_threat_201505_002.jpg
/fb/jtfdcr/shoebox/9558_byrd_trustee_threat_201505_003.jpg
/fb/jtfdcr/shoebox/Create a thumbnail image every X seconds of the video – FFmpeg.jpg
/fb/jtfdcr/shoebox/Dragon-1.jpg
/fb/jtfdcr/shoebox/FL000001.jpg
/fb/jtfdcr/shoebox/FL000002.jpg
/fb/jtfdcr/shoebox/Hessian_jager.jpg
/fb/jtfdcr/shoebox/IMG_0001.jpg
/fb/jtfdcr/shoebox/IMG_0002.jpg
/fb/jtfdcr/shoebox/IMG_0004.jpg
/fb/jtfdcr/shoebox/IMG_0006.jpg
/fb/jtfdcr/shoebox/IMG_0007.jpg
/fb/jtfdcr/shoebox/IMG_0013.jpg
/fb/jtfdcr/shoebox/IMG_0080.jpg
/fb/jtfdcr/shoebox/IMG_0081.jpg
/fb/jtfdcr/shoebox/IMG_0120.jpg
/fb/jtfdcr/shoebox/IMG_0210.jpg
/fb/jtfdcr/shoebox/IMG_0212.jpg
/fb/jtfdcr/shoebox/IMG_3968.jpg
/fb/jtfdcr/shoebox/IMG_3969.jpg
/fb/jtfdcr/shoebox/IMG_3970_20150716_0618.jpg
/fb/jtfdcr/shoebox/IMG_3971_20150716_0623.jpg
/fb/jtfdcr/shoebox/IMG_3972.jpg
/fb/jtfdcr/shoebox/IMG_3972_20150716_0625.jpg
/fb/jtfdcr/shoebox/IMG_3973.jpg
/fb/jtfdcr/shoebox/IMG_3973_20150716_0630.jpg
/fb/jtfdcr/shoebox/IMG_3974.jpg
/fb/jtfdcr/shoebox/IMG_3974_20150716_0631.jpg
/fb/jtfdcr/shoebox/IMG_3975.jpg
/fb/jtfdcr/shoebox/IMG_3975_20150716_0631.jpg
/fb/jtfdcr/shoebox/IMG_3976.jpg
/fb/jtfdcr/shoebox/IMG_3976_20150716_0634.jpg
/fb/jtfdcr/shoebox/IMG_3977_20150716_0636.jpg
/fb/jtfdcr/shoebox/IMG_3978.jpg
/fb/jtfdcr/shoebox/IMG_3978_20150716_0636.jpg
/fb/jtfdcr/shoebox/IMG_3979.jpg
/fb/jtfdcr/shoebox/IMG_3979_20150716_0636.jpg
/fb/jtfdcr/shoebox/IMG_3980_20150716_0637.jpg
/fb/jtfdcr/shoebox/IMG_3981.jpg
/fb/jtfdcr/shoebox/IMG_3981_20150716_0637.jpg
/fb/jtfdcr/shoebox/IMG_3982.jpg
/fb/jtfdcr/shoebox/IMG_3982_20150716_0637.jpg
/fb/jtfdcr/shoebox/IMG_3983.jpg
/fb/jtfdcr/shoebox/IMG_3983_20150716_0637.jpg
/fb/jtfdcr/shoebox/IMG_3984.jpg
/fb/jtfdcr/shoebox/IMG_3984_20150716_0637.jpg
/fb/jtfdcr/shoebox/IMG_3985_20150716_0637.jpg
/fb/jtfdcr/shoebox/IMG_3986_20150716_0637.jpg
/fb/jtfdcr/shoebox/IMG_3987_20150716_0638.jpg
/fb/jtfdcr/shoebox/IMG_3988.jpg
/fb/jtfdcr/shoebox/IMG_3988_20150716_0644.jpg
/fb/jtfdcr/shoebox/IMG_3989.jpg
/fb/jtfdcr/shoebox/IMG_3989_20150716_0708.jpg
/fb/jtfdcr/shoebox/IMG_3994.jpg
/fb/jtfdcr/shoebox/IMG_5605.jpg
/fb/jtfdcr/shoebox/IMG_5611.jpg
/fb/jtfdcr/shoebox/IMG_5611_jtfdc_original_notrespassing_willbeprosecuted.jpg
/fb/jtfdcr/shoebox/IMG_9900.jpg
/fb/jtfdcr/shoebox/IS137avbnxkbpu0000000000.jpg
/fb/jtfdcr/shoebox/IS13v82nj0zuax0000000000.jpg
/fb/jtfdcr/shoebox/ISxrzpc0f6eb4x0000000000.jpg
/fb/jtfdcr/shoebox/Img_0033.jpg
/fb/jtfdcr/shoebox/Img_0034.jpg
/fb/jtfdcr/shoebox/JKassil-R1-010-3A.jpg
/fb/jtfdcr/shoebox/JULIA3.jpg
/fb/jtfdcr/shoebox/Michael_clayton.jpg
/fb/jtfdcr/shoebox/OLDPHONE.jpg
/fb/jtfdcr/shoebox/PASA01_1.jpg
/fb/jtfdcr/shoebox/PASA01_2.jpg
/fb/jtfdcr/shoebox/PASA01_3.jpg
/fb/jtfdcr/shoebox/Scan 1.jpg
/fb/jtfdcr/shoebox/Scan 2.jpg
/fb/jtfdcr/shoebox/Scan 3.jpg
/fb/jtfdcr/shoebox/Scan 4.jpg
/fb/jtfdcr/shoebox/Scan 5.jpg
/fb/jtfdcr/shoebox/Scan 6.jpg
/fb/jtfdcr/shoebox/Scan 7.jpg
/fb/jtfdcr/shoebox/adam_carshow_2012.jpg
/fb/jtfdcr/shoebox/adma_flash_20130420_162341.jpg
/fb/jtfdcr/shoebox/adma_flash_20130420_164330.jpg
/fb/jtfdcr/shoebox/adma_flash_20130420_164331.jpg
/fb/jtfdcr/shoebox/adma_flash_20130420_164333.jpg
/fb/jtfdcr/shoebox/alan_cohen_police_20151221_010.jpg
/fb/jtfdcr/shoebox/alan_w_cohen.jpg
/fb/jtfdcr/shoebox/amsterdam_bridges.jpg
/fb/jtfdcr/shoebox/amsterdam_rooftops.jpg
/fb/jtfdcr/shoebox/argonne.jpg
/fb/jtfdcr/shoebox/arrows.jpg
/fb/jtfdcr/shoebox/austrian.jpg
/fb/jtfdcr/shoebox/avatar5688_8.jpg
/fb/jtfdcr/shoebox/bavaria_lake_mountain.jpg
/fb/jtfdcr/shoebox/bavarian.jpg
/fb/jtfdcr/shoebox/bethany_english__cle.jpg
/fb/jtfdcr/shoebox/bethany_english_lutheran_cle_001.jpg
/fb/jtfdcr/shoebox/bethany_english_lutheran_cle_002.jpg
/fb/jtfdcr/shoebox/bethany_english_lutheran_cle_003.jpg
/fb/jtfdcr/shoebox/bethany_english_lutheran_cle_004.jpg
/fb/jtfdcr/shoebox/bethany_english_lutheran_cle_005.jpg
/fb/jtfdcr/shoebox/bethany_english_lutheran_cle_006.jpg
/fb/jtfdcr/shoebox/bethany_english_lutheran_cle_01.jpg
/fb/jtfdcr/shoebox/bg_noise1.jpg
/fb/jtfdcr/shoebox/bg_noise2.jpg
/fb/jtfdcr/shoebox/bg_noise3.jpg
/fb/jtfdcr/shoebox/bg_swoorl1.jpg
/fb/jtfdcr/shoebox/bg_swoorl2.jpg
/fb/jtfdcr/shoebox/big_snow.jpg
/fb/jtfdcr/shoebox/bigturtle.jpg
/fb/jtfdcr/shoebox/bigturtle_save.jpg
/fb/jtfdcr/shoebox/blackforest.jpg
/fb/jtfdcr/shoebox/blackforest_stroll.jpg
/fb/jtfdcr/shoebox/blurred.jpg
/fb/jtfdcr/shoebox/brothers4.jpg
/fb/jtfdcr/shoebox/cage.jpg
/fb/jtfdcr/shoebox/call_summary_29jamestown.jpg
/fb/jtfdcr/shoebox/call_summary_jamestown_pg1.jpg
/fb/jtfdcr/shoebox/call_summary_jamestown_pg2.jpg
/fb/jtfdcr/shoebox/call_summary_jamestown_pg3.jpg
/fb/jtfdcr/shoebox/castle.jpg
/fb/jtfdcr/shoebox/cfaa.jpg
/fb/jtfdcr/shoebox/chapel.jpg
/fb/jtfdcr/shoebox/code cartooning — Converting HTML5 Canvas Animation to GIF Animation....jpg
/fb/jtfdcr/shoebox/cohen_15403521_15445941_comb_151203.jpg
/fb/jtfdcr/shoebox/cohen_15403521_15445941_cont_160121.jpg
/fb/jtfdcr/shoebox/cohen_15403521_continued_151203.jpg
/fb/jtfdcr/shoebox/cohen_affidavit_records_151030.jpg
/fb/jtfdcr/shoebox/columbia.jpg
/fb/jtfdcr/shoebox/columbia_pw_adminiwii_ko2us.jpg
/fb/jtfdcr/shoebox/columbia_templet.jpg
/fb/jtfdcr/shoebox/columbiastahrartwork.jpg
/fb/jtfdcr/shoebox/danish_woman.jpg
/fb/jtfdcr/shoebox/defford_boat.jpg
/fb/jtfdcr/shoebox/defford_snow_fairy.jpg
/fb/jtfdcr/shoebox/denmark_window_view.jpg
/fb/jtfdcr/shoebox/doghead_video_003.jpg
/fb/jtfdcr/shoebox/doghead_video_005.jpg
/fb/jtfdcr/shoebox/doghead_video_012.jpg
/fb/jtfdcr/shoebox/doghead_video_015.jpg
/fb/jtfdcr/shoebox/door_locks_vienna.jpg
/fb/jtfdcr/shoebox/drinks.jpg
/fb/jtfdcr/shoebox/drinks2.jpg
/fb/jtfdcr/shoebox/emh_20160911_056.jpg
/fb/jtfdcr/shoebox/emh_20160911_057.jpg
/fb/jtfdcr/shoebox/emh_20160911_058.jpg
/fb/jtfdcr/shoebox/emh_20160911_059.jpg
/fb/jtfdcr/shoebox/emh_20160911_060.jpg
/fb/jtfdcr/shoebox/emma_and_dexter.jpg
/fb/jtfdcr/shoebox/family_est_-_with_birds_ce50b229-338b-4198-8722-3b4efff3aacf_grande.jpg
/fb/jtfdcr/shoebox/farkas_neopolean.jpg
/fb/jtfdcr/shoebox/fb_1.jpg
/fb/jtfdcr/shoebox/fb_byrdpucker_pages_1.jpg
/fb/jtfdcr/shoebox/fb_focus_pages_1.jpg
/fb/jtfdcr/shoebox/fb_gifs_pages_1.jpg
/fb/jtfdcr/shoebox/fb_go_pages_1.jpg
/fb/jtfdcr/shoebox/fb_gofunwii_pages_1.jpg
/fb/jtfdcr/shoebox/fb_imgs_1.jpg
/fb/jtfdcr/shoebox/fb_iperms_pages_1.jpg
/fb/jtfdcr/shoebox/fb_jak1_pages_1.jpg
/fb/jtfdcr/shoebox/fb_jak2_pages_1.jpg
/fb/jtfdcr/shoebox/fb_jtfdcr_pages_1.jpg
/fb/jtfdcr/shoebox/fb_kitiworks_maga_pages_zn1_1.jpg
/fb/jtfdcr/shoebox/fb_kitiworks_pages_1.jpg
/fb/jtfdcr/shoebox/fb_kitiworks_pages_orig_1.jpg
/fb/jtfdcr/shoebox/fb_kitiworks_pages_orig_zn1_1.jpg
/fb/jtfdcr/shoebox/fb_konabus_pages_1.jpg
/fb/jtfdcr/shoebox/fb_konet_pages_1.jpg
/fb/jtfdcr/shoebox/fb_law_law_law501_pages_1.jpg
/fb/jtfdcr/shoebox/fb_law_pages_1.jpg
/fb/jtfdcr/shoebox/fb_med_pages_1.jpg
/fb/jtfdcr/shoebox/fb_pages_1.jpg
/fb/jtfdcr/shoebox/fb_pages_broke_1.jpg
/fb/jtfdcr/shoebox/fb_pastryroad_athensfood_imgs_1.jpg
/fb/jtfdcr/shoebox/fb_smileworthy_wimsy_pages_1.jpg
/fb/jtfdcr/shoebox/fb_soul.jpg
/fb/jtfdcr/shoebox/fb_templets_basic_pages_1.jpg
/fb/jtfdcr/shoebox/fb_templets_maga_pages_1.jpg
/fb/jtfdcr/shoebox/fb_us_kdar_hotmax_pages_1.jpg
/fb/jtfdcr/shoebox/flagged_coffins.jpg
/fb/jtfdcr/shoebox/floyd_trouten.jpg
/fb/jtfdcr/shoebox/gavel.jpg
/fb/jtfdcr/shoebox/gavel_band.jpg
/fb/jtfdcr/shoebox/gold_frame.jpg
/fb/jtfdcr/shoebox/hall_guards.jpg
/fb/jtfdcr/shoebox/hall_window_watcher.jpg
/fb/jtfdcr/shoebox/hall_woman_park_knitting.jpg
/fb/jtfdcr/shoebox/heidleberg_tibet_painting.jpg
/fb/jtfdcr/shoebox/heidleberg_tibet_panel.jpg
/fb/jtfdcr/shoebox/history2.jpg
/fb/jtfdcr/shoebox/hrc2011a.jpg
/fb/jtfdcr/shoebox/hrc2011b.jpg
/fb/jtfdcr/shoebox/http___ko2.jpg
/fb/jtfdcr/shoebox/img001.jpg
/fb/jtfdcr/shoebox/img002.jpg
/fb/jtfdcr/shoebox/img375_rotkappechen_und_der_wolf.jpg
/fb/jtfdcr/shoebox/img376_dornroschen.jpg
/fb/jtfdcr/shoebox/img377_frau_holle.jpg
/fb/jtfdcr/shoebox/img378_madchen_mit_den_schwefelholzern.jpg
/fb/jtfdcr/shoebox/img381_otannenbaum.jpg
/fb/jtfdcr/shoebox/img_8262_2.jpg
/fb/jtfdcr/shoebox/img_8283_2.jpg
/fb/jtfdcr/shoebox/incrpt_1530736_citincident_150526_pg1.jpg
/fb/jtfdcr/shoebox/incrpt_1530736_citincident_150526_pg2.jpg
/fb/jtfdcr/shoebox/incrpt_1530736_citincident_150526_pg3.jpg
/fb/jtfdcr/shoebox/incrpt_1530736_citincident_150526_pg4.jpg
/fb/jtfdcr/shoebox/incrpt_1530736_citincident_150526_pg5.jpg
/fb/jtfdcr/shoebox/incrpt_1530736_citincident_150526_pg6.jpg
/fb/jtfdcr/shoebox/incrpt_1530736_citincident_150526_pg7.jpg
/fb/jtfdcr/shoebox/incrpt_1530736_citincident_150526_pg8.jpg
/fb/jtfdcr/shoebox/incrpt_1540352_martin_150716_pg1.jpg
/fb/jtfdcr/shoebox/incrpt_1540352_martin_150716_pg2.jpg
/fb/jtfdcr/shoebox/incrpt_1540352_martin_150716_pg3.jpg
/fb/jtfdcr/shoebox/incrpt_1544594_gardner_150807_pg1.jpg
/fb/jtfdcr/shoebox/incrpt_1544594_gardner_150807_pg2.jpg
/fb/jtfdcr/shoebox/incrpt_1552246_gardner_150919_pg1.jpg
/fb/jtfdcr/shoebox/incrpt_1552246_gardner_150919_pg2.jpg
/fb/jtfdcr/shoebox/incrpt_1552246_supplement1_gardner_150919_pg1.jpg
/fb/jtfdcr/shoebox/incrpt_1552326_gardner_150919_pg1.jpg
/fb/jtfdcr/shoebox/incrpt_1552326_gardner_150919_pg2.jpg
/fb/jtfdcr/shoebox/incrpt_1553710_martin_150928_pg1.jpg
/fb/jtfdcr/shoebox/incrpt_1553710_martin_150928_pg2.jpg
/fb/jtfdcr/shoebox/incrpt_1558386_gardner_151023_pg1.jpg
/fb/jtfdcr/shoebox/incrpt_1558386_gardner_151023_pg2.jpg
/fb/jtfdcr/shoebox/incrpt_descriptions_pg1.jpg
/fb/jtfdcr/shoebox/incrpt_descriptions_pg2.jpg
/fb/jtfdcr/shoebox/incrpt_descriptions_pg3.jpg
/fb/jtfdcr/shoebox/incrpt_descriptions_pg4.jpg
/fb/jtfdcr/shoebox/index.jpg
/fb/jtfdcr/shoebox/jaam.jpg
/fb/jtfdcr/shoebox/jak2b.jpg
/fb/jtfdcr/shoebox/jak3.jpg
/fb/jtfdcr/shoebox/jam_200710_07.jpg
/fb/jtfdcr/shoebox/jam_200710_08.jpg
/fb/jtfdcr/shoebox/jam_200710_10.jpg
/fb/jtfdcr/shoebox/jam_200710_11.jpg
/fb/jtfdcr/shoebox/jam_200710_12.jpg
/fb/jtfdcr/shoebox/jam_200710_24.jpg
/fb/jtfdcr/shoebox/jam_200710_25.jpg
/fb/jtfdcr/shoebox/jam_200710_26.jpg
/fb/jtfdcr/shoebox/jam_200710_27.jpg
/fb/jtfdcr/shoebox/jam_200710_28.jpg
/fb/jtfdcr/shoebox/jam_200710_29.jpg
/fb/jtfdcr/shoebox/jam_200710_30.jpg
/fb/jtfdcr/shoebox/jam_200710_31.jpg
/fb/jtfdcr/shoebox/jam_200710_32.jpg
/fb/jtfdcr/shoebox/jam_200710_33.jpg
/fb/jtfdcr/shoebox/jam_200710_34.jpg
/fb/jtfdcr/shoebox/jam_200710_40.jpg
/fb/jtfdcr/shoebox/jenna_and_josh.jpg
/fb/jtfdcr/shoebox/jenna_and_mom.jpg
/fb/jtfdcr/shoebox/jessie.jpg
/fb/jtfdcr/shoebox/jing2.jpg
/fb/jtfdcr/shoebox/jk_goodhair2.jpg
/fb/jtfdcr/shoebox/jk_ts_20120411_001.jpg
/fb/jtfdcr/shoebox/jk_ts_20120411_002.jpg
/fb/jtfdcr/shoebox/jk_ts_20120411_003.jpg
/fb/jtfdcr/shoebox/jk_ts_20120411_004.jpg
/fb/jtfdcr/shoebox/jk_ts_20120411_005.jpg
/fb/jtfdcr/shoebox/jk_ts_20120411_006.jpg
/fb/jtfdcr/shoebox/jk_ts_20120411_007.jpg
/fb/jtfdcr/shoebox/jk_ts_20120411_008.jpg
/fb/jtfdcr/shoebox/jk_ts_20120411_009.jpg
/fb/jtfdcr/shoebox/jk_ts_20120411_010.jpg
/fb/jtfdcr/shoebox/jk_ts_20120411_011.jpg
/fb/jtfdcr/shoebox/jk_ts_20120411_012.jpg
/fb/jtfdcr/shoebox/jk_ts_20120411_013.jpg
/fb/jtfdcr/shoebox/jk_ts_20120411_014.jpg
/fb/jtfdcr/shoebox/jk_ts_20120411_015.jpg
/fb/jtfdcr/shoebox/jk_ts_20120411_016.jpg
/fb/jtfdcr/shoebox/jk_ts_20120411_017.jpg
/fb/jtfdcr/shoebox/jkresume_1990_01.jpg
/fb/jtfdcr/shoebox/jkresume_1990_02.jpg
/fb/jtfdcr/shoebox/jkresume_1990_skillset.jpg
/fb/jtfdcr/shoebox/jkresume_2000_01.jpg
/fb/jtfdcr/shoebox/jkresume_2000_02.jpg
/fb/jtfdcr/shoebox/jkresume_2000_03.jpg
/fb/jtfdcr/shoebox/jkresume_2000_04.jpg
/fb/jtfdcr/shoebox/jkresume_2000_05.jpg
/fb/jtfdcr/shoebox/jkresume_2000_06.jpg
/fb/jtfdcr/shoebox/jkresume_2000_07.jpg
/fb/jtfdcr/shoebox/jkresume_2000_08.jpg
/fb/jtfdcr/shoebox/jkresume_2000_detail_buie.jpg
/fb/jtfdcr/shoebox/jkresume_2000_detail_bw.jpg
/fb/jtfdcr/shoebox/jkresume_2000_detail_konet.jpg
/fb/jtfdcr/shoebox/jkresume_2000_detail_preview.jpg
/fb/jtfdcr/shoebox/jkresume_2000_detail_sasc.jpg
/fb/jtfdcr/shoebox/jkwii4trusstee_tyipty.jpg
/fb/jtfdcr/shoebox/jkwii4trustee_byrdpucker_dog_n_pony_club.jpg
/fb/jtfdcr/shoebox/jkwii4trustee_dispute.jpg
/fb/jtfdcr/shoebox/jkwii4trustee_frontpage.jpg
/fb/jtfdcr/shoebox/jkwii4trustee_gallery.jpg
/fb/jtfdcr/shoebox/jkwii4trustee_greatmeet.jpg
/fb/jtfdcr/shoebox/jkwii4trustee_hero.jpg
/fb/jtfdcr/shoebox/jkwii4trustee_jkwii4trustee.jpg
/fb/jtfdcr/shoebox/jkwii4trustee_jskwiis.jpg
/fb/jtfdcr/shoebox/jkwii4trustee_meet.jpg
/fb/jtfdcr/shoebox/jkwii4trustee_portrait.jpg
/fb/jtfdcr/shoebox/jkwii4trustee_rightman_rightplace.jpg
/fb/jtfdcr/shoebox/jkwii4trustee_sheet_001.jpg
/fb/jtfdcr/shoebox/jkwii4trustee_sheet_002.jpg
/fb/jtfdcr/shoebox/jkwii4trustee_tippicanoe.jpg
/fb/jtfdcr/shoebox/jkwii4trustee_tyler2.jpg
/fb/jtfdcr/shoebox/jsk_jak1_bivins_visit.jpg
/fb/jtfdcr/shoebox/jsk_winecellar_Image395.jpg
/fb/jtfdcr/shoebox/jsk_winecellar_Image402.jpg
/fb/jtfdcr/shoebox/jskfam_shimfam_priest.jpg
/fb/jtfdcr/shoebox/jt38f_seagrists.jpg
/fb/jtfdcr/shoebox/jtf.jpg
/fb/jtfdcr/shoebox/jtf07.jpg
/fb/jtfdcr/shoebox/jtf08.jpg
/fb/jtfdcr/shoebox/jtf09.jpg
/fb/jtfdcr/shoebox/jtf10.jpg
/fb/jtfdcr/shoebox/jtf11.jpg
/fb/jtfdcr/shoebox/jtf14.jpg
/fb/jtfdcr/shoebox/jtf16.jpg
/fb/jtfdcr/shoebox/jtf17510.jpg
/fb/jtfdcr/shoebox/jtf17570.jpg
/fb/jtfdcr/shoebox/jtf21.jpg
/fb/jtfdcr/shoebox/jtf22.jpg
/fb/jtfdcr/shoebox/jtf23.jpg
/fb/jtfdcr/shoebox/jtf28.jpg
/fb/jtfdcr/shoebox/jtf28_defford_francis_20020527_140901.jpg
/fb/jtfdcr/shoebox/jtf28_defford_john_20020527_140901.jpg
/fb/jtfdcr/shoebox/jtf28_deffords_20020527_1324015.jpg
/fb/jtfdcr/shoebox/jtf28_desc_zillow.jpg
/fb/jtfdcr/shoebox/jtf28_desc_zillow2.jpg
/fb/jtfdcr/shoebox/jtf28_tractor_ongrass_parking.jpg
/fb/jtfdcr/shoebox/jtf28_zillow.jpg
/fb/jtfdcr/shoebox/jtf29.jpg
/fb/jtfdcr/shoebox/jtf29_door.jpg
/fb/jtfdcr/shoebox/jtf29_eagle_north.jpg
/fb/jtfdcr/shoebox/jtf29_eagle_south.jpg
/fb/jtfdcr/shoebox/jtf29_fencelet1.jpg
/fb/jtfdcr/shoebox/jtf29_fencelet2.jpg
/fb/jtfdcr/shoebox/jtf29_fencelet3.jpg
/fb/jtfdcr/shoebox/jtf29_fencelet3r.jpg
/fb/jtfdcr/shoebox/jtf29_fencelets.jpg
/fb/jtfdcr/shoebox/jtf29_fenclet2.jpg
/fb/jtfdcr/shoebox/jtf29_fiona_inyard_damage.jpg
/fb/jtfdcr/shoebox/jtf29_fiona_inyard_damage2.jpg
/fb/jtfdcr/shoebox/jtf29_frisbee.jpg
/fb/jtfdcr/shoebox/jtf29_highschool_frisbee.jpg
/fb/jtfdcr/shoebox/jtf29_jak1_carter.jpg
/fb/jtfdcr/shoebox/jtf29_kali.jpg
/fb/jtfdcr/shoebox/jtf29_logging01.jpg
/fb/jtfdcr/shoebox/jtf29_logging02.jpg
/fb/jtfdcr/shoebox/jtf29_logging03.jpg
/fb/jtfdcr/shoebox/jtf29_logging05.jpg
/fb/jtfdcr/shoebox/jtf29_mailbox.jpg
/fb/jtfdcr/shoebox/jtf29_saic_check.jpg
/fb/jtfdcr/shoebox/jtf29_sawhorse_stop.jpg
/fb/jtfdcr/shoebox/jtf29_sawhorsea.jpg
/fb/jtfdcr/shoebox/jtf29_soccerball1.jpg
/fb/jtfdcr/shoebox/jtf29_soccerball3.jpg
/fb/jtfdcr/shoebox/jtf29_soccerball4.jpg
/fb/jtfdcr/shoebox/jtf29_soccerball5.jpg
/fb/jtfdcr/shoebox/jtf29_soccerball_big.jpg
/fb/jtfdcr/shoebox/jtf29_umbrella.jpg
/fb/jtfdcr/shoebox/jtf29_valintines_invoice_day_find.jpg
/fb/jtfdcr/shoebox/jtf29_van.jpg
/fb/jtfdcr/shoebox/jtf29_wagon.jpg
/fb/jtfdcr/shoebox/jtf29_wagon1.jpg
/fb/jtfdcr/shoebox/jtf29_wagon_jtf30_logging.jpg
/fb/jtfdcr/shoebox/jtf29_webcam1.jpg
/fb/jtfdcr/shoebox/jtf29_webcam1b.jpg
/fb/jtfdcr/shoebox/jtf29_webcam1c.jpg
/fb/jtfdcr/shoebox/jtf29_webcam2.jpg
/fb/jtfdcr/shoebox/jtf30..jpg
/fb/jtfdcr/shoebox/jtf30_cliffshed_sinkhole_drain.jpg
/fb/jtfdcr/shoebox/jtf30_jackie_martin.jpg
/fb/jtfdcr/shoebox/jtf30_jackie_martin2.jpg
/fb/jtfdcr/shoebox/jtf30_jackie_martin3.jpg
/fb/jtfdcr/shoebox/jtf30_jackie_martin4.jpg
/fb/jtfdcr/shoebox/jtf30_sinkhole_draine.jpg
/fb/jtfdcr/shoebox/jtf30_zillow_bar.jpg
/fb/jtfdcr/shoebox/jtf30_zillow_desc.jpg
/fb/jtfdcr/shoebox/jtf30_zillow_desc1.jpg
/fb/jtfdcr/shoebox/jtf30_zillow_desc2.jpg
/fb/jtfdcr/shoebox/jtf30_zillow_desc4.jpg
/fb/jtfdcr/shoebox/jtf30_zillow_desc_sunroom.jpg
/fb/jtfdcr/shoebox/jtf30_zillow_kitchen.jpg
/fb/jtfdcr/shoebox/jtf31-32.jpg
/fb/jtfdcr/shoebox/jtf31.jpg
/fb/jtfdcr/shoebox/jtf31_fiona_autonoumus_patrol.jpg
/fb/jtfdcr/shoebox/jtf31_fiona_lease_waiver.jpg
/fb/jtfdcr/shoebox/jtf31_fiona_runs_201506_001.jpg
/fb/jtfdcr/shoebox/jtf31_fiona_runs_201506_002.jpg
/fb/jtfdcr/shoebox/jtf31_snap_20170123_187589_noparking_party_sign.jpg
/fb/jtfdcr/shoebox/jtf31_snap_20170123_187593_party_whitevan_stalker.jpg
/fb/jtfdcr/shoebox/jtf31_snap_20170123_187594+party_whitevan_stalker_9uv667_plates.jpg
/fb/jtfdcr/shoebox/jtf31_snap_20170123_187594+party_whitevan_stalker_middlefingure.jpg
/fb/jtfdcr/shoebox/jtf31_snap_20170123_187594+party_whitevan_stalker_profile2.jpg
/fb/jtfdcr/shoebox/jtf31_snap_20170123_187600_clownporch_partygame_harrassment.jpg
/fb/jtfdcr/shoebox/jtf31_snap_20170123_187600_clownporch_partygame_harrassment2.jpg
/fb/jtfdcr/shoebox/jtf31_takings.jpg
/fb/jtfdcr/shoebox/jtf32.jpg
/fb/jtfdcr/shoebox/jtf32_doberwatchers_2of4.jpg
/fb/jtfdcr/shoebox/jtf32_donovan_doberhome.jpg
/fb/jtfdcr/shoebox/jtf32_pre_jtf3120021201_132901_1292986.jpg
/fb/jtfdcr/shoebox/jtf32_snap_20170123_187587.jpg
/fb/jtfdcr/shoebox/jtf32_snap_20170123_187588.jpg
/fb/jtfdcr/shoebox/jtf35.jpg
/fb/jtfdcr/shoebox/jtf36.jpg
/fb/jtfdcr/shoebox/jtf37.jpg
/fb/jtfdcr/shoebox/jtf38.jpg
/fb/jtfdcr/shoebox/jtf38_elvis2_autonomous_patrol.jpg
/fb/jtfdcr/shoebox/jtf39.jpg
/fb/jtfdcr/shoebox/jtf39_baily_autonomous_patrol.jpg
/fb/jtfdcr/shoebox/jtf44.jpg
/fb/jtfdcr/shoebox/jtf44_front.jpg
/fb/jtfdcr/shoebox/jtf_29-30.jpg
/fb/jtfdcr/shoebox/jtf_34509.jpg
/fb/jtfdcr/shoebox/jtf_35155.jpg
/fb/jtfdcr/shoebox/jtf_601jtfdc_courtcircle.jpg
/fb/jtfdcr/shoebox/jtf_byrd.jpg
/fb/jtfdcr/shoebox/jtf_byrd_coral.jpg
/fb/jtfdcr/shoebox/jtf_byrd_north.jpg
/fb/jtfdcr/shoebox/jtf_corner_ne.jpg
/fb/jtfdcr/shoebox/jtf_mental_1_001.jpg
/fb/jtfdcr/shoebox/jtf_mental_1_002.jpg
/fb/jtfdcr/shoebox/jtf_mental_1_003.jpg
/fb/jtfdcr/shoebox/jtf_n.jpg
/fb/jtfdcr/shoebox/jtf_ne.jpg
/fb/jtfdcr/shoebox/jtf_ne_zillow.jpg
/fb/jtfdcr/shoebox/jtf_north_zillow.jpg
/fb/jtfdcr/shoebox/jtf_nw_31-34.jpg
/fb/jtfdcr/shoebox/jtf_right.jpg
/fb/jtfdcr/shoebox/jtf_topus_001.jpg
/fb/jtfdcr/shoebox/jtf_topus_002.jpg
/fb/jtfdcr/shoebox/jtfarms_contacts_01.jpg
/fb/jtfdcr/shoebox/jtfarms_contacts_02.jpg
/fb/jtfdcr/shoebox/jtfarms_contacts_03.jpg
/fb/jtfdcr/shoebox/jtfd_north.jpg
/fb/jtfdcr/shoebox/jtfdc-north.jpg
/fb/jtfdcr/shoebox/jtfdc-north_medow.jpg
/fb/jtfdcr/shoebox/jtfdc.jpg
/fb/jtfdcr/shoebox/jtfdc28_gazebo_lights_nocam.jpg
/fb/jtfdcr/shoebox/jtfdc29_backyard_logging.jpg
/fb/jtfdcr/shoebox/jtfdc29_eagle_north.jpg
/fb/jtfdcr/shoebox/jtfdc29_fenclet1_auctiontape.jpg
/fb/jtfdcr/shoebox/jtfdc29_fenclet2_auctiontape.jpg
/fb/jtfdcr/shoebox/jtfdc29_fenclets12_seazed.jpg
/fb/jtfdcr/shoebox/jtfdc29_log5463.jpg
/fb/jtfdcr/shoebox/jtfdc29_log5474.jpg
/fb/jtfdcr/shoebox/jtfdc_1of100_manufactured_police_calls.jpg
/fb/jtfdcr/shoebox/jtfdc_2001.jpg
/fb/jtfdcr/shoebox/jtfdc_29-30.jpg
/fb/jtfdcr/shoebox/jtfdc_29-30_topos.jpg
/fb/jtfdcr/shoebox/jtfdc_300.jpg
/fb/jtfdcr/shoebox/jtfdc_barn.jpg
/fb/jtfdcr/shoebox/jtfdc_barn_jtfdc29.jpg
/fb/jtfdcr/shoebox/jtfdc_before_jtf31.jpg
/fb/jtfdcr/shoebox/jtfdc_corner.jpg
/fb/jtfdcr/shoebox/jtfdc_corner_wide.jpg
/fb/jtfdcr/shoebox/jtfdc_courtcircle.jpg
/fb/jtfdcr/shoebox/jtfdc_eagles_sawhorse_fencelets.jpg
/fb/jtfdcr/shoebox/jtfdc_easment.jpg
/fb/jtfdcr/shoebox/jtfdc_gazebo_e.jpg
/fb/jtfdcr/shoebox/jtfdc_gazebo_n_jtf30.jpg
/fb/jtfdcr/shoebox/jtfdc_gazebo_ne.jpg
/fb/jtfdcr/shoebox/jtfdc_gazebo_ne_jtf31.jpg
/fb/jtfdcr/shoebox/jtfdc_gazebo_nw_jtf30.jpg
/fb/jtfdcr/shoebox/jtfdc_gazebo_se_jtf28.jpg
/fb/jtfdcr/shoebox/jtfdc_gazebo_sse_jtf28.jpg
/fb/jtfdcr/shoebox/jtfdc_gazebo_sw.jpg
/fb/jtfdcr/shoebox/jtfdc_greater.jpg
/fb/jtfdcr/shoebox/jtfdc_imgmap.jpg
/fb/jtfdcr/shoebox/jtfdc_jtf28_property_stake.jpg
/fb/jtfdcr/shoebox/jtfdc_jtf30-28_scheming.jpg
/fb/jtfdcr/shoebox/jtfdc_jtf30_heirloom_mowerer_midnight_stalkaroundIMG_9408.jpg
/fb/jtfdcr/shoebox/jtfdc_jtf30_shed_sinkhole_drain.jpg
/fb/jtfdcr/shoebox/jtfdc_jtf31_easment_blockade.jpg
/fb/jtfdcr/shoebox/jtfdc_jtf31_fiona_fleefall.jpg
/fb/jtfdcr/shoebox/jtfdc_jtf31_party_entertainment_jkwii_ngcupIMG_9409.jpg
/fb/jtfdcr/shoebox/jtfdc_kidb_back.jpg
/fb/jtfdcr/shoebox/jtfdc_kidb_front.jpg
/fb/jtfdcr/shoebox/jtfdc_kidc_back.jpg
/fb/jtfdcr/shoebox/jtfdc_kidc_front.jpg
/fb/jtfdcr/shoebox/jtfdc_kidp_back.jpg
/fb/jtfdcr/shoebox/jtfdc_kidp_front.jpg
/fb/jtfdcr/shoebox/jtfdc_kids3_back.jpg
/fb/jtfdcr/shoebox/jtfdc_kids3_front.jpg
/fb/jtfdcr/shoebox/jtfdc_kids_IMG_8424.jpg
/fb/jtfdcr/shoebox/jtfdc_kouIMG_8561.jpg
/fb/jtfdcr/shoebox/jtfdc_mailman_refused_deliver.jpg
/fb/jtfdcr/shoebox/jtfdc_meados_souixpassage.jpg
/fb/jtfdcr/shoebox/jtfdc_meadow.jpg
/fb/jtfdcr/shoebox/jtfdc_parcels copy.jpg
/fb/jtfdcr/shoebox/jtfdc_parcels.jpg
/fb/jtfdcr/shoebox/jtfdc_police.jpg
/fb/jtfdcr/shoebox/jtfdc_police_straf_20170123_16224.jpg
/fb/jtfdcr/shoebox/jtfdc_pre_jtf31.jpg
/fb/jtfdcr/shoebox/jtfdc_private_court_since_1979_viewin.jpg
/fb/jtfdcr/shoebox/jtfdc_sawhorse.jpg
/fb/jtfdcr/shoebox/jtfdc_sawhorse2.jpg
/fb/jtfdcr/shoebox/jtfdc_sawhorse_a.jpg
/fb/jtfdcr/shoebox/jtfdc_sawhorse_exit.jpg
/fb/jtfdcr/shoebox/jtfdc_sawhorse_jak3.jpg
/fb/jtfdcr/shoebox/jtfdc_sawhorse_stop_out.jpg
/fb/jtfdcr/shoebox/jtfdc_sawhorse_stopsign.jpg
/fb/jtfdcr/shoebox/jtfdc_sawhorse_winter.jpg
/fb/jtfdcr/shoebox/jtfdc_shared_barn.jpg
/fb/jtfdcr/shoebox/jtfdc_souixpassage.jpg
/fb/jtfdcr/shoebox/jtfdc_south.jpg
/fb/jtfdcr/shoebox/jtfdc_sw_jtf21.jpg
/fb/jtfdcr/shoebox/jtfdc_theater.jpg
/fb/jtfdcr/shoebox/jtfdc_townhall_noticeIMG_8560.jpg
/fb/jtfdcr/shoebox/jtfdc_updown_passage.jpg
/fb/jtfdcr/shoebox/jtfdc_updown_passage_jtf31.jpg
/fb/jtfdcr/shoebox/jtfdcr2.jpg
/fb/jtfdcr/shoebox/jtfdcr_page_001.jpg
/fb/jtfdcr/shoebox/jtfdcr_page_002.jpg
/fb/jtfdcr/shoebox/jtfdcr_page_003.jpg
/fb/jtfdcr/shoebox/jtfdcr_page_003b.jpg
/fb/jtfdcr/shoebox/jtfdcr_page_004.jpg
/fb/jtfdcr/shoebox/jtfdcr_page_005.jpg
/fb/jtfdcr/shoebox/jtfdcr_page_006.jpg
/fb/jtfdcr/shoebox/jtfdcr_page_007.jpg
/fb/jtfdcr/shoebox/jtfdcr_page_008.jpg
/fb/jtfdcr/shoebox/jtfdcr_page_008b.jpg
/fb/jtfdcr/shoebox/jtfdcr_page_009.jpg
/fb/jtfdcr/shoebox/jtfdcr_page_010.jpg
/fb/jtfdcr/shoebox/jtfdcr_page_011.jpg
/fb/jtfdcr/shoebox/jtfdcr_page_011b.jpg
/fb/jtfdcr/shoebox/jtfdcr_page_012.jpg
/fb/jtfdcr/shoebox/jtfdcr_page_013.jpg
/fb/jtfdcr/shoebox/jtfdcsouth.jpg
/fb/jtfdcr/shoebox/jtfinc.jpg
/fb/jtfdcr/shoebox/jtfinc_potholes.jpg
/fb/jtfdcr/shoebox/jtfinc_vs_jtf29jk_ 2.jpg
/fb/jtfdcr/shoebox/jtfinc_vs_jtf29jk_ 3.jpg
/fb/jtfdcr/shoebox/jtfinc_vs_jtf29jk_ 4.jpg
/fb/jtfdcr/shoebox/jtfinc_vs_jtf29jk_ 5.jpg
/fb/jtfdcr/shoebox/jtfinc_vs_jtf29jk_ 6.jpg
/fb/jtfdcr/shoebox/jtfinc_vs_jtf29jk_.jpg
/fb/jtfdcr/shoebox/julius_mocsari_001.jpg
/fb/jtfdcr/shoebox/ka_cornelia_harry_63.jpg
/fb/jtfdcr/shoebox/ka_jtfd29_title_01.jpg
/fb/jtfdcr/shoebox/ka_jtfd29_title_02.jpg
/fb/jtfdcr/shoebox/ka_jtfd29_title_03.jpg
/fb/jtfdcr/shoebox/ka_jtfd29_title_04.jpg
/fb/jtfdcr/shoebox/ka_jtfd29_title_05.jpg
/fb/jtfdcr/shoebox/ka_jtfd29_title_06.jpg
/fb/jtfdcr/shoebox/ka_jtfd29_title_07.jpg
/fb/jtfdcr/shoebox/ka_jtfd29_title_08.jpg
/fb/jtfdcr/shoebox/ka_jtfd29_title_09.jpg
/fb/jtfdcr/shoebox/ka_jtfd29_title_10.jpg
/fb/jtfdcr/shoebox/ka_jtfd29_title_11.jpg
/fb/jtfdcr/shoebox/karl_smekal_.jpg
/fb/jtfdcr/shoebox/karl_smekal_001.jpg
/fb/jtfdcr/shoebox/karl_smekal_002.jpg
/fb/jtfdcr/shoebox/karl_smekal_003.jpg
/fb/jtfdcr/shoebox/karl_smekal_004.jpg
/fb/jtfdcr/shoebox/karl_smekal_005.jpg
/fb/jtfdcr/shoebox/karl_smekal_006.jpg
/fb/jtfdcr/shoebox/karl_smekal_007.jpg
/fb/jtfdcr/shoebox/karl_smekal_008.jpg
/fb/jtfdcr/shoebox/karl_smekal_009.jpg
/fb/jtfdcr/shoebox/karl_smekal_010.jpg
/fb/jtfdcr/shoebox/karl_smekal_011.jpg
/fb/jtfdcr/shoebox/karl_smekal_012.jpg
/fb/jtfdcr/shoebox/karl_smekal_013.jpg
/fb/jtfdcr/shoebox/karl_smekal_014.jpg
/fb/jtfdcr/shoebox/karl_smekal_015.jpg
/fb/jtfdcr/shoebox/karl_smekal_016.jpg
/fb/jtfdcr/shoebox/karl_smekal_017.jpg
/fb/jtfdcr/shoebox/karl_smekal_018.jpg
/fb/jtfdcr/shoebox/karl_smekal_019.jpg
/fb/jtfdcr/shoebox/karl_smekal_020.jpg
/fb/jtfdcr/shoebox/karl_smekal_021.jpg
/fb/jtfdcr/shoebox/karl_smekal_022.jpg
/fb/jtfdcr/shoebox/karl_smekal_023.jpg
/fb/jtfdcr/shoebox/karl_smekal_024.jpg
/fb/jtfdcr/shoebox/karl_smekal_025.jpg
/fb/jtfdcr/shoebox/karl_smekal_026.jpg
/fb/jtfdcr/shoebox/karl_smekal_027.jpg
/fb/jtfdcr/shoebox/karl_smekal_028.jpg
/fb/jtfdcr/shoebox/karl_smekal_029.jpg
/fb/jtfdcr/shoebox/karl_smekal_030.jpg
/fb/jtfdcr/shoebox/karl_smekal_031.jpg
/fb/jtfdcr/shoebox/karl_smekal_032.jpg
/fb/jtfdcr/shoebox/karl_smekal_033.jpg
/fb/jtfdcr/shoebox/karl_smekal_034.jpg
/fb/jtfdcr/shoebox/karl_smekal_035.jpg
/fb/jtfdcr/shoebox/karl_smekal_036.jpg
/fb/jtfdcr/shoebox/karl_smekal_037.jpg
/fb/jtfdcr/shoebox/karl_smekal_038.jpg
/fb/jtfdcr/shoebox/karl_smekal_039.jpg
/fb/jtfdcr/shoebox/karl_smekal_040.jpg
/fb/jtfdcr/shoebox/karl_smekal_041.jpg
/fb/jtfdcr/shoebox/karl_smekal_042.jpg
/fb/jtfdcr/shoebox/karl_smekal_043.jpg
/fb/jtfdcr/shoebox/karl_smekal_044.jpg
/fb/jtfdcr/shoebox/karl_smekal_045.jpg
/fb/jtfdcr/shoebox/karl_smekal_046.jpg
/fb/jtfdcr/shoebox/karl_smekal_047.jpg
/fb/jtfdcr/shoebox/karl_smekal_048.jpg
/fb/jtfdcr/shoebox/karl_smekal_049.jpg
/fb/jtfdcr/shoebox/karl_smekal_050.jpg
/fb/jtfdcr/shoebox/karl_smekal_051.jpg
/fb/jtfdcr/shoebox/karl_smekal_052.jpg
/fb/jtfdcr/shoebox/karl_smekal_053.jpg
/fb/jtfdcr/shoebox/karl_smekal_054.jpg
/fb/jtfdcr/shoebox/karl_smekal_055.jpg
/fb/jtfdcr/shoebox/karl_smekal_056.jpg
/fb/jtfdcr/shoebox/karl_smekal_057.jpg
/fb/jtfdcr/shoebox/karl_smekal_058.jpg
/fb/jtfdcr/shoebox/karl_smekal_059.jpg
/fb/jtfdcr/shoebox/karl_smekal_060.jpg
/fb/jtfdcr/shoebox/karl_smekal_061.jpg
/fb/jtfdcr/shoebox/karl_smekal_062.jpg
/fb/jtfdcr/shoebox/karl_smekal_063.jpg
/fb/jtfdcr/shoebox/karl_smekal_064.jpg
/fb/jtfdcr/shoebox/karl_smekal_065.jpg
/fb/jtfdcr/shoebox/karl_smekal_066.jpg
/fb/jtfdcr/shoebox/karl_smekal_067.jpg
/fb/jtfdcr/shoebox/karl_smekal_068.jpg
/fb/jtfdcr/shoebox/karl_smekal_069.jpg
/fb/jtfdcr/shoebox/karl_smekal_070.jpg
/fb/jtfdcr/shoebox/karl_smekal_071.jpg
/fb/jtfdcr/shoebox/karl_smekal_072.jpg
/fb/jtfdcr/shoebox/karl_smekal_073.jpg
/fb/jtfdcr/shoebox/karl_smekal_074.jpg
/fb/jtfdcr/shoebox/karl_smekal_075.jpg
/fb/jtfdcr/shoebox/karl_smekal_076.jpg
/fb/jtfdcr/shoebox/karl_smekal_077.jpg
/fb/jtfdcr/shoebox/karl_smekal_078.jpg
/fb/jtfdcr/shoebox/karl_smekal_079.jpg
/fb/jtfdcr/shoebox/karl_smekal_080.jpg
/fb/jtfdcr/shoebox/karl_smekal_081.jpg
/fb/jtfdcr/shoebox/karl_smekal_082.jpg
/fb/jtfdcr/shoebox/karl_smekal_083.jpg
/fb/jtfdcr/shoebox/karl_smekal_084.jpg
/fb/jtfdcr/shoebox/karl_smekal_085.jpg
/fb/jtfdcr/shoebox/karl_smekal_086.jpg
/fb/jtfdcr/shoebox/karl_smekal_087.jpg
/fb/jtfdcr/shoebox/karl_smekal_088.jpg
/fb/jtfdcr/shoebox/karl_smekal_089.jpg
/fb/jtfdcr/shoebox/karl_smekal_090.jpg
/fb/jtfdcr/shoebox/karl_smekal_091.jpg
/fb/jtfdcr/shoebox/karl_smekal_092.jpg
/fb/jtfdcr/shoebox/karl_smekal_093.jpg
/fb/jtfdcr/shoebox/karl_smekal_094.jpg
/fb/jtfdcr/shoebox/karl_smekal_095.jpg
/fb/jtfdcr/shoebox/karl_smekal_096.jpg
/fb/jtfdcr/shoebox/karl_smekal_097.jpg
/fb/jtfdcr/shoebox/karl_smekal_098.jpg
/fb/jtfdcr/shoebox/karl_smekal_099.jpg
/fb/jtfdcr/shoebox/karl_smekal_100.jpg
/fb/jtfdcr/shoebox/karl_smekal_101.jpg
/fb/jtfdcr/shoebox/karl_smekal_102.jpg
/fb/jtfdcr/shoebox/karl_smekal_103.jpg
/fb/jtfdcr/shoebox/karl_smekal_104.jpg
/fb/jtfdcr/shoebox/karl_smekal_105.jpg
/fb/jtfdcr/shoebox/karl_smekal_106.jpg
/fb/jtfdcr/shoebox/karl_smekal_107.jpg
/fb/jtfdcr/shoebox/karl_smekal_108.jpg
/fb/jtfdcr/shoebox/karl_smekal_109.jpg
/fb/jtfdcr/shoebox/karl_smekal_110.jpg
/fb/jtfdcr/shoebox/karl_smekal_111.jpg
/fb/jtfdcr/shoebox/karl_smekal_112.jpg
/fb/jtfdcr/shoebox/karl_smekal_113.jpg
/fb/jtfdcr/shoebox/karl_smekal_114.jpg
/fb/jtfdcr/shoebox/karl_smekal_115.jpg
/fb/jtfdcr/shoebox/karl_smekal_116.jpg
/fb/jtfdcr/shoebox/karl_smekal_117.jpg
/fb/jtfdcr/shoebox/karl_smekal_118.jpg
/fb/jtfdcr/shoebox/karl_smekal_119.jpg
/fb/jtfdcr/shoebox/karl_smekal_120.jpg
/fb/jtfdcr/shoebox/karl_smekal_121.jpg
/fb/jtfdcr/shoebox/karl_smekal_122.jpg
/fb/jtfdcr/shoebox/karl_smekal_123.jpg
/fb/jtfdcr/shoebox/karl_smekal_124.jpg
/fb/jtfdcr/shoebox/karl_smekal_125.jpg
/fb/jtfdcr/shoebox/karl_smekal_126.jpg
/fb/jtfdcr/shoebox/karl_smekal_127.jpg
/fb/jtfdcr/shoebox/karl_smekal_128.jpg
/fb/jtfdcr/shoebox/karl_smekal_129.jpg
/fb/jtfdcr/shoebox/karl_smekal_130.jpg
/fb/jtfdcr/shoebox/karl_smekal_131.jpg
/fb/jtfdcr/shoebox/karl_smekal_132.jpg
/fb/jtfdcr/shoebox/karl_smekal_133.jpg
/fb/jtfdcr/shoebox/karl_smekal_134.jpg
/fb/jtfdcr/shoebox/karl_smekal_135.jpg
/fb/jtfdcr/shoebox/karl_smekal_136.jpg
/fb/jtfdcr/shoebox/karl_smekal_137.jpg
/fb/jtfdcr/shoebox/karl_smekal_138.jpg
/fb/jtfdcr/shoebox/karl_smekal_139.jpg
/fb/jtfdcr/shoebox/karl_smekal_140.jpg
/fb/jtfdcr/shoebox/karl_smekal_141.jpg
/fb/jtfdcr/shoebox/karl_smekal_142.jpg
/fb/jtfdcr/shoebox/karl_smekal_143.jpg
/fb/jtfdcr/shoebox/karl_smekal_144.jpg
/fb/jtfdcr/shoebox/karl_smekal_145.jpg
/fb/jtfdcr/shoebox/karl_smekal_146.jpg
/fb/jtfdcr/shoebox/karl_smekal_147.jpg
/fb/jtfdcr/shoebox/karl_smekal_148.jpg
/fb/jtfdcr/shoebox/karl_smekal_149.jpg
/fb/jtfdcr/shoebox/karl_smekal_150.jpg
/fb/jtfdcr/shoebox/ko.jpg
/fb/jtfdcr/shoebox/ko0_us_down.jpg
/fb/jtfdcr/shoebox/ko_mo_labor_201302a.jpg
/fb/jtfdcr/shoebox/ko_mo_labor_201302b.jpg
/fb/jtfdcr/shoebox/ko_saic_check_20130215.jpg
/fb/jtfdcr/shoebox/konet_hack_screen.jpg
/fb/jtfdcr/shoebox/konet_inv_saic2.jpg
/fb/jtfdcr/shoebox/konet_invoice_fy-pp_yyyymmdd-yyyymmdd-1.jpg
/fb/jtfdcr/shoebox/konet_invoice_fy-pp_yyyymmdd-yyyymmdd.jpg
/fb/jtfdcr/shoebox/konet_invoice_saic.jpg
/fb/jtfdcr/shoebox/ky_pineville_forestry_camp.jpg
/fb/jtfdcr/shoebox/ky_pineville_forestry_camp_desc.jpg
/fb/jtfdcr/shoebox/ladyj_alabaster.jpg
/fb/jtfdcr/shoebox/ladyj_amazon.jpg
/fb/jtfdcr/shoebox/ladyj_brass.jpg
/fb/jtfdcr/shoebox/ladyj_bronze.jpg
/fb/jtfdcr/shoebox/ladyj_clingyclothes.jpg
/fb/jtfdcr/shoebox/ladyj_glide.jpg
/fb/jtfdcr/shoebox/ladyj_horns.jpg
/fb/jtfdcr/shoebox/ladyj_onhi.jpg
/fb/jtfdcr/shoebox/ladyj_silouette.jpg
/fb/jtfdcr/shoebox/ladyj_statue.jpg
/fb/jtfdcr/shoebox/ladyj_sword.jpg
/fb/jtfdcr/shoebox/ladyj_zen.jpg
/fb/jtfdcr/shoebox/loader.jpg
/fb/jtfdcr/shoebox/logo_jtf.jpg
/fb/jtfdcr/shoebox/marlins_jacket.jpg
/fb/jtfdcr/shoebox/mocsari_julius_memorial.jpg
/fb/jtfdcr/shoebox/mozart_aviary.jpg
/fb/jtfdcr/shoebox/mrs_ford_psychicreader.jpg
/fb/jtfdcr/shoebox/mrs_ford_psychicreader2.jpg
/fb/jtfdcr/shoebox/oldpeople1.jpg
/fb/jtfdcr/shoebox/unclesam.jpg
/fb/jtfdcr/shoebox/unclesam_templet.jpg
/fb/jtfdcr/shoebox/waxpaper.jpg
/fb/jtfdcr/shoebox/wood_posters.jpg
/fb/jtfdcr/shoebox/woodcarver_blackforest.jpg
/fb/jtfdcr/shoebox/woodcarvershop_blackforest.jpg `;
			return(pagelist_shoebox.split("\n"));
			}


		function load_pagelist_imgs() {
//			alert( "BUGS_1000 load_page_list_jtfdcr_imgs" );
var pagelist_imgs=
`imgs/1.jpg
imgs/2.jpg
imgs/3.jpg
imgs/4.jpg
imgs/5.jpg
imgs/6.jpg
imgs/7.jpg
imgs/8.jpg
imgs/9.jpg
imgs/10.jpg
imgs/11.jpg
imgs/12.jpg
imgs/13.jpg
imgs/14.jpg
imgs/15.jpg
imgs/16.jpg `;
			return(pagelist_imgs.split("\n"));
			}
		</script>

	<script id="script load_pagelist_i" >
		function load_pagelist_i() {
var pagelist_i = `
i/1.jpg
i/2.jpg
i/3.jpg
i/4.jpg
i/5.jpg
i/6.jpg
i/7.jpg
i/8.jpg
i/9.jpg
i/10.jpg
i/11.jpg
i/12.jpg
i/13.jpg
i/14.jpg
i/15.jpg
i/16.jpg`;
			return(pagelist_i.split("\n"));
			}
		</script>



	<script id="script_load_pagelist_ajaks" >
		function load_pagelist_ajaks(ajaks) {
			alert( "BUGS_1212 load_pagelist_ajaks ajaks="+ajaks );
			ajaks="fb.txt";
			if(! linkcheck(ajaks)) { return(""); }
			alert( "BUGS_1213 load_pagelist_ajaks ajaks="+ajaks );

			var pages = new Array();
			var pages_len=0;
			var j=0;
			var xhttp = new XMLHttpRequest();
			xhttp.onreadystatechange = function() {
				if (this.readyState == 4 && this.status == 200) {
					var ajaxtext=this.responseText;
					var j=0;
					var htmout = "";
					var pagelist = new Array();
					pagelist = ajaxtext.split("\n");
					alert( "BUGS_1710 load_ajaks() ajaks="+ajaks+" pagelist="+pagelist);
					
					var pagelist_len = pagelist.length;
//					document.getElementById("div_load_ajaks").innerHTML = this.responseText; 
					document.getElementById("div_load_ajaks").innerHTML = ajaxtext; 
//					document.getElementById("div_load_ajaks").innerHTML = pagelist; 
//					document.getElementById("div_load_ajaks").innerHTML = htmout+ajaxtext; 
//					loadApp();
//					fbload();
					alert( "BUGS_1580 ajaxlines="+ajaxlines pagelist_len="+pagelist_len );
					return( ajaxlines );
					}
				};
			xhttp.open("GET", ajaks, true);
			xhttp.send();
			}
		</script>

	<script id="script_load_pagelist_default">
		function load_pagelist_default() {
			var pages = new Array();
			var pages_len=0;
			var j=0;

//			alert( "BUGS_1250 load_pages_default pages_len="+pages_len+" href="+href );
var pagelist_default =`
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages_default/0.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages_default/1.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages_default/2.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages_default/3.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages_default/4.jpg
pages_default/5.jpg
pages_default/6.jpg
pages_default/7.jpg
pages_default/8.jpg
pages_default/9.jpg
pages_default/10.jpg
pages_default/11.jpg
pages_default/12.jpg
pages_default/13.jpg
pages_default/14.jpg
pages_default/15.jpg
pages_default/16.jpg`;
`;
			return( pagelist_default.split("\n"));
			}
			</script>



	<script id="script_load_pagelist" >
		function load_pagelist() {

			var pages = new Array();
			var pages_len=0;
			var j=0; var k=0;

			var pages_default = new Array();
			var pages_go = new Array();
			var pages_jtfdcr_pages = new Array();
			var pages_jtfdcr_imgs = new Array();

//			var ajaks = "fb_imgs.txt";	
//			pages = load_pagelist_ajaks(ajaks);
//			pages = load_pagelist_default();

//			pages= load_pagelist_head();
//			pages= load_pagelist_pages();
//			pages= load_pagelist_imgs();
//			pages= load_pagelist_i();
//			pages= load_pagelist_go();
//			pages= load_pagelist_tail();


			pagelist_head = load_pagelist_head();
			pagelist_pages = load_pagelist_pages();
			pagelist_chap1 = load_pagelist_chap1();
			pagelist_chap2 = load_pagelist_chap2();
			pagelist_chap3 = load_pagelist_chap3();
			pagelist_shoebox = load_pagelist_shoebox();
//			pagelist_imgs = load_pagelist_imgs();
			pagelist_i = load_pagelist_i();
			pagelist_go = load_pagelist_go();
			pagelist_tail = load_pagelist_tail();
//			var ajaks="fb.txt";
//			var pagelist_ajaks = load_pagelist_ajaks(ajaks);

//			pages = pagelist_head.concat(pagelist_pages, pagelist_chap1, pagelist_chap2, pagelist_chap3, pagelist_imgs, pagelist_i, pagelist_go,pagelist_tail );
//			pages = pagelist_head.concat(pagelist_pages, pagelist_chap1, pagelist_chap2, pagelist_chap3, pagelist_go,pagelist_tail );
			pages = pagelist_pages.concat(pagelist_chap1, pagelist_chap2, pagelist_chap3, pagelist_go,pagelist_tail );
			pages_len=pages.length;
			pages_len=pages.length;

//			alert( "BUGS_1290 pages_len="+pages_len+" pages="+pages );


//			alert( "BUGS_1180 load_pagelist_default len="+pages_len+" pages="+pages )
//			alert( "BUGS_1180 load_pagelist_go len="+pages_len+" pages="+pages )
//			alert( "BUGS_1180 load_pagelist_pages len="+pages_len+" pages="+pages )
//			alert( "BUGS_1180 load_pagelist_default len="+pages_len+" pages="+pages )


//			var htmout="";
//			for( j=0;j<pages_len;j++) {
//				htmout += "bugs_1100 j="+j+" len="+pages_len+" page="+pages[j]+"<br>\n";
//				}
//			document.write(htmout);
//			alert( "BUGS_1200 ="+htmout );

//			alert( "BUGS_1200 load_pagelist pages_len="+pages_len+" pages="+pages );
			return( pages );
			}
		</script>



	<script id="script_load_pagelist_go" >
		function load_pagelist_go(args) {
			var j=0;
//			var href = window.location.href;
//			alert( "BUGS_825 load_pages pages_len="+pages_len+" href="+href );
var pagelist_go = `
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages/0.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages/1.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages/2.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages/3.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages/4.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages/5.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages/6.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages/7.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages/8.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages/9.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages/10.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages/11.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages/12.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages/13.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages/14.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages/15.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages/16.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages/18.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages/19.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages/20.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages/21.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages/22.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages/23.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages/24.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages/25.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages/26.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img357.jpg
-rw-r--r--||1|konet||staff||306856|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img358.jpg
-rw-r--r--||1|konet||staff||199193|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img359.jpg
-rw-r--r--||1|konet||staff||443996|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img360.jpg
-rw-r--r--||1|konet||staff||629176|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img361.jpg
-rw-r--r--||1|konet||staff||544038|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img362.jpg
-rw-r--r--||1|konet||staff||941797|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img363.jpg
-rw-r--r--||1|konet||staff||850031|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img364.jpg
-rw-r--r--||1|konet||staff||876319|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img365.jpg
-rw-r--r--||1|konet||staff||880519|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img366.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img357.jpg
-rw-r--r--||1|konet||staff||306856|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img358.jpg
-rw-r--r--||1|konet||staff||199193|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img359.jpg
-rw-r--r--||1|konet||staff||443996|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img360.jpg
-rw-r--r--||1|konet||staff||629176|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img361.jpg
-rw-r--r--||1|konet||staff||544038|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img362.jpg
-rw-r--r--||1|konet||staff||941797|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img363.jpg
-rw-r--r--||1|konet||staff||850031|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img364.jpg
-rw-r--r--||1|konet||staff||876319|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img365.jpg
-rw-r--r--||1|konet||staff||880519|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img366.jpg
-rw-r--r--||1|konet||staff||896620|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img367.jpg
-rw-r--r--||1|konet||staff||730786|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img368.jpg
-rw-r--r--||1|konet||staff||801242|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img369.jpg
-rw-r--r--||1|konet||staff||883588|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img370.jpg
-rw-r--r--||1|konet||staff||845856|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img371.jpg
-rw-r--r--||1|konet||staff||784457|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img372.jpg
-rw-r--r--||1|konet||staff||843127|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img373.jpg
-rw-r--r--||1|konet||staff||906461|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img374.jpg
-rw-r--r--||1|konet||staff||752928|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img375.jpg
-rw-r--r--||1|konet||staff||791260|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img376.jpg
-rw-r--r--||1|konet||staff||964508|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img377.jpg
-rw-r--r--||1|konet||staff||828964|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img378.jpg
-rw-r--r--||1|konet||staff||873941|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img379.jpg
-rw-r--r--||1|konet||staff||915688|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img380.jpg
-rw-r--r--||1|konet||staff||761790|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img381.jpg
-rw-r--r--||1|konet||staff||845370|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img382.jpg
-rw-r--r--||1|konet||staff||856490|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img383.jpg
-rw-r--r--||1|konet||staff||671068|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img384.jpg
-rw-r--r--||1|konet||staff||743307|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img385.jpg
-rw-r--r--||1|konet||staff||792125|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img386.jpg
-rw-r--r--||1|konet||staff||851995|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img387.jpg
-rw-r--r--||1|konet||staff||817621|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img388.jpg
-rw-r--r--||1|konet||staff||899107|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img389.jpg
-rw-r--r--||1|konet||staff||945623|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img390.jpg
-rw-r--r--||1|konet||staff||956754|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img391.jpg
-rw-r--r--||1|konet||staff||995889|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img392.jpg
-rw-r--r--||1|konet||staff||924368|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img393.jpg
-rw-r--r--||1|konet||staff||824827|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img394.jpg
-rw-r--r--||1|konet||staff||862378|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img395.jpg
-rw-r--r--||1|konet||staff||883043|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img396.jpg
-rw-r--r--||1|konet||staff||834414|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img397.jpg
-rw-r--r--||1|konet||staff||772918|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img398.jpg
-rw-r--r--||1|konet||staff||699001|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img399.jpg
-rw-r--r--||1|konet||staff||862577|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img400.jpg
-rw-r--r--||1|konet||staff||859470|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img401.jpg
-rw-r--r--||1|konet||staff||898820|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img402.jpg
-rw-r--r--||1|konet||staff||911795|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img403.jpg
-rw-r--r--||1|konet||staff||682827|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img404.jpg
-rw-r--r--||1|konet||staff||748989|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img405.jpg
-rw-r--r--||1|konet||staff||756089|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img406.jpg
-rw-r--r--||1|konet||staff||947742|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img407.jpg
-rw-r--r--||1|konet||staff||876865|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img408.jpg
-rw-r--r--||1|konet||staff||939929|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img409.jpg
-rw-r--r--||1|konet||staff||857484|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img410.jpg
-rw-r--r--||1|konet||staff||856924|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img411.jpg
-rw-r--r--||1|konet||staff||869657|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img412.jpg
-rw-r--r--||1|konet||staff||890809|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img413.jpg
-rw-r--r--||1|konet||staff||881101|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img414.jpg
-rw-r--r--||1|konet||staff||860242|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img415.jpg
-rw-r--r--||1|konet||staff||867133|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img416.jpg
-rw-r--r--||1|konet||staff||831861|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img417.jpg
-rw-r--r--||1|konet||staff||825595|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img418.jpg
-rw-r--r--||1|konet||staff||679496|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img419.jpg
-rw-r--r--||1|konet||staff||810751|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img420.jpg
-rw-r--r--||1|konet||staff||790732|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img421.jpg
-rw-r--r--||1|konet||staff||845998|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img422.jpg
-rw-r--r--||1|konet||staff||745726|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img423.jpg
-rw-r--r--||1|konet||staff||794258|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img424.jpg
-rw-r--r--||1|konet||staff||620484|Jul|26||2013|/kb/books/go/go_attack_defense/pages/index.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img357.jpg
-rw-r--r--||1|konet||staff||306856|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img358.jpg
-rw-r--r--||1|konet||staff||199193|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img359.jpg
-rw-r--r--||1|konet||staff||443996|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img360.jpg
-rw-r--r--||1|konet||staff||629176|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img361.jpg
-rw-r--r--||1|konet||staff||544038|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img362.jpg
-rw-r--r--||1|konet||staff||941797|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img363.jpg
-rw-r--r--||1|konet||staff||850031|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img364.jpg
-rw-r--r--||1|konet||staff||876319|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img365.jpg
-rw-r--r--||1|konet||staff||880519|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img366.jpg
-rw-r--r--||1|konet||staff||896620|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img367.jpg
-rw-r--r--||1|konet||staff||730786|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img368.jpg
-rw-r--r--||1|konet||staff||801242|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img369.jpg
-rw-r--r--||1|konet||staff||883588|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img370.jpg
-rw-r--r--||1|konet||staff||845856|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img371.jpg
-rw-r--r--||1|konet||staff||784457|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img372.jpg
-rw-r--r--||1|konet||staff||843127|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img373.jpg
-rw-r--r--||1|konet||staff||906461|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img374.jpg
-rw-r--r--||1|konet||staff||752928|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img375.jpg
-rw-r--r--||1|konet||staff||791260|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img376.jpg
-rw-r--r--||1|konet||staff||964508|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img377.jpg
-rw-r--r--||1|konet||staff||828964|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img378.jpg
-rw-r--r--||1|konet||staff||873941|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img379.jpg
-rw-r--r--||1|konet||staff||915688|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img380.jpg
-rw-r--r--||1|konet||staff||761790|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img381.jpg
-rw-r--r--||1|konet||staff||845370|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img382.jpg
-rw-r--r--||1|konet||staff||856490|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img383.jpg
-rw-r--r--||1|konet||staff||671068|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img384.jpg
-rw-r--r--||1|konet||staff||743307|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img385.jpg
-rw-r--r--||1|konet||staff||792125|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img386.jpg
-rw-r--r--||1|konet||staff||851995|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img387.jpg
-rw-r--r--||1|konet||staff||817621|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img388.jpg
-rw-r--r--||1|konet||staff||899107|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img389.jpg
-rw-r--r--||1|konet||staff||945623|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img390.jpg
-rw-r--r--||1|konet||staff||956754|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img391.jpg
-rw-r--r--||1|konet||staff||995889|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img392.jpg
-rw-r--r--||1|konet||staff||924368|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img393.jpg
-rw-r--r--||1|konet||staff||824827|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img394.jpg
-rw-r--r--||1|konet||staff||862378|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img395.jpg
-rw-r--r--||1|konet||staff||883043|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img396.jpg
-rw-r--r--||1|konet||staff||834414|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img397.jpg
-rw-r--r--||1|konet||staff||772918|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img398.jpg
-rw-r--r--||1|konet||staff||699001|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img399.jpg
-rw-r--r--||1|konet||staff||862577|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img400.jpg
-rw-r--r--||1|konet||staff||859470|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img401.jpg
-rw-r--r--||1|konet||staff||898820|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img402.jpg
-rw-r--r--||1|konet||staff||911795|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img403.jpg
-rw-r--r--||1|konet||staff||682827|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img404.jpg
-rw-r--r--||1|konet||staff||748989|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img405.jpg
-rw-r--r--||1|konet||staff||756089|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img406.jpg
-rw-r--r--||1|konet||staff||947742|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img407.jpg
-rw-r--r--||1|konet||staff||876865|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img408.jpg
-rw-r--r--||1|konet||staff||939929|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img409.jpg
-rw-r--r--||1|konet||staff||857484|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img410.jpg
-rw-r--r--||1|konet||staff||856924|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img411.jpg
-rw-r--r--||1|konet||staff||869657|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img412.jpg
-rw-r--r--||1|konet||staff||890809|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img413.jpg
-rw-r--r--||1|konet||staff||881101|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img414.jpg
-rw-r--r--||1|konet||staff||860242|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img415.jpg
-rw-r--r--||1|konet||staff||867133|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img416.jpg
-rw-r--r--||1|konet||staff||831861|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img417.jpg
-rw-r--r--||1|konet||staff||825595|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img418.jpg
-rw-r--r--||1|konet||staff||679496|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img419.jpg
-rw-r--r--||1|konet||staff||810751|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img420.jpg
-rw-r--r--||1|konet||staff||790732|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img421.jpg
-rw-r--r--||1|konet||staff||845998|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img422.jpg
-rw-r--r--||1|konet||staff||745726|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img423.jpg
-rw-r--r--||1|konet||staff||794258|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img424.jpg
-rw-r--r--||1|konet||staff||620484|Jul|26||2013|/kb/books/go/go_attack_defense/pages/tn/tn_index.jpg
-rw-r--r--||1|konet||staff||1006441|Jul|26||2013|/kb/books/go/go_basics/pages/img023.jpg
-rw-r--r--||1|konet||staff||1047128|Jul|26||2013|/kb/books/go/go_basics/pages/img024.jpg
-rw-r--r--||1|konet||staff||1053967|Jul|26||2013|/kb/books/go/go_basics/pages/img025.jpg
-rw-r--r--||1|konet||staff||1014446|Jul|26||2013|/kb/books/go/go_basics/pages/img026.jpg
-rw-r--r--||1|konet||staff||1026767|Jul|26||2013|/kb/books/go/go_basics/pages/img027.jpg
-rw-r--r--||1|konet||staff||791176|Jul|26||2013|/kb/books/go/go_basics/pages/img028.jpg
-rw-r--r--||1|konet||staff||813175|Jul|26||2013|/kb/books/go/go_basics/pages/img029.jpg
-rw-r--r--||1|konet||staff||924714|Jul|26||2013|/kb/books/go/go_basics/pages/img030.jpg
-rw-r--r--||1|konet||staff||905403|Jul|26||2013|/kb/books/go/go_basics/pages/img031.jpg
-rw-r--r--||1|konet||staff||888119|Jul|26||2013|/kb/books/go/go_basics/pages/img032.jpg
-rw-r--r--||1|konet||staff||1055638|Jul|26||2013|/kb/books/go/go_basics/pages/img033.jpg
-rw-r--r--||1|konet||staff||915998|Jul|26||2013|/kb/books/go/go_basics/pages/img034.jpg
-rw-r--r--||1|konet||staff||837152|Jul|26||2013|/kb/books/go/go_basics/pages/img035.jpg
-rw-r--r--||1|konet||staff||837128|Jul|26||2013|/kb/books/go/go_basics/pages/img036.jpg
-rw-r--r--||1|konet||staff||1089939|Jul|26||2013|/kb/books/go/go_basics/pages/img037.jpg
-rw-r--r--||1|konet||staff||784389|Jul|26||2013|/kb/books/go/go_basics/pages/img038.jpg
-rw-r--r--||1|konet||staff||889289|Jul|26||2013|/kb/books/go/go_basics/pages/img039.jpg
-rw-r--r--||1|konet||staff||969966|Jul|26||2013|/kb/books/go/go_basics/pages/img040.jpg
-rw-r--r--||1|konet||staff||919829|Jul|26||2013|/kb/books/go/go_basics/pages/img041.jpg
-rw-r--r--||1|konet||staff||1002672|Jul|26||2013|/kb/books/go/go_basics/pages/img042.jpg
-rw-r--r--||1|konet||staff||717797|Jul|26||2013|/kb/books/go/go_basics/pages/img043.jpg
-rw-r--r--||1|konet||staff||768692|Jul|26||2013|/kb/books/go/go_basics/pages/img044.jpg
-rw-r--r--||1|konet||staff||952072|Jul|26||2013|/kb/books/go/go_basics/pages/img045.jpg
-rw-r--r--||1|konet||staff||696825|Jul|26||2013|/kb/books/go/go_basics/pages/img046.jpg
-rw-r--r--||1|konet||staff||332310|Jul|26||2013|/kb/books/go/go_basics/pages/img047.jpg
-rw-r--r--||1|konet||staff||445300|Jul|26||2013|/kb/books/go/go_basics/pages/img048.jpg
-rw-r--r--||1|konet||staff||620484|Jul|26||2013|/kb/books/go/go_basics/pages/img049.jpg
-rw-r--r--||1|konet||staff||1006441|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img023.jpg
-rw-r--r--||1|konet||staff||1047128|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img024.jpg
-rw-r--r--||1|konet||staff||1053967|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img025.jpg
-rw-r--r--||1|konet||staff||1014446|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img026.jpg
-rw-r--r--||1|konet||staff||1026767|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img027.jpg
-rw-r--r--||1|konet||staff||791176|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img028.jpg
-rw-r--r--||1|konet||staff||813175|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img029.jpg
-rw-r--r--||1|konet||staff||924714|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img030.jpg
-rw-r--r--||1|konet||staff||905403|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img031.jpg
-rw-r--r--||1|konet||staff||888119|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img032.jpg
-rw-r--r--||1|konet||staff||1055638|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img033.jpg
-rw-r--r--||1|konet||staff||915998|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img034.jpg
-rw-r--r--||1|konet||staff||837152|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img035.jpg
-rw-r--r--||1|konet||staff||837128|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img036.jpg
-rw-r--r--||1|konet||staff||1089939|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img037.jpg
-rw-r--r--||1|konet||staff||784389|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img038.jpg
-rw-r--r--||1|konet||staff||889289|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img039.jpg
-rw-r--r--||1|konet||staff||969966|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img040.jpg
-rw-r--r--||1|konet||staff||919829|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img041.jpg
-rw-r--r--||1|konet||staff||1002672|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img042.jpg
-rw-r--r--||1|konet||staff||717797|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img043.jpg
-rw-r--r--||1|konet||staff||768692|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img044.jpg
-rw-r--r--||1|konet||staff||952072|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img045.jpg
-rw-r--r--||1|konet||staff||696825|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img046.jpg
-rw-r--r--||1|konet||staff||332310|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img047.jpg
-rw-r--r--||1|konet||staff||445300|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img048.jpg
-rw-r--r--||1|konet||staff||620484|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img049.jpg
-rw-r--r--||1|konet||staff||358516|Jul|26||2013|/kb/books/go/go_equipment/pages/img050.jpg
-rw-r--r--||1|konet||staff||516648|Jul|26||2013|/kb/books/go/go_equipment/pages/img051.jpg
-rw-r--r--||1|konet||staff||791156|Jul|26||2013|/kb/books/go/go_equipment/pages/img052.jpg
-rw-r--r--||1|konet||staff||486725|Jul|26||2013|/kb/books/go/go_equipment/pages/img053.jpg
-rw-r--r--||1|konet||staff||948089|Jul|26||2013|/kb/books/go/go_equipment/pages/img054.jpg
-rw-r--r--||1|konet||staff||1033406|Jul|26||2013|/kb/books/go/go_equipment/pages/img055.jpg
-rw-r--r--||1|konet||staff||687569|Jul|26||2013|/kb/books/go/go_equipment/pages/img056.jpg
-rw-r--r--||1|konet||staff||1065658|Jul|26||2013|/kb/books/go/go_equipment/pages/img057.jpg
-rw-r--r--||1|konet||staff||857686|Jul|26||2013|/kb/books/go/go_equipment/pages/img058.jpg
-rw-r--r--||1|konet||staff||603590|Apr|14||2013|/kb/books/go/go_equipment/pages/img061.jpg
-rw-r--r--||1|konet||staff||1374190|Apr|14||2013|/kb/books/go/go_equipment/pages/img062.jpg
-rw-r--r--||1|konet||staff||976954|Apr|14||2013|/kb/books/go/go_equipment/pages/img063.jpg
-rw-r--r--||1|konet||staff||592214|Apr|14||2013|/kb/books/go/go_equipment/pages/img064.jpg
-rw-r--r--||1|konet||staff||390273|Apr|14||2013|/kb/books/go/go_equipment/pages/img065.jpg
-rw-r--r--||1|konet||staff||1340886|Apr|14||2013|/kb/books/go/go_equipment/pages/img066.jpg
-rw-r--r--||1|konet||staff||807810|Apr|14||2013|/kb/books/go/go_equipment/pages/img067.jpg
-rw-r--r--||1|konet||staff||537637|Apr|14||2013|/kb/books/go/go_equipment/pages/img068.jpg
-rw-r--r--||1|konet||staff||358516|Jul|26||2013|/kb/books/go/go_equipment/pages/tn/tn_img050.jpg
-rw-r--r--||1|konet||staff||516648|Jul|26||2013|/kb/books/go/go_equipment/pages/tn/tn_img051.jpg
-rw-r--r--||1|konet||staff||791156|Jul|26||2013|/kb/books/go/go_equipment/pages/tn/tn_img052.jpg
-rw-r--r--||1|konet||staff||486725|Jul|26||2013|/kb/books/go/go_equipment/pages/tn/tn_img053.jpg
-rw-r--r--||1|konet||staff||948089|Jul|26||2013|/kb/books/go/go_equipment/pages/tn/tn_img054.jpg
-rw-r--r--||1|konet||staff||1033406|Jul|26||2013|/kb/books/go/go_equipment/pages/tn/tn_img055.jpg
-rw-r--r--||1|konet||staff||687569|Jul|26||2013|/kb/books/go/go_equipment/pages/tn/tn_img056.jpg
-rw-r--r--||1|konet||staff||1065658|Jul|26||2013|/kb/books/go/go_equipment/pages/tn/tn_img057.jpg
-rw-r--r--||1|konet||staff||857686|Jul|26||2013|/kb/books/go/go_equipment/pages/tn/tn_img058.jpg
-rw-r--r--||1|konet||staff||603590|Apr|14||2013|/kb/books/go/go_equipment/pages/tn/tn_img061.jpg
-rw-r--r--||1|konet||staff||1374190|Apr|14||2013|/kb/books/go/go_equipment/pages/tn/tn_img062.jpg
-rw-r--r--||1|konet||staff||976954|Apr|14||2013|/kb/books/go/go_equipment/pages/tn/tn_img063.jpg
-rw-r--r--||1|konet||staff||592214|Apr|14||2013|/kb/books/go/go_equipment/pages/tn/tn_img064.jpg
-rw-r--r--||1|konet||staff||390273|Apr|14||2013|/kb/books/go/go_equipment/pages/tn/tn_img065.jpg
-rw-r--r--||1|konet||staff||1340886|Apr|14||2013|/kb/books/go/go_equipment/pages/tn/tn_img066.jpg
-rw-r--r--||1|konet||staff||807810|Apr|14||2013|/kb/books/go/go_equipment/pages/tn/tn_img067.jpg
-rw-r--r--||1|konet||staff||537637|Apr|14||2013|/kb/books/go/go_equipment/pages/tn/tn_img068.jpg
-rw-r--r--||1|konet||staff||964295|Jul|26||2013|/kb/books/go/go_joseki/pages/img070.jpg
-rw-r--r--||1|konet||staff||951817|Jul|26||2013|/kb/books/go/go_joseki/pages/img071.jpg
-rw-r--r--||1|konet||staff||854354|Jul|26||2013|/kb/books/go/go_joseki/pages/img072.jpg
-rw-r--r--||1|konet||staff||904237|Jul|26||2013|/kb/books/go/go_joseki/pages/img073.jpg
-rw-r--r--||1|konet||staff||808049|Jul|26||2013|/kb/books/go/go_joseki/pages/img074.jpg
-rw-r--r--||1|konet||staff||899297|Jul|26||2013|/kb/books/go/go_joseki/pages/img075.jpg
-rw-r--r--||1|konet||staff||907623|Jul|26||2013|/kb/books/go/go_joseki/pages/img076.jpg
-rw-r--r--||1|konet||staff||759807|Jul|26||2013|/kb/books/go/go_joseki/pages/img077.jpg
-rw-r--r--||1|konet||staff||1058618|Jul|26||2013|/kb/books/go/go_joseki/pages/img078.jpg
-rw-r--r--||1|konet||staff||1097406|Jul|26||2013|/kb/books/go/go_joseki/pages/img079.jpg
-rw-r--r--||1|konet||staff||1071509|Jul|26||2013|/kb/books/go/go_joseki/pages/img080.jpg
-rw-r--r--||1|konet||staff||1222293|Jul|26||2013|/kb/books/go/go_joseki/pages/img081.jpg
-rw-r--r--||1|konet||staff||809594|Jul|26||2013|/kb/books/go/go_joseki/pages/img082.jpg
-rw-r--r--||1|konet||staff||976407|Jul|26||2013|/kb/books/go/go_joseki/pages/img083.jpg
-rw-r--r--||1|konet||staff||1107226|Jul|26||2013|/kb/books/go/go_joseki/pages/img084.jpg
-rw-r--r--||1|konet||staff||1026899|Jul|26||2013|/kb/books/go/go_joseki/pages/img085.jpg
-rw-r--r--||1|konet||staff||1024022|Jul|26||2013|/kb/books/go/go_joseki/pages/img086.jpg
-rw-r--r--||1|konet||staff||1029782|Jul|26||2013|/kb/books/go/go_joseki/pages/img087.jpg
-rw-r--r--||1|konet||staff||1051070|Jul|26||2013|/kb/books/go/go_joseki/pages/img088.jpg
-rw-r--r--||1|konet||staff||956297|Jul|26||2013|/kb/books/go/go_joseki/pages/img089.jpg
-rw-r--r--||1|konet||staff||1037967|Jul|26||2013|/kb/books/go/go_joseki/pages/img090.jpg
-rw-r--r--||1|konet||staff||1019427|Jul|26||2013|/kb/books/go/go_joseki/pages/img091.jpg
-rw-r--r--||1|konet||staff||1106972|Jul|26||2013|/kb/books/go/go_joseki/pages/img092.jpg
-rw-r--r--||1|konet||staff||1110897|Jul|26||2013|/kb/books/go/go_joseki/pages/img093.jpg
-rw-r--r--||1|konet||staff||1073256|Jul|26||2013|/kb/books/go/go_joseki/pages/img094.jpg
-rw-r--r--||1|konet||staff||867457|Jul|27||2013|/kb/books/go/go_joseki/pages/img095.jpg
-rw-r--r--||1|konet||staff||1093950|Jul|27||2013|/kb/books/go/go_joseki/pages/img096.jpg
-rw-r--r--||1|konet||staff||1215177|Jul|27||2013|/kb/books/go/go_joseki/pages/img097.jpg
-rw-r--r--||1|konet||staff||1126591|Jul|27||2013|/kb/books/go/go_joseki/pages/img098.jpg
-rw-r--r--||1|konet||staff||1146058|Jul|27||2013|/kb/books/go/go_joseki/pages/img099.jpg
-rw-r--r--||1|konet||staff||998658|Jul|27||2013|/kb/books/go/go_joseki/pages/img100.jpg
-rw-r--r--||1|konet||staff||950064|Jul|27||2013|/kb/books/go/go_joseki/pages/img101.jpg
-rw-r--r--||1|konet||staff||1113709|Jul|27||2013|/kb/books/go/go_joseki/pages/img102.jpg
-rw-r--r--||1|konet||staff||1073193|Jul|27||2013|/kb/books/go/go_joseki/pages/img103.jpg
-rw-r--r--||1|konet||staff||965100|Jul|27||2013|/kb/books/go/go_joseki/pages/img104.jpg
-rw-r--r--||1|konet||staff||967947|Jul|27||2013|/kb/books/go/go_joseki/pages/img105.jpg
-rw-r--r--||1|konet||staff||1053408|Jul|27||2013|/kb/books/go/go_joseki/pages/img106.jpg
-rw-r--r--||1|konet||staff||1108979|Jul|27||2013|/kb/books/go/go_joseki/pages/img107.jpg
-rw-r--r--||1|konet||staff||993497|Jul|27||2013|/kb/books/go/go_joseki/pages/img108.jpg
-rw-r--r--||1|konet||staff||970885|Jul|27||2013|/kb/books/go/go_joseki/pages/img109.jpg
-rw-r--r--||1|konet||staff||1053854|Jul|27||2013|/kb/books/go/go_joseki/pages/img110.jpg
-rw-r--r--||1|konet||staff||984744|Jul|27||2013|/kb/books/go/go_joseki/pages/img111.jpg
-rw-r--r--||1|konet||staff||1053819|Jul|27||2013|/kb/books/go/go_joseki/pages/img112.jpg
-rw-r--r--||1|konet||staff||1187421|Jul|27||2013|/kb/books/go/go_joseki/pages/img113.jpg
-rw-r--r--||1|konet||staff||964581|Jul|27||2013|/kb/books/go/go_joseki/pages/img114.jpg
-rw-r--r--||1|konet||staff||978287|Jul|27||2013|/kb/books/go/go_joseki/pages/img115.jpg
-rw-r--r--||1|konet||staff||917482|Jul|27||2013|/kb/books/go/go_joseki/pages/img116.jpg
-rw-r--r--||1|konet||staff||991987|Jul|27||2013|/kb/books/go/go_joseki/pages/img117.jpg
-rw-r--r--||1|konet||staff||898921|Jul|27||2013|/kb/books/go/go_joseki/pages/img118.jpg
-rw-r--r--||1|konet||staff||1012220|Jul|27||2013|/kb/books/go/go_joseki/pages/img119.jpg
-rw-r--r--||1|konet||staff||1072925|Jul|27||2013|/kb/books/go/go_joseki/pages/img120.jpg
-rw-r--r--||1|konet||staff||872746|Jul|27||2013|/kb/books/go/go_joseki/pages/img121.jpg
-rw-r--r--||1|konet||staff||866500|Jul|27||2013|/kb/books/go/go_joseki/pages/img122.jpg
-rw-r--r--||1|konet||staff||1009773|Jul|27||2013|/kb/books/go/go_joseki/pages/img123.jpg
-rw-r--r--||1|konet||staff||968391|Jul|27||2013|/kb/books/go/go_joseki/pages/img124.jpg
-rw-r--r--||1|konet||staff||703303|Jul|27||2013|/kb/books/go/go_joseki/pages/img125.jpg
-rw-r--r--||1|konet||staff||950503|Jul|27||2013|/kb/books/go/go_joseki/pages/img126.jpg
-rw-r--r--||1|konet||staff||998706|Jul|27||2013|/kb/books/go/go_joseki/pages/img127.jpg
-rw-r--r--||1|konet||staff||873116|Jul|27||2013|/kb/books/go/go_joseki/pages/img128.jpg
-rw-r--r--||1|konet||staff||821432|Jul|27||2013|/kb/books/go/go_joseki/pages/img129.jpg
-rw-r--r--||1|konet||staff||825088|Jul|27||2013|/kb/books/go/go_joseki/pages/img130.jpg
-rw-r--r--||1|konet||staff||896338|Jul|27||2013|/kb/books/go/go_joseki/pages/img131.jpg
-rw-r--r--||1|konet||staff||963585|Jul|27||2013|/kb/books/go/go_joseki/pages/img132.jpg
-rw-r--r--||1|konet||staff||983883|Jul|27||2013|/kb/books/go/go_joseki/pages/img133.jpg
-rw-r--r--||1|konet||staff||873892|Jul|27||2013|/kb/books/go/go_joseki/pages/img134.jpg
-rw-r--r--||1|konet||staff||769739|Jul|27||2013|/kb/books/go/go_joseki/pages/img135.jpg
-rw-r--r--||1|konet||staff||713637|Jul|27||2013|/kb/books/go/go_joseki/pages/img136.jpg
-rw-r--r--||1|konet||staff||584476|Jul|27||2013|/kb/books/go/go_joseki/pages/img137.jpg
-rw-r--r--||1|konet||staff||909033|Jul|27||2013|/kb/books/go/go_joseki/pages/img138.jpg
-rw-r--r--||1|konet||staff||1022877|Jul|27||2013|/kb/books/go/go_joseki/pages/img139.jpg
-rw-r--r--||1|konet||staff||744019|Jul|27||2013|/kb/books/go/go_joseki/pages/img140.jpg
-rw-r--r--||1|konet||staff||166301|Jul|27||2013|/kb/books/go/go_joseki/pages/img141.jpg
-rw-r--r--||1|konet||staff||404802|Jul|27||2013|/kb/books/go/go_joseki/pages/img142.jpg
-rw-r--r--||1|konet||staff||536562|Jul|27||2013|/kb/books/go/go_joseki/pages/img143.jpg
-rw-r--r--||1|konet||staff||964295|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img070.jpg
-rw-r--r--||1|konet||staff||951817|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img071.jpg
-rw-r--r--||1|konet||staff||854354|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img072.jpg
-rw-r--r--||1|konet||staff||904237|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img073.jpg
-rw-r--r--||1|konet||staff||808049|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img074.jpg
-rw-r--r--||1|konet||staff||899297|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img075.jpg
-rw-r--r--||1|konet||staff||907623|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img076.jpg
-rw-r--r--||1|konet||staff||759807|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img077.jpg
-rw-r--r--||1|konet||staff||1058618|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img078.jpg
-rw-r--r--||1|konet||staff||1097406|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img079.jpg
-rw-r--r--||1|konet||staff||1071509|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img080.jpg
-rw-r--r--||1|konet||staff||1222293|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img081.jpg
-rw-r--r--||1|konet||staff||809594|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img082.jpg
-rw-r--r--||1|konet||staff||976407|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img083.jpg
-rw-r--r--||1|konet||staff||1107226|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img084.jpg
-rw-r--r--||1|konet||staff||1026899|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img085.jpg
-rw-r--r--||1|konet||staff||1024022|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img086.jpg
-rw-r--r--||1|konet||staff||1029782|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img087.jpg
-rw-r--r--||1|konet||staff||1051070|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img088.jpg
-rw-r--r--||1|konet||staff||956297|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img089.jpg
-rw-r--r--||1|konet||staff||1037967|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img090.jpg
-rw-r--r--||1|konet||staff||1019427|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img091.jpg
-rw-r--r--||1|konet||staff||1106972|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img092.jpg
-rw-r--r--||1|konet||staff||1110897|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img093.jpg
-rw-r--r--||1|konet||staff||1073256|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img094.jpg
-rw-r--r--||1|konet||staff||867457|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img095.jpg
-rw-r--r--||1|konet||staff||1093950|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img096.jpg
-rw-r--r--||1|konet||staff||1215177|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img097.jpg
-rw-r--r--||1|konet||staff||1126591|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img098.jpg
-rw-r--r--||1|konet||staff||1146058|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img099.jpg
-rw-r--r--||1|konet||staff||998658|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img100.jpg
-rw-r--r--||1|konet||staff||950064|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img101.jpg
-rw-r--r--||1|konet||staff||1113709|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img102.jpg
-rw-r--r--||1|konet||staff||1073193|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img103.jpg
-rw-r--r--||1|konet||staff||965100|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img104.jpg
-rw-r--r--||1|konet||staff||967947|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img105.jpg
-rw-r--r--||1|konet||staff||1053408|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img106.jpg
-rw-r--r--||1|konet||staff||1108979|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img107.jpg
-rw-r--r--||1|konet||staff||993497|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img108.jpg
-rw-r--r--||1|konet||staff||970885|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img109.jpg
-rw-r--r--||1|konet||staff||1053854|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img110.jpg
-rw-r--r--||1|konet||staff||984744|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img111.jpg
-rw-r--r--||1|konet||staff||1053819|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img112.jpg
-rw-r--r--||1|konet||staff||1187421|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img113.jpg
-rw-r--r--||1|konet||staff||964581|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img114.jpg
-rw-r--r--||1|konet||staff||978287|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img115.jpg
-rw-r--r--||1|konet||staff||917482|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img116.jpg
-rw-r--r--||1|konet||staff||991987|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img117.jpg
-rw-r--r--||1|konet||staff||898921|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img118.jpg
-rw-r--r--||1|konet||staff||1012220|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img119.jpg
-rw-r--r--||1|konet||staff||1072925|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img120.jpg
-rw-r--r--||1|konet||staff||872746|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img121.jpg
-rw-r--r--||1|konet||staff||866500|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img122.jpg
-rw-r--r--||1|konet||staff||1009773|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img123.jpg
-rw-r--r--||1|konet||staff||968391|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img124.jpg
-rw-r--r--||1|konet||staff||703303|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img125.jpg
-rw-r--r--||1|konet||staff||950503|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img126.jpg
-rw-r--r--||1|konet||staff||998706|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img127.jpg
-rw-r--r--||1|konet||staff||873116|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img128.jpg
-rw-r--r--||1|konet||staff||821432|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img129.jpg
-rw-r--r--||1|konet||staff||825088|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img130.jpg
-rw-r--r--||1|konet||staff||896338|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img131.jpg
-rw-r--r--||1|konet||staff||963585|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img132.jpg
-rw-r--r--||1|konet||staff||983883|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img133.jpg
-rw-r--r--||1|konet||staff||873892|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img134.jpg
-rw-r--r--||1|konet||staff||769739|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img135.jpg
-rw-r--r--||1|konet||staff||713637|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img136.jpg
-rw-r--r--||1|konet||staff||584476|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img137.jpg
-rw-r--r--||1|konet||staff||909033|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img138.jpg
-rw-r--r--||1|konet||staff||1022877|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img139.jpg
-rw-r--r--||1|konet||staff||744019|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img140.jpg
-rw-r--r--||1|konet||staff||166301|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img141.jpg
-rw-r--r--||1|konet||staff||404802|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img142.jpg
-rw-r--r--||1|konet||staff||536562|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img143.jpg
-rw-r--r--||1|konet||staff||437291|Jul|28||2013|/kb/books/go/go_middlegame/pages/img183.jpg
-rw-r--r--||1|konet||staff||525694|Jul|28||2013|/kb/books/go/go_middlegame/pages/img184.jpg
-rw-r--r--||1|konet||staff||653806|Jul|28||2013|/kb/books/go/go_middlegame/pages/img185.jpg
-rw-r--r--||1|konet||staff||841874|Jul|28||2013|/kb/books/go/go_middlegame/pages/img186.jpg
-rw-r--r--||1|konet||staff||783850|Jul|28||2013|/kb/books/go/go_middlegame/pages/img187.jpg
-rw-r--r--||1|konet||staff||759335|Jul|28||2013|/kb/books/go/go_middlegame/pages/img188.jpg
-rw-r--r--||1|konet||staff||777431|Jul|28||2013|/kb/books/go/go_middlegame/pages/img189.jpg
-rw-r--r--||1|konet||staff||621857|Jul|28||2013|/kb/books/go/go_middlegame/pages/img190.jpg
-rw-r--r--||1|konet||staff||621065|Jul|28||2013|/kb/books/go/go_middlegame/pages/img213.jpg
-rw-r--r--||1|konet||staff||660424|Jul|28||2013|/kb/books/go/go_middlegame/pages/img214.jpg
-rw-r--r--||1|konet||staff||640766|Jul|28||2013|/kb/books/go/go_middlegame/pages/img215.jpg
-rw-r--r--||1|konet||staff||701699|Jul|28||2013|/kb/books/go/go_middlegame/pages/img216.jpg
-rw-r--r--||1|konet||staff||684817|Jul|28||2013|/kb/books/go/go_middlegame/pages/img217.jpg
-rw-r--r--||1|konet||staff||693628|Jul|28||2013|/kb/books/go/go_middlegame/pages/img218.jpg
-rw-r--r--||1|konet||staff||652074|Jul|28||2013|/kb/books/go/go_middlegame/pages/img219.jpg
-rw-r--r--||1|konet||staff||665520|Jul|28||2013|/kb/books/go/go_middlegame/pages/img220.jpg
-rw-r--r--||1|konet||staff||664979|Jul|28||2013|/kb/books/go/go_middlegame/pages/img221.jpg
-rw-r--r--||1|konet||staff||420880|Jul|28||2013|/kb/books/go/go_middlegame/pages/img222.jpg
-rw-r--r--||1|konet||staff||653179|Jul|28||2013|/kb/books/go/go_middlegame/pages/img223.jpg
-rw-r--r--||1|konet||staff||631018|Jul|28||2013|/kb/books/go/go_middlegame/pages/img224.jpg
-rw-r--r--||1|konet||staff||614888|Jul|28||2013|/kb/books/go/go_middlegame/pages/img225.jpg
-rw-r--r--||1|konet||staff||635578|Jul|28||2013|/kb/books/go/go_middlegame/pages/img226.jpg
-rw-r--r--||1|konet||staff||664987|Jul|28||2013|/kb/books/go/go_middlegame/pages/img227.jpg
-rw-r--r--||1|konet||staff||494882|Jul|28||2013|/kb/books/go/go_middlegame/pages/img228.jpg
-rw-r--r--||1|konet||staff||755517|Jul|28||2013|/kb/books/go/go_middlegame/pages/img229.jpg
-rw-r--r--||1|konet||staff||746024|Jul|28||2013|/kb/books/go/go_middlegame/pages/img230.jpg
-rw-r--r--||1|konet||staff||740563|Jul|28||2013|/kb/books/go/go_middlegame/pages/img231.jpg
-rw-r--r--||1|konet||staff||720673|Jul|28||2013|/kb/books/go/go_middlegame/pages/img232.jpg
-rw-r--r--||1|konet||staff||641901|Jul|28||2013|/kb/books/go/go_middlegame/pages/img233.jpg
-rw-r--r--||1|konet||staff||681172|Jul|28||2013|/kb/books/go/go_middlegame/pages/img234.jpg
-rw-r--r--||1|konet||staff||681621|Jul|28||2013|/kb/books/go/go_middlegame/pages/img235.jpg
-rw-r--r--||1|konet||staff||699626|Jul|28||2013|/kb/books/go/go_middlegame/pages/img236.jpg
-rw-r--r--||1|konet||staff||692405|Jul|28||2013|/kb/books/go/go_middlegame/pages/img237.jpg
-rw-r--r--||1|konet||staff||675217|Jul|28||2013|/kb/books/go/go_middlegame/pages/img238.jpg
-rw-r--r--||1|konet||staff||637166|Jul|28||2013|/kb/books/go/go_middlegame/pages/img239.jpg
-rw-r--r--||1|konet||staff||638038|Jul|28||2013|/kb/books/go/go_middlegame/pages/img240.jpg
-rw-r--r--||1|konet||staff||746258|Jul|28||2013|/kb/books/go/go_middlegame/pages/img241.jpg
-rw-r--r--||1|konet||staff||697934|Jul|28||2013|/kb/books/go/go_middlegame/pages/img242.jpg
-rw-r--r--||1|konet||staff||680670|Jul|28||2013|/kb/books/go/go_middlegame/pages/img243.jpg
-rw-r--r--||1|konet||staff||666127|Jul|28||2013|/kb/books/go/go_middlegame/pages/img244.jpg
-rw-r--r--||1|konet||staff||703644|Jul|28||2013|/kb/books/go/go_middlegame/pages/img245.jpg
-rw-r--r--||1|konet||staff||674102|Jul|28||2013|/kb/books/go/go_middlegame/pages/img246.jpg
-rw-r--r--||1|konet||staff||684526|Jul|28||2013|/kb/books/go/go_middlegame/pages/img247.jpg
-rw-r--r--||1|konet||staff||648526|Jul|28||2013|/kb/books/go/go_middlegame/pages/img248.jpg
-rw-r--r--||1|konet||staff||728614|Jul|28||2013|/kb/books/go/go_middlegame/pages/img249.jpg
-rw-r--r--||1|konet||staff||663415|Jul|28||2013|/kb/books/go/go_middlegame/pages/img250.jpg
-rw-r--r--||1|konet||staff||694657|Jul|28||2013|/kb/books/go/go_middlegame/pages/img251.jpg
-rw-r--r--||1|konet||staff||673729|Jul|28||2013|/kb/books/go/go_middlegame/pages/img252.jpg
-rw-r--r--||1|konet||staff||663575|Jul|28||2013|/kb/books/go/go_middlegame/pages/img253.jpg
-rw-r--r--||1|konet||staff||464991|Jul|28||2013|/kb/books/go/go_middlegame/pages/img254.jpg
-rw-r--r--||1|konet||staff||756849|Jul|28||2013|/kb/books/go/go_middlegame/pages/img255.jpg
-rw-r--r--||1|konet||staff||761547|Jul|28||2013|/kb/books/go/go_middlegame/pages/img256.jpg
-rw-r--r--||1|konet||staff||801070|Jul|28||2013|/kb/books/go/go_middlegame/pages/img257.jpg
-rw-r--r--||1|konet||staff||739075|Jul|28||2013|/kb/books/go/go_middlegame/pages/img258.jpg
-rw-r--r--||1|konet||staff||787189|Jul|28||2013|/kb/books/go/go_middlegame/pages/img259.jpg
-rw-r--r--||1|konet||staff||729433|Jul|28||2013|/kb/books/go/go_middlegame/pages/img260.jpg
-rw-r--r--||1|konet||staff||793385|Jul|28||2013|/kb/books/go/go_middlegame/pages/img261.jpg
-rw-r--r--||1|konet||staff||756141|Jul|28||2013|/kb/books/go/go_middlegame/pages/img262.jpg
-rw-r--r--||1|konet||staff||779572|Jul|28||2013|/kb/books/go/go_middlegame/pages/img263.jpg
-rw-r--r--||1|konet||staff||759079|Jul|28||2013|/kb/books/go/go_middlegame/pages/img264.jpg
-rw-r--r--||1|konet||staff||738282|Jul|28||2013|/kb/books/go/go_middlegame/pages/img265.jpg
-rw-r--r--||1|konet||staff||814029|Jul|28||2013|/kb/books/go/go_middlegame/pages/img266.jpg
-rw-r--r--||1|konet||staff||833386|Jul|28||2013|/kb/books/go/go_middlegame/pages/img267.jpg
-rw-r--r--||1|konet||staff||188285|Jul|28||2013|/kb/books/go/go_middlegame/pages/img268.jpg
-rw-r--r--||1|konet||staff||369506|Jul|28||2013|/kb/books/go/go_middlegame/pages/img269.jpg
-rw-r--r--||1|konet||staff||384764|Jul|28||2013|/kb/books/go/go_middlegame/pages/img270.jpg
-rw-r--r--||1|konet||staff||547382|Jul|28||2013|/kb/books/go/go_middlegame/pages/img271.jpg
-rw-r--r--||1|konet||staff||647343|Jul|28||2013|/kb/books/go/go_middlegame/pages/img272.jpg
-rw-r--r--||1|konet||staff||1070171|Jul|28||2013|/kb/books/go/go_middlegame/pages/img273.jpg
-rw-r--r--||1|konet||staff||1188408|Jul|28||2013|/kb/books/go/go_middlegame/pages/img274.jpg
-rw-r--r--||1|konet||staff||315266|Jul|28||2013|/kb/books/go/go_middlegame/pages/img275.jpg
-rw-r--r--||1|konet||staff||299360|Jul|28||2013|/kb/books/go/go_middlegame/pages/img276.jpg
-rw-r--r--||1|konet||staff||707195|Jul|28||2013|/kb/books/go/go_middlegame/pages/img277.jpg
-rw-r--r--||1|konet||staff||872457|Jul|28||2013|/kb/books/go/go_middlegame/pages/img278.jpg
-rw-r--r--||1|konet||staff||959051|Jul|28||2013|/kb/books/go/go_middlegame/pages/img279.jpg
-rw-r--r--||1|konet||staff||920879|Jul|28||2013|/kb/books/go/go_middlegame/pages/img280.jpg
-rw-r--r--||1|konet||staff||926630|Jul|28||2013|/kb/books/go/go_middlegame/pages/img281.jpg
-rw-r--r--||1|konet||staff||1034689|Jul|28||2013|/kb/books/go/go_middlegame/pages/img282.jpg
-rw-r--r--||1|konet||staff||341434|Jul|25||2013|/kb/books/go/go_middlegame/pages/img283.jpg
-rw-r--r--||1|konet||staff||1211055|Jul|25||2013|/kb/books/go/go_middlegame/pages/img284.jpg
-rw-r--r--||1|konet||staff||437291|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img183.jpg
-rw-r--r--||1|konet||staff||525694|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img184.jpg
-rw-r--r--||1|konet||staff||653806|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img185.jpg
-rw-r--r--||1|konet||staff||841874|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img186.jpg
-rw-r--r--||1|konet||staff||783850|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img187.jpg
-rw-r--r--||1|konet||staff||759335|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img188.jpg
-rw-r--r--||1|konet||staff||777431|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img189.jpg
-rw-r--r--||1|konet||staff||621857|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img190.jpg
-rw-r--r--||1|konet||staff||621065|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img213.jpg
-rw-r--r--||1|konet||staff||660424|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img214.jpg
-rw-r--r--||1|konet||staff||640766|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img215.jpg
-rw-r--r--||1|konet||staff||701699|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img216.jpg
-rw-r--r--||1|konet||staff||684817|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img217.jpg
-rw-r--r--||1|konet||staff||693628|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img218.jpg
-rw-r--r--||1|konet||staff||652074|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img219.jpg
-rw-r--r--||1|konet||staff||665520|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img220.jpg
-rw-r--r--||1|konet||staff||664979|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img221.jpg
-rw-r--r--||1|konet||staff||420880|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img222.jpg
-rw-r--r--||1|konet||staff||653179|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img223.jpg
-rw-r--r--||1|konet||staff||631018|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img224.jpg
-rw-r--r--||1|konet||staff||614888|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img225.jpg
-rw-r--r--||1|konet||staff||635578|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img226.jpg
-rw-r--r--||1|konet||staff||664987|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img227.jpg
-rw-r--r--||1|konet||staff||494882|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img228.jpg
-rw-r--r--||1|konet||staff||755517|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img229.jpg
-rw-r--r--||1|konet||staff||746024|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img230.jpg
-rw-r--r--||1|konet||staff||740563|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img231.jpg
-rw-r--r--||1|konet||staff||720673|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img232.jpg
-rw-r--r--||1|konet||staff||641901|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img233.jpg
-rw-r--r--||1|konet||staff||681172|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img234.jpg
-rw-r--r--||1|konet||staff||681621|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img235.jpg
-rw-r--r--||1|konet||staff||699626|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img236.jpg
-rw-r--r--||1|konet||staff||692405|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img237.jpg
-rw-r--r--||1|konet||staff||675217|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img238.jpg
-rw-r--r--||1|konet||staff||637166|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img239.jpg
-rw-r--r--||1|konet||staff||638038|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img240.jpg
-rw-r--r--||1|konet||staff||746258|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img241.jpg
-rw-r--r--||1|konet||staff||697934|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img242.jpg
-rw-r--r--||1|konet||staff||680670|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img243.jpg
-rw-r--r--||1|konet||staff||666127|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img244.jpg
-rw-r--r--||1|konet||staff||703644|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img245.jpg
-rw-r--r--||1|konet||staff||674102|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img246.jpg
-rw-r--r--||1|konet||staff||684526|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img247.jpg
-rw-r--r--||1|konet||staff||648526|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img248.jpg
-rw-r--r--||1|konet||staff||728614|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img249.jpg
-rw-r--r--||1|konet||staff||663415|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img250.jpg
-rw-r--r--||1|konet||staff||694657|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img251.jpg
-rw-r--r--||1|konet||staff||673729|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img252.jpg
-rw-r--r--||1|konet||staff||663575|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img253.jpg
-rw-r--r--||1|konet||staff||464991|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img254.jpg
-rw-r--r--||1|konet||staff||756849|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img255.jpg
-rw-r--r--||1|konet||staff||761547|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img256.jpg
-rw-r--r--||1|konet||staff||801070|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img257.jpg
-rw-r--r--||1|konet||staff||739075|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img258.jpg
-rw-r--r--||1|konet||staff||787189|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img259.jpg
-rw-r--r--||1|konet||staff||729433|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img260.jpg
-rw-r--r--||1|konet||staff||793385|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img261.jpg
-rw-r--r--||1|konet||staff||756141|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img262.jpg
-rw-r--r--||1|konet||staff||779572|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img263.jpg
-rw-r--r--||1|konet||staff||759079|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img264.jpg
-rw-r--r--||1|konet||staff||738282|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img265.jpg
-rw-r--r--||1|konet||staff||814029|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img266.jpg
-rw-r--r--||1|konet||staff||833386|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img267.jpg
-rw-r--r--||1|konet||staff||188285|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img268.jpg
-rw-r--r--||1|konet||staff||369506|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img269.jpg
-rw-r--r--||1|konet||staff||384764|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img270.jpg
-rw-r--r--||1|konet||staff||547382|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img271.jpg
-rw-r--r--||1|konet||staff||647343|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img272.jpg
-rw-r--r--||1|konet||staff||1070171|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img273.jpg
-rw-r--r--||1|konet||staff||1188408|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img274.jpg
-rw-r--r--||1|konet||staff||315266|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img275.jpg
-rw-r--r--||1|konet||staff||299360|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img276.jpg
-rw-r--r--||1|konet||staff||707195|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img277.jpg
-rw-r--r--||1|konet||staff||872457|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img278.jpg
-rw-r--r--||1|konet||staff||959051|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img279.jpg
-rw-r--r--||1|konet||staff||920879|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img280.jpg
-rw-r--r--||1|konet||staff||926630|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img281.jpg
-rw-r--r--||1|konet||staff||1034689|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img282.jpg
-rw-r--r--||1|konet||staff||341434|Jul|25||2013|/kb/books/go/go_middlegame/pages/tn/tn_img283.jpg
-rw-r--r--||1|konet||staff||1211055|Jul|25||2013|/kb/books/go/go_middlegame/pages/tn/tn_img284.jpg
-rw-r--r--||1|konet||staff||1053658|Jul|25||2013|/kb/books/go/go_strategy/pages/img285.jpg
-rw-r--r--||1|konet||staff||336909|Jul|25||2013|/kb/books/go/go_strategy/pages/img286.jpg
-rw-r--r--||1|konet||staff||354099|Jul|25||2013|/kb/books/go/go_strategy/pages/img287.jpg
-rw-r--r--||1|konet||staff||409400|Jul|25||2013|/kb/books/go/go_strategy/pages/img288.jpg
-rw-r--r--||1|konet||staff||417952|Jul|25||2013|/kb/books/go/go_strategy/pages/img289.jpg
-rw-r--r--||1|konet||staff||690620|Jul|25||2013|/kb/books/go/go_strategy/pages/img290.jpg
-rw-r--r--||1|konet||staff||845711|Jul|25||2013|/kb/books/go/go_strategy/pages/img291.jpg
-rw-r--r--||1|konet||staff||1028081|Jul|25||2013|/kb/books/go/go_strategy/pages/img292.jpg
-rw-r--r--||1|konet||staff||1126342|Jul|25||2013|/kb/books/go/go_strategy/pages/img293.jpg
-rw-r--r--||1|konet||staff||1106874|Jul|25||2013|/kb/books/go/go_strategy/pages/img294.jpg
-rw-r--r--||1|konet||staff||1054403|Jul|25||2013|/kb/books/go/go_strategy/pages/img295.jpg
-rw-r--r--||1|konet||staff||1120631|Jul|25||2013|/kb/books/go/go_strategy/pages/img296.jpg
-rw-r--r--||1|konet||staff||756489|Jul|25||2013|/kb/books/go/go_strategy/pages/img297.jpg
-rw-r--r--||1|konet||staff||1084236|Jul|25||2013|/kb/books/go/go_strategy/pages/img298.jpg
-rw-r--r--||1|konet||staff||1067948|Jul|25||2013|/kb/books/go/go_strategy/pages/img299.jpg
-rw-r--r--||1|konet||staff||979594|Jul|25||2013|/kb/books/go/go_strategy/pages/img300.jpg
-rw-r--r--||1|konet||staff||1045182|Jul|25||2013|/kb/books/go/go_strategy/pages/img301.jpg
-rw-r--r--||1|konet||staff||901610|Jul|25||2013|/kb/books/go/go_strategy/pages/img302.jpg
-rw-r--r--||1|konet||staff||918985|Jul|25||2013|/kb/books/go/go_strategy/pages/img303.jpg
-rw-r--r--||1|konet||staff||862420|Jul|25||2013|/kb/books/go/go_strategy/pages/img304.jpg
-rw-r--r--||1|konet||staff||886557|Jul|25||2013|/kb/books/go/go_strategy/pages/img305.jpg
-rw-r--r--||1|konet||staff||787507|Jul|25||2013|/kb/books/go/go_strategy/pages/img306.jpg
-rw-r--r--||1|konet||staff||911463|Jul|25||2013|/kb/books/go/go_strategy/pages/img307.jpg
-rw-r--r--||1|konet||staff||965161|Jul|25||2013|/kb/books/go/go_strategy/pages/img308.jpg
-rw-r--r--||1|konet||staff||973577|Jul|25||2013|/kb/books/go/go_strategy/pages/img309.jpg
-rw-r--r--||1|konet||staff||888001|Jul|25||2013|/kb/books/go/go_strategy/pages/img310.jpg
-rw-r--r--||1|konet||staff||786913|Jul|25||2013|/kb/books/go/go_strategy/pages/img311.jpg
-rw-r--r--||1|konet||staff||963093|Jul|25||2013|/kb/books/go/go_strategy/pages/img312.jpg
-rw-r--r--||1|konet||staff||1189822|Jul|25||2013|/kb/books/go/go_strategy/pages/img313.jpg
-rw-r--r--||1|konet||staff||877732|Jul|25||2013|/kb/books/go/go_strategy/pages/img314.jpg
-rw-r--r--||1|konet||staff||849270|Jul|25||2013|/kb/books/go/go_strategy/pages/img315.jpg
-rw-r--r--||1|konet||staff||963161|Jul|25||2013|/kb/books/go/go_strategy/pages/img316.jpg
-rw-r--r--||1|konet||staff||507750|Jul|25||2013|/kb/books/go/go_strategy/pages/img317.jpg
-rw-r--r--||1|konet||staff||930132|Jul|26||2013|/kb/books/go/go_strategy/pages/img318.jpg
-rw-r--r--||1|konet||staff||862631|Jul|26||2013|/kb/books/go/go_strategy/pages/img319.jpg
-rw-r--r--||1|konet||staff||2584516|Jul|26||2013|/kb/books/go/go_strategy/pages/img319_rot.jpg
-rw-r--r--||1|konet||staff||907770|Jul|26||2013|/kb/books/go/go_strategy/pages/img320.jpg
-rw-r--r--||1|konet||staff||1074018|Jul|26||2013|/kb/books/go/go_strategy/pages/img321.jpg
-rw-r--r--||1|konet||staff||985358|Jul|26||2013|/kb/books/go/go_strategy/pages/img322.jpg
-rw-r--r--||1|konet||staff||955316|Jul|26||2013|/kb/books/go/go_strategy/pages/img323.jpg
-rw-r--r--||1|konet||staff||1048619|Jul|26||2013|/kb/books/go/go_strategy/pages/img324.jpg
-rw-r--r--||1|konet||staff||1013385|Jul|26||2013|/kb/books/go/go_strategy/pages/img325.jpg
-rw-r--r--||1|konet||staff||1091971|Jul|26||2013|/kb/books/go/go_strategy/pages/img326.jpg
-rw-r--r--||1|konet||staff||801231|Jul|26||2013|/kb/books/go/go_strategy/pages/img327.jpg
-rw-r--r--||1|konet||staff||845582|Jul|26||2013|/kb/books/go/go_strategy/pages/img328.jpg
-rw-r--r--||1|konet||staff||931676|Jul|26||2013|/kb/books/go/go_strategy/pages/img329.jpg
-rw-r--r--||1|konet||staff||1068374|Jul|26||2013|/kb/books/go/go_strategy/pages/img330.jpg
-rw-r--r--||1|konet||staff||836404|Jul|26||2013|/kb/books/go/go_strategy/pages/img331.jpg
-rw-r--r--||1|konet||staff||1002956|Jul|26||2013|/kb/books/go/go_strategy/pages/img332.jpg
-rw-r--r--||1|konet||staff||858923|Jul|26||2013|/kb/books/go/go_strategy/pages/img333.jpg
-rw-r--r--||1|konet||staff||904910|Jul|26||2013|/kb/books/go/go_strategy/pages/img334.jpg
-rw-r--r--||1|konet||staff||905806|Jul|28||2013|/kb/books/go/go_strategy/pages/img335.jpg
-rw-r--r--||1|konet||staff||1032145|Jul|28||2013|/kb/books/go/go_strategy/pages/img336.jpg
-rw-r--r--||1|konet||staff||927378|Jul|28||2013|/kb/books/go/go_strategy/pages/img337.jpg
-rw-r--r--||1|konet||staff||1021816|Jul|28||2013|/kb/books/go/go_strategy/pages/img338.jpg
-rw-r--r--||1|konet||staff||1007963|Jul|28||2013|/kb/books/go/go_strategy/pages/img339.jpg
-rw-r--r--||1|konet||staff||1087169|Jul|28||2013|/kb/books/go/go_strategy/pages/img340.jpg
-rw-r--r--||1|konet||staff||907719|Jul|28||2013|/kb/books/go/go_strategy/pages/img341.jpg
-rw-r--r--||1|konet||staff||1017200|Jul|28||2013|/kb/books/go/go_strategy/pages/img342.jpg
-rw-r--r--||1|konet||staff||1008372|Jul|28||2013|/kb/books/go/go_strategy/pages/img343.jpg
-rw-r--r--||1|konet||staff||904314|Jul|28||2013|/kb/books/go/go_strategy/pages/img344.jpg
-rw-r--r--||1|konet||staff||865407|Jul|28||2013|/kb/books/go/go_strategy/pages/img345.jpg
-rw-r--r--||1|konet||staff||936444|Jul|28||2013|/kb/books/go/go_strategy/pages/img346.jpg
-rw-r--r--||1|konet||staff||1098851|Jul|28||2013|/kb/books/go/go_strategy/pages/img347.jpg
-rw-r--r--||1|konet||staff||1136515|Jul|28||2013|/kb/books/go/go_strategy/pages/img348.jpg
-rw-r--r--||1|konet||staff||1181254|Jul|28||2013|/kb/books/go/go_strategy/pages/img349.jpg
-rw-r--r--||1|konet||staff||826651|Jul|28||2013|/kb/books/go/go_strategy/pages/img350.jpg
-rw-r--r--||1|konet||staff||605881|Jul|28||2013|/kb/books/go/go_strategy/pages/img351.jpg
-rw-r--r--||1|konet||staff||695558|Jul|28||2013|/kb/books/go/go_strategy/pages/img352.jpg
-rw-r--r--||1|konet||staff||166542|Jul|28||2013|/kb/books/go/go_strategy/pages/img353.jpg
-rw-r--r--||1|konet||staff||147900|Jul|28||2013|/kb/books/go/go_strategy/pages/img354.jpg
-rw-r--r--||1|konet||staff||216814|Jul|28||2013|/kb/books/go/go_strategy/pages/img355.jpg
-rw-r--r--||1|konet||staff||224027|Jul|28||2013|/kb/books/go/go_strategy/pages/img356.jpg
-rw-r--r--||1|konet||staff||1053658|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img285.jpg
-rw-r--r--||1|konet||staff||336909|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img286.jpg
-rw-r--r--||1|konet||staff||354099|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img287.jpg
-rw-r--r--||1|konet||staff||409400|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img288.jpg
-rw-r--r--||1|konet||staff||417952|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img289.jpg
-rw-r--r--||1|konet||staff||690620|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img290.jpg
-rw-r--r--||1|konet||staff||845711|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img291.jpg
-rw-r--r--||1|konet||staff||1028081|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img292.jpg
-rw-r--r--||1|konet||staff||1126342|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img293.jpg
-rw-r--r--||1|konet||staff||1106874|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img294.jpg
-rw-r--r--||1|konet||staff||1054403|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img295.jpg
-rw-r--r--||1|konet||staff||1120631|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img296.jpg
-rw-r--r--||1|konet||staff||756489|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img297.jpg
-rw-r--r--||1|konet||staff||1084236|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img298.jpg
-rw-r--r--||1|konet||staff||1067948|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img299.jpg
-rw-r--r--||1|konet||staff||979594|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img300.jpg
-rw-r--r--||1|konet||staff||1045182|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img301.jpg
-rw-r--r--||1|konet||staff||901610|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img302.jpg
-rw-r--r--||1|konet||staff||918985|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img303.jpg
-rw-r--r--||1|konet||staff||862420|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img304.jpg
-rw-r--r--||1|konet||staff||886557|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img305.jpg
-rw-r--r--||1|konet||staff||787507|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img306.jpg
-rw-r--r--||1|konet||staff||911463|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img307.jpg
-rw-r--r--||1|konet||staff||965161|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img308.jpg
-rw-r--r--||1|konet||staff||973577|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img309.jpg
-rw-r--r--||1|konet||staff||888001|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img310.jpg
-rw-r--r--||1|konet||staff||786913|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img311.jpg
-rw-r--r--||1|konet||staff||963093|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img312.jpg
-rw-r--r--||1|konet||staff||1189822|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img313.jpg
-rw-r--r--||1|konet||staff||877732|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img314.jpg
-rw-r--r--||1|konet||staff||849270|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img315.jpg
-rw-r--r--||1|konet||staff||963161|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img316.jpg
-rw-r--r--||1|konet||staff||507750|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img317.jpg
-rw-r--r--||1|konet||staff||930132|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img318.jpg
-rw-r--r--||1|konet||staff||862631|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img319.jpg
-rw-r--r--||1|konet||staff||2584516|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img319_rot.jpg
-rw-r--r--||1|konet||staff||907770|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img320.jpg
-rw-r--r--||1|konet||staff||1074018|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img321.jpg
-rw-r--r--||1|konet||staff||985358|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img322.jpg
-rw-r--r--||1|konet||staff||955316|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img323.jpg
-rw-r--r--||1|konet||staff||1048619|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img324.jpg
-rw-r--r--||1|konet||staff||1013385|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img325.jpg
-rw-r--r--||1|konet||staff||1091971|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img326.jpg
-rw-r--r--||1|konet||staff||801231|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img327.jpg
-rw-r--r--||1|konet||staff||845582|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img328.jpg
-rw-r--r--||1|konet||staff||931676|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img329.jpg
-rw-r--r--||1|konet||staff||1068374|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img330.jpg
-rw-r--r--||1|konet||staff||836404|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img331.jpg
-rw-r--r--||1|konet||staff||1002956|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img332.jpg
-rw-r--r--||1|konet||staff||858923|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img333.jpg
-rw-r--r--||1|konet||staff||904910|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img334.jpg
-rw-r--r--||1|konet||staff||905806|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img335.jpg
-rw-r--r--||1|konet||staff||1032145|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img336.jpg
-rw-r--r--||1|konet||staff||927378|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img337.jpg
-rw-r--r--||1|konet||staff||1021816|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img338.jpg
-rw-r--r--||1|konet||staff||1007963|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img339.jpg
-rw-r--r--||1|konet||staff||1087169|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img340.jpg
-rw-r--r--||1|konet||staff||907719|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img341.jpg
-rw-r--r--||1|konet||staff||1017200|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img342.jpg
-rw-r--r--||1|konet||staff||1008372|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img343.jpg
-rw-r--r--||1|konet||staff||904314|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img344.jpg
-rw-r--r--||1|konet||staff||865407|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img345.jpg
-rw-r--r--||1|konet||staff||936444|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img346.jpg
-rw-r--r--||1|konet||staff||1098851|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img347.jpg
-rw-r--r--||1|konet||staff||1136515|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img348.jpg
-rw-r--r--||1|konet||staff||1181254|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img349.jpg
-rw-r--r--||1|konet||staff||826651|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img350.jpg
-rw-r--r--||1|konet||staff||605881|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img351.jpg
-rw-r--r--||1|konet||staff||695558|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img352.jpg
-rw-r--r--||1|konet||staff||166542|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img353.jpg
-rw-r--r--||1|konet||staff||147900|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img354.jpg
-rw-r--r--||1|konet||staff||216814|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img355.jpg
-rw-r--r--||1|konet||staff||224027|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img356.jpg
-rw-r--r--||1|konet||staff||313740|Jul|27||2013|/kb/books/go/go_tesuji/pages/img144.jpg
-rw-r--r--||1|konet||staff||534933|Jul|27||2013|/kb/books/go/go_tesuji/pages/img145.jpg
-rw-r--r--||1|konet||staff||637566|Jul|27||2013|/kb/books/go/go_tesuji/pages/img146.jpg
-rw-r--r--||1|konet||staff||883337|Jul|27||2013|/kb/books/go/go_tesuji/pages/img147.jpg
-rw-r--r--||1|konet||staff||910842|Jul|27||2013|/kb/books/go/go_tesuji/pages/img148.jpg
-rw-r--r--||1|konet||staff||547960|Jul|27||2013|/kb/books/go/go_tesuji/pages/img149.jpg
-rw-r--r--||1|konet||staff||511374|Jul|27||2013|/kb/books/go/go_tesuji/pages/img150.jpg
-rw-r--r--||1|konet||staff||309376|Jul|27||2013|/kb/books/go/go_tesuji/pages/img151.jpg
-rw-r--r--||1|konet||staff||712605|Jul|27||2013|/kb/books/go/go_tesuji/pages/img152.jpg
-rw-r--r--||1|konet||staff||610951|Jul|27||2013|/kb/books/go/go_tesuji/pages/img153.jpg
-rw-r--r--||1|konet||staff||579887|Apr|15||2013|/kb/books/go/go_tesuji/pages/img154.jpg
-rw-r--r--||1|konet||staff||205822|Apr|15||2013|/kb/books/go/go_tesuji/pages/img155.jpg
-rw-r--r--||1|konet||staff||506775|Apr|15||2013|/kb/books/go/go_tesuji/pages/img156.jpg
-rw-r--r--||1|konet||staff||554846|Apr|15||2013|/kb/books/go/go_tesuji/pages/img157.jpg
-rw-r--r--||1|konet||staff||267323|Apr|15||2013|/kb/books/go/go_tesuji/pages/img158.jpg
-rw-r--r--||1|konet||staff||328954|Apr|15||2013|/kb/books/go/go_tesuji/pages/img159.jpg
-rw-r--r--||1|konet||staff||378242|Apr|15||2013|/kb/books/go/go_tesuji/pages/img160.jpg
-rw-r--r--||1|konet||staff||726846|Jul|27||2013|/kb/books/go/go_tesuji/pages/img161.jpg
-rw-r--r--||1|konet||staff||725448|Jul|27||2013|/kb/books/go/go_tesuji/pages/img162.jpg
-rw-r--r--||1|konet||staff||687696|Jul|27||2013|/kb/books/go/go_tesuji/pages/img163.jpg
-rw-r--r--||1|konet||staff||717765|Jul|27||2013|/kb/books/go/go_tesuji/pages/img164.jpg
-rw-r--r--||1|konet||staff||527036|Jul|27||2013|/kb/books/go/go_tesuji/pages/img165.jpg
-rw-r--r--||1|konet||staff||706619|Jul|27||2013|/kb/books/go/go_tesuji/pages/img166.jpg
-rw-r--r--||1|konet||staff||742105|Jul|27||2013|/kb/books/go/go_tesuji/pages/img167.jpg
-rw-r--r--||1|konet||staff||797265|Jul|27||2013|/kb/books/go/go_tesuji/pages/img168.jpg
-rw-r--r--||1|konet||staff||760087|Jul|27||2013|/kb/books/go/go_tesuji/pages/img169.jpg
-rw-r--r--||1|konet||staff||657636|Jul|27||2013|/kb/books/go/go_tesuji/pages/img170.jpg
-rw-r--r--||1|konet||staff||755147|Jul|28||2013|/kb/books/go/go_tesuji/pages/img171.jpg
-rw-r--r--||1|konet||staff||645677|Jul|28||2013|/kb/books/go/go_tesuji/pages/img172.jpg
-rw-r--r--||1|konet||staff||696265|Jul|28||2013|/kb/books/go/go_tesuji/pages/img173.jpg
-rw-r--r--||1|konet||staff||712791|Jul|28||2013|/kb/books/go/go_tesuji/pages/img174.jpg
-rw-r--r--||1|konet||staff||717123|Jul|28||2013|/kb/books/go/go_tesuji/pages/img175.jpg
-rw-r--r--||1|konet||staff||652155|Jul|28||2013|/kb/books/go/go_tesuji/pages/img176.jpg
-rw-r--r--||1|konet||staff||813062|Jul|28||2013|/kb/books/go/go_tesuji/pages/img177.jpg
-rw-r--r--||1|konet||staff||685220|Jul|28||2013|/kb/books/go/go_tesuji/pages/img178.jpg
-rw-r--r--||1|konet||staff||599655|Jul|28||2013|/kb/books/go/go_tesuji/pages/img179.jpg
-rw-r--r--||1|konet||staff||621916|Jul|28||2013|/kb/books/go/go_tesuji/pages/img180.jpg
-rw-r--r--||1|konet||staff||511956|Jul|28||2013|/kb/books/go/go_tesuji/pages/img181.jpg
-rw-r--r--||1|konet||staff||510349|Jul|28||2013|/kb/books/go/go_tesuji/pages/img182.jpg
-rw-r--r--||1|konet||staff||755147|Jul|28||2013|/kb/books/go/go_tesuji/pages/img171.jpg
-rw-r--r--||1|konet||staff||645677|Jul|28||2013|/kb/books/go/go_tesuji/pages/img172.jpg
-rw-r--r--||1|konet||staff||696265|Jul|28||2013|/kb/books/go/go_tesuji/pages/img173.jpg
-rw-r--r--||1|konet||staff||712791|Jul|28||2013|/kb/books/go/go_tesuji/pages/img174.jpg
-rw-r--r--||1|konet||staff||717123|Jul|28||2013|/kb/books/go/go_tesuji/pages/img175.jpg
-rw-r--r--||1|konet||staff||652155|Jul|28||2013|/kb/books/go/go_tesuji/pages/img176.jpg
-rw-r--r--||1|konet||staff||813062|Jul|28||2013|/kb/books/go/go_tesuji/pages/img177.jpg
-rw-r--r--||1|konet||staff||685220|Jul|28||2013|/kb/books/go/go_tesuji/pages/img178.jpg
-rw-r--r--||1|konet||staff||599655|Jul|28||2013|/kb/books/go/go_tesuji/pages/img179.jpg
-rw-r--r--||1|konet||staff||621916|Jul|28||2013|/kb/books/go/go_tesuji/pages/img180.jpg
-rw-r--r--||1|konet||staff||511956|Jul|28||2013|/kb/books/go/go_tesuji/pages/img181.jpg
-rw-r--r--||1|konet||staff||510349|Jul|28||2013|/kb/books/go/go_tesuji/pages/img182.jpg`;

//			pagelist_go_len=pagelist_go.length;
//			alert( "BUGS_830 load_pages pagelist_go_len="+pageslist_go_len+" pagelist_go="+pagelist_go );
//			window.pages=pages;
//			alert( "BUGS_840 load_pages pages_len="+pages_len+" window.pages1="+window.pages[1] );
			return( pagelist_go.split("\n") );
			}
		</script>






	<script id="script_load_pagelist_tail">
		function load_pagelist_tail() {
var pagelist_tail = 
`pages/tail/1.jpg
pages/tail/2.jpg
pages/tail/3.jpg
pages/tail/4.jpg
pages/tail/5.jpg
pages/tail/6.jpg
pages/tail/7.jpg
pages/tail/8.jpg
pages/tail/9.jpg
pages/tail/10.jpg
pages/tail/11.jpg
pages/tail/12.jpg
pages/tail/13.jpg
pages/tail/14.jpg
pages/tail/15.jpg
pages/tail/16.jpg`;
			return( pagelist_tail.split("\n"));
			}
		</script>






	<script id="script_load_pages_bugs" >
		var pages = new Array();
		var window.pages = new Array();
		var pages_len = 0;
		var j=0;

		function load_pages_bugs() {
//			alert( "BUGS_850 load_pages_bugs" );
			alert( "BUGS_850 load_pages_bugs pages="+pages );
			var  pages = new Array();
			var pages_len=0;
			var j=0;


			pages[j++] = "-rw-r--r--||1|konet||staff||376756|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img357.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||306856|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img358.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||199193|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img359.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||443996|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img360.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||629176|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img361.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||544038|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img362.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||941797|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img363.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||850031|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img364.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||876319|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img365.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||880519|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img366.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||896620|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img367.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||730786|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img368.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||801242|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img369.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||883588|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img370.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||845856|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img371.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||784457|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img372.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||843127|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img373.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||906461|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img374.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||752928|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img375.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||791260|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img376.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||964508|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img377.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||828964|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img378.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||873941|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img379.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||915688|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img380.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||761790|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img381.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||845370|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img382.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||856490|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img383.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||671068|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img384.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||743307|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img385.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||792125|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img386.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||851995|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img387.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||817621|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img388.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||899107|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img389.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||945623|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img390.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||956754|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img391.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||995889|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img392.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||924368|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img393.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||824827|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img394.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||862378|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img395.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||883043|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img396.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||834414|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img397.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||772918|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img398.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||699001|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img399.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||862577|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img400.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||859470|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img401.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||898820|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img402.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||911795|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img403.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||682827|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img404.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||748989|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img405.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||756089|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img406.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||947742|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img407.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||876865|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img408.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||939929|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img409.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||857484|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img410.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||856924|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img411.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||869657|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img412.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||890809|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img413.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||881101|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img414.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||860242|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img415.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||867133|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img416.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||831861|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img417.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||825595|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img418.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||679496|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img419.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||810751|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img420.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||790732|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img421.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||845998|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img422.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||745726|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img423.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||794258|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img424.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||620484|Jul|26||2013|/kb/books/go/go_attack_defense/pages/index.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||376756|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img357.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||306856|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img358.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||199193|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img359.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||443996|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img360.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||629176|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img361.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||544038|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img362.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||941797|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img363.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||850031|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img364.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||876319|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img365.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||880519|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img366.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||896620|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img367.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||730786|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img368.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||801242|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img369.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||883588|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img370.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||845856|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img371.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||784457|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img372.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||843127|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img373.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||906461|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img374.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||752928|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img375.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||791260|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img376.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||964508|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img377.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||828964|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img378.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||873941|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img379.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||915688|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img380.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||761790|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img381.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||845370|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img382.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||856490|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img383.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||671068|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img384.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||743307|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img385.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||792125|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img386.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||851995|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img387.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||817621|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img388.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||899107|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img389.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||945623|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img390.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||956754|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img391.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||995889|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img392.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||924368|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img393.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||824827|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img394.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||862378|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img395.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||883043|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img396.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||834414|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img397.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||772918|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img398.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||699001|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img399.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||862577|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img400.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||859470|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img401.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||898820|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img402.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||911795|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img403.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||682827|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img404.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||748989|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img405.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||756089|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img406.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||947742|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img407.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||876865|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img408.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||939929|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img409.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||857484|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img410.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||856924|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img411.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||869657|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img412.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||890809|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img413.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||881101|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img414.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||860242|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img415.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||867133|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img416.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||831861|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img417.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||825595|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img418.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||679496|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img419.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||810751|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img420.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||790732|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img421.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||845998|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img422.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||745726|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img423.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||794258|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img424.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||620484|Jul|26||2013|/kb/books/go/go_attack_defense/pages/tn/tn_index.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1006441|Jul|26||2013|/kb/books/go/go_basics/pages/img023.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1047128|Jul|26||2013|/kb/books/go/go_basics/pages/img024.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1053967|Jul|26||2013|/kb/books/go/go_basics/pages/img025.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1014446|Jul|26||2013|/kb/books/go/go_basics/pages/img026.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1026767|Jul|26||2013|/kb/books/go/go_basics/pages/img027.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||791176|Jul|26||2013|/kb/books/go/go_basics/pages/img028.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||813175|Jul|26||2013|/kb/books/go/go_basics/pages/img029.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||924714|Jul|26||2013|/kb/books/go/go_basics/pages/img030.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||905403|Jul|26||2013|/kb/books/go/go_basics/pages/img031.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||888119|Jul|26||2013|/kb/books/go/go_basics/pages/img032.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1055638|Jul|26||2013|/kb/books/go/go_basics/pages/img033.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||915998|Jul|26||2013|/kb/books/go/go_basics/pages/img034.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||837152|Jul|26||2013|/kb/books/go/go_basics/pages/img035.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||837128|Jul|26||2013|/kb/books/go/go_basics/pages/img036.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1089939|Jul|26||2013|/kb/books/go/go_basics/pages/img037.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||784389|Jul|26||2013|/kb/books/go/go_basics/pages/img038.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||889289|Jul|26||2013|/kb/books/go/go_basics/pages/img039.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||969966|Jul|26||2013|/kb/books/go/go_basics/pages/img040.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||919829|Jul|26||2013|/kb/books/go/go_basics/pages/img041.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1002672|Jul|26||2013|/kb/books/go/go_basics/pages/img042.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||717797|Jul|26||2013|/kb/books/go/go_basics/pages/img043.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||768692|Jul|26||2013|/kb/books/go/go_basics/pages/img044.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||952072|Jul|26||2013|/kb/books/go/go_basics/pages/img045.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||696825|Jul|26||2013|/kb/books/go/go_basics/pages/img046.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||332310|Jul|26||2013|/kb/books/go/go_basics/pages/img047.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||445300|Jul|26||2013|/kb/books/go/go_basics/pages/img048.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||620484|Jul|26||2013|/kb/books/go/go_basics/pages/img049.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1006441|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img023.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1047128|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img024.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1053967|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img025.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1014446|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img026.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1026767|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img027.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||791176|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img028.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||813175|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img029.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||924714|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img030.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||905403|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img031.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||888119|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img032.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1055638|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img033.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||915998|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img034.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||837152|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img035.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||837128|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img036.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1089939|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img037.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||784389|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img038.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||889289|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img039.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||969966|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img040.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||919829|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img041.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1002672|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img042.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||717797|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img043.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||768692|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img044.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||952072|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img045.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||696825|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img046.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||332310|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img047.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||445300|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img048.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||620484|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img049.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||358516|Jul|26||2013|/kb/books/go/go_equipment/pages/img050.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||516648|Jul|26||2013|/kb/books/go/go_equipment/pages/img051.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||791156|Jul|26||2013|/kb/books/go/go_equipment/pages/img052.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||486725|Jul|26||2013|/kb/books/go/go_equipment/pages/img053.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||948089|Jul|26||2013|/kb/books/go/go_equipment/pages/img054.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1033406|Jul|26||2013|/kb/books/go/go_equipment/pages/img055.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||687569|Jul|26||2013|/kb/books/go/go_equipment/pages/img056.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1065658|Jul|26||2013|/kb/books/go/go_equipment/pages/img057.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||857686|Jul|26||2013|/kb/books/go/go_equipment/pages/img058.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||603590|Apr|14||2013|/kb/books/go/go_equipment/pages/img061.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1374190|Apr|14||2013|/kb/books/go/go_equipment/pages/img062.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||976954|Apr|14||2013|/kb/books/go/go_equipment/pages/img063.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||592214|Apr|14||2013|/kb/books/go/go_equipment/pages/img064.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||390273|Apr|14||2013|/kb/books/go/go_equipment/pages/img065.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1340886|Apr|14||2013|/kb/books/go/go_equipment/pages/img066.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||807810|Apr|14||2013|/kb/books/go/go_equipment/pages/img067.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||537637|Apr|14||2013|/kb/books/go/go_equipment/pages/img068.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||358516|Jul|26||2013|/kb/books/go/go_equipment/pages/tn/tn_img050.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||516648|Jul|26||2013|/kb/books/go/go_equipment/pages/tn/tn_img051.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||791156|Jul|26||2013|/kb/books/go/go_equipment/pages/tn/tn_img052.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||486725|Jul|26||2013|/kb/books/go/go_equipment/pages/tn/tn_img053.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||948089|Jul|26||2013|/kb/books/go/go_equipment/pages/tn/tn_img054.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1033406|Jul|26||2013|/kb/books/go/go_equipment/pages/tn/tn_img055.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||687569|Jul|26||2013|/kb/books/go/go_equipment/pages/tn/tn_img056.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1065658|Jul|26||2013|/kb/books/go/go_equipment/pages/tn/tn_img057.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||857686|Jul|26||2013|/kb/books/go/go_equipment/pages/tn/tn_img058.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||603590|Apr|14||2013|/kb/books/go/go_equipment/pages/tn/tn_img061.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1374190|Apr|14||2013|/kb/books/go/go_equipment/pages/tn/tn_img062.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||976954|Apr|14||2013|/kb/books/go/go_equipment/pages/tn/tn_img063.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||592214|Apr|14||2013|/kb/books/go/go_equipment/pages/tn/tn_img064.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||390273|Apr|14||2013|/kb/books/go/go_equipment/pages/tn/tn_img065.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1340886|Apr|14||2013|/kb/books/go/go_equipment/pages/tn/tn_img066.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||807810|Apr|14||2013|/kb/books/go/go_equipment/pages/tn/tn_img067.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||537637|Apr|14||2013|/kb/books/go/go_equipment/pages/tn/tn_img068.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||964295|Jul|26||2013|/kb/books/go/go_joseki/pages/img070.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||951817|Jul|26||2013|/kb/books/go/go_joseki/pages/img071.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||854354|Jul|26||2013|/kb/books/go/go_joseki/pages/img072.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||904237|Jul|26||2013|/kb/books/go/go_joseki/pages/img073.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||808049|Jul|26||2013|/kb/books/go/go_joseki/pages/img074.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||899297|Jul|26||2013|/kb/books/go/go_joseki/pages/img075.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||907623|Jul|26||2013|/kb/books/go/go_joseki/pages/img076.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||759807|Jul|26||2013|/kb/books/go/go_joseki/pages/img077.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1058618|Jul|26||2013|/kb/books/go/go_joseki/pages/img078.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1097406|Jul|26||2013|/kb/books/go/go_joseki/pages/img079.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1071509|Jul|26||2013|/kb/books/go/go_joseki/pages/img080.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1222293|Jul|26||2013|/kb/books/go/go_joseki/pages/img081.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||809594|Jul|26||2013|/kb/books/go/go_joseki/pages/img082.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||976407|Jul|26||2013|/kb/books/go/go_joseki/pages/img083.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1107226|Jul|26||2013|/kb/books/go/go_joseki/pages/img084.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1026899|Jul|26||2013|/kb/books/go/go_joseki/pages/img085.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1024022|Jul|26||2013|/kb/books/go/go_joseki/pages/img086.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1029782|Jul|26||2013|/kb/books/go/go_joseki/pages/img087.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1051070|Jul|26||2013|/kb/books/go/go_joseki/pages/img088.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||956297|Jul|26||2013|/kb/books/go/go_joseki/pages/img089.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1037967|Jul|26||2013|/kb/books/go/go_joseki/pages/img090.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1019427|Jul|26||2013|/kb/books/go/go_joseki/pages/img091.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1106972|Jul|26||2013|/kb/books/go/go_joseki/pages/img092.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1110897|Jul|26||2013|/kb/books/go/go_joseki/pages/img093.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1073256|Jul|26||2013|/kb/books/go/go_joseki/pages/img094.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||867457|Jul|27||2013|/kb/books/go/go_joseki/pages/img095.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1093950|Jul|27||2013|/kb/books/go/go_joseki/pages/img096.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1215177|Jul|27||2013|/kb/books/go/go_joseki/pages/img097.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1126591|Jul|27||2013|/kb/books/go/go_joseki/pages/img098.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1146058|Jul|27||2013|/kb/books/go/go_joseki/pages/img099.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||998658|Jul|27||2013|/kb/books/go/go_joseki/pages/img100.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||950064|Jul|27||2013|/kb/books/go/go_joseki/pages/img101.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1113709|Jul|27||2013|/kb/books/go/go_joseki/pages/img102.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1073193|Jul|27||2013|/kb/books/go/go_joseki/pages/img103.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||965100|Jul|27||2013|/kb/books/go/go_joseki/pages/img104.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||967947|Jul|27||2013|/kb/books/go/go_joseki/pages/img105.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1053408|Jul|27||2013|/kb/books/go/go_joseki/pages/img106.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1108979|Jul|27||2013|/kb/books/go/go_joseki/pages/img107.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||993497|Jul|27||2013|/kb/books/go/go_joseki/pages/img108.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||970885|Jul|27||2013|/kb/books/go/go_joseki/pages/img109.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1053854|Jul|27||2013|/kb/books/go/go_joseki/pages/img110.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||984744|Jul|27||2013|/kb/books/go/go_joseki/pages/img111.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1053819|Jul|27||2013|/kb/books/go/go_joseki/pages/img112.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1187421|Jul|27||2013|/kb/books/go/go_joseki/pages/img113.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||964581|Jul|27||2013|/kb/books/go/go_joseki/pages/img114.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||978287|Jul|27||2013|/kb/books/go/go_joseki/pages/img115.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||917482|Jul|27||2013|/kb/books/go/go_joseki/pages/img116.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||991987|Jul|27||2013|/kb/books/go/go_joseki/pages/img117.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||898921|Jul|27||2013|/kb/books/go/go_joseki/pages/img118.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1012220|Jul|27||2013|/kb/books/go/go_joseki/pages/img119.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1072925|Jul|27||2013|/kb/books/go/go_joseki/pages/img120.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||872746|Jul|27||2013|/kb/books/go/go_joseki/pages/img121.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||866500|Jul|27||2013|/kb/books/go/go_joseki/pages/img122.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1009773|Jul|27||2013|/kb/books/go/go_joseki/pages/img123.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||968391|Jul|27||2013|/kb/books/go/go_joseki/pages/img124.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||703303|Jul|27||2013|/kb/books/go/go_joseki/pages/img125.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||950503|Jul|27||2013|/kb/books/go/go_joseki/pages/img126.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||998706|Jul|27||2013|/kb/books/go/go_joseki/pages/img127.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||873116|Jul|27||2013|/kb/books/go/go_joseki/pages/img128.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||821432|Jul|27||2013|/kb/books/go/go_joseki/pages/img129.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||825088|Jul|27||2013|/kb/books/go/go_joseki/pages/img130.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||896338|Jul|27||2013|/kb/books/go/go_joseki/pages/img131.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||963585|Jul|27||2013|/kb/books/go/go_joseki/pages/img132.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||983883|Jul|27||2013|/kb/books/go/go_joseki/pages/img133.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||873892|Jul|27||2013|/kb/books/go/go_joseki/pages/img134.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||769739|Jul|27||2013|/kb/books/go/go_joseki/pages/img135.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||713637|Jul|27||2013|/kb/books/go/go_joseki/pages/img136.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||584476|Jul|27||2013|/kb/books/go/go_joseki/pages/img137.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||909033|Jul|27||2013|/kb/books/go/go_joseki/pages/img138.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1022877|Jul|27||2013|/kb/books/go/go_joseki/pages/img139.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||744019|Jul|27||2013|/kb/books/go/go_joseki/pages/img140.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||166301|Jul|27||2013|/kb/books/go/go_joseki/pages/img141.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||404802|Jul|27||2013|/kb/books/go/go_joseki/pages/img142.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||536562|Jul|27||2013|/kb/books/go/go_joseki/pages/img143.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||964295|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img070.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||951817|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img071.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||854354|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img072.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||904237|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img073.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||808049|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img074.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||899297|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img075.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||907623|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img076.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||759807|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img077.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1058618|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img078.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1097406|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img079.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1071509|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img080.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1222293|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img081.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||809594|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img082.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||976407|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img083.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1107226|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img084.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1026899|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img085.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1024022|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img086.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1029782|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img087.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1051070|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img088.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||956297|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img089.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1037967|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img090.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1019427|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img091.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1106972|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img092.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1110897|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img093.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1073256|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img094.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||867457|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img095.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1093950|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img096.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1215177|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img097.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1126591|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img098.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1146058|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img099.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||998658|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img100.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||950064|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img101.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1113709|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img102.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1073193|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img103.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||965100|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img104.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||967947|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img105.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1053408|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img106.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1108979|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img107.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||993497|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img108.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||970885|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img109.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1053854|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img110.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||984744|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img111.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1053819|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img112.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1187421|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img113.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||964581|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img114.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||978287|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img115.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||917482|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img116.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||991987|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img117.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||898921|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img118.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1012220|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img119.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1072925|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img120.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||872746|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img121.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||866500|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img122.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1009773|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img123.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||968391|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img124.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||703303|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img125.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||950503|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img126.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||998706|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img127.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||873116|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img128.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||821432|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img129.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||825088|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img130.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||896338|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img131.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||963585|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img132.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||983883|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img133.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||873892|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img134.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||769739|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img135.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||713637|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img136.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||584476|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img137.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||909033|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img138.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1022877|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img139.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||744019|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img140.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||166301|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img141.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||404802|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img142.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||536562|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img143.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||437291|Jul|28||2013|/kb/books/go/go_middlegame/pages/img183.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||525694|Jul|28||2013|/kb/books/go/go_middlegame/pages/img184.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||653806|Jul|28||2013|/kb/books/go/go_middlegame/pages/img185.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||841874|Jul|28||2013|/kb/books/go/go_middlegame/pages/img186.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||783850|Jul|28||2013|/kb/books/go/go_middlegame/pages/img187.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||759335|Jul|28||2013|/kb/books/go/go_middlegame/pages/img188.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||777431|Jul|28||2013|/kb/books/go/go_middlegame/pages/img189.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||621857|Jul|28||2013|/kb/books/go/go_middlegame/pages/img190.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||621065|Jul|28||2013|/kb/books/go/go_middlegame/pages/img213.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||660424|Jul|28||2013|/kb/books/go/go_middlegame/pages/img214.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||640766|Jul|28||2013|/kb/books/go/go_middlegame/pages/img215.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||701699|Jul|28||2013|/kb/books/go/go_middlegame/pages/img216.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||684817|Jul|28||2013|/kb/books/go/go_middlegame/pages/img217.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||693628|Jul|28||2013|/kb/books/go/go_middlegame/pages/img218.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||652074|Jul|28||2013|/kb/books/go/go_middlegame/pages/img219.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||665520|Jul|28||2013|/kb/books/go/go_middlegame/pages/img220.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||664979|Jul|28||2013|/kb/books/go/go_middlegame/pages/img221.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||420880|Jul|28||2013|/kb/books/go/go_middlegame/pages/img222.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||653179|Jul|28||2013|/kb/books/go/go_middlegame/pages/img223.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||631018|Jul|28||2013|/kb/books/go/go_middlegame/pages/img224.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||614888|Jul|28||2013|/kb/books/go/go_middlegame/pages/img225.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||635578|Jul|28||2013|/kb/books/go/go_middlegame/pages/img226.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||664987|Jul|28||2013|/kb/books/go/go_middlegame/pages/img227.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||494882|Jul|28||2013|/kb/books/go/go_middlegame/pages/img228.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||755517|Jul|28||2013|/kb/books/go/go_middlegame/pages/img229.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||746024|Jul|28||2013|/kb/books/go/go_middlegame/pages/img230.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||740563|Jul|28||2013|/kb/books/go/go_middlegame/pages/img231.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||720673|Jul|28||2013|/kb/books/go/go_middlegame/pages/img232.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||641901|Jul|28||2013|/kb/books/go/go_middlegame/pages/img233.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||681172|Jul|28||2013|/kb/books/go/go_middlegame/pages/img234.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||681621|Jul|28||2013|/kb/books/go/go_middlegame/pages/img235.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||699626|Jul|28||2013|/kb/books/go/go_middlegame/pages/img236.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||692405|Jul|28||2013|/kb/books/go/go_middlegame/pages/img237.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||675217|Jul|28||2013|/kb/books/go/go_middlegame/pages/img238.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||637166|Jul|28||2013|/kb/books/go/go_middlegame/pages/img239.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||638038|Jul|28||2013|/kb/books/go/go_middlegame/pages/img240.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||746258|Jul|28||2013|/kb/books/go/go_middlegame/pages/img241.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||697934|Jul|28||2013|/kb/books/go/go_middlegame/pages/img242.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||680670|Jul|28||2013|/kb/books/go/go_middlegame/pages/img243.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||666127|Jul|28||2013|/kb/books/go/go_middlegame/pages/img244.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||703644|Jul|28||2013|/kb/books/go/go_middlegame/pages/img245.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||674102|Jul|28||2013|/kb/books/go/go_middlegame/pages/img246.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||684526|Jul|28||2013|/kb/books/go/go_middlegame/pages/img247.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||648526|Jul|28||2013|/kb/books/go/go_middlegame/pages/img248.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||728614|Jul|28||2013|/kb/books/go/go_middlegame/pages/img249.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||663415|Jul|28||2013|/kb/books/go/go_middlegame/pages/img250.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||694657|Jul|28||2013|/kb/books/go/go_middlegame/pages/img251.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||673729|Jul|28||2013|/kb/books/go/go_middlegame/pages/img252.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||663575|Jul|28||2013|/kb/books/go/go_middlegame/pages/img253.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||464991|Jul|28||2013|/kb/books/go/go_middlegame/pages/img254.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||756849|Jul|28||2013|/kb/books/go/go_middlegame/pages/img255.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||761547|Jul|28||2013|/kb/books/go/go_middlegame/pages/img256.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||801070|Jul|28||2013|/kb/books/go/go_middlegame/pages/img257.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||739075|Jul|28||2013|/kb/books/go/go_middlegame/pages/img258.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||787189|Jul|28||2013|/kb/books/go/go_middlegame/pages/img259.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||729433|Jul|28||2013|/kb/books/go/go_middlegame/pages/img260.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||793385|Jul|28||2013|/kb/books/go/go_middlegame/pages/img261.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||756141|Jul|28||2013|/kb/books/go/go_middlegame/pages/img262.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||779572|Jul|28||2013|/kb/books/go/go_middlegame/pages/img263.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||759079|Jul|28||2013|/kb/books/go/go_middlegame/pages/img264.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||738282|Jul|28||2013|/kb/books/go/go_middlegame/pages/img265.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||814029|Jul|28||2013|/kb/books/go/go_middlegame/pages/img266.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||833386|Jul|28||2013|/kb/books/go/go_middlegame/pages/img267.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||188285|Jul|28||2013|/kb/books/go/go_middlegame/pages/img268.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||369506|Jul|28||2013|/kb/books/go/go_middlegame/pages/img269.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||384764|Jul|28||2013|/kb/books/go/go_middlegame/pages/img270.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||547382|Jul|28||2013|/kb/books/go/go_middlegame/pages/img271.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||647343|Jul|28||2013|/kb/books/go/go_middlegame/pages/img272.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1070171|Jul|28||2013|/kb/books/go/go_middlegame/pages/img273.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1188408|Jul|28||2013|/kb/books/go/go_middlegame/pages/img274.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||315266|Jul|28||2013|/kb/books/go/go_middlegame/pages/img275.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||299360|Jul|28||2013|/kb/books/go/go_middlegame/pages/img276.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||707195|Jul|28||2013|/kb/books/go/go_middlegame/pages/img277.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||872457|Jul|28||2013|/kb/books/go/go_middlegame/pages/img278.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||959051|Jul|28||2013|/kb/books/go/go_middlegame/pages/img279.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||920879|Jul|28||2013|/kb/books/go/go_middlegame/pages/img280.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||926630|Jul|28||2013|/kb/books/go/go_middlegame/pages/img281.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1034689|Jul|28||2013|/kb/books/go/go_middlegame/pages/img282.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||341434|Jul|25||2013|/kb/books/go/go_middlegame/pages/img283.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1211055|Jul|25||2013|/kb/books/go/go_middlegame/pages/img284.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||437291|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img183.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||525694|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img184.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||653806|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img185.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||841874|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img186.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||783850|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img187.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||759335|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img188.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||777431|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img189.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||621857|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img190.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||621065|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img213.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||660424|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img214.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||640766|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img215.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||701699|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img216.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||684817|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img217.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||693628|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img218.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||652074|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img219.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||665520|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img220.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||664979|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img221.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||420880|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img222.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||653179|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img223.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||631018|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img224.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||614888|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img225.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||635578|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img226.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||664987|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img227.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||494882|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img228.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||755517|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img229.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||746024|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img230.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||740563|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img231.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||720673|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img232.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||641901|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img233.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||681172|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img234.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||681621|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img235.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||699626|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img236.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||692405|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img237.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||675217|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img238.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||637166|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img239.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||638038|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img240.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||746258|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img241.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||697934|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img242.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||680670|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img243.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||666127|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img244.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||703644|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img245.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||674102|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img246.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||684526|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img247.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||648526|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img248.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||728614|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img249.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||663415|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img250.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||694657|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img251.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||673729|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img252.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||663575|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img253.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||464991|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img254.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||756849|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img255.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||761547|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img256.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||801070|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img257.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||739075|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img258.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||787189|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img259.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||729433|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img260.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||793385|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img261.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||756141|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img262.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||779572|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img263.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||759079|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img264.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||738282|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img265.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||814029|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img266.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||833386|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img267.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||188285|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img268.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||369506|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img269.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||384764|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img270.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||547382|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img271.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||647343|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img272.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1070171|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img273.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1188408|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img274.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||315266|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img275.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||299360|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img276.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||707195|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img277.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||872457|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img278.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||959051|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img279.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||920879|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img280.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||926630|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img281.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1034689|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img282.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||341434|Jul|25||2013|/kb/books/go/go_middlegame/pages/tn/tn_img283.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1211055|Jul|25||2013|/kb/books/go/go_middlegame/pages/tn/tn_img284.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1053658|Jul|25||2013|/kb/books/go/go_strategy/pages/img285.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||336909|Jul|25||2013|/kb/books/go/go_strategy/pages/img286.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||354099|Jul|25||2013|/kb/books/go/go_strategy/pages/img287.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||409400|Jul|25||2013|/kb/books/go/go_strategy/pages/img288.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||417952|Jul|25||2013|/kb/books/go/go_strategy/pages/img289.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||690620|Jul|25||2013|/kb/books/go/go_strategy/pages/img290.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||845711|Jul|25||2013|/kb/books/go/go_strategy/pages/img291.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1028081|Jul|25||2013|/kb/books/go/go_strategy/pages/img292.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1126342|Jul|25||2013|/kb/books/go/go_strategy/pages/img293.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1106874|Jul|25||2013|/kb/books/go/go_strategy/pages/img294.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1054403|Jul|25||2013|/kb/books/go/go_strategy/pages/img295.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1120631|Jul|25||2013|/kb/books/go/go_strategy/pages/img296.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||756489|Jul|25||2013|/kb/books/go/go_strategy/pages/img297.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1084236|Jul|25||2013|/kb/books/go/go_strategy/pages/img298.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1067948|Jul|25||2013|/kb/books/go/go_strategy/pages/img299.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||979594|Jul|25||2013|/kb/books/go/go_strategy/pages/img300.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1045182|Jul|25||2013|/kb/books/go/go_strategy/pages/img301.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||901610|Jul|25||2013|/kb/books/go/go_strategy/pages/img302.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||918985|Jul|25||2013|/kb/books/go/go_strategy/pages/img303.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||862420|Jul|25||2013|/kb/books/go/go_strategy/pages/img304.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||886557|Jul|25||2013|/kb/books/go/go_strategy/pages/img305.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||787507|Jul|25||2013|/kb/books/go/go_strategy/pages/img306.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||911463|Jul|25||2013|/kb/books/go/go_strategy/pages/img307.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||965161|Jul|25||2013|/kb/books/go/go_strategy/pages/img308.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||973577|Jul|25||2013|/kb/books/go/go_strategy/pages/img309.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||888001|Jul|25||2013|/kb/books/go/go_strategy/pages/img310.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||786913|Jul|25||2013|/kb/books/go/go_strategy/pages/img311.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||963093|Jul|25||2013|/kb/books/go/go_strategy/pages/img312.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1189822|Jul|25||2013|/kb/books/go/go_strategy/pages/img313.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||877732|Jul|25||2013|/kb/books/go/go_strategy/pages/img314.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||849270|Jul|25||2013|/kb/books/go/go_strategy/pages/img315.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||963161|Jul|25||2013|/kb/books/go/go_strategy/pages/img316.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||507750|Jul|25||2013|/kb/books/go/go_strategy/pages/img317.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||930132|Jul|26||2013|/kb/books/go/go_strategy/pages/img318.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||862631|Jul|26||2013|/kb/books/go/go_strategy/pages/img319.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||2584516|Jul|26||2013|/kb/books/go/go_strategy/pages/img319_rot.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||907770|Jul|26||2013|/kb/books/go/go_strategy/pages/img320.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1074018|Jul|26||2013|/kb/books/go/go_strategy/pages/img321.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||985358|Jul|26||2013|/kb/books/go/go_strategy/pages/img322.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||955316|Jul|26||2013|/kb/books/go/go_strategy/pages/img323.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1048619|Jul|26||2013|/kb/books/go/go_strategy/pages/img324.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1013385|Jul|26||2013|/kb/books/go/go_strategy/pages/img325.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1091971|Jul|26||2013|/kb/books/go/go_strategy/pages/img326.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||801231|Jul|26||2013|/kb/books/go/go_strategy/pages/img327.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||845582|Jul|26||2013|/kb/books/go/go_strategy/pages/img328.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||931676|Jul|26||2013|/kb/books/go/go_strategy/pages/img329.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1068374|Jul|26||2013|/kb/books/go/go_strategy/pages/img330.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||836404|Jul|26||2013|/kb/books/go/go_strategy/pages/img331.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1002956|Jul|26||2013|/kb/books/go/go_strategy/pages/img332.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||858923|Jul|26||2013|/kb/books/go/go_strategy/pages/img333.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||904910|Jul|26||2013|/kb/books/go/go_strategy/pages/img334.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||905806|Jul|28||2013|/kb/books/go/go_strategy/pages/img335.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1032145|Jul|28||2013|/kb/books/go/go_strategy/pages/img336.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||927378|Jul|28||2013|/kb/books/go/go_strategy/pages/img337.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1021816|Jul|28||2013|/kb/books/go/go_strategy/pages/img338.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1007963|Jul|28||2013|/kb/books/go/go_strategy/pages/img339.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1087169|Jul|28||2013|/kb/books/go/go_strategy/pages/img340.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||907719|Jul|28||2013|/kb/books/go/go_strategy/pages/img341.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1017200|Jul|28||2013|/kb/books/go/go_strategy/pages/img342.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1008372|Jul|28||2013|/kb/books/go/go_strategy/pages/img343.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||904314|Jul|28||2013|/kb/books/go/go_strategy/pages/img344.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||865407|Jul|28||2013|/kb/books/go/go_strategy/pages/img345.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||936444|Jul|28||2013|/kb/books/go/go_strategy/pages/img346.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1098851|Jul|28||2013|/kb/books/go/go_strategy/pages/img347.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1136515|Jul|28||2013|/kb/books/go/go_strategy/pages/img348.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1181254|Jul|28||2013|/kb/books/go/go_strategy/pages/img349.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||826651|Jul|28||2013|/kb/books/go/go_strategy/pages/img350.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||605881|Jul|28||2013|/kb/books/go/go_strategy/pages/img351.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||695558|Jul|28||2013|/kb/books/go/go_strategy/pages/img352.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||166542|Jul|28||2013|/kb/books/go/go_strategy/pages/img353.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||147900|Jul|28||2013|/kb/books/go/go_strategy/pages/img354.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||216814|Jul|28||2013|/kb/books/go/go_strategy/pages/img355.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||224027|Jul|28||2013|/kb/books/go/go_strategy/pages/img356.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1053658|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img285.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||336909|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img286.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||354099|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img287.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||409400|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img288.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||417952|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img289.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||690620|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img290.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||845711|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img291.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1028081|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img292.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1126342|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img293.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1106874|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img294.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1054403|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img295.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1120631|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img296.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||756489|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img297.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1084236|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img298.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1067948|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img299.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||979594|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img300.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1045182|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img301.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||901610|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img302.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||918985|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img303.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||862420|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img304.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||886557|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img305.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||787507|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img306.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||911463|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img307.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||965161|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img308.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||973577|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img309.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||888001|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img310.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||786913|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img311.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||963093|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img312.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1189822|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img313.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||877732|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img314.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||849270|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img315.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||963161|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img316.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||507750|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img317.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||930132|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img318.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||862631|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img319.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||2584516|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img319_rot.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||907770|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img320.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1074018|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img321.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||985358|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img322.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||955316|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img323.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1048619|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img324.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1013385|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img325.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1091971|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img326.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||801231|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img327.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||845582|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img328.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||931676|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img329.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1068374|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img330.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||836404|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img331.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1002956|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img332.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||858923|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img333.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||904910|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img334.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||905806|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img335.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1032145|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img336.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||927378|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img337.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1021816|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img338.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1007963|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img339.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1087169|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img340.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||907719|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img341.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1017200|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img342.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1008372|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img343.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||904314|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img344.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||865407|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img345.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||936444|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img346.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1098851|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img347.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1136515|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img348.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1181254|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img349.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||826651|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img350.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||605881|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img351.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||695558|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img352.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||166542|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img353.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||147900|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img354.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||216814|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img355.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||224027|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img356.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||313740|Jul|27||2013|/kb/books/go/go_tesuji/pages/img144.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||534933|Jul|27||2013|/kb/books/go/go_tesuji/pages/img145.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||637566|Jul|27||2013|/kb/books/go/go_tesuji/pages/img146.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||883337|Jul|27||2013|/kb/books/go/go_tesuji/pages/img147.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||910842|Jul|27||2013|/kb/books/go/go_tesuji/pages/img148.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||547960|Jul|27||2013|/kb/books/go/go_tesuji/pages/img149.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||511374|Jul|27||2013|/kb/books/go/go_tesuji/pages/img150.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||309376|Jul|27||2013|/kb/books/go/go_tesuji/pages/img151.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||712605|Jul|27||2013|/kb/books/go/go_tesuji/pages/img152.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||610951|Jul|27||2013|/kb/books/go/go_tesuji/pages/img153.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||579887|Apr|15||2013|/kb/books/go/go_tesuji/pages/img154.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||205822|Apr|15||2013|/kb/books/go/go_tesuji/pages/img155.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||506775|Apr|15||2013|/kb/books/go/go_tesuji/pages/img156.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||554846|Apr|15||2013|/kb/books/go/go_tesuji/pages/img157.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||267323|Apr|15||2013|/kb/books/go/go_tesuji/pages/img158.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||328954|Apr|15||2013|/kb/books/go/go_tesuji/pages/img159.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||378242|Apr|15||2013|/kb/books/go/go_tesuji/pages/img160.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||726846|Jul|27||2013|/kb/books/go/go_tesuji/pages/img161.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||725448|Jul|27||2013|/kb/books/go/go_tesuji/pages/img162.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||687696|Jul|27||2013|/kb/books/go/go_tesuji/pages/img163.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||717765|Jul|27||2013|/kb/books/go/go_tesuji/pages/img164.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||527036|Jul|27||2013|/kb/books/go/go_tesuji/pages/img165.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||706619|Jul|27||2013|/kb/books/go/go_tesuji/pages/img166.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||742105|Jul|27||2013|/kb/books/go/go_tesuji/pages/img167.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||797265|Jul|27||2013|/kb/books/go/go_tesuji/pages/img168.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||760087|Jul|27||2013|/kb/books/go/go_tesuji/pages/img169.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||657636|Jul|27||2013|/kb/books/go/go_tesuji/pages/img170.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||755147|Jul|28||2013|/kb/books/go/go_tesuji/pages/img171.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||645677|Jul|28||2013|/kb/books/go/go_tesuji/pages/img172.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||696265|Jul|28||2013|/kb/books/go/go_tesuji/pages/img173.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||712791|Jul|28||2013|/kb/books/go/go_tesuji/pages/img174.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||717123|Jul|28||2013|/kb/books/go/go_tesuji/pages/img175.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||652155|Jul|28||2013|/kb/books/go/go_tesuji/pages/img176.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||813062|Jul|28||2013|/kb/books/go/go_tesuji/pages/img177.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||685220|Jul|28||2013|/kb/books/go/go_tesuji/pages/img178.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||599655|Jul|28||2013|/kb/books/go/go_tesuji/pages/img179.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||621916|Jul|28||2013|/kb/books/go/go_tesuji/pages/img180.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||511956|Jul|28||2013|/kb/books/go/go_tesuji/pages/img181.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||510349|Jul|28||2013|/kb/books/go/go_tesuji/pages/img182.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||313740|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img144.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||534933|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img145.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||637566|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img146.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||883337|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img147.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||910842|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img148.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||547960|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img149.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||511374|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img150.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||309376|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img151.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||712605|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img152.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||610951|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img153.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||579887|Apr|15||2013|/kb/books/go/go_tesuji/pages/tn/tn_img154.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||205822|Apr|15||2013|/kb/books/go/go_tesuji/pages/tn/tn_img155.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||506775|Apr|15||2013|/kb/books/go/go_tesuji/pages/tn/tn_img156.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||554846|Apr|15||2013|/kb/books/go/go_tesuji/pages/tn/tn_img157.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||267323|Apr|15||2013|/kb/books/go/go_tesuji/pages/tn/tn_img158.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||328954|Apr|15||2013|/kb/books/go/go_tesuji/pages/tn/tn_img159.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||378242|Apr|15||2013|/kb/books/go/go_tesuji/pages/tn/tn_img160.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||726846|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img161.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||725448|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img162.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||687696|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img163.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||717765|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img164.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||527036|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img165.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||706619|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img166.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||742105|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img167.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||797265|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img168.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||760087|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img169.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||657636|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img170.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||755147|Jul|28||2013|/kb/books/go/go_tesuji/pages/tn/tn_img171.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||645677|Jul|28||2013|/kb/books/go/go_tesuji/pages/tn/tn_img172.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||696265|Jul|28||2013|/kb/books/go/go_tesuji/pages/tn/tn_img173.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||712791|Jul|28||2013|/kb/books/go/go_tesuji/pages/tn/tn_img174.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||717123|Jul|28||2013|/kb/books/go/go_tesuji/pages/tn/tn_img175.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||652155|Jul|28||2013|/kb/books/go/go_tesuji/pages/tn/tn_img176.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||813062|Jul|28||2013|/kb/books/go/go_tesuji/pages/tn/tn_img177.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||685220|Jul|28||2013|/kb/books/go/go_tesuji/pages/tn/tn_img178.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||599655|Jul|28||2013|/kb/books/go/go_tesuji/pages/tn/tn_img179.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||621916|Jul|28||2013|/kb/books/go/go_tesuji/pages/tn/tn_img180.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||511956|Jul|28||2013|/kb/books/go/go_tesuji/pages/tn/tn_img181.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||510349|Jul|28||2013|/kb/books/go/go_tesuji/pages/tn/tn_img182.jpg";

			pages_len = pages.length;
			alert( "BUGS_1611 lslat_kb_books_go.js pages="+pages+" pages_len="+pages_len );
//			alert( "BUGS_1612 lslat_kb_books_go.js window.pages="+window.pages );
			return( pages );
			}
			</script>

	<script id="script_thumbnails">
		function load_thumbnails(pages) {
			alert( "BUGS_2500 load_thumbnails" );
//			var pages = new Array();
			var pages_len = 0;
			var j = 0; var k=0;
			var htmout = "";
//			pages = load_pages();
			pages_len = pages.length;
			j=1;
			htmout += '<ul>';
			htmout += '<li class="i">';
			htmout += '	<img src="pages/tn/tn_'+j+'.png" width="76" height="100" class="page-1">';
			htmout += ' <span>1</span>';
			htmout += '	</li>';

			for( j = 2; j<pages_len; j=j+2 ) {
				k=j+1;
				htmout += '<li class="d">';
				htmout += '<img src="pages/tn/tn_'+j+'.png" width="76" height="100" class="page-2">';
				htmout += '<img src="pages/tn/tn_'+k+'.png" width="76" height="100" class="page-3">';
				htmout += '<span>'+j+"-"+k+'</span>';
				htmout += '</li>';
				}

			htmout += '<li class="i">';
			htmout += '	<img src="pages/tn/tn_'+j+'.png" width="76" height="100" class="page-'+j+'">';
			htmout += '	<span>'+j+'</span>';
			htmout += '	</li>';
			htmout += '<ul>';
			alert( "BUGS_2432 htmout="+htmout );

			var div_thumbnails = document.getElementById('div_thumbnails');
			div_thumbnails.innerHTML = htmout;
			return(htmout);
			}
		</script>


		<script id="script_random_int" >
			function random_int(max,min) {
				min = Math.ceil(min);
				max = Math.floor(max);
				return Math.floor(Math.random() * (max - min + 1)) + min;	
				}

//			random_kolink()
			</script>

		<script id="script_random_imglnk">
			function random_imglink(){
				var myimgs=new Array()
//specify random imgs below. You can have as many as you wish
				myimgs[1]="/imgs/bg/bg_frax_ribbon.jpg"
				myimgs[2]="/imgs/bg/bg_frax_thorn.jpg"
				myimgs[3]="/imgs/bg/bg_newton05b.jpg"
				myimgs[4]="/imgs/bg/bg_frax_thorn.jpg"
				myimgs[5]="/imgs/bg/bg_frax_thorn.jpg"
				myimgs[6]="/imgs/bg/bg_newton04bw.gif"
				myimgs[7]="/imgs/bg/bg_newton05b.png"
				myimgs[8]="/imgs/bg/bg_newton05b.png"
				myimgs[9]="/imgs/bg/bg_newton05b.png"

				var ry=Math.floor(Math.random()*myimgs.length)
				if (ry==0) ry=1
				document.write('<img src="'+myimgs[ry]+'" border=0 height=200>')
				}
//			random_imglink()
//			random_imglink()
//			random_imglink()
			</script>'





	<script id="script_startup">
		function startup1(args) {
//			var href=window.location.href;
//			alert( "BUGS_2580 script_startup href="+href );
//			var host=window.location.host;
//			var pathname=window.location.pathname;
//			var search=window.location.search;
//			url_default="fb.json";
//			alert( "BUGS_2591 url_default="+url_default );
//			var replaced =  pathname.replace(/(^\.+|\.+$)/mg, '');
//			if( pathname.endsWith(".htm")) {
//			url_default=pathname.replace(".html",".json" );
//			alert( "BUGS_2595 url_default="+url_default );
			}
		else {
			url_default=pathname.replace(".html",".php" );
//			alert( "BUGS_2596 url_default="+url_default );
			}
		url=url_default;
// bugs		if( search.search("?")) {
// bugs			url=search.replace("?","");
// bugs			}

//			alert( "BUGS_2600 href="+href+" url="+url );
			}
		</script>
		

	<script id="script_startup_fb" >
		var pagelist = new Array();
		var pagelist_len = 0;
		var ajaks = "";
		var j = 0;

		var pagelist_default = new Array();
		var pagelist_head = new Array();
		var pagelist_pages = new Array();
		var pagelist_imgs = new Array();
		var pagelist_i = new Array();
		var pagelist_go = new Array();
		var pagelist_tail = new Array();
		var pagelist_ajax = new Array();
	
		var pagelist_default_len = pagelist_default.length;
		var pagelist_head_len = pagelist_head.length;
		var pagelist_pages_len =  pagelist_pages.length;
		var pagelist_imgs_len =  pagelist_imgs.length;
		var pagelist_i_len =  pagelist_i.length;
		var pagelist_go_len =  pagelist_go.length;
		var pagelist_tail_len =  pagelist_tail.length;
		var pagelist_ajax_len =  pagelist_ajax.length;
	
//		alert( "BUGS_3001 pagelist_default_len="+pagelist_default_len+" pagelist_default="+pagelist_default );
//		alert( "BUGS_3002 pagelist_head_len="+pagelist_head_len+" pagelist_head="+pagelist_head );
//		alert( "BUGS_3003 pagelist_pages_len="+pagelist_pages_len+" pagelist_pages="+pagelist_pages );
//		alert( "BUGS_3004 pagelist_imgs_len="+pagelist_imgs_len+" pagelist_imgs="+pagelist_imgs );
//		alert( "BUGS_3005 pagelist_i_len="+pagelist_i_len+" pagelist_i="+pagelist_i );
//		alert( "BUGS_3006 pagelist_go_len="+pagelist_go_len+" pagelist_go="+pagelist_go );
//		alert( "BUGS_3007 pagelist_tail_len="+pagelist_tail_len+" pagelist_tail="+pagelist_tail );
//		alert( "BUGS_3008 pagelist_ajaks_len="+pagelist_ajaks_len+" pagelist_ajaks="+pagelist_ajaks );

		function startup_fb(args) {
			jaxurl=args;
			alert( "BUGS_6800 startup1 args="+args );
			var jaxurl_default="fb.txt";
			if(linkcheck(jaxurl)) {
				alert( "BUGS_6811 ___FOUND jaxurl="+jaxurl );
			else  {
				alert( "BUGS_6811 NOTFOUND jaxurl="+jaxurl );
				}
//			var href = window.location.href;
//			alert( "BUGS_2620 startup href="+href );
//			var pagelist = new Array();
//			var pagelist_len=0;
//			var ajaks = "";
			var j = 0;
			var htmout = "";


			pagelist = load_pagelist();
			pagelist_len=pagelist.length;
//			alert( "BUGS_3100 pagelist_len="+pagelist_len+" pagelist="+pagelist);

			pagelist_head = load_pagelist_head();
			pagelist_head_len = pagelist_head.length;
//			alert( "BUGS_3101 pagelist_head_len="+pagelist_head_len+" pagelist_head="+pagelist_head );

			pagelist_pages = load_pagelist_pages();
			pagelist_pages_len = pagelist_pages.length;
//			alert( "BUGS_3102 pagelist_pages_len="+pagelist_pages_len+" pagelist_pages="+pagelist_pages );

			pagelist_imgs = load_pagelist_imgs();
			pagelist_imgs_len = pagelist_imgs.length;
//			alert( "BUGS_3103 pagelist_imgs_len="+pagelist_imgs_len+" pagelist_imgs="+pagelist_imgs );

			pagelist_i = load_pagelist_i();
			pagelist_i_len = pagelist_i.length;
//			alert( "BUGS_3104 pagelist_i_len="+pagelist_i_len+" pagelist_i="+pagelist_i );

			pagelist_go = load_pagelist_go();
			pagelist_go_len = pagelist_go.length;
//			alert( "BUGS_3105 pagelist_go_len="+pagelist_go_len+" pagelist_go="+pagelist_go );

			pagelist_tail = load_pagelist_tail();
			pagelist_tail_len = pagelist_tail.length;
//			alert( "BUGS_3106 pagelist_tail_len="+pagelist_tail_len+" pagelist_tail="+pagelist_tail );

			var pagelist_ajaks = new Array();
			var pagelist_ajaks_len = 0;
			var ajaks="fb.txt";
//			alert( "BUGS_3107a ajaks="+ajaks );
//			pagelist_ajaks = load_pagelist_ajaks(ajaks);
//			alert( "BUGS_3107b ajaks="+ajaks );
//			pagelist_ajaks_len = pagelist_ajaks.length;
//			alert( "BUGS_3107c pagelist_ajaks_len="+pagelist_ajaks_len+" pagelist_ajaks="+pagelist_ajaks );

//			pagelist = pagelist.concat( pagelist_head );
//			pagelist = pagelist.concat( pagelist_pages );
//			pagelist = pagelist.concat( pagelist_imgs );
//			pagelist = pagelist.concat( pagelist_i );
//			pagelist = pagelist.concat( pagelist_go );
//			pagelist = pagelist.concat( pagelist_tail );
//			pagelist = pagelist.concat( pagelist_ajaks );
//			pagelist = pagelist_head.concat(pagelist_go, pagelist_pages,pagelist_imgs,pagelist_i,pagelist_go,pagelist_tail );
			pagelist = pagelist_go;
			pagelist = pagelist_pages;
			pagelist = pagelist_imgs;
			pagelist_len=pagelist.length;

//			alert( "BUGS_3200 pagelist_len="+pagelist_len+" pagelist="+pagelist);
//			alert( "BUGS_2577 startup pages_len="+pages_len );
//			load_thumbnails(pages);
//			html_tn(pages);
//			alert( "BUGS_2588 startup htmout="+htmout );
//			alert( "BUGS_2581 startup pages_len="+pages_len+"  pages="+pages );
//			window.pages = pages;
//			alert( "BUGS_1650 startup pages_len="+pages_len+"  window.pages="+window.pages );
			return("");
		</script>

	<script id="script_html_tn" >
		function html_tn(pagelist) {
			var pagelist_len = 0;
			var j = 0; var k=0;
			var htmout = "";
//			pagelist = load_pagelist();
			pagelist_len = pagelist.length;
			j=1;
			htmout += '<ul>';
			htmout += '<li class="i">';
			htmout += '	<img src="pages/tn/tn_'+j+'.png" width="76" height="100" class="page-1">';
			htmout += ' <span>1</span>';
			htmout += '	</li>';

//			for( j = 2; j<pagelist_len; j=j+2 ) {
			for( j = 2; j<600; j=j+2 ) {
				k=j+1;
				htmout += '<li class="d">';
				htmout += '<img src="pages/tn/tn_'+j+'.png" width="76" height="100" class="page-2">';
				htmout += '<img src="pages/tn/tn_'+k+'.png" width="76" height="100" class="page-3">';
				htmout += '<span>'+j+"-"+k+'</span>';
				htmout += '</li>';
				}

			htmout += '<li class="i">';
			htmout += '	<img src="pages/tn/tn_'+j+'.png" width="76" height="100" class="page-'+j+'">';
			htmout += '	<span>'+j+'</span>';
			htmout += '	</li>';
			htmout += '<ul>';
//			alert( "BUGS_2432 htmout="+htmout );

//			var div_tn = document.getElementById('div_tn');
//			div_tn.innerHTML = htmout;

//			alert( "BUGS_2600 html_tn pages_len="+pages_len+" htmout="+htmout );
//			var div_tn = document.getElementbyID("div_tn");
//			document.getElementById('div_tn').insertAdjacentHTML("beforebegin", htmout )
//			div_tn.insertAdjacentHTML('beforeend', htmout);
//			document.write(htmout);
			return(htmout);
			}
		</script>

	<script id="script_utils">
		var execTest = function (str) {
			return /([^\\]+)$/.exec(str)[1];
			}
		var splitTest = function (str) {
			return str.split('\\').pop().split('/').pop();
			}
		</script>




	<style id="style_body_scroll">
		body{ overflow-y:scroll; }
		</style>

	<script id="script_filecheck" >
		function filecheck(url) {
			if(url) {
				var req = new XMLHttpRequest();
				req.open('GET', url, false);
				req.send();
				return req.status==200;
				} 
			else {
				return false;
				}
			}
		</script>

	<script id="script_imgcheck" >
		function imgcheck(url) {
			var img = new Image();
			img.src = url;
			return img.height != 0;
			}
		</script>

	<script id="script_linkcheck" >
		function linkcheck(url) {
			var http = new XMLHttpRequest();
			http.open('HEAD', url, false);
			http.send();
			return http.status!=404;
			}
		</script>

	<script id="script_urlexists" >
		function UrlExists(url) {
			var http = new XMLHttpRequest();
			http.open('HEAD', url, false);
			http.send();
			return http.status!=404;
			}
		</script>

		<script id="script_jax1" >
			function jax1(url) {
				alert( "MSG_11970 jax1 url="+url );
				return("jax1\njax2\njax3" );
				}
			</script>	

		<script id="script_jax2" >
//			function jax2(jaxurl) {
//				alert( "BUGS_12360 jax jaxurl="+jaxurl );
//				$.ajax({
//					url: jaxurl,
//					context: document.body,
//					success: function(responseText) {
//						alert( "BUGS_12661 jax len="+responseText.split("\n").length+"  responseText="+responseText );
////						kolists['jax'] = responseText;
//						alert( "BUGS_12667 jax kolists_jtfdcr="+kolists['jtfdcr'] );
//						}
//					});
//				}
			</script>

	<script id="script_kolists" type="text/javascript">
			var kolists = new Array();
			var divids = "";
//		`	kolists[''] = '';
			divids = 'alloff toggle allon <br> hl av bb dd fb fs pn sl <br> tl tm us yt zm <br> jtfdcr jtfdc jtfinc <br> head body memes kov tail <br> pdfs media cards oklahoma turbulence us2 edu hoa law tclaw zpid fb_law postturtle_monkeytrap soul_lewis';
//			divids = 'alloff toggle allon <br> hl av bb dd fb fs pn sl <br> tl tm us yt zm <br> jtfdcr jtfdc jtfinc <br> head body memes kov tail';
			kolists['divids'] = divids;
//			kolists['divids'] = 'alloff toggle allon <br> hl av bb dd fb fs pn sl tl tm yt zm <br> jtfdcr jtfdc jtfinc <br> head body memes kov tail';
			 
			kolists['default'] = 'pages/1.jpg\npages/2.jpg\npages/3.jpg';
			kolists['jax'] = 'jax/pages/1.jpg\njax/pages/2.jpg\njax/pages/3.jpg';
//			kolists['jax'] = kolists['default'];
			kolists['fb'] = '/fb/pages/1.jpg\n/fb/pages/2.jpg\n/fb/pages/3.jpg';
			kolists['av'] = '/fb/pages/2.jpg\n/fb/jtfdcr/pages/2.jpg\n/fb/jtfdcr/pages/3.jpg';
			kolists['pn'] = '/fb/pages/3.jpg\n/fb/jtfdcr/pages/2.jpg\n/fb/jtfdcr/pages/3.jpg';
			kolists['sl'] = '/fb/pages/4.jpg\n/fb/jtfdcr/pages/2.jpg\n/fb/jtfdcr/pages/3.jpg';
			kolists['tl'] = '/fb/pages/5.jpg\n/fb/jtfdcr/pages/2.jpg\n/fb/jtfdcr/pages/3.jpg';
			kolists['us'] = 'us|link\nus0|uslink0\nus1|uslink1\nus2|uslink2\nus3|uslink3';
			kolists['yt'] = '/fb/pages/6.jpg\n/fb/jtfdcr/pages/2.jpg\n/fb/jtfdcr/pages/3.jpg';
//			kolists['zm'] = '/fb/pages/7.jpg\n/fb/jtfdcr/pages/2.jpg\n/fb/jtfdcr/pages/3.jpg';
			kolists['konet'] = '/fb/konet/pages/1.jpg\n/fb/konet/pages/2.jpg\n/fb/konet/pages/3.jpg';
			kolists['iperms'] = '/fb/iperms/pages/1.jpg\n/fb/iperms/pages/2.jpg\n/fb/iperms/pages/3.jpg';
			kolists['jtfdcr'] = '/fb/jtfdcr/pages/1.jpg\n/fb/jtfdcr/pages/2.jpg\n/fb/jtfdcr/pages/3.jpg';

kolists['imgs_jukebox'] = 
`/imgs/imgs_jukebox/giphy_us_20.gif
/imgs/imgs_jukebox/jukebox_00.jpg
/imgs/imgs_jukebox/jukebox_01.jpg
/imgs/imgs_jukebox/jukebox_02.jpg
/imgs/imgs_jukebox/jukebox_03.jpg
/imgs/imgs_jukebox/jukebox_05.jpg
/imgs/imgs_jukebox/jukebox_06.jpg
/imgs/imgs_jukebox/jukebox_07.jpg
/imgs/imgs_jukebox/jukebox_08.jpg
/imgs/imgs_jukebox/jukebox_10.jpg
/imgs/imgs_jukebox/jukebox_12.jpg
/imgs/imgs_jukebox/jukebox_14.jpg
/imgs/imgs_jukebox/jukebox_20.gif
/imgs/imgs_jukebox/jukebox_shuttle.gif
/imgs/imgs_jukebox/jukebox_vintage.gif
/imgs/imgs_jukebox/radio02.jpg
/imgs/imgs_jukebox/radio03.jpg
/imgs/imgs_jukebox/radio04.jpg
/imgs/imgs_jukebox/radio06.jpg
/imgs/imgs_jukebox/radio08.jpg
/imgs/imgs_jukebox/radio09.jpg
/imgs/imgs_jukebox/radio10.jpg
/imgs/imgs_jukebox/radio_wave.gif
/imgs/imgs_jukebox/radiowave2.gif
/imgs/imgs_jukebox/record_01.gif
/imgs/imgs_jukebox/record_02.gif
/imgs/imgs_jukebox/record_03.gif
/imgs/imgs_jukebox/record_04.gif
/imgs/imgs_jukebox/record_05.gif
/imgs/imgs_jukebox/record_06.gif
/imgs/imgs_jukebox/record_08.gif
/imgs/imgs_jukebox/record_089gif.gif
/imgs/imgs_jukebox/records_bins.gif
`;	

kolists['blob_img_default'] = `/fb/jtfdc/imgs/tn_jtfdc_sawhorse`;


kolists['blobs'] = 
`ka12|wheat|burlywood|brown|50|/yt/imgs/yt_quinn.png
ka21|yellow|orange|pink|25|/yt/imgs/yt_polly.png
ko0|pink|yellow|red|1|/yt/imgs/yt_paityn.png
ko1|brown|tan|black|2|/yt/imgs/yt_black.png
ko2|tan|brown|white|3|/yt/imgs/yt_carter.png
paityn|#ff2c55|#a0ddff|#ff70a6|10|/yt/imgs/yt_quinn.png|#3bc14a
carter|#8eedf7|#a1cdf1|#9d695a|05|/yt/imgs/yt_quinn.png|orange
jenna|#f05363|#6ef9f5|#8f3985|05|/yt/imgs/yt_quinn.png|#efd9ce
blake|#61a0af|#7dce82|#ff8360|05|/yt/imgs/yt_quinn.png|#daffef
josh|#ef626c|#61e786|#990033|10|/yt/imgs/yt_quinn.png|#edffec
stacey|#63ccca|#ff86c8|#23c0f9|10|/yt/imgs/yt_quinn.png|45f0df
iperms|wheat|burlywood|brown|50|/yt/imgs/yt_quinn.png
iperms|wheat|burlywood|brown|50|/yt/imgs/yt_quinn.png
iperms|wheat|burlywood|brown|50|/yt/imgs/yt_quinn.png
iperms|wheat|burlywood|brown|50|/yt/imgs/yt_quinn.png
konet|linen|darkslategray|gray|50|/imgs/btn/btn_501law.png
law|linen|darkslategray|gray|10|/imgs/btn/btn_501law.png
law_sl|linen|darkslategray|gray|20|/imgs/btn/btn_law_sl.png
law_tc|linen|darkslategray|gray|20|/imgs/btn/btn_law_tc.png
law_tc_kk|linen|darkslategray|gray|50|/imgs/btn/btn_law_tc_kk.png
law_tc_db|linen|darkslategray|gray|50|/imgs/btn/btn_law_tc_db.png
med_kaytel|linen|darkslategray|gray|50|/imgs/btn/btn_med_kaytel.png
med_lele|linen|darkslategray|gray|50|/imgs/btn/btn_med_lele.png
# /imgs/btn/btn_501law.png
# /imgs/btn/btn_dolleylaw.png
# /imgs/btn/btn_paityn.png
# /imgs/btn/btn_carter.png
# /imgs/btn/btn_blake.png
jkwii|blue|red|black|5|/imgs/btn/btn_jkwii.png
skwii|blue|red|black|5|/imgs/btn/btn_skwii.png
jak1|blue|red|black|5|/imgs/btn/btn_jak1.png
jak2|blue|red|black|5|/imgs/btn/btn_jak2.png
jak3|blue|red|black|5|/imgs/btn/btn_jak3.png
`;



kolists['blobs_orig'] = 
`ka12|wheat|burlywood|brown|50|/yt/imgs/yt_quinn.png
ka21|yellow|orange|pink|25|/yt/imgs/yt_polly.png
ko0|pink|yellow|red|1|/yt/imgs/yt_paityn.png
ko1|brown|tan|black|2|/yt/imgs/yt_black.png
ko2|tan|brown|white|3|/yt/imgs/yt_carter.png
iperms|wheat|burlywood|brown|50|/yt/imgs/yt_quinn.png
konet|linen|darkslategray|gray|50|/imgs/btn/btn_501law.png
law|linen|darkslategray|gray|10|/imgs/btn/btn_501law.png
law_tc|linen|darkslategray|gray|20|/imgs/btn/btn_501law.png
law_tc_kk|linen|darkslategray|gray|50|/imgs/btn/btn_501law.png
# /imgs/btn/btn_501law.png
# /imgs/btn/btn_dolleylaw.png
# /imgs/btn/btn_paityn.png
# /imgs/btn/btn_carter.png
# /imgs/btn/btn_blake.png
jkwii|blue|red|black|5|/imgs/btn/btn_jkwii.png
skwii|blue|red|black|5|/imgs/btn/btn_skwii.png
jak1|blue|red|black|5|/imgs/btn/btn_jak1.png
jak2|blue|red|black|5|/imgs/btn/btn_jak2.png
jak3|blue|red|black|5|/imgs/btn/btn_jak3.png
`;

kolists['sounds'] = 
`/gm/sounds/bubbles.mp3
/gm/sounds/giggle_explosion.mp3
/gm/sounds/explosion.wav
/gm/sounds/shoot.wav
/gm/sounds/space_explosion.wav
/gm/sounds/space_shoot.wav
/gm/sounds/giggle_explosion.wav
/gm/sounds/giggle_shoot.mp3
/gm/sounds/giggle_shoot.wav
/gm/sounds/explosion.mp3
/gm/sounds/shoot.mp3
/gm/sounds/space_explosion.mp3
/gm/sounds/space_shoot.mp3
/gm/sounds/giggle_explosion.mp3
/gm/sounds/alarm.mp3
/gm/sounds/apprehensive.mp3
/gm/sounds/aww.mp3
/gm/sounds/ballbounce-172648817.mp3
/gm/sounds/bat_taps.mp3
/gm/sounds/beach_talking_teens.mp3
/gm/sounds/beep.mp3
/gm/sounds/bells.mp3
/gm/sounds/bird_in_Rain.mp3
/gm/sounds/birds_after_rain.mp3
/gm/sounds/bleep.mp3
/gm/sounds/bluejay.mp3
/gm/sounds/bluejay_call2.mp3
/gm/sounds/bounce.mp3
/gm/sounds/breathing.mp3
/gm/sounds/bubbles.mp3
/gm/sounds/bump_large.mp3
/gm/sounds/busy.mp3
/gm/sounds/canadian_geese.mp3
/gm/sounds/cashregister.mp3
/gm/sounds/catch.mp3
/gm/sounds/chain_fence_jump.mp3
/gm/sounds/chains_spooky.mp3
/gm/sounds/charge.mp3
/gm/sounds/charge_2.mp3
/gm/sounds/cheer.mp3
/gm/sounds/chord.mp3
/gm/sounds/clap_stomp.mp3
/gm/sounds/click2.mp3
/gm/sounds/computer_error.mp3
/gm/sounds/cork.mp3
/gm/sounds/countdown.mp3
/gm/sounds/crow.mp3
/gm/sounds/crowd.mp3
/gm/sounds/crumpling.mp3
/gm/sounds/cymbal.mp3
/gm/sounds/day_sunny.mp3
/gm/sounds/demon_girls_mockingbird_hi.mp3
/gm/sounds/digging_in.mp3
/gm/sounds/dooropen.mp3
/gm/sounds/doorslam.mp3
/gm/sounds/drop_fork.mp3
/gm/sounds/dropped_bat.mp3
/gm/sounds/duck_mallard.mp3
/gm/sounds/duck_mallard_quack.mp3
/gm/sounds/duck_pissed.mp3
/gm/sounds/earthquake.mp3
/gm/sounds/exclamation.mp3
/gm/sounds/exhale.mp3
/gm/sounds/explosion.mp3
/gm/sounds/falcon.mp3
/gm/sounds/fall.mp3
/gm/sounds/farm.mp3
/gm/sounds/field.mp3
/gm/sounds/flipflop.mp3
/gm/sounds/frog.mp3
/gm/sounds/fryingpan_hit.mp3
/gm/sounds/fryingpan_impact.mp3
/gm/sounds/giggle.mp3
/gm/sounds/giggle_funny_kid.mp3
/gm/sounds/giggle_kid.mp3
/gm/sounds/gong.mp3
/gm/sounds/hit.mp3
/gm/sounds/horned_owl.mp3
/gm/sounds/laugh_goofy.mp3
/gm/sounds/laugh_monster.mp3
/gm/sounds/laughing_kookaburra_birds.mp3
/gm/sounds/lets_go.mp3
/gm/sounds/mars_attacks.mp3
/gm/sounds/meadowlark.mp3
/gm/sounds/meoutake.mp3
/gm/sounds/merlin.mp3
/gm/sounds/moan.mp3
/gm/sounds/panica.mp3
/gm/sounds/parots_talking.mp3
/gm/sounds/phaser.mp3
/gm/sounds/phone.mp3
/gm/sounds/ping.mp3
/gm/sounds/pterodactyl_screech.mp3
/gm/sounds/rainstorm_april_45m.mp3
/gm/sounds/rooster_crow.mp3
/gm/sounds/sewing_machine.mp3
/gm/sounds/shampoo_hair.mp3
/gm/sounds/shoot.mp3
/gm/sounds/sigh.mp3
/gm/sounds/sigh_female.mp3
/gm/sounds/sigh_heavy.mp3
/gm/sounds/sigh_little_girl.mp3
/gm/sounds/siren_tornado.mp3
/gm/sounds/skipping_cd.mp3
/gm/sounds/slide.mp3
/gm/sounds/slip.mp3
/gm/sounds/slip_bananapeel.mp3
/gm/sounds/slip_strange.mp3
/gm/sounds/sonar.mp3
/gm/sounds/sonar_ping.mp3
/gm/sounds/space_explosion.mp3
/gm/sounds/space_shoot.mp3
/gm/sounds/spli_funny.mp3
/gm/sounds/starting_pistol.mp3
/gm/sounds/suspense_climactic.mp3
/gm/sounds/termites_and_ants.mp3
/gm/sounds/tree_fall_small.mp3
/gm/sounds/walking_snow.mp3
/gm/sounds/warbling_vireo.mp3
/gm/sounds/whoosh.mp3
/gm/sounds/whoosh_pitch.mp3
/gm/sounds/yahoo.mp3
/gm/sounds/bounce.wav
/gm/sounds/explosion.wav
/gm/sounds/shoot.wav
/gm/sounds/space_explosion.wav
/gm/sounds/space_shoot.wav
/gm/sounds/giggle_shoot.mp3
`;

kolists['mp3_bavaria'] = 
`/kb/mp3/bavaria/bavaria04a.mp3
/kb/mp3/bavaria/bavaria04b.mp3
/kb/mp3/bavaria/bavaria06a.mp3
/kb/mp3/bavaria/bavaria_01_b02.mp3
/kb/mp3/bavaria/bavaria_03_b12.mp3
/kb/mp3/bavaria/bavaria_04_b13.mp3
/kb/mp3/bavaria/bavaria_a15.mp3
/kb/mp3/bavaria/bavaria_a17.mp3
/kb/mp3/bavaria/bavaria_b01.mp3
/kb/mp3/bavaria/bavaria_b05.mp3
/kb/mp3/bavaria/bavaria_b09.mp3
/kb/mp3/bavaria/bavaria_b10.mp3
/kb/mp3/bavaria/bavaria_b18.mp3
/kb/mp3/dj_ethnic/dj_ethnic_barry_sisters-fargess_mich_nit.mp3
/kb/mp3/dj_ethnic/dj_ethnic_barry_sisters-ja_mein_liebe_tochter.mp3
/kb/mp3/dj_ethnic/dj_ethnic_barry_sisters-papirossen.mp3
/kb/mp3/dj_ethnic/dj_ethnic_barry_sisters-tum_balalaika.mp3
/kb/mp3/dj_ethnic/dj_ethnic_eli_eli.mp3
/kb/mp3/dj_ethnic/dj_ethnic_kibbutz_wedding.mp3
/kb/mp3/dj_ethnic/dj_ethnic_meshuggeneh-rumania.mp3
/kb/mp3/dj_ethnic/dj_ethnic_russian_gypsy_balalaika.mp3
/kb/mp3/dj_ethnic/dj_ethnic_tumalalaika-herschel_bernardi.mp3
/kb/mp3/doris_day/danny_kaye-inchworm.mp3
/kb/mp3/doris_day/danny_kaye-thumbelina.mp3
/kb/mp3/doris_day/debbie_reynolds-tammy.mp3
/kb/mp3/doris_day/doris_day-buttons_and_bows.mp3
/kb/mp3/doris_day/doris_day-que_sera_sera.mp3
/kb/mp3/doris_day/doris_day-secret_love.mp3
/kb/mp3/doris_day/doris_day-you_are_my_sunshine.mp3
/kb/mp3/eva_casidy/eva_cassidy-aint_no_sunshine.mp3
/kb/mp3/eva_casidy/eva_cassidy-kathys_song.mp3
/kb/mp3/eva_casidy/eva_cassidy-track_10.mp3
/kb/mp3/eva_casidy/eva_cassidy-track__1.mp3
/kb/mp3/eva_casidy/eva_cassidy-track__3.mp3
/kb/mp3/eva_casidy/eva_cassidy-what_a_wonderful_world.mp3
/kb/mp3/eva_casidy/eva_cassidy_-fever.mp3
/kb/mp3/favs/oscar_brand-bless_em_all.mp3
/kb/mp3/inkspots/ink_spots-i_dont_want_to_set_the_world_on_fire_1941.mp3
/kb/mp3/inkspots/ink_spots-if_i_didnt_care.mp3
/kb/mp3/inkspots/ink_spots-ill_never_smile_again.mp3
/kb/mp3/kids/disney-electric_light_parade.mp3
/kb/mp3/kids/disney-its_a_small_world_after_all.mp3
/kb/mp3/notfound.mp3
/kb/mp3/richie_havens/richie_havens-03-my_fathers_shoes.mp3
/kb/mp3/richie_havens/richie_havens-05-the_hawk.mp3
/kb/mp3/richie_havens/richie_havens-07-the_times_they_are_a-changin.mp3
/kb/mp3/richie_havens/richie_havens-10-how_the_nights_can_fly.mp3
/kb/mp3/richie_havens/richie_havens-13-at_a_glance.mp3
/kb/mp3/rupert_hine/rupert_hine-01-landscape.mp3
/kb/mp3/rupert_hine/rupert_hine-02-ass_all.mp3
/kb/mp3/rupert_hine/rupert_hine-03-me_you_mine.mp3
/kb/mp3/rupert_hine/rupert_hine-04-scarecrow.mp3
/kb/mp3/rupert_hine/rupert_hine-05-kerosene.mp3
/kb/mp3/rupert_hine/rupert_hine-06-running_away.mp3
/kb/mp3/rupert_hine/rupert_hine-07-medicine_munday.mp3
/kb/mp3/rupert_hine/rupert_hine-08-more_than_one_less_then_five.mp3
/kb/mp3/rupert_hine/rupert_hine-09-boo_boos_faux_pas.mp3
/kb/mp3/rupert_hine/rupert_hine-10-pick_up_a_bone.mp3
/kb/mp3/rupert_hine/rupert_hine-11-instant_muse.mp3
/kb/mp3/start_today_again/01-if_i_could_start_today_again.mp3
/kb/mp3/start_today_again/01-lonely_girls.mp3
/kb/mp3/start_today_again/02-change_your_mind.mp3
/kb/mp3/start_today_again/02-steal_your_love.mp3
/kb/mp3/start_today_again/03-i_envy_the_wind.mp3
/kb/mp3/start_today_again/03-midnight_rain.mp3
/kb/mp3/start_today_again/04-blue.mp3
/kb/mp3/start_today_again/04-i_close_my_eyes_and_think_of_you.mp3
/kb/mp3/start_today_again/05-out_of_touch.mp3
/kb/mp3/start_today_again/05-somewhere_in_the_city.mp3
/kb/mp3/start_today_again/06-are_you_down.mp3
/kb/mp3/start_today_again/06-just_about_to_break.mp3
/kb/mp3/start_today_again/07-essence.mp3
/kb/mp3/start_today_again/07-love_is_the_law.mp3
/kb/mp3/start_today_again/08-reason_to_cry.mp3
/kb/mp3/start_today_again/08-the_pretty_place.mp3
/kb/mp3/start_today_again/09-get_right_with_god.mp3
/kb/mp3/start_today_again/09-i_wasted_time.mp3
/kb/mp3/start_today_again/10-bus_to_baton_rouge.mp3
/kb/mp3/start_today_again/10-would_you_be_my_friend.mp3
/kb/mp3/start_today_again/11-broken_butterflies.mp3
/kb/mp3/start_today_again/11-smoke_under_the_bridge.mp3
/kb/mp3/sweethearts_rodeo/sweethearts_of_the_rodeo-catch_the_wind.mp3
/kb/mp3/sweethearts_rodeo/sweethearts_of_the_rodeo-i_wont_cry_-s.mp3
/kb/mp3/sweethearts_rodeo/sweethearts_of_the_rodeo-the_inn_at_innisfre.mp3
`;	

kolists['mp3_jkwii'] =
`/kb/mp3/jkwii/30_FredEstaire_PuttinOnTheRitz.mp3
/kb/mp3/jkwii/39_KateSmith_GodBlessAmerica.mp3
/kb/mp3/jkwii/39_KayKyser_ThreeLittleFishies.mp3
/kb/mp3/jkwii/39_LouisArmstrongDannyKaye_WhenTheSaintsGoMarchingIn.mp3
/kb/mp3/jkwii/40_PaulRobeson_BalladForAmericans.mp3
/kb/mp3/jkwii/44_AndrewSisters_ShooShooBaby.mp3
/kb/mp3/jkwii/45_BingCrosby_AndrewsSisters-DontFenceMeIn.mp3
/kb/mp3/jkwii/46_BettyHutton_PaulWeston-doctor_lawyer_indianchief.mp3
/kb/mp3/jkwii/47_AlJolson_AnniversarySong.mp3
/kb/mp3/jkwii/49_DinahShore_ButtonsAndBows.mp3
/kb/mp3/jkwii/51_DebbieReynolds_AbbaDabbaHoneymoon.mp3
/kb/mp3/jkwii/51_RosemaryClooney_ComeOnAMyHouse.mp3
/kb/mp3/jkwii/AccentuateThePositive.mp3
/kb/mp3/jkwii/Auctioneer.mp3
/kb/mp3/jkwii/BalladOfDavyCrockett.mp3
/kb/mp3/jkwii/Battle_New_Orleans.mp3
/kb/mp3/jkwii/beatles+i_want_to_hold_your_hand.mp3
/kb/mp3/jkwii/beatles-i_wanna_hold_your_hand.mp3
/kb/mp3/jkwii/beatles-youve_got_to_hide_your_love_away.mp3
/kb/mp3/jkwii/beatles_i_want_to_hold_your_hand.mp3
/kb/mp3/jkwii/beatles_let_it_be.mp3
/kb/mp3/jkwii/beatles_morwegian_wood.mp3
/kb/mp3/jkwii/beethovens-fifth_symphony.mp3
/kb/mp3/jkwii/Bellamy_Brothers-let_your_Love_Flow.mp3
/kb/mp3/jkwii/benny_boodman-swingtime_inthe_rockies.mp3
/kb/mp3/jkwii/bett_midler-bless_the_beasts_and_children.mp3
/kb/mp3/jkwii/bing_crosby_n_andrews_sisters-accentuate_the_positive.mp3
/kb/mp3/jkwii/brenda_lee-if_you_love_me.mp3
/kb/mp3/jkwii/buddy_holly-great_balls_of_fire.mp3
/kb/mp3/jkwii/buddy_holly-true_love_ways.mp3
/kb/mp3/jkwii/catch_a_falling_star.mp3
/kb/mp3/jkwii/chordettes-lollipop.mp3
/kb/mp3/jkwii/clarinet_polka.mp3
/kb/mp3/jkwii/danny_kaye-inchworm.mp3
/kb/mp3/jkwii/danny_kaye-thumbelina.mp3
/kb/mp3/jkwii/dayo.mp3
/kb/mp3/jkwii/dean_martin-memories_are_made_of_this.mp3
/kb/mp3/jkwii/disney-electric_light_parade.mp3
/kb/mp3/jkwii/donovan-catch_the_wind_original_single_with_strings.mp3
/kb/mp3/jkwii/doris_day-que_sera_sera.mp3
/kb/mp3/jkwii/dusty_springfield-windmills_of_your_mind.mp3
/kb/mp3/jkwii/eddie_cantor-makin_whoopee.mp3
/kb/mp3/jkwii/emmylou_harris-like_an_old_fashioned_waltz.mp3
/kb/mp3/jkwii/emmylou_harris-my_baby_needs_a_shepherd.mp3
/kb/mp3/jkwii/emmylou_harris-pledging_my_love.mp3
/kb/mp3/jkwii/emmylou_harris_n_john_denver-wild_montana_skies.mp3
/kb/mp3/jkwii/eva_cassidy-aint_no_sunshine.mp3
/kb/mp3/jkwii/eva_cassidy-kathys_song.mp3
/kb/mp3/jkwii/forrest_gump_theme.mp3
/kb/mp3/jkwii/frankie_lane-mule_train.mp3
/kb/mp3/jkwii/Freddie_n_the_dreamers-im_telling_you_now.mp3
/kb/mp3/jkwii/gail_garnet-well_sing_in_the_sunshine.mp3
/kb/mp3/jkwii/girls_just_want_to_have_fun.mp3
/kb/mp3/jkwii/glaube_mir.mp3
/kb/mp3/jkwii/glaube_mir3.mp3
/kb/mp3/jkwii/goodygoody.mp3
/kb/mp3/jkwii/grateful_dead-ripple.mp3
/kb/mp3/jkwii/great_balls_of_fire.mp3
/kb/mp3/jkwii/hand_jive.mp3
/kb/mp3/jkwii/hes_got_the_whole_world_in_his_hands.mp3
/kb/mp3/jkwii/honeycomb.mp3
/kb/mp3/jkwii/im_all_shook_up.mp3
/kb/mp3/jkwii/im_beginning_to_see_the_light.mp3
/kb/mp3/jkwii/in_the_good_old_summertime.mp3
/kb/mp3/jkwii/ink_spots-i_dont_want_to_set_the_world_on_fire_1941.mp3
/kb/mp3/jkwii/iris_dement-sweet_is_the_melody_incomplete.mp3
/kb/mp3/jkwii/killing_me_softly_with_his_song.mp3
/kb/mp3/jkwii/king_of_the_road.mp3
/kb/mp3/jkwii/kingsmen-louie_louie.mp3
/kb/mp3/jkwii/little_brown_jug.mp3
/kb/mp3/jkwii/little_grass_shack.mp3
/kb/mp3/jkwii/little_sir_echo-horace_heidt.mp3
/kb/mp3/jkwii/loony_tunes_bugs_bunny-the_rabbit_of_seville.mp3
/kb/mp3/jkwii/louie_armstrong-what_a_wonderful_world.mp3
/kb/mp3/jkwii/louis_armstrong-ive_got_a_pocket_full_of_dreams.mp3
/kb/mp3/jkwii/louis_prima_n_keely_smith-that_old_black.mp3
/kb/mp3/jkwii/lullaby_of_birdland.mp3
/kb/mp3/jkwii/LullabyOfBirdland.mp3
/kb/mp3/jkwii/macarena.mp3
/kb/mp3/jkwii/marlene_dietrich-lili_marlene.mp3
/kb/mp3/jkwii/marvin_gaye-lets_get_it_on.mp3
/kb/mp3/jkwii/maurice_chevalier_n_hermione_gingold-i_remember_it_well_gigi.mp3
/kb/mp3/jkwii/mills_brothers-glowworm.mp3
/kb/mp3/jkwii/millsBrothers-glowworm.mp3
/kb/mp3/jkwii/mitch_miller-battle_Hymn_Of_The_republic.mp3
/kb/mp3/jkwii/mitch_miller-camptown_races_oh_susanna.mp3
/kb/mp3/jkwii/mitch_miller-you_are_my_sunshine.mp3
/kb/mp3/jkwii/mona_lisa.mp3
/kb/mp3/jkwii/monkeys-daydream_believer.mp3
/kb/mp3/jkwii/nancy_sinartra-these_boots_are_made_for_walkin.mp3
/kb/mp3/jkwii/on_the_street_where_you_live.mp3
/kb/mp3/jkwii/open_the_door_richard.mp3
/kb/mp3/jkwii/oscar_brand-bless_em_all.mp3
/kb/mp3/jkwii/patsy_cline-back_in_babys_arms.mp3
/kb/mp3/jkwii/patti_page-mocking_bird_hill.mp3
/kb/mp3/jkwii/pattie_page-how_much_is_that_doggie_in_the_window.mp3
/kb/mp3/jkwii/peggy_Lee_n_benny_goodman-on_the_sunny_side_of_the_street.mp3
/kb/mp3/jkwii/people.mp3
/kb/mp3/jkwii/perry_como-round_and_round.mp3
/kb/mp3/jkwii/raindrops_keep_falling_on_my_head_1969.mp3
/kb/mp3/jkwii/ray_charles-georgia_on_my_mind.mp3
/kb/mp3/jkwii/simon_garfunkle-mrs_robinson.mp3
/kb/mp3/jkwii/sons_of_the_pioneers-cool_water.mp3
/kb/mp3/jkwii/supremes_you_cant_hurry_love.mp3
/kb/mp3/jkwii/texas_tornados-rueda_de_fuego_ring_of_fire.mp3
/kb/mp3/jkwii/tiny_bubbles_n_Pparly_shells.mp3
/kb/mp3/jkwii/tom_rush-the_circle_game.mp3
/kb/mp3/jkwii/tommy_dorsey-smoke_gets_in_your_eyes.mp3
/kb/mp3/jkwii/two_cigarettes_in_the_dark.mp3
/kb/mp3/jkwii/van_morrison-have_i_told_you_lately.mp3
/kb/mp3/jkwii/village_people-ymca.mp3
/kb/mp3/jkwii/Volare.mp3
/kb/mp3/jkwii/willy_nelson-on_the_road_again.mp3
/kb/mp3/jkwii/winchester_cathedral_petula_clark.mp3
/kb/mp3/jkwii/windy.mp3
/kb/mp3/jkwii/Yesterday.mp3`;



kolists['gifwave'] =
`/imgs/sound/ringworm_1.gif
/imgs/sound/ringworm_2.gif
/imgs/sound/ringworm_5.gif
/imgs/sound/ringworm_10.gif
/imgs/sound/ringworm_20.gif
/imgs/gif/alien_tek/wave.gif
/imgs/gif/crazy/giphy_fingerwave.gif
/imgs/gif/ducks/gif/alien_tek/wave.gif
/imgs/gif/ducks/gif/gif_spinners/giphy_go_gridwaves.gif
/imgs/gif/ducks/gif/gif_spinners/giphy_waveup.gif
/imgs/gif/gif_202004/giphy_orbwave.gif
/imgs/gif/gif_202004/giphy_wave00.gif
/imgs/gif/gif_202004/giphy_wave02.gif
/imgs/sound/giphy_wave03t.gif
/imgs/gif/gif_202004/giphy_wave03.gif
/imgs/gif/gif_202004/giphy_wave04.gif
/imgs/gif/gif_202004/giphy_wave07.gif
/imgs/gif/gif_202004/giphy_wave08.gif
/imgs/gif/gif_202004/giphy_wave_cbs.gif
/imgs/gif/gif_bugs/giphy_dogewaves.gif
/imgs/gif/gif_bugs/giphy_orb_wave.gif
/imgs/gif/gif_spinners/giphy_go_gridwaves.gif
/imgs/gif/gif_spinners/giphy_waveup.gif
/imgs/gif/giphy_dollars/giphygowave'.gif
/imgs/gif/giphy_us_news_focus/giph_tinkerbell_wavey.gif
/imgs/gif/giphy_us_news_focus/giphy_mouth_wavy.gif
/imgs/gif/giphy_us_news_focus/giphy_us_girlwave.gif
/imgs/gif/giphy_us_news_focus/giphy_us_polewave.gif
/imgs/gif/iperms/giphy_armywave.gif
/imgs/gif/iperms/giphy_armywave_barrel.gif
/imgs/gif/kt/giphy_headwaves.gif
/imgs/gif/notes/waves_blue.gif
/imgs/gif/notes/waves_circle.gif
/imgs/gif/notes/waves_interfere.gif
/imgs/gif/notes/waves_linedrop.gif
/imgs/gif/notes/waves_undulate.gif
/imgs/gif/notes/waves_water.gif
/imgs/gif/us/giphy_jkwii_headwave2.gif
/imgs/gif/us/giphy_orb_wave.gif
/imgs/gif/us/giphy_us_headwave.gif
/imgs/gif/us/tn/tn_giphy_jkwii_headwave2.gif
/imgs/gif/us/tn/tn_giphy_orb_wave.gif
/imgs/gif/us/tn/tn_giphy_us_headwave.gif
/imgs/gif/us_big/giphy_jkwii_headwaves2.gif
/imgs/gif/us_big/giphy_keyboard_wavepanel.gif
`;
	

kolists['ka1_mp3'] =
`/fl/ko_builder/alarm.mp3
/fl/ko_builder/bat_taps.mp3
/fl/ko_builder/bells.mp3
/fl/ko_builder/bubbles.mp3
/fl/ko_builder/busy.mp3
/fl/ko_builder/cashregister.mp3
/fl/ko_builder/catch.mp3
/fl/ko_builder/charge.mp3
/fl/ko_builder/charge_2.mp3
/fl/ko_builder/cheer.mp3
/fl/ko_builder/chord.mp3
/fl/ko_builder/clap_stomp.mp3
/fl/ko_builder/click2.mp3
/fl/ko_builder/cork.mp3
/fl/ko_builder/crowd.mp3
/fl/ko_builder/crumpling.mp3
/fl/ko_builder/cymbal.mp3
/fl/ko_builder/digging_in.mp3
/fl/ko_builder/dooropen.mp3
/fl/ko_builder/doorslam.mp3
/fl/ko_builder/dropped_bat.mp3
/fl/ko_builder/exclamation.mp3
/fl/ko_builder/fall.mp3
/fl/ko_builder/field_of.mp3
/fl/ko_builder/flipflop.mp3
/fl/ko_builder/gong.mp3
/fl/ko_builder/hit.mp3
/fl/ko_builder/lets_go.mp3
/fl/ko_builder/phaser.mp3
/fl/ko_builder/phone.mp3
/fl/ko_builder/ping.mp3
/fl/ko_builder/pitch_whoosh.mp3
/fl/ko_builder/slide.mp3
/fl/ko_builder/slip.mp3
/fl/ko_builder/Takemeou.mp3
/fl/ko_builder/whoosh.mp3
/fl/ko_typo/bubbles.mp3
/fl/ko_typo/click2.mp3
/fl/ko_typo/crumpling.mp3
/fl/ko_typo/phaser.mp3
/fl/ko_typo/ping.mp3
/gm/explosion.mp3
/gm/giggle_explosion.mp3
/gm/giggle_shoot.mp3
/gm/shoot.mp3
/gm/sounds/alarm.mp3
/gm/sounds/apprehensive.mp3
/gm/sounds/aww.mp3
/gm/sounds/ballbounce-172648817.mp3
/gm/sounds/Banging Radiator-SoundBible.com-715716895.mp3
/gm/sounds/bat_taps.mp3
/gm/sounds/beach_talking_teens.mp3
/gm/sounds/beep.mp3
/gm/sounds/bells.mp3
/gm/sounds/bird_in_Rain.mp3
/gm/sounds/birds_after_rain.mp3
/gm/sounds/bleep.mp3
/gm/sounds/bluejay.mp3
/gm/sounds/bluejay_call2.mp3
/gm/sounds/bounce.mp3
/gm/sounds/breathing.mp3
/gm/sounds/bubbles.mp3
/gm/sounds/bump_large.mp3
/gm/sounds/busy.mp3
/gm/sounds/canadian_geese.mp3
/gm/sounds/cashregister.mp3
/gm/sounds/catch.mp3
/gm/sounds/chain_fence_jump.mp3
/gm/sounds/chains_spooky.mp3
/gm/sounds/charge.mp3
/gm/sounds/charge_2.mp3
/gm/sounds/cheer.mp3
/gm/sounds/chord.mp3
/gm/sounds/clap_stomp.mp3
/gm/sounds/click2.mp3
/gm/sounds/computer_error.mp3
/gm/sounds/cork.mp3
/gm/sounds/countdown.mp3
/gm/sounds/Crash Large-SoundBible.com-2049318973.mp3
/gm/sounds/crow.mp3
/gm/sounds/crowd.mp3
/gm/sounds/crumpling.mp3
/gm/sounds/cymbal.mp3
/gm/sounds/day_sunny.mp3
/gm/sounds/demon_girls_mockingbird_hi.mp3
/gm/sounds/digging_in.mp3
/gm/sounds/dooropen.mp3
/gm/sounds/doorslam.mp3
/gm/sounds/drop_fork.mp3
/gm/sounds/dropped_bat.mp3
/gm/sounds/duck_mallard.mp3
/gm/sounds/duck_mallard_quack.mp3
/gm/sounds/duck_pissed.mp3
/gm/sounds/earthquake.mp3
/gm/sounds/exclamation.mp3
/gm/sounds/exhale.mp3
/gm/sounds/explosion.mp3
/gm/sounds/falcon.mp3
/gm/sounds/fall.mp3
/gm/sounds/farm.mp3
/gm/sounds/field.mp3
/gm/sounds/flipflop.mp3
/gm/sounds/frog.mp3
/gm/sounds/fryingpan_hit.mp3
/gm/sounds/fryingpan_impact.mp3
/gm/sounds/giggle.mp3
/gm/sounds/giggle_explosion.mp3
/gm/sounds/giggle_funny_kid.mp3
/gm/sounds/giggle_kid.mp3
/gm/sounds/giggle_shoot.mp3
/gm/sounds/gong.mp3
/gm/sounds/hit.mp3
/gm/sounds/horned_owl.mp3
/gm/sounds/Laugh To Self-SoundBible.com-468656860.mp3
/gm/sounds/laugh_goofy.mp3
/gm/sounds/laugh_monster.mp3
/gm/sounds/laughing_kookaburra_birds.mp3
/gm/sounds/lets_go.mp3
/gm/sounds/mars_attacks.mp3
/gm/sounds/meadowlark.mp3
/gm/sounds/meoutake.mp3
/gm/sounds/merlin.mp3
/gm/sounds/moan.mp3
/gm/sounds/panica.mp3
/gm/sounds/parots_talking.mp3
/gm/sounds/phaser.mp3
/gm/sounds/Phone Off Hook-SoundBible.com-701991146.mp3
/gm/sounds/phone.mp3
/gm/sounds/ping.mp3
/gm/sounds/pterodactyl_screech.mp3
/gm/sounds/rainstorm_april_45m.mp3
/gm/sounds/rooster_crow.mp3
/gm/sounds/sewing_machine.mp3
/gm/sounds/shampoo_hair.mp3
/gm/sounds/shoot.mp3
/gm/sounds/sigh.mp3
/gm/sounds/sigh_female.mp3
/gm/sounds/sigh_heavy.mp3
/gm/sounds/sigh_little_girl.mp3
/gm/sounds/siren_tornado.mp3
/gm/sounds/skipping_cd.mp3
/gm/sounds/slide.mp3
/gm/sounds/slip.mp3
/gm/sounds/slip_bananapeel.mp3
/gm/sounds/slip_strange.mp3
/gm/sounds/sonar.mp3
/gm/sounds/sonar_ping.mp3
/gm/sounds/space_explosion.mp3
/gm/sounds/space_shoot.mp3
/gm/sounds/spli_funny.mp3
/gm/sounds/starting_pistol.mp3
/gm/sounds/suspense_climactic.mp3
/gm/sounds/termites_and_ants.mp3
/gm/sounds/tree_fall_small.mp3
/gm/sounds/walking_snow.mp3
/gm/sounds/warbling_vireo.mp3
/gm/sounds/whoosh.mp3
/gm/sounds/whoosh_pitch.mp3
/gm/sounds/yahoo.mp3
/gm/space/sounds/explosion.mp3
/gm/space/sounds/shoot.mp3
/gm/space/sounds/space_explosion.mp3
/gm/space/sounds/space_shoot.mp3
/im/achat/sounds/sound_1.mp3
/im/achat/sounds/sound_2.mp3
/im/achat/sounds/sound_3.mp3
/im/achat/sounds/sound_4.mp3
/im/achat/sounds/sound_5.mp3
/im/achat/sounds/sound_6.mp3
/im/mibew/sounds/new_message.mp3
/im/mibew/sounds/new_user.mp3
/kb/a/piano/piano_0As.mp3
/kb/a/piano/piano_0B.mp3
/kb/a/piano/piano_0C.mp3
/kb/a/piano/piano_0Cs.mp3
/kb/a/piano/piano_0D.mp3
/kb/a/piano/piano_0Ds.mp3
/kb/a/piano/piano_0E.mp3
/kb/a/piano/piano_0F.mp3
/kb/a/piano/piano_0Fs.mp3
/kb/a/piano/piano_0G.mp3
/kb/a/piano/piano_0Gs.mp3
/kb/a/piano/piano_1A.mp3
/kb/a/piano/piano_1As.mp3
/kb/a/piano/piano_1B.mp3
/kb/a/piano/piano_1C.mp3
/kb/a/piano/piano_1Cs.mp3
/kb/a/piano/piano_1D.mp3
/kb/a/piano/piano_1Ds.mp3
/kb/a/piano/piano_1E.mp3
/kb/a/piano/piano_1F.mp3
/kb/a/piano/piano_1Fs.mp3
/kb/a/piano/piano_1G.mp3
/kb/a/piano/piano_1Gs.mp3
/kb/a/piano/piano_2A.mp3
/kb/a/piano/piano_2As.mp3
/kb/a/piano/piano_2B.mp3
/kb/a/piano/piano_2C.mp3
/kb/a/piano/piano_2Cs.mp3
/kb/a/piano/piano_2D.mp3
/kb/a/piano/piano_2Ds.mp3
/kb/a/piano/piano_2F.mp3
/kb/a/piano/piano_2Fs.mp3
/kb/a/piano/piano_2G.mp3
/kb/a/piano/piano_2Gs.mp3
/kb/a/piano/piano_3A.mp3
/kb/a/piano/piano_3As.mp3
/kb/a/piano/piano_3B.mp3
/kb/a/piano/piano_3C.mp3
/kb/a/piano/piano_3Cs.mp3
/kb/a/piano/piano_3D.mp3
/kb/a/piano/piano_3Ds.mp3
/kb/a/piano/piano_3E.mp3
/kb/a/piano/piano_3F.mp3
/kb/a/piano/piano_3Fs.mp3
/kb/a/piano/piano_3G.mp3
/kb/a/piano/piano_3Gs.mp3
/kb/a/piano/piano_40s.mp3
/kb/a/piano/piano_4A.mp3
/kb/a/piano/piano_4As.mp3
/kb/a/piano/piano_4B.mp3
/kb/a/piano/piano_4C.mp3
/kb/a/piano/piano_4Cs.mp3
/kb/a/piano/piano_4D.mp3
/kb/a/piano/piano_4E.mp3
/kb/a/piano/piano_4F.mp3
/kb/a/piano/piano_4Fs.mp3
/kb/a/piano/piano_4G.mp3
/kb/a/piano/piano_4Gs.mp3
/kb/a/piano/piano_56s.mp3
/kb/a/piano/piano_5A.mp3
/kb/a/piano/piano_5As.mp3
/kb/a/piano/piano_5B.mp3
/kb/a/piano/piano_5C.mp3
/kb/a/piano/piano_5Cs.mp3
/kb/a/piano/piano_5D.mp3
/kb/a/piano/piano_5Ds.mp3
/kb/a/piano/piano_5E.mp3
/kb/a/piano/piano_5F.mp3
/kb/a/piano/piano_5Fs.mp3
/kb/a/piano/piano_5G.mp3
/kb/a/piano/piano_6A.mp3
/kb/a/piano/piano_6As.mp3
/kb/a/piano/piano_6B.mp3
/kb/a/piano/piano_7C.mp3


/kb/aud/mp3/abba-andante_andante.mp3
/kb/aud/mp3/abba-fernando.mp3
/kb/aud/mp3/Beatles - You've Got To Hide Your Love Away.mp3
/kb/aud/mp3/caberet-money,_money.mp3
/kb/aud/mp3/caberet-wilkommen.mp3
/kb/aud/mp3/Can't Help Falling In Love.mp3
/kb/aud/mp3/cold-stupid_girl.mp3
/kb/aud/mp3/crystal-stevie_nicks_1.mp3
/kb/aud/mp3/danny_kaye-inchworm.mp3
/kb/aud/mp3/david_bowie-changes.mp3
/kb/aud/mp3/david_bowie-golden_years.mp3
/kb/aud/mp3/dietrich-lili_marleen-german.mp3
/kb/aud/mp3/dj_ethnic_barry_sisters_-_bei_mir_bistu_shain.mp3
/kb/aud/mp3/dj_ethnic_barry_sisters_-_ich_hob_dich_zifeel_lieb.mp3
/kb/aud/mp3/dj_ethnic_barry_sisters_-_main_glick.mp3
/kb/aud/mp3/dj_ethnic_barry_sisters_-_my_yiddishe_mama.mp3
/kb/aud/mp3/dj_opera_carreras_domingo_pavarotti_-_nessun_dorma.mp3
/kb/aud/mp3/dj_opera_rodgers_&_hammerstein_-_the_sound_of_music_-_edelweiss.mp3
/kb/aud/mp3/dori_caymmi-o_bem_do_mar.mp3
/kb/aud/mp3/doris_day-que_sera_sera.mp3
/kb/aud/mp3/doris_day-secret_love.mp3
/kb/aud/mp3/doris_day-you_are_my_sunshine.mp3
/kb/aud/mp3/elton_jhon-nikita.mp3
/kb/aud/mp3/emmylou_harris-here,_there_and_everywhere.mp3
/kb/aud/mp3/emmylou_harris-like_an_old_fashioned_waltz.mp3
/kb/aud/mp3/emmylou_harris_john_denver-wild_montana_skies.mp3
/kb/aud/mp3/Eva Cassidy - Ain't No Sunshine.mp3
/kb/aud/mp3/eva_cassidy-fever.mp3
/kb/aud/mp3/fuck.mp3
/kb/aud/mp3/glad_all_over.mp3
/kb/aud/mp3/glen_campbell-gentle_on_my_mind_1968.mp3
/kb/aud/mp3/grantorino_full.mp3
/kb/aud/mp3/i_want_to_hold_your_hand.mp3
/kb/aud/mp3/incomplete_eva_cassidy-nightbird.mp3
/kb/aud/mp3/Iris Dement - Easy's Getting Harder Every Day.mp3
/kb/aud/mp3/jesse_colin_young-songbird.mp3
/kb/aud/mp3/jesse_colin_young_sunlight-1976.mp3
/kb/aud/mp3/jimi_hendrix-national_anthem.mp3
/kb/aud/mp3/john_denver_placido_doming-perhaps_love.mp3
/kb/aud/mp3/ka2.mp3
/kb/aud/mp3/king_of_the_road.mp3
/kb/aud/mp3/kingston_town-harry_belafonte.mp3
/kb/aud/mp3/Lady Antebellum - American Honey.mp3
/kb/aud/mp3/lady_antebellum-need_you_now_hq_[lyrics].mp3
/kb/aud/mp3/louie_armstrong-what_a_wonderful_world.mp3
/kb/aud/mp3/love_me_tender.mp3
/kb/aud/mp3/Marlene Dietrich - Muss i' denn.mp3
/kb/aud/mp3/marlene_dietrich_falling_in_love_again_english.mp3
/kb/aud/mp3/mitch_miller-you_are_my_sunshine.mp3
/kb/aud/mp3/mockin_bird_hill_patti_page.mp3
/kb/aud/mp3/mona_lisa.mp3
/kb/aud/mp3/music_13119_benny_benassi_satisfaction.mp3
/kb/aud/mp3/music_141639_pure_beauty.mp3
/kb/aud/mp3/music_145075_bas_couture.mp3
/kb/aud/mp3/music_922401610_beauty_on_fire.mp3
/kb/aud/mp3/music_you_dont_own_me_235310380.mp3
/kb/aud/mp3/never_alone-lady_antebellum..mp3
/kb/aud/mp3/patsy_cline-the_wayward_wind.mp3
/kb/aud/mp3/pattie_page-how_much_is_that_doggie_in_the_window.mp3
/kb/aud/mp3/procol_harem-a_whiter_shade_of_pale.mp3
/kb/aud/mp3/quando,_quando,_quando-engelberthumperdinck.mp3
/kb/aud/mp3/Richie_Havens_-_03_-_My_Father's_Shoes.mp3
/kb/aud/mp3/Richie_Havens_-_05_-_The_Hawk.mp3
/kb/aud/mp3/Richie_Havens_-_07_-_The_Times_They_Are_a-Changin'.mp3
/kb/aud/mp3/Richie_Havens_-_10_-_How_the_Nights_Can_Fly.mp3
/kb/aud/mp3/Richie_Havens_-_13_-_At_a_Glance.mp3
/kb/aud/mp3/righteous_brothers-soul_and_inspiration.mp3
/kb/aud/mp3/scatterbrain-freddy_martin_orch.mp3
/kb/aud/mp3/smokey_robinson-ooh_baby_baby.mp3
/kb/aud/mp3/sound.mp3
/kb/aud/mp3/supermassive_black_hole_lyrics_and_twilight_videos.mp3
/kb/aud/mp3/the_platters_the_great_pretender.mp3
/kb/aud/mp3/third_eye_blind-_never_let_you_go.mp3
/kb/aud/mp3/trick_daddy-take_it_to_the_house.mp3
/kb/aud/mp3/Trio_-_Bum_Bum_1983_NDW.mp3
/kb/aud/mp3/Trio_-_Da_Da_Da_clipe_.mp3
/kb/aud/mp3/TRIO_-_Girl_Girl_Girl.mp3
/kb/aud/mp3/Trio_-_Herz_ist_Trumpf_-_1983.mp3
/kb/aud/mp3/Trio_-_Sabine.mp3
/kb/aud/mp3/Trio_-_Turaluraluralu.mp3
/kb/aud/mp3/Trio_-_Tutti-Frutti_-_NDW_-_1984.mp3
/kb/aud/mp3/trio_Vogel_der_Nacht.mp3
/kb/aud/mp3/twilight_soundtrack.mp3
/kb/aud/mp3/Volare.mp3
/kb/aud/mp3/waits-cemetery_polka-full.mp3
/kb/aud/mp3/waits-come_on_up_to_the_house.mp3
/kb/aud/mp3/waits-house_where_nobody_lives.mp3
/kb/aud/mp3/waits-long_way_home.mp3
/kb/aud/mp3/waits-lullaby-1.mp3
/kb/aud/mp3/waits-time.mp3
/kb/aud/mp3/weihnachtslieder-nicole-still_still_still.mp3
/kb/aud/mp3/wenn_die_soldaten-marlene_dietrich.mp3
/kb/aud/mp3/What's new pussycat.mp3
/kb/aud/mp3/Why_Dont_You_Do_Right_.mp3
/kb/aud/mp3/wish_we_were_back_in_missouri_em.mp3
/kb/aud/mp3/yellow_bird.mp3
/kb/aud/mp3/You Can't Hurry Love.mp3
/kb/aud/mp3/young_love.mp3
/ko/h5/lib/av/aud/effects/beeps/alarm.mp3
/ko/h5/lib/av/aud/effects/beeps/alarm2.mp3
/ko/h5/lib/av/aud/effects/beeps/alarm3.mp3
/ko/h5/lib/av/aud/effects/beeps/buzz.mp3
/ko/h5/lib/av/aud/effects/beeps/compute_ack.mp3
/ko/h5/lib/av/aud/effects/beeps/compute_ack_long.mp3
/ko/h5/lib/av/aud/effects/beeps/ping.mp3
/ko/h5/lib/av/aud/effects/beeps/ping2.mp3
/ko/h5/lib/av/aud/effects/beeps/retro_beep1.mp3
/ko/h5/lib/av/aud/effects/beeps/retro_beep2.mp3
/ko/h5/lib/av/aud/effects/beeps/super_ping.mp3
/ko/h5/lib/av/aud/effects/comm/alien_comm.mp3
/ko/h5/lib/av/aud/effects/comm/alien_comm2.mp3
/ko/h5/lib/av/aud/effects/comm/radio_noise.mp3
/ko/h5/lib/av/aud/effects/comm/radio_signal.mp3
/ko/h5/lib/av/aud/effects/comm/radio_tune.mp3
/ko/h5/lib/av/aud/effects/environmental/cloaking_device.mp3
/ko/h5/lib/av/aud/effects/environmental/computing.mp3
/ko/h5/lib/av/aud/effects/environmental/drop_item.mp3
/ko/h5/lib/av/aud/effects/environmental/engine.mp3
/ko/h5/lib/av/aud/effects/environmental/lightning1.mp3
/ko/h5/lib/av/aud/effects/environmental/lost_in_time.mp3
/ko/h5/lib/av/aud/effects/environmental/low_bass_note.mp3
/ko/h5/lib/av/aud/effects/environmental/low_flange_rez.mp3
/ko/h5/lib/av/aud/effects/environmental/low_hum.mp3
/ko/h5/lib/av/aud/effects/environmental/onimous_echo.mp3
/ko/h5/lib/av/aud/effects/environmental/quasar.mp3
/ko/h5/lib/av/aud/effects/environmental/scanner.mp3
/ko/h5/lib/av/aud/effects/environmental/war_drum.mp3
/ko/h5/lib/av/aud/effects/explosions/explosion2.mp3
/ko/h5/lib/av/aud/effects/explosions/explosion3.mp3
/ko/h5/lib/av/aud/effects/explosions/explosion4.mp3
/ko/h5/lib/av/aud/effects/explosions/explosion5.mp3
/ko/h5/lib/av/aud/effects/explosions/explosion6.mp3
/ko/h5/lib/av/aud/effects/explosions/explosion7.mp3
/ko/h5/lib/av/aud/effects/explosions/explosion8.mp3
/ko/h5/lib/av/aud/effects/explosions/low_explosion.mp3
/ko/h5/lib/av/aud/effects/misc/boss_transform.mp3
/ko/h5/lib/av/aud/effects/misc/boup.mp3
/ko/h5/lib/av/aud/effects/misc/brain_fry.mp3
/ko/h5/lib/av/aud/effects/misc/deploy_mine.mp3
/ko/h5/lib/av/aud/effects/misc/deploy_radio.mp3
/ko/h5/lib/av/aud/effects/misc/deploy_web.mp3
/ko/h5/lib/av/aud/effects/misc/electric_drop.mp3
/ko/h5/lib/av/aud/effects/misc/final_boss_die.mp3
/ko/h5/lib/av/aud/effects/misc/get_item.mp3
/ko/h5/lib/av/aud/effects/misc/get_item2.mp3
/ko/h5/lib/av/aud/effects/misc/item_appear.mp3
/ko/h5/lib/av/aud/effects/misc/item_appear2.mp3
/ko/h5/lib/av/aud/effects/misc/lock_on.mp3
/ko/h5/lib/av/aud/effects/misc/materialize.mp3
/ko/h5/lib/av/aud/effects/misc/power_up.mp3
/ko/h5/lib/av/aud/effects/misc/robot_error.mp3
/ko/h5/lib/av/aud/effects/misc/robot_no.mp3
/ko/h5/lib/av/aud/effects/misc/whiplash.mp3
/ko/h5/lib/av/aud/effects/misc/wobble.mp3
/ko/h5/lib/av/aud/effects/misc/wobble2.mp3
/ko/h5/lib/av/aud/effects/projectiles/alien_shot1.mp3
/ko/h5/lib/av/aud/effects/projectiles/alien_shot2.mp3
/ko/h5/lib/av/aud/effects/projectiles/alien_shot3.mp3
/ko/h5/lib/av/aud/effects/projectiles/alien_shot4.mp3
/ko/h5/lib/av/aud/effects/projectiles/alien_shot5.mp3
/ko/h5/lib/av/aud/effects/projectiles/alien_shot6.mp3
/ko/h5/lib/av/aud/effects/projectiles/alien_shot7.mp3
/ko/h5/lib/av/aud/effects/projectiles/clash_ricochet.mp3
/ko/h5/lib/av/aud/effects/projectiles/hit2.mp3
/ko/h5/lib/av/aud/effects/projectiles/hit3.mp3
/ko/h5/lib/av/aud/effects/projectiles/hit4.mp3
/ko/h5/lib/av/aud/effects/projectiles/hit5.mp3
/ko/h5/lib/av/aud/effects/projectiles/ion_cannon.mp3
/ko/h5/lib/av/aud/effects/projectiles/ion_cannon_light.mp3
/ko/h5/lib/av/aud/effects/projectiles/laser.mp3
/ko/h5/lib/av/aud/effects/projectiles/missile.mp3
/ko/h5/lib/av/aud/effects/projectiles/pea_shooter.mp3
/ko/h5/lib/av/aud/effects/projectiles/photon.mp3
/ko/h5/lib/av/aud/effects/projectiles/quantum_missile.mp3
/ko/h5/lib/av/aud/effects/projectiles/ricochet2.mp3
/ko/h5/lib/av/aud/effects/projectiles/ricochet3.mp3
/ko/h5/lib/av/aud/effects/projectiles/ricochet4.mp3
/ko/h5/lib/av/aud/effects/projectiles/ricochet5.mp3
/ko/h5/lib/av/aud/effects/projectiles/ricochet6.mp3
/ko/h5/lib/av/aud/effects/projectiles/scatter_shot.mp3
/ko/h5/lib/av/aud/effects/projectiles/scatter_shot2.mp3
/ko/h5/lib/av/aud/effects/projectiles/super_missile.mp3
/ko/h5/lib/av/aud/effects/projectiles/super_missile2.mp3
/ko/h5/lib/av/aud/effects/space/black_hole.mp3
/ko/h5/lib/av/aud/effects/space/cosmic_string.mp3
/ko/h5/lib/av/aud/effects/space/enemy_launch_warmup.mp3
/ko/h5/lib/av/aud/effects/space/enemy_swoop_down.mp3
/ko/h5/lib/av/aud/effects/space/enemy_wake_up.mp3
/ko/h5/lib/av/aud/effects/space/engine_damage.mp3
/ko/h5/lib/av/aud/effects/space/engine_warmup.mp3
/ko/h5/lib/av/aud/effects/space/flush_garbage.mp3
/ko/h5/lib/av/aud/effects/space/hyperdrive_abort.mp3
/ko/h5/lib/av/aud/effects/space/hyperdrive_abort2.mp3
/ko/h5/lib/av/aud/effects/space/hyperdrive_warmup.mp3
/ko/h5/lib/av/aud/effects/space/pressurize_airlock.mp3
/ko/h5/lib/av/aud/effects/space/shield_activate.mp3
/ko/h5/lib/av/aud/effects/space/shields_recharged.mp3
/ko/h5/lib/av/aud/effects/space/shields_recharged2.mp3
/ko/h5/lib/av/aud/effects/space/ship_dock.mp3
/ko/h5/lib/av/aud/effects/space/ships_collide.mp3
/ko/h5/lib/av/aud/effects/space/space_bug_scream.mp3
/ko/h5/lib/av/aud/effects/space/space_clank.mp3
/ko/h5/lib/av/aud/effects/space/space_dog_bark.mp3
/ko/h5/lib/av/aud/effects/space/space_drip.mp3
/ko/h5/lib/av/aud/effects/space/space_glug.mp3
/ko/h5/lib/av/aud/effects/space/space_ribbit.mp3
/ko/h5/lib/av/aud/effects/space/space_vacuum.mp3
/ko/h5/lib/av/aud/effects/space/space_wind.mp3
/ko/h5/lib/av/aud/effects/space/super_web_active.mp3
/ko/h5/lib/av/aud/effects/switches/switch.mp3
/ko/h5/lib/av/aud/effects/switches/switch2.mp3
/ko/h5/lib/av/aud/effects/switches/switch3.mp3
/ko/h5/lib/av/aud/effects/switches/switch4.mp3
/ko/h5/lib/av/aud/effects/switches/switch5.mp3
/ko/h5/lib/av/aud/effects/ui/blurn.mp3
/ko/h5/lib/av/aud/effects/ui/blurn_shhh.mp3
/ko/h5/lib/av/aud/effects/ui/notify.mp3
/ko/h5/lib/av/aud/effects/ui/select.mp3
/ko/h5/lib/av/aud/effects/ui/select2.mp3
/ko/h5/lib/av/aud/effects/ui/select3.mp3
/ko/h5/lib/av/aud/effects/ui/select4.mp3
/ko/h5/lib/av/aud/effects/ui/select5.mp3
/ko/h5/lib/av/aud/effects/ui/shunt.mp3
/ko/srv/blab/aud_blab7/sound_001.mp3
/ko/srv/blab/aud_blab7/sound_002.mp3
/ko/srv/blab/aud_blab7/sound_003.mp3
/ko/srv/blab/aud_blab7/sound_004.mp3
/ko/srv/blab/aud_blab7/sound_005.mp3
/ko/srv/blab/aud_blab7/sound_006.mp3
/ko/srv/blab/aud_blab7/sound_007.mp3
/ko/srv/blab/aud_blab7/sound_008.mp3
/ko/srv/blab/aud_blab7/sound_009.mp3
/ko/srv/blab/aud_blab7/sound_010.mp3
/ko/srv/blab/aud_blab7/sound_011.mp3
/ko/srv/blab/aud_blab7/sound_012.mp3
/ko/srv/blab/aud_blab7/sound_013.mp3
/ko/srv/blab/aud_blab7/sound_014.mp3
/ko/srv/blab/aud_blab7/sound_015.mp3
/ko/srv/blab/aud_blab7/sound_016.mp3
/ko/srv/blab/aud_blab7/sound_017.mp3
/ko/srv/blab/aud_blab7/sound_018.mp3
/ko/srv/blab/aud_blab7/sound_019.mp3
/ko/srv/blab/aud_blab7/sound_020.mp3
/ko/srv/blab/aud_blab7/sound_021.mp3
/ko/srv/blab/aud_blab7/sound_022.mp3
/ko/srv/blab/aud_blab7/sound_023.mp3
/ko/srv/blab/aud_blab7/sound_024.mp3
/ko/srv/blab/aud_blab7/sound_025.mp3
/ko/srv/blab/aud_blab7/sound_026.mp3
/ko/srv/blab/aud_blab7/sound_027.mp3
/ko/srv/blab/aud_blab7/sound_028.mp3
/ko/srv/blab/aud_blab7/sound_029.mp3
/ko/srv/blab/aud_blab7/sound_030.mp3
/ko/srv/blab/aud_blab7/sound_031.mp3
/ko/srv/blab/aud_blab7/sound_032.mp3
/ko/srv/blab/aud_blab7/sound_033.mp3
/ko/srv/blab/aud_blab7/sound_034.mp3
/ko/srv/blab/aud_blab7/sound_035.mp3
/ko/srv/blab/aud_blab7/sound_036.mp3
/ko/srv/blab/aud_blab7/sound_037.mp3
/ko/srv/blab/aud_blab7/sound_038.mp3
/ko/srv/blab/aud_blab7/sound_039.mp3
/ko/srv/blab/aud_blab7/sound_040.mp3
/ko/srv/blab/aud_blab7/sound_041.mp3
/ko/srv/blab/aud_blab7/sound_042.mp3
/ko/srv/blab/aud_blab7/sound_043.mp3
/ko/srv/blab/aud_blab7/sound_044.mp3
/ko/srv/blab/aud_blab7/sound_045.mp3
/ko/srv/blab/aud_blab7/sound_046.mp3
/ko/srv/blab/aud_blab7/sound_047.mp3
/ko/srv/blab/aud_blab7/sound_048.mp3
/ko/srv/blab/aud_blab7/sound_049.mp3
/ko/srv/blab/aud_blab7/sound_050.mp3
/ko/srv/blab/aud_blab7/sound_051.mp3
/ko/srv/blab/aud_blab7/sound_052.mp3
/ko/srv/blab/aud_blab7/sound_053.mp3
/ko/srv/blab/aud_blab7/sound_054.mp3
/ko/srv/blab/aud_blab7/sound_055.mp3
/ko/srv/blab/aud_blab7/sound_056.mp3
/ko/srv/blab/aud_blab7/sound_057.mp3
/ko/srv/blab/aud_blab7/sound_058.mp3
/ko/srv/blab/aud_blab7/sound_059.mp3
/ko/srv/blab/aud_blab7/sound_060.mp3
/ko/srv/blab/aud_blab7/sound_061.mp3
/ko/srv/blab/aud_blab7/sound_062.mp3
/ko/srv/blab/aud_blab7/sound_063.mp3
/ko/srv/blab/aud_blab7/sound_064.mp3
/ko/srv/blab/aud_blab7/sound_065.mp3
/ko/srv/blab/aud_blab7/sound_066.mp3
/ko/srv/blab/aud_blab7/sound_067.mp3
/ko/srv/blab/aud_blab7/sound_068.mp3
/ko/srv/blab/aud_blab7/sound_069.mp3
/ko/srv/blab/aud_blab7/sound_070.mp3
/ko/srv/blab/aud_blab7/sound_071.mp3
/ko/srv/blab/aud_blab7/sound_072.mp3
/ko/srv/blab/aud_blab7/sound_073.mp3
/ko/srv/blab/aud_blab7/sound_074.mp3
/ko/srv/blab/aud_blab7/sound_075.mp3
/ko/srv/blab/aud_blab7/sound_076.mp3
/ko/srv/blab/aud_blab7/sound_077.mp3
/ko/srv/blab/aud_blab7/sound_078.mp3
/ko/srv/blab/aud_blab7/sound_079.mp3
/ko/srv/blab/aud_blab7/sound_080.mp3
/ko/srv/blab/aud_blab7/sound_081.mp3
/ko/srv/blab/aud_blab7/sound_082.mp3
/ko/srv/blab/aud_blab7/sound_083.mp3
/ko/srv/blab/aud_blab7/sound_084.mp3
/ko/srv/blab/aud_blab7/sound_085.mp3
/ko/srv/blab/aud_blab7/sound_086.mp3
/ko/srv/blab/aud_blab7/sound_087.mp3
/ko/srv/blab/aud_blab7/sound_088.mp3
/ko/srv/blab/aud_blab7/sound_089.mp3
/ko/srv/blab/aud_blab7/sound_090.mp3
/ko/srv/blab/aud_blab7/sound_091.mp3
/ko/srv/blab/aud_blab7/sound_092.mp3
/ko/srv/blab/aud_blab7/sound_093.mp3
/ko/srv/blab/aud_blab7/sound_094.mp3
/ko/srv/blab/aud_blab7/sound_095.mp3
/ko/srv/blab/aud_blab7/sound_096.mp3
/ko/srv/blab/aud_blab7/sound_097.mp3
/ko/srv/blab/aud_blab7/sound_098.mp3
/ko/srv/blab/aud_blab7/sound_099.mp3
/ko/srv/blab/aud_blab7/sound_100.mp3
/ko/srv/blab/aud_blab7/sound_101.mp3
/ko/srv/blab/ui/sounds/1.mp3
/ko/srv/blab/ui/sounds/2.mp3
/ko/srv/blab/ui/sounds/3.mp3
/ko/srv/blab/ui/sounds/4.mp3
/ko/srv/blab/ui/sounds/5.mp3
/ko/srv/blab/ui/sounds/6.mp3
/ko/srv/blab/ui/sounds/7.mp3
/ko/srv/blab/ui/sounds/8.mp3
/ko/srv/blab/ui/sounds/9.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/beeps/alarm.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/beeps/alarm2.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/beeps/alarm3.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/beeps/buzz.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/beeps/compute_ack.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/beeps/compute_ack_long.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/beeps/ping.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/beeps/ping2.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/beeps/retro_beep1.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/beeps/retro_beep2.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/beeps/super_ping.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/comm/alien_comm.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/comm/alien_comm2.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/comm/radio_noise.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/comm/radio_signal.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/comm/radio_tune.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/environmental/cloaking_device.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/environmental/computing.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/environmental/drop_item.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/environmental/engine.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/environmental/lightning1.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/environmental/lost_in_time.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/environmental/low_bass_note.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/environmental/low_flange_rez.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/environmental/low_hum.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/environmental/onimous_echo.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/environmental/quasar.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/environmental/scanner.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/environmental/war_drum.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/explosions/explosion2.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/explosions/explosion3.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/explosions/explosion4.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/explosions/explosion5.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/explosions/explosion6.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/explosions/explosion7.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/explosions/explosion8.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/explosions/low_explosion.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/boss_transform.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/boup.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/brain_fry.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/deploy_mine.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/deploy_radio.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/deploy_web.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/electric_drop.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/final_boss_die.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/get_item.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/get_item2.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/item_appear.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/item_appear2.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/lock_on.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/materialize.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/power_up.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/robot_error.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/robot_no.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/whiplash.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/wobble.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/wobble2.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/alien_shot1.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/alien_shot2.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/alien_shot3.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/alien_shot4.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/alien_shot5.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/alien_shot6.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/alien_shot7.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/clash_ricochet.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/hit2.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/hit3.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/hit4.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/hit5.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/ion_cannon.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/ion_cannon_light.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/laser.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/missile.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/pea_shooter.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/photon.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/quantum_missile.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/ricochet2.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/ricochet3.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/ricochet4.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/ricochet5.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/ricochet6.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/scatter_shot.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/scatter_shot2.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/super_missile.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/super_missile2.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/black_hole.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/cosmic_string.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/enemy_launch_warmup.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/enemy_swoop_down.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/enemy_wake_up.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/engine_damage.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/engine_warmup.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/flush_garbage.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/hyperdrive_abort.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/hyperdrive_abort2.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/hyperdrive_warmup.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/pressurize_airlock.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/shield_activate.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/shields_recharged.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/shields_recharged2.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/ship_dock.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/ships_collide.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/space_bug_scream.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/space_clank.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/space_dog_bark.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/space_drip.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/space_glug.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/space_ribbit.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/space_vacuum.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/space_wind.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/super_web_active.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/switches/switch.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/switches/switch2.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/switches/switch3.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/switches/switch4.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/switches/switch5.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/ui/blurn.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/ui/blurn_shhh.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/ui/notify.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/ui/select.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/ui/select2.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/ui/select3.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/ui/select4.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/ui/select5.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/ui/shunt.mp3
/ko/svc/effectgames/ht/sounds/shutter.mp3
/ko/svc/js/effectgm/htdocs/sounds/shutter.mp3
/ko/svc/js/kojs/kojs_3js_stemkoski/7DFPS/audio/deep-solar-wind.mp3
/ko/svc/js/kojs/kojs_threejs/examples/sounds/358232_j_s_song.mp3
/ko/svc/js/kojs/kojs_threejs/examples/sounds/376737_Skullbeatz___Bad_Cat_Maste.mp3
/ko/svc/js/stemkoskijs/7DFPS/audio/deep-solar-wind.mp3
/ko/svc/js/threejs/examples/sounds/358232_j_s_song.mp3
/ko/svc/js/threejs/examples/sounds/376737_Skullbeatz___Bad_Cat_Maste.mp3
/ko/svc/js/threejs-tetris/music/cash.mp3
/ko/svc/js/threejs-tetris/music/collision.mp3
/ko/svc/js/threejs-tetris/music/gameover.mp3
/ko/svc/js/threejs-tetris/music/move.mp3
/ko/svc/jsdoit/preload/_assets/audio/Thunder.mp3
/ko/svc/jsdoit/preload/_assets/static/CabinBoy.mp3
/ko/svc/tests/easeljs/_assets/audio/bionic.mp3
/ko/svc/tests/easeljs/examples/Game/sounds/break.mp3
/ko/svc/tests/easeljs/examples/Game/sounds/death.mp3
/ko/svc/tests/easeljs/examples/Game/sounds/music.mp3
/ko/svc/tests/easeljs/examples/Game/sounds/shot.mp3
/ko/svc/tests/easeljs/examples/Game/sounds/spawn.mp3
/ko/svc/tests/sandbox/PlanetaryGary/assets/sounds/BodySlam.mp3
/ko/svc/tests/sandbox/PlanetaryGary/assets/sounds/DirtSlide.mp3
/ko/svc/tests/sandbox/PlanetaryGary/assets/sounds/EnemyHit.mp3
/ko/svc/tests/sandbox/PlanetaryGary/assets/sounds/garywalk_chill.mp3
/ko/svc/tests/sandbox/PlanetaryGary/assets/sounds/HitHard4.mp3
/ko/svc/tests/sandbox/PlanetaryGary/assets/sounds/jump4.mp3
/ko/svc/tests/sandbox/PlanetaryGary/assets/sounds/LaserGunShot.mp3
/ko/svc/tests/sandbox/PlanetaryGary/assets/sounds/PressPlay.mp3
/ko/svc/tests/sandbox/PlanetaryGary/assets/sounds/TunnelCollision.mp3
/ko/svc/tests/sandbox/ToolkitBannerAd/sounds/EnemyHit.mp3
/ko/svc/tests/sandbox/ToolkitBannerAd/sounds/LaserGunShot.mp3
/ko/svc/tests/soundjs/_assets/audio/05-Binrpilot-Underground.mp3
/ko/svc/tests/soundjs/_assets/audio/Game-AudioSprite.mp3
/ko/svc/tests/soundjs/_assets/audio/Game-Break.mp3
/ko/svc/tests/soundjs/_assets/audio/Game-Death.mp3
/ko/svc/tests/soundjs/_assets/audio/Game-Shot.mp3
/ko/svc/tests/soundjs/_assets/audio/Game-Spawn.mp3
/ko/svc/tests/soundjs/_assets/audio/GU-StealDaisy.mp3
/ko/svc/tests/soundjs/_assets/audio/Humm.mp3
/ko/svc/tests/soundjs/_assets/audio/M-GameBG.mp3
/ko/svc/tests/soundjs/_assets/audio/R-Damage.mp3
/ko/svc/tests/soundjs/_assets/audio/S-Damage.mp3
/ko/svc/tests/soundjs/_assets/audio/Thunder1.mp3
/ko/svc/tests/soundjs/_assets/audio/ToneWobble.mp3
/ko/svc/tests/soundjs/_assets/audio/U-CabinBoy3.mp3
/ko/svc/tests/soundjs/examples/Game/sounds/break.mp3
/ko/svc/tests/soundjs/examples/Game/sounds/death.mp3
/ko/svc/tests/soundjs/examples/Game/sounds/music.mp3
/ko/svc/tests/soundjs/examples/Game/sounds/shot.mp3
/ko/svc/tests/soundjs/examples/Game/sounds/spawn.mp3
/us0/2007/konet.ka5/httpdocs/mp3/net/silent.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND1.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND104.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND105.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND108.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND111.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND112.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND12.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND13.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND131.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND136.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND14.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND16.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND17.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND18.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND181.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND19.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND20.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND21.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND22.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND24.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND240.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND243.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND25.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND26.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND27.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND28.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND29.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND3.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND30.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND34.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND35.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND36.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND38.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND39.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND4.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND42.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND43.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND45.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND49.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND49D.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND5.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND50.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND528.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND53.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND54.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND55.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND560.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND563.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND57.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND58.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND6.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND65.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND68.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND7.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND713.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND735.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND8.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND827.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND9.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND999.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/delete_space1.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/delete_space2.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/delete_tek1.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/delete_tek2.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/delete_tek3.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/delete_tek4.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qabitem.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qabmenu.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qclick.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qdelete.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qdelete1.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qdelete2.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qdelete3.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qdelete4.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qmem.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qmem2.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qmem3.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qmem4.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qopen.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qopen1.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qopen10.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qopen2.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qopen3.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qopen4.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qopen5.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qopen6.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qopen7.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qopen8.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qopen9.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qopen_2000.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qopen_99.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qopen_bell.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qopen_birds.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qopen_chimes.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qopen_IPO.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qopen_newsbreak.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qopen_rickety_mineshaft_of_riches.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qrecord.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qrecord1.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/alarm.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/beep.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/bell.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/bells.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/blip.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/bubbles.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/busy.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/chord.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/click.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/click2.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/click3.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/clink.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/clonk.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/cork.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/crumpling.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/cymbal.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/doorbell.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/exclamation.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/fall.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/flipflop.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/gong.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/metalcling.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/metalclonk.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/phaser.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/ping.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/sissors.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/slip.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/taps.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/toilet.mp3
/us0/2007/konet.ka5/httpdocs/mp3/ts3/BEAM.mp3
/us0/2007/konet.ka5/httpdocs/mp3/ts3/BIRDS.mp3
/us0/2007/konet.ka5/httpdocs/mp3/ts3/CRICKET.mp3
/us0/2007/konet.ka5/httpdocs/mp3/ts3/KNOCK.mp3
/us0/2007/konet.ka5/httpdocs/mp3/ts3/MACHINE.mp3
/us0/2007/konet.ka5/httpdocs/mp3/ts3/PUTER.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_001.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_002.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_003.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_004.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_005.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_006.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_007.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_008.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_009.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_010.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_011.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_012.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_013.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_014.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_015.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_016.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_017.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_018.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_019.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_020.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_021.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_022.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_023.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_024.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_025.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_026.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_027.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_028.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_029.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_030.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_031.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_032.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_033.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_034.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_035.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_036.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_037.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_038.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_039.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_040.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_041.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_042.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_043.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_044.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_045.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_046.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_047.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_048.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_049.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_050.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_051.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_052.mp3
/vhosts1/chapel.ka6/httpdocs/ko/shoutcast/Start_Today_Again.mp3
/vhosts1/ka5/httpdocs/doctorjoe/docjoe_dan_Tori_Amos_-_Yes,_Anastasia.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/A Hard Day's Night.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Always On My Mind.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Andrew Sisters- Bei Mir Bist du Schon.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Auctioneer.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Banana Boat Song.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Benny Goodman - Bei Mir Bist Du Schon.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Big girls don't cry.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Bless The Beasts And Children.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Cab Calloway - Minnie The Moocher.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Can't Help Falling In Love.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Cherry Pink & Apple Blossom White.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/CherryCherry.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Connie Frances - Who's Sorry Now.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Connie Frances Where the boys ARE.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Connie Francis - Mama.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Crazy.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_classical_bach_-_air_for_g_string.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_classical_bach_-_brandenburg_concerto_3_allegro.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_classical_canon_in_d.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_classical_chopin_-_nocturne_in_e_flat.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_classical_eugene_ormandy_-_grande_valse.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_classical_humoresque.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_classical_hungarian_dance_no_16_-_con_moto.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_classical_hungarian_dance_no_5.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_classical_hungarian_dance_no_7_in_a_-_brahms.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_classical_monti-csardas.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_classical_mozart-variation.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_classical_mozart_-_moonlight_sonata.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_classical_offenbach_-_tales_of_hoffmann,_barcarolle.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_classical_rhapsody_on_a_theme_of_paganini.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_andrew_sisters-_bei_mir_bist_du_schon.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_barry_sisters_-_a_byssele.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_barry_sisters_-_bei_mir_bistu_shain.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_barry_sisters_-_chiribim_chiribom.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_barry_sisters_-_fargess_mich_nit.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_barry_sisters_-_ich_hob_dich_zifeel_lieb.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_barry_sisters_-_main_glick.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_barry_sisters_-_ochy_chernye.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_barry_sisters_-_papirossen.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_barry_sisters_-_rumeine.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_barry_sisters_-_shabes_lich.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_barry_sisters_-_tum_balalaika.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_barry_sisters_-_vie_a_heen_zol_ich_gayn.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_chassidic_melody__-_netania_davrath.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_chieu_matxcova.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_ein_keloheinu.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_eli_eli.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_eretz_eretz.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_exodus-havah-nagilah_-_connie-francis.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_inzenyrska.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_theodore_bikel_-_mayn_shtetele_belz.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_tumalalaika_-_herschel_bernardi.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_yome,_yome_-_shoshana_damari.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_opera_andrea_bocelli_&_celine_dion_-_the_prayer.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_opera_andrea_bocelli_&_sarah_brightman_-_time_to_say_goodbye.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_opera_andrea_bocelli_-_puccini_-_nessun_dorma.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_opera_beverly_sills_-_richard_strauss_-_breit_uber_mein_haupt.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_opera_carreras_domingo_pavarotti_-_nessun_dorma.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_opera_libiamo-libiamo-carlo-de-monte-victoria-de-los-angeles.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_opera_luciano-pavarotti-una-furtiva-lagrima.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_opera_mario_lanza_-_arriverderci_roma.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_opera_rodgers_&_hammerstein_-_the_sound_of_music_-_edelweiss.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_opera_sarah_brightman_&_andrea_bocelli_-_time_to_say_goodbye.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_opera_sarah_brightman_-_hijo_de_la_luna.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Doris Day - Que Sera Sera.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Doris Day - Secret Love.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Doris Day - You Are My Sunshine.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Ella Fitzgerald - Heart and Soul.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Frank Sinatra - One for my baby (and one more for the road) .mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Frank Sinatra - The Way You Look Tonight.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Frankie Lane - Cry of the wild goose.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Girl, You[ll Be a WomanSoon.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Good Night Irene.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Great Pretender (Platters).mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Green Green Grass Of Home.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/High Noon - Frankie Lane.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Honeycomb.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/I Want To Hold Your Hand.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/If you love me-BrendaLee.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/In The Good Old Summertime.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Kay Kyser,with Ish Kabibble, Harry Babbitt, Sally Mason - Three little Fishies.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/King of the Road.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/la-paloma - connie-francis.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Lili Marlene - Marlene Dietrich.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Little Sir Echo - Horace Heidt.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Louie Armstrong - What a Wonderful World.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Louie Louie - Kingsmen.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Love Me Tender.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Memories Are Made Of This.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Mister Sandman - The Chordettes .mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/mockin_bird_hill_patti_page.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Mona Lisa.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/My Heart Belongs To DaddyK.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Norwegian Wood.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/oh_lonesome_me_connie_francis.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Pattie Page - How Much Is That Doggie In The Window.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Pattie Page - Tennessee Waltz.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Quando, Quando, Quando-EngelbertHumperdinck.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Ramblin'_Rose.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Rosemary Clooney - This Ole House.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Scatterbrain - Freddy Martin Orch.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/September Morn.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/sherry.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Sons of The Pioneers _ Cool Water.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Springtime in the Rockies - Will Carter .mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Standing On The Corner.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Sukiyaki.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Tennessee  Waltz.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/That's Amore.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/The Platters  The Great Pretender.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/The Platters - Unchained Melody.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/They Can't Take That Away From Me.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Tiny Bubbles & Pearly shells.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/topsy.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Volare.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/What's new pussycat.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Why_Dont_You_Do_Right_.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/winchester_cathedral_petula_clark.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/windy.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Yellow Bird.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Yesterday.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/You Can't Hurry Love.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/You've lost That Lovin' Feeling .mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/you-send-me.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/YouDon'tBringMeFlowers.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/young_love.mp3
/vhosts1/ka5/httpdocs/zencart/media/thehunter.mp3
/vhosts1/ka5/inbox/brell77_snip22_carousel.mp3
/vhosts1/ka5/ko/shoutcast/scpromo.mp3
/vhosts1/ka5/ko/shoutcast/Start_Today_Again.mp3
/vhosts1/ka5/ko/shoutcast/test1.mp3
/vhosts1/konet.org/public_html/ko/shoutcast/scpromo.mp3
/vhosts1/konet.org/public_html/ko/shoutcast/Start_Today_Again.mp3
/vhosts1/konet.org/public_html/ko/shoutcast/test1.mp3
/vhosts1/konet.org/public_html/zencart/media/thehunter.mp3
`;







kolists['av'] = 
`/index1_avril.mp4
/index0.mp4
/index1.mp4
/index2.mp4
/index3.mp4
/index4.mp4
/index5.mp4
/index6.mp4
/index7.mp4
/index8.mp4
/index9.mp4
/index10.mp4
/index11.mp4
/av.mp4
/index.mp4
/index1.mp4
/index2.mp4
/index3.mp4
/index4.mp4
/kb/vid/youb/tech_petdrone_skydio_r1_review.mp4
/kb/vid/youb/tech_unboxing_led_500.mp4
/kb/vid/youb/tech_thermoelectric_cooler_pelier.mp4
/kb/vid/youb/dance_rtsf2019_dietmar_n_nellia?never_stop_jiving.mp4
/kb/vid/youb/ dance_butoh_japan.mp4
/kb/vid/youb/dance_peeping_tom_le_salon.mp4
/kb/jtfdc/vid/jtfdc_20190124_1350_stalkaround_lwhitesuv_jtf30in_jkwii.mp4
/kb/jtfdc/vid/jtfdc_20190122_2200_stalkaround_jtf28in_drivewaytraffic.mp4
/kb/vid/youb/01_sixto_rodriguez_sandrevan_lullabylifestyles_[coming_from_.mp4
/kb/vid/youb/02_sixto_rodriguez_i_think_of_you.mp4
/kb/vid/youb/48_roses_mariachi_el_bronx_jay_leno_2011.mp4
/kb/vid/youb/bonnie_raitt_aaron_neville_gregg_allman_tell_it_like_it.mp4
/kb/vid/youb/eva_cassidyaint_no_sunshine.mp4
/kb/vid/youb/eva_cassidyfields_of_gold.mp4
/kb/vid/youb/faithfullworking_class_hero-live.mp4
/kb/vid/youb/official_chrysler_and_bob_dylan_super_bowl_commercial_2017.mp4
/kb/vid/youb/richie_havens_i_was_educated_by_myself_with_lyrics.mp4
/kb/vid/youb/river_run_file24160428.mp4
/kb/vid/youb/steal_away_by_the_fureys.mp4
/kb/vid/youb/the_last_farewell_lyrics_roger_whittaker.mp4
/kb/vid/youb/we_believe_in_happy_ending_emmylou_harris_earl_thomas_co.mp4
/kb/vid/youb/yogis_Tibetan_Buddhism__Secrets_of_the_Yogis_of_Tibet_-_Part_5.mp4
/ko/svc/jsdoit/preload/_assets/static/video.mp4
/ko/svc/js/threejs/examples/textures/sintel.mp4
/3.mp4
/konet/index6.mp4
/konet/index2.mp4
/konet/index.mp4
/konet/index1.mp4
/konet/index3.mp4
/jkwii/jkwii.mp4
/jkwii/js/threejs/examples/textures/sintel.mp4
/index4.mp4
/ka1.mp4
/index8.mp4
/kb/byrdpuckers/vid/jtfdc_20171214_1215_jtf32out_jtf32_lyinglawerin.mp4
/kb/byrdpuckers/vid/huckleberry_hound_17_barbeque_hound.mp4
/kb/byrdpuckers/vid/jtfdc_201802261524_fiona_freeroam.mp4
/kb/byrdpuckers/vid/jtfdc_20180605_0500_jtf31_fiona_roam_go_home_doberwoofs_jkwiiabout.mp4
/kb/byrdpuckers/vid/roy_rogers_dont_fence_me_in.mp4
/kb/byrdpuckers/vid/jtf31.mp4
/kb/byrdpuckers/vid/jtfdc_20180604_1015_jtf31_fiona_qualitytime_unexpected_jkwii.mp4
/kb/byrdpuckers/vid/jtfdc_20180605_1956_bigtruck_n_cabletrailer_stalkback.mp4
/kb/byrdpuckers/vid/doghead_video.mp4
/kb/byrdpuckers/vid/jtfdc_20180607_1813_jtf31_fiona_freeroom_inyourface.mp4
/kb/byrdpuckers/vid/jtfdc_20180530_2034_jkwii_meet_househunters_nice.mp4
/kb/byrdpuckers/vid/jtfdc_20180505_1944_jkwiinkids_center_court.mp4
/kb/byrdpuckers/vid/jtfdc_20180605_1130_jkwii_lost_cable_truck.mp4
/kb/byrdpuckers/vid/jtf30.mp4
/kb/byrdpuckers/vid/jtfdc_20180226_1524_jtf31_fiona_freeroam.mp4
/kb/byrdpuckers/vid/jtfdc_20180605_1130_jkwii_lost_cabletrailer.mp4
/kb/byrdpuckers/vid/jtfdc_20171216_0610_woof.mp4
/kb/byrdpuckers/vid/jtfdc_20180606_1145_jtf40_driveway_byrdpucker_theft_threadt.mp4
/kb/byrdpuckers/vid/jtfdc_20180604_0630_jtf31_fiona_courttime_jkwii.mp4
/kb/byrdpuckers/vid/roy_rogers_dale_evans_sons_of_pioneers_medley.mp4
/kb/byrdpuckers/vid/jtfdc_20180605_1956_cabletrailer_backnice.mp4
/kb/byrdpuckers/vid/index1.mp4
/kb/vid/dutch/dutch_jacksonnocout_get_my_weight_up.mp4
/kb/vid/dutch/dutch_jackson_feat_jibbscity_on_fire_off_then.mp4
/kb/vid/dutch/dutch_jackson_39_new_single.mp4
/kb/vid/youb/Luciano Pavarotti & James Brown - It_s a man_s world (1080pHD).mp4
/kb/vid/youb/REAL_Men_Who_Stare_At_Goats.mp4
/kb/vid/youb/REAL_MEN_WHO_STARE_AT_GOATS_part_2.mp4
/kb/vid/youb/The_Magus_of_Denver.mp4
/kb/vid/youb/PAPA-OOM-MOW-MOW!.mp4
/kb/vid/youb/romania_lalala.mp4
/kb/vid/youb/Willem_de_Thouars,_Kun_Tao_Silat,_1996_Gulfport_School_of_Ta-0.mp4
/kb/vid/youb/Zappa_Plays_Zappa_-_Joe_s_Garage.mp4
/kb/vid/youb/dietric_coffee_ifile-164376962.mp4
/kb/vid/youb/Perhaps_Love_-_John_Denver_Placido_Domingo_legendado.mp4
/kb/vid/youb/Big_Data_-_Tim_Smith.mp4
/kb/vid/youb/OFFICIAL_Chrysler_and_Bob_Dylan_Super_Bowl_Commercial_2014.mp4
/kb/vid/youb/02_Sixto_Rodriguez_-_I_Think_Of_You_.wmv.mp4
/kb/vid/youb/waits-lullaby-1.mp4
/kb/vid/youb/Maria_Muldaur_-_Don_t_You_Feel_My_Leg.mp4
/kb/vid/youb/REAL_MEN_WHO_STARE_AT_GOATS_part_3.mp4
/kb/vid/youb/sharon_jones_100_days.mp4
/kb/vid/youb/Willem_de_Thouars,_Kun_Tao_Silat,_1996_Gulfport_School_of_Ta-1.mp4
/kb/vid/youb/dori_caymmi-o_bem_do_mar.mp4
/kb/vid/youb/01_Sixto_Rodriguez_-_Sandrevan_Lullaby-Lifestyles_[Coming_From_.mp4
/kb/vid/youb/Eleni_Mandell_-__quot_my_twin_quot__-_Live_at_The_EARL.mp4
/kb/vid/youb/Nat_King_Cole_All_Over_The_World.mp4
/kb/vid/youb/shania_tTwain_forever_and_for_always-world.mp4
/kb/vid/youb/harris_together_again_file-249732345.mp4
/kb/vid/youb/doghead_video.mp4
/kb/vid/youb/03_Rodriguez_-_I_ll_Slip_Away.mp4
/kb/vid/youb/Maria_Muldaur_-_My_Tennessee_Mountain_Home__Live_Recording_.mp4
/kb/vid/youb/Trio_-_Sabine.mp4
/kb/vid/youb/WHENEVER GOD SHINES HIS LIGHT - VAN MORRISON.mp4
/kb/vid/youb/eva_cassidy-aint_no_sunshine.mp4
/kb/vid/youb/Maria_Muldaur_-_A_Good_Man_is_Hard_To_Find.mp4
/kb/vid/youb/Eleni_Mandell_-__quot_makeout_king_quot_.mp4
/kb/vid/youb/put_the_lime_in_the_coconut.mp4
/kb/vid/youb/amywinehouse_love_losing_game_file-235773700.mp4
/kb/vid/youb/romania_hat.mp4
/kb/vid/youb/freddy_dreamers_telling_you_now_file-570139451.mp4
/kb/vid/youb/Rodriguez_-_I_Wonder.mp4
/kb/vid/youb/Dreaming As One - Richie Havens.mp4
/kb/vid/youb/trio_Vogel_der_Nacht.mp4
/kb/vid/youb/zara_leander_psycadeylic_file-252228034.mp4
/kb/vid/youb/waits-time3.mp4
/kb/vid/youb/lovers_concerto_file-380426037.mp4
/kb/vid/youb/mclean_starry_nights_file-805110482.mp4
/kb/vid/youb/harris_wheels_of_love_file-54997698.mp4
/kb/vid/youb/Nat_King_Cole_-_Je_Vous_Aime_Beaucoup.mp4
/kb/vid/youb/Master_Guy_Savelli_s_Kun_Tao__U.S._Special_Forces_SERE_Train.mp4
/kb/vid/youb/Rodriguez_cf11_Rich_Folks_Hoax.mp4
/kb/vid/youb/48_Roses_-_Mariachi_El_Bronx_(Jay_Leno,_2011).mp4
/kb/vid/youb/TRIO_-_Du_ich_w_r_so_gern_bei_dir.mp4
/kb/vid/youb/YouTube_-_Amy_Winehouse_-_You_Know_I_m_No_Good.mp4
/kb/vid/youb/waits-come_on_up_to_the_house.mp4
/kb/vid/youb/Maria_Muldaur_-_Handy_Man.mp4
/kb/vid/youb/nina_simone-dont_let_me_be_misunderstood.mp4
/kb/vid/youb/_Firedoglake_sen_byrd_fiddle.mp4
/kb/vid/youb/Trio_-_Turaluraluralu.mp4
/kb/vid/youb/yogis_Tibetan_Buddhism__Secrets_of_the_Yogis_of_Tibet_-_Part_5.mp4
/kb/vid/youb/eva_cassidy-fields_of_gold.mp4
/kb/vid/youb/Paul_Simon_-_You_Can_Call_Me_Al.mp4
/kb/vid/youb/river_run_file-24160428.mp4
/kb/vid/youb/The_Large_Hadron_Rap.mp4
/kb/vid/youb/Petula Clark-Windmills Of Your Mind (lyrics).mp4
/kb/vid/youb/waits-time_full.mp4
/kb/vid/youb/joe_south_want_to_go_home.mp4
/kb/vid/youb/you_dont_own_me.mp4
/kb/vid/youb/iris_sweet_is_thr_melody.mp4
/kb/vid/youb/thai_bowie.mp4
/kb/vid/youb/femme_pencak silat.mp4
/kb/vid/youb/Huckleberry_Hound_17_Barbeque_Hound_-_YouTube.mp4
/kb/vid/youb/harris_nobodys_darlin_file-996617010.mp4
/kb/vid/youb/buckingham_nicks-say_goodbye-live.mp4
/kb/vid/deepmind/ka1.mp4
/kb/vid/deepmind/eva_cassidy-aint_no_sunshine.mp4
/kb/kt/Muhammad_ali_freddy_starr.mp4
/kb/kt/000_Pakua_master_of_94_year_s_old.mp4
/kb/kt/willem_de_thouars_kuntao_silat_1996_gulfport_School_of_ta.mp4
/kb/kt/Grand_Master_TRAN_TIEN_-_Vietnam_Kung_Fu.mp4
/kb/kt/yogis_Of_Tibet_-_Rare_Documentary.mp4
/kb/kt/6_Magic_Moves_-_To_Win_a_STREET_FIGHT.mp4
/kb/kt/kt_000229_037.mp4
/kb/kt/Push_Hands_-_Tui_Shou.mp4
/kb/kt/muhammad_ali funny moments.mp4
/kb/kt/GOATS_DECLASSIFIED__The_True_Story_Behind_The_Men_Who_Stare_.mp4
/kb/kt/master_ken_Seminar_uk_2013.mp4
/kb/kt/funny_monkeys_vs_dogs_cats_compilation_2017.mp4
/kb/kt/kt_000229_033.mp4
/kb/kt/THE_DAY_THE_EARTH_STOOD_STILL_-_1951_KLAATU_S_FINAL_SPEECH.mp4
/kb/kt/kt_000229_013.mp4
/kb/kt/muhammad_ali_beutiful_interview_rip.mp4
/kb/kt/femme_pencak_silat.mp4
/kb/kt/kt_000229_019.mp4
/kb/kt/wudang_vibrating_palm.mp4
/kb/kt/kt_000229_014.mp4
/kb/kt/baguazhang_turning_the_circle_tree.mp4
/kb/kt/S01E23_the_testament_of_arkadia.mp4
/kb/kt/dethouars_willem_de_thouars_uncle_bill_in_Verona_NJ_1-11-18.mp4
/kb/kt/Willem_de_Thouars,_Kun_Tao_Silat,_1996_Gulfport_School_of_Ta-2.mp4
/kb/kt/Aikido_-_Demo_by_founder_-_Moriteru_Uesiba.mp4
/kb/kt/kt_000229_007.mp4
/kb/kt/Shaolin_Monk_Master_Super_Speed.mp4
/kb/kt/Jim Channon Natural Security Future First Earth Battalion.mp4
/kb/kt/cgi_quantum_jump_hayk_sahakyants.mp4
/kb/kt/kt_000229_022.mp4
/kb/jtfdc/vid/jtfdc_20181226_1215_jtf31_teachyourdogsnothere_jkwii.mp4
/kb/jtfdc/vid/jtfdc_20180104_1113_fedexexpress_blackchallenger_meetgreet.mp4
/kb/jtfdc/vid/jtfdc_20181222_0945_jtf31_fiona_plumber_threats_n_stones.mp4
/kb/jtfdc/vid/jtfdc_20170609_1810_burgess_assessmen.mp4
/kb/jtfdc/vid/jtdfinc_2013mmdd_jtf39_trustee_byrd_threats.mp4
/kb/jtfdc/vid/jtfdc_20181210_1641_police2_pierce_pickup_jak3in/jtfdc_20181210_1639_jtf31_darkpickup_backupout.mp4
/kb/jtfdc/vid/jtfdc_20181210_1641_police2_pierce_pickup_jak3in/jtfdc_20181210_1641_police2_pierce_pickup_jak3in.mp4
/kb/jtfdc/vid/jtfdc_20181210_1641_police2_pierce_pickup_jak3in/jtfdc_20181210_1551_jtf31_tresspas.mp4
/kb/jtfdc/vid/jtfdc_20181210_1641_police2_pierce_pickup_jak3in/jtfdc_20181210_1634_jtf31_plannin.mp4
/kb/jtfdc/vid/jtfdc_20181210_1641_police2_pierce_pickup_jak3in/jtfdc_20181210_1637_jtf31_meeting_hahah.mp4
/kb/jtfdc/vid/jtfdc_20181210_1641_police2_pierce_pickup_jak3in/jtfdc_20181210_1540_jtf31_jkwii_threat.mp4
/kb/jtfdc/vid/jtfdc_20181210_1641_police2_pierce_pickup_jak3in/jtfdc_20181210_1638_jtf26_upmail.mp4
/kb/jtfdc/vid/jtfdc_20181210_1641_police2_pierce_pickup_jak3in/jtfdc_20181210_1542_wofffren.mp4
/kb/jtfdc/vid/jtfdc_20181224_2307_jkwii_whyuhere_your_scaringus.mp4
/kb/jtfdc/vid/jtfdc_20181120_1519_jtf30_doogy_jkwii_romppatro.mp4
/kb/jtfdc/vid/jtfdc_20181225_1352_jkwii_kids_jtf31_andy_dog.mp4
/kb/jtfdc/vid/jtfdc_20180411_1436_segrist_dog_fedex_stalk.mp4
/kb/jtfdc/vid/jtfdc_20181225_1951_jsk2in_maverics_santaride.mp4
/kb/jtfdc/vid/jtfdc_20181225_1936_jtf31_thanks4sign_meryxmas_woofs.mp4
/kb/jtfdc/vid/jtfdc_20181225_2250_200yr_stillenact_merryxmas.mp4
/kb/jtfdc/vid/jtfdc_20181224_2349_jkwii_jtf31in_fiona_unleashe_street_charge.mp4
/kb/jtfdc/vid/jtfdc_20181223_1821_jtf30_woofs_allnightling.mp4
/kb/jtfdc/vid/jtfdc_20181121_1123_jtf31_fiona_hadly_jkwii_romppatrol.mp4
/kb/jtfdc/vid/jtfdc_20171216_1520_skkids_jtf31rake_jtf27fedex.mp4
/kb/jtfdc/vid/jtfdc_20181210_1530_fiiretruck_xmaslight/jtfdc_20181210_1533_jtf31in_newblu.mp4
/kb/jtfdc/vid/jtfdc_20181210_1530_fiiretruck_xmaslight/jtfdc_20181210_1525_jtf30in.mp4
/kb/jtfdc/vid/jtfdc_20181210_1530_fiiretruck_xmaslight/jtfdc_20181210_1530_ffiretruck_xmaslight.mp4
/kb/jtfdc/vid/jtfdc_20181210_1530_fiiretruck_xmaslight/jtfdc_20181210_1533_fireatruck_suvdonw.mp4
/kb/jtfdc/vid/jtfdc_20181226_1200_jtf31_2xfiona_streetchargn_dogwalkeers.mp4
/kb/jtfdc/vid/jtfdc_20180308_2034_fedexs_flatbed_courtstalking.mp4
/kb/jtfdc/vid/jtfdc_20181226_1236_byrds_up_quiet .mp4
/kb/jtfdc/vid/jtfdc_20181222_1357_jtf31_trespass_jkwii_liveyouronwlives.mp4
/kb/jtfdc/vid/jtfdc_20181226_1205_jtf31_oureasment_dogtraing.mp4
/kb/jtfdc/vid/jtfdc_20160702_1641_jtf31_josh_4asshole_gobackinside.mp4
/kb/jtfdc/vid/jtfdc_20181225_1345_kids_jtf31_freeroam_dogs.mp4
/kb/jtfdc/vid/jtfdc_20181210_1540_jtf31_jkwii_threats_n_stones.mp4
/kb/jtfdc/vid/jtfdc_20181226_1235_bigtruck_byrds_damage_assessmen.mp4
/kb/kb_ko_jtf/sd_20150720/mp4_20150716/04051_20150716_0643.mp4
/kb/kb_ko_jtf/sd_20150720/mp4_20150716/04044_20150716_0634.mp4
/kb/kb_ko_jtf/sd_20150720/mp4_20150716/04057_20150716_0701.mp4
/kb/kb_ko_jtf/sd_20150720/mp4_20150716/04059_20150716_0709.mp4
/kb/kb_ko_jtf/sd_20150720/mp4_20150716/04045_20150716_0635.mp4
/kb/kb_ko_jtf/sd_20150720/mp4_20150716/04064_20150716_0813.mp4
/kb/kb_ko_jtf/sd_20150720/mp4_20150716/04052_20150716_0644.mp4
/kb/kb_ko_jtf/sd_20150720/mp4_20150716/04046_20150716_0640_jackie_yelling_at_josh.mp4
/kb/kb_ko_jtf/sd_20150720/mp4_20150716/04053_20150716_0644.mp4
/kb/kb_ko_jtf/sd_20150720/mp4_20150716/04043_20150716_0616.mp4
/kb/kb_ko_jtf/sd_20150720/mp4_20150716/04066_20150716_0816.mp4
/kb/kb_ko_jtf/sd_20150720/mp4_20150716/04056_20150716_0646_josh_jackie_yelling.mp4
/kb/kb_ko_jtf/sd_20150720/mp4_20150716/04048_20150716_0641.mp4
/kb/kb_ko_jtf/sd_20150720/mp4_20150716/04063_20150716_0812.mp4
/kb/kb_ko_jtf/sd_20150720/mp4_20150716/04054_20150716_0644.mp4
/kb/kb_ko_jtf/sd_20150720/mp4_20150716/04055_20150716_0644.mp4
/kb/kb_ko_jtf/sd_20150720/mp4_20150716/04049_20150716_0642.mp4
/kb/kb_ko_jtf/sd_20150720/mp4_20150716/04050_20150716_0642.mp4
/kb/kb_ko_jtf/sd_20150720/mp4_20150716/04062_20150716_0738.mp4
/kb/kb_ko_jtf/sd_20150720/mp4_20150716/04065_20150716_0815.mp4
/1.mp4
/index7.mp4
/4.mp4
/2.mp4
/index6.mp4
/index2.mp4
/index.mp4
/koh5.mp4
/index1.mp4
/iperms/doghead_video.mp4
/iperms/Huckleberry_Hound_17_Barbeque_Hound.mp4
/iperms/index2.mp4
/iperms/index1.mp4
/iperms/index3.mp4
/ko_jtf/jtf30/mov/Clip14.mp4
/ko_jtf/wg/mp4_20150716/mp4_email_sent2/04055_20150716_0644.mp4
/ko_jtf/wg/mp4_20150716/04051_20150716_0643.mp4
/ko_jtf/wg/mp4_20150716/04046_20150716_0640_Jackie_yelling_at_Josh.mp4
/ko_jtf/wg/mp4_20150716/04044_20150716_0634.mp4
/ko_jtf/wg/mp4_20150716/mp4_email_sent1/04052_20150716_0644.mp4
/ko_jtf/wg/mp4_20150716/mp4_email_sent1/04054_20150716_0644.mp4
/ko_jtf/wg/mp4_20150716/mp4_email_sent1/04050_20150716_0642.mp4
/ko_jtf/wg/mp4_20150716/04053_20150716_0644.mp4
/ko_jtf/wg/mp4_20150716/04048_20150716_0641.mp4
/ko_jtf/wg/mp4_20150716/mp4_email_sent1 2/04052_20150716_0644.mp4
/ko_jtf/wg/mp4_20150716/mp4_email_sent1 2/04054_20150716_0644.mp4
/ko_jtf/wg/mp4_20150716/mp4_email_sent1 2/04050_20150716_0642.mp4
/ko_jtf/wg/mp4_20150716/04049_20150716_0642.mp4
/ko_jtf/wg/mp4_20150716/04056_20150716_0646_Josh_Jackie_yelling.mp4
/ko_jtf/wg/videos_to_lighten_the_mood/Huckleberry_Hound_17_Barbeque_Hound.mp4
/ko_jtf/wg/videos_to_lighten_the_mood/executive_summary_doghead_video 3-23-16738 PM1.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150806/mt4_20150806/3637_car_drivein_lights_off_20150807.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150806/mt4_20150806/3638_josh_walkin_house_20150807.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150928/mp4_20150928/0475_20150928_0747.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150928/mp4_20150928/0471_20150928_0737.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150928/mp4_20150928/0472_20150928_0737.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150720/mp4_20150716/04051_20150716_0643.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150720/mp4_20150716/04046_20150716_0640_Jackie_yelling_at_Josh.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150720/mp4_20150716/04044_20150716_0634.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150720/mp4_20150716/04057_20150716_0701.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150720/mp4_20150716/04059_20150716_0709.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150720/mp4_20150716/04045_20150716_0635.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150720/mp4_20150716/04064_20150716_0813.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150720/mp4_20150716/04052_20150716_0644.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150720/mp4_20150716/04053_20150716_0644.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150720/mp4_20150716/04043_20150716_0616.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150720/mp4_20150716/04066_20150716_0816.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150720/mp4_20150716/04048_20150716_0641.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150720/mp4_20150716/04063_20150716_0812.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150720/mp4_20150716/04054_20150716_0644.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150720/mp4_20150716/04055_20150716_0644.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150720/mp4_20150716/04049_20150716_0642.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150720/mp4_20150716/04050_20150716_0642.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150720/mp4_20150716/04062_20150716_0738.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150720/mp4_20150716/04056_20150716_0646_Josh_Jackie_yelling.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150720/mp4_20150716/04065_20150716_0815.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150919pm/mp4_20150919pm/00027_20150919_2205_josh_walking.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150919pm/mp4_20150919pm/00026_20150919_2102.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150919pm/mp4_20150919pm/00025_20150919_1947.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150919pm/mp4_20150919pm/00028_20150919_2230.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150919pm/mp4_20150919pm/00023_20150919_1910.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150919am/mp4_20150919am/00045_20150919_1601.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150919am/mp4_20150919am/00041_20150919_1311.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150919am/mp4_20150919am/00043_20150919_1530.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150919am/mp4_20150919am/00037_20150919_1235.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150919am/mp4_20150919am/00036_20150919_1235.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150919am/mp4_20150919am/00042_20150919_1520.mp4
/ko_jtf/wg/pictures_for_court_20160602/videos_to_lighten_the_mood/Huckleberry_Hound_17_Barbeque_Hound.mp4
/ko_jtf/wg/pictures_for_court_20160602/videos_to_lighten_the_mood/executive_summary_doghead_video 3-23-16738 PM1.mp4
/ko_jtf/kb/sd_20150720/mp4_20150716/04051_20150716_0643.mp4
/ko_jtf/kb/sd_20150720/mp4_20150716/04046_20150716_0640_Jackie_yelling_at_Josh.mp4
/ko_jtf/kb/sd_20150720/mp4_20150716/04044_20150716_0634.mp4
/ko_jtf/kb/sd_20150720/mp4_20150716/04057_20150716_0701.mp4
/ko_jtf/kb/sd_20150720/mp4_20150716/04059_20150716_0709.mp4
/ko_jtf/kb/sd_20150720/mp4_20150716/04045_20150716_0635.mp4
/ko_jtf/kb/sd_20150720/mp4_20150716/04064_20150716_0813.mp4
/ko_jtf/kb/sd_20150720/mp4_20150716/04052_20150716_0644.mp4
/ko_jtf/kb/sd_20150720/mp4_20150716/04053_20150716_0644.mp4
/ko_jtf/kb/sd_20150720/mp4_20150716/04043_20150716_0616.mp4
/ko_jtf/kb/sd_20150720/mp4_20150716/04066_20150716_0816.mp4
/ko_jtf/kb/sd_20150720/mp4_20150716/04048_20150716_0641.mp4
/ko_jtf/kb/sd_20150720/mp4_20150716/04063_20150716_0812.mp4
/ko_jtf/kb/sd_20150720/mp4_20150716/04054_20150716_0644.mp4
/ko_jtf/kb/sd_20150720/mp4_20150716/04055_20150716_0644.mp4
/ko_jtf/kb/sd_20150720/mp4_20150716/04049_20150716_0642.mp4
/ko_jtf/kb/sd_20150720/mp4_20150716/04050_20150716_0642.mp4
/ko_jtf/kb/sd_20150720/mp4_20150716/04062_20150716_0738.mp4
/ko_jtf/kb/sd_20150720/mp4_20150716/04056_20150716_0646_Josh_Jackie_yelling.mp4
/ko_jtf/kb/sd_20150720/mp4_20150716/04065_20150716_0815.mp4
/ko_jtf/kb/v/jtfinc_9558_byrd_trustee_threat_201505.mp4
/ko_jtf/kb/v/9557_fiona_runs_201506.mp4
/ko_jtf/kb/v/index5.mp4
/ko_jtf/kb/v/index4.mp4
/ko_jtf/kb/v/ka1.mp4
/ko_jtf/kb/v/doghead_video.mp4
/ko_jtf/kb/v/Huckleberry_Hound_17_Barbeque_Hound.mp4
/ko_jtf/kb/v/9559_byrd_trustee_threat_201505.mp4
/ko_jtf/kb/v/jtdfinc_byrd2013.mp4
/ko_jtf/kb/v/index6.mp4
/ko_jtf/kb/v/index2.mp4
/ko_jtf/kb/v/jtf31_fiona_runs_201506.mp4
/ko_jtf/kb/v/9558_byrd_trustee_threat_201505.mp4
/ko_jtf/kb/v/index.mp4
/ko_jtf/kb/v/jtfinc_9559_byrd_trustee_threat_201505.mp4
/ko_jtf/kb/v/index1.mp4
/ko_jtf/kb/v/ko_jtf.mp4
`;

kolists['fb'] = 
`pages/1.jpg
pages/2.jpg
pages/3.jpg
pages/4.jpg
pages/5.jpg
pages/6.jpg
pages/7.jpg
pages/8.jpg
pages/9.jpg
/imgs/gif/alien_tek/a11_flipbook.gif
/imgs/gif/alien_tek/afda.gif
/imgs/gif/alien_tek/applewait.gif
/imgs/gif/alien_tek/asdfadfad.gif
/imgs/gif/alien_tek/cityspiral.gif
/imgs/gif/alien_tek/cobe4.gif
/imgs/gif/alien_tek/donujt.gif
/imgs/gif/alien_tek/drip1.gif
/imgs/gif/alien_tek/floaters.gif
/imgs/gif/alien_tek/icepalace.gif
/imgs/gif/alien_tek/lit2.gif
/imgs/gif/alien_tek/lite1.gif
/imgs/gif/alien_tek/litecrystle.gif
/imgs/gif/alien_tek/med1.gif
/imgs/gif/alien_tek/med19.gif
/imgs/gif/alien_tek/med3.gif
/imgs/gif/alien_tek/med5.gif
/imgs/gif/alien_tek/med6.gif
/imgs/gif/alien_tek/medpump.gif
/imgs/gif/alien_tek/medskin.gif
/imgs/gif/alien_tek/mek1.gif
/imgs/gif/alien_tek/mek12.gif
/imgs/gif/alien_tek/mek17.gif
/imgs/gif/alien_tek/mek2.gif
/imgs/gif/alien_tek/mek3.gif
/imgs/gif/alien_tek/mek5.gif
/imgs/gif/alien_tek/mek7.gif
/imgs/gif/alien_tek/mek8.gif
/imgs/gif/alien_tek/mek9.gif
/imgs/gif/alien_tek/memcore.gif
/imgs/gif/alien_tek/merd2.gif
/imgs/gif/alien_tek/octopus.gif
/imgs/gif/alien_tek/org1.gif
/imgs/gif/alien_tek/photons.gif
/imgs/gif/alien_tek/pip2.gif
/imgs/gif/alien_tek/pulsehelix.gif
/imgs/gif/alien_tek/smoke.gif
/imgs/gif/alien_tek/static4.gif
/imgs/gif/alien_tek/su5_67_h_1340.gif
/imgs/gif/alien_tek/tesla.gif
/imgs/gif/alien_tek/wave.gif
/imgs/gif/byrdpucker/giph_horse_distotiony.gif
/imgs/gif/byrdpucker/giph_horse_smerky.gif
/imgs/gif/byrdpucker/giphy._horse_glittergif.gif
/imgs/gif/byrdpucker/giphy._horse_koballsgif.gif
/imgs/gif/byrdpucker/giphy_bugs_boundry.gif
/imgs/gif/byrdpucker/giphy_bugs_jaildoors.gif
/imgs/gif/byrdpucker/giphy_bugs_pase.gif
/imgs/gif/byrdpucker/giphy_bugs_sstop.gif
/imgs/gif/byrdpucker/giphy_bugs_takaway.gif
/imgs/gif/byrdpucker/giphy_bugs_wakeup.gif
/imgs/gif/byrdpucker/giphy_byrdpucker_dog_n_pony_show.gif
/imgs/gif/byrdpucker/giphy_cruella_1.gif
/imgs/gif/byrdpucker/giphy_cruella_2.gif
/imgs/gif/byrdpucker/giphy_cubemembrain.gif
/imgs/gif/byrdpucker/giphy_cycle.gif
/imgs/gif/byrdpucker/giphy_cycle_circle.gif
/imgs/gif/byrdpucker/giphy_cycle_dog.gif
/imgs/gif/byrdpucker/giphy_cycle_jtf39.gif
/imgs/gif/byrdpucker/giphy_cycle_legs.gif
/imgs/gif/byrdpucker/giphy_cycle_rodent.gif
/imgs/gif/byrdpucker/giphy_dogpaddle.gif
/imgs/gif/byrdpucker/giphy_dogs1.gif
/imgs/gif/byrdpucker/giphy_dogygym.gif
/imgs/gif/byrdpucker/giphy_horse_soccor.gif
/imgs/gif/byrdpucker/giphy_horse_views.gif
/imgs/gif/byrdpucker/giphy_horsefish.gif
/imgs/gif/byrdpucker/giphy_horseg_girl_vintage.gif
/imgs/gif/byrdpucker/giphy_horseguy_pranser.gif
/imgs/gif/byrdpucker/giphy_horserun_pencil.gif
/imgs/gif/byrdpucker/giphy_horserun_vintage.gif
/imgs/gif/byrdpucker/giphy_koponies.gif
/imgs/gif/byrdpucker/giphy_magicdoors2.gif
/imgs/gif/byrdpucker/giphy_magicscary_shadows.gif
/imgs/gif/byrdpucker/giphy_magicspecter2.gif
/imgs/gif/byrdpucker/giphy_mrevil.gif
/imgs/gif/byrdpucker/giphy_mtfail.gif
/imgs/gif/byrdpucker/giphy_pinocio_1.gif
/imgs/gif/byrdpucker/giphy_pinocioa_2.gif
/imgs/gif/byrdpucker/giphy_pinocioa_4.gif
/imgs/gif/byrdpucker/giphy_wicked_curtains_closel_.gif
/imgs/gif/crazy/giph_imnotcrazyy.gif
/imgs/gif/crazy/giphy_containment.gif
/imgs/gif/crazy/giphy_crazy3.gif
/imgs/gif/crazy/giphy_crazy5.gif
/imgs/gif/crazy/giphy_crazy_blond.gif
/imgs/gif/crazy/giphy_crazy_mickey.gif
/imgs/gif/crazy/giphy_crazy_princess.gif
/imgs/gif/crazy/giphy_crazy_simsoncalass.gif
/imgs/gif/crazy/giphy_crazy_smilyface.gif
/imgs/gif/crazy/giphy_crazyguy.gif
/imgs/gif/crazy/giphy_crazylady.gif
/imgs/gif/crazy/giphy_crazyorb.gif
/imgs/gif/crazy/giphy_crazytoon.gif
/imgs/gif/crazy/giphy_derbyguy.gif
/imgs/gif/crazy/giphy_dracual_onoff.gif
/imgs/gif/crazy/giphy_duck_crazy.gif
/imgs/gif/crazy/giphy_duckcrash.gif
/imgs/gif/crazy/giphy_einstein.gif
/imgs/gif/crazy/giphy_einstein_wabblehead.gif
/imgs/gif/crazy/giphy_expression_dancer.gif
/imgs/gif/crazy/giphy_fingerwave.gif
/imgs/gif/crazy/giphy_ladyscarey.gif
/imgs/gif/crazy/giphy_magicorb_laddle.gif
/imgs/gif/crazy/giphy_nerdy.gif
/imgs/gif/crazy/giphy_rumshower.gif
/imgs/gif/crazy/giphy_science_frank.gif
/imgs/gif/crazy/giphy_screamer.gif
/imgs/gif/crazy/giphy_showergirl.gif
/imgs/gif/crazy/giphy_smile.gif
/imgs/gif/crazy/giphy_smileyshark.gif
/imgs/gif/crazy/giphy_time_waites.gif
/imgs/gif/crazy/giphy_timeguy_late.gif
/imgs/gif/crazy/giphy_zoom_crazyguy.gif
/imgs/gif/cute/bee.gif
/imgs/gif/cute/boop.gif
/imgs/gif/cute/CA 4th 027 copy.gif
/imgs/gif/cute/CA 4th 027.gif
/imgs/gif/cute/catas.gif
/imgs/gif/cute/cats.gif
/imgs/gif/cute/cd81506101b9407dec74b5635a70fb16.gif
/imgs/gif/cute/crayons.gif
/imgs/gif/cute/disb.gif
/imgs/gif/cute/dogconfusion.gif
/imgs/gif/cute/fireworks.gif
/imgs/gif/cute/fireworks13.gif
/imgs/gif/cute/fireworks3.gif
/imgs/gif/cute/fireworks4.gif
/imgs/gif/cute/fish-swimming.gif
/imgs/gif/cute/fish.gif
/imgs/gif/cute/gipdicehy.gif
/imgs/gif/cute/gipdisneyhy.gif
/imgs/gif/cute/gipfadfahy.gif
/imgs/gif/cute/giphy.gif
/imgs/gif/cute/kid.gif
/imgs/gif/cute/party.gif
/imgs/gif/cute/photonorb.gif
/imgs/gif/cute/sfg.gif
/imgs/gif/cute/spinning-arrow-right.gif
/imgs/gif/firebubbles.gif
/imgs/gif/firebubblesb.gif
/imgs/gif/firebubblesd.gif
/imgs/gif/firebubblesp.gif
/imgs/gif/firebubblesq.gif
/imgs/gif/focus/giph_focus_kidy.gif
/imgs/gif/focus/giph_focus_simpson.gif
/imgs/gif/focus/giph_watchery.gif
/imgs/gif/focus/giphy._eyeball_glossygif.gif
/imgs/gif/focus/giphy_eye_1.gif
/imgs/gif/focus/giphy_eye_owl.gif
/imgs/gif/focus/giphy_eyes2mouth.gif
/imgs/gif/focus/giphy_eyes_linedraw.gif
/imgs/gif/focus/giphy_facemasks.gif
/imgs/gif/focus/giphy_focus_3dglasses.gif
/imgs/gif/focus/giphy_focus_dali.gif
/imgs/gif/focus/giphy_focus_goggles.gif
/imgs/gif/focus/giphy_focus_iris.gif
/imgs/gif/focus/giphy_focus_koglasses.gif
/imgs/gif/focus/giphy_focus_sleuth.gif
/imgs/gif/gif_bugs/giph_bugs_bellydancery.gif
/imgs/gif/gif_bugs/giph_bugs_monster_outy.gif
/imgs/gif/gif_bugs/giph_bugs_peppy_heartsy.gif
/imgs/gif/gif_bugs/giph_kiti_earthrise.gif
/imgs/gif/gif_bugs/giph_kiti_flyingsaucersy.gif
/imgs/gif/gif_bugs/giph_kiti_unicorn.gif
/imgs/gif/gif_bugs/giph_the_end1y.gif
/imgs/gif/gif_bugs/giphy.=_bugs_beepbeep_cliff.gif
/imgs/gif/gif_bugs/giphy._bugs_apple_androidgif.gif
/imgs/gif/gif_bugs/giphy4.gif
/imgs/gif/gif_bugs/giphy_alien_tek0721.gif
/imgs/gif/gif_bugs/giphy_anthead.gif
/imgs/gif/gif_bugs/giphy_beepbeep_ropebride.gif
/imgs/gif/gif_bugs/giphy_box_conveyor.gif
/imgs/gif/gif_bugs/giphy_box_spinners.gif
/imgs/gif/gif_bugs/giphy_boxhop.gif
/imgs/gif/gif_bugs/giphy_boxopen.gif
/imgs/gif/gif_bugs/giphy_boxs_amazon.gif
/imgs/gif/gif_bugs/giphy_boxtoon.gif
/imgs/gif/gif_bugs/giphy_bugs_alian_upskirt.gif
/imgs/gif/gif_bugs/giphy_bugs_alien.gif
/imgs/gif/gif_bugs/giphy_bugs_alien_bodyscan.gif
/imgs/gif/gif_bugs/giphy_bugs_alien_digits.gif
/imgs/gif/gif_bugs/giphy_bugs_alien_dog.gif
/imgs/gif/gif_bugs/giphy_bugs_alien_flagplan.gif
/imgs/gif/gif_bugs/giphy_bugs_alien_judge.gif
/imgs/gif/gif_bugs/giphy_bugs_attention.gif
/imgs/gif/gif_bugs/giphy_bugs_beepbeep_bizcard.gif
/imgs/gif/gif_bugs/giphy_bugs_beepbeep_byrdman.gif
/imgs/gif/gif_bugs/giphy_bugs_beepbeep_dont_have_the_heart.gif
/imgs/gif/gif_bugs/giphy_bugs_beepbeep_fallin.gif
/imgs/gif/gif_bugs/giphy_bugs_birdcat.gif
/imgs/gif/gif_bugs/giphy_bugs_bow.gif
/imgs/gif/gif_bugs/giphy_bugs_brunhilda.gif
/imgs/gif/gif_bugs/giphy_bugs_bugattack.gif
/imgs/gif/gif_bugs/giphy_bugs_bull.gif
/imgs/gif/gif_bugs/giphy_bugs_deal_with_it.gif
/imgs/gif/gif_bugs/giphy_bugs_ducklightergif.gif
/imgs/gif/gif_bugs/giphy_bugs_evil_castle.gif
/imgs/gif/gif_bugs/giphy_bugs_excuse_me.gif
/imgs/gif/gif_bugs/giphy_bugs_eyeroll.gif
/imgs/gif/gif_bugs/giphy_bugs_fire.gif
/imgs/gif/gif_bugs/giphy_bugs_heart_skipping.gif
/imgs/gif/gif_bugs/giphy_bugs_heaven_fall.gif
/imgs/gif/gif_bugs/giphy_bugs_hencook.gif
/imgs/gif/gif_bugs/giphy_bugs_heyyou.gif
/imgs/gif/gif_bugs/giphy_bugs_inspiration.gif
/imgs/gif/gif_bugs/giphy_bugs_jailbuny.gif
/imgs/gif/gif_bugs/giphy_bugs_jailsam.gif
/imgs/gif/gif_bugs/giphy_bugs_jitters_sip.gif
/imgs/gif/gif_bugs/giphy_bugs_kiti_jitters.gif
/imgs/gif/gif_bugs/giphy_bugs_mess.gif
/imgs/gif/gif_bugs/giphy_bugs_monster_conon.gif
/imgs/gif/gif_bugs/giphy_bugs_monster_contained.gif
/imgs/gif/gif_bugs/giphy_bugs_monster_doorbar.gif
/imgs/gif/gif_bugs/giphy_bugs_monster_flee.gif
/imgs/gif/gif_bugs/giphy_bugs_monster_grab.gif
/imgs/gif/gif_bugs/giphy_bugs_monster_scare.gif
/imgs/gif/gif_bugs/giphy_bugs_monster_stalk.gif
/imgs/gif/gif_bugs/giphy_bugs_monster_stalk2.gif
/imgs/gif/gif_bugs/giphy_bugs_now_we_dance.gif
/imgs/gif/gif_bugs/giphy_bugs_one_more_time.gif
/imgs/gif/gif_bugs/giphy_bugs_pagecut.gif
/imgs/gif/gif_bugs/giphy_bugs_peppy_kiss.gif
/imgs/gif/gif_bugs/giphy_bugs_piano.gif
/imgs/gif/gif_bugs/giphy_bugs_play_this_game.gif
/imgs/gif/gif_bugs/giphy_bugs_pot.gif
/imgs/gif/gif_bugs/giphy_bugs_rockette.gif
/imgs/gif/gif_bugs/giphy_bugs_rocky.gif
/imgs/gif/gif_bugs/giphy_bugs_season.gif
/imgs/gif/gif_bugs/giphy_bugs_shave.gif
/imgs/gif/gif_bugs/giphy_bugs_slots.gif
/imgs/gif/gif_bugs/giphy_bugs_start.gif
/imgs/gif/gif_bugs/giphy_bugs_target.gif
/imgs/gif/gif_bugs/giphy_bugs_thats_all_folks.gif
/imgs/gif/gif_bugs/giphy_bugs_tooth.gif
/imgs/gif/gif_bugs/giphy_bugs_tv_western.gif
/imgs/gif/gif_bugs/giphy_bugs_tweetybird.gif
/imgs/gif/gif_bugs/giphy_bugs_wanted.gif
/imgs/gif/gif_bugs/giphy_bugs_what_a_maroon.gif
/imgs/gif/gif_bugs/giphy_bugs_whitehorse.gif
/imgs/gif/gif_bugs/giphy_bugs_yipe.gif
/imgs/gif/gif_bugs/giphy_chain_n_torus.gif
/imgs/gif/gif_bugs/giphy_chaos.gif
/imgs/gif/gif_bugs/giphy_checkerboard.gif
/imgs/gif/gif_bugs/giphy_choc_girl_tomuch.gif
/imgs/gif/gif_bugs/giphy_choc_kid.gif
/imgs/gif/gif_bugs/giphy_choc_kid2.gif
/imgs/gif/gif_bugs/giphy_choc_lucy.gif
/imgs/gif/gif_bugs/giphy_choc_pour1.gif
/imgs/gif/gif_bugs/giphy_choc_princess.gif
/imgs/gif/gif_bugs/giphy_choc_selfmed.gif
/imgs/gif/gif_bugs/giphy_clapguy.gif
/imgs/gif/gif_bugs/giphy_corners.gif
/imgs/gif/gif_bugs/giphy_corners2.gif
/imgs/gif/gif_bugs/giphy_crown.gif
/imgs/gif/gif_bugs/giphy_diamond_tubing.gif
/imgs/gif/gif_bugs/giphy_digit_copypaste.gif
/imgs/gif/gif_bugs/giphy_dog_fan.gif
/imgs/gif/gif_bugs/giphy_dogewaves.gif
/imgs/gif/gif_bugs/giphy_escalator.gif
/imgs/gif/gif_bugs/giphy_eyebug_hover.gif
/imgs/gif/gif_bugs/giphy_eyefly.gif
/imgs/gif/gif_bugs/giphy_fantube.gif
/imgs/gif/gif_bugs/giphy_gillligan.gif
/imgs/gif/gif_bugs/giphy_go__barbells.gif
/imgs/gif/gif_bugs/giphy_godtwiddle.gif
/imgs/gif/gif_bugs/giphy_kali_0721_a.gif
/imgs/gif/gif_bugs/giphy_kali_boxs.gif
/imgs/gif/gif_bugs/giphy_kali_cirles.gif
/imgs/gif/gif_bugs/giphy_kiti_boxclose.gif
/imgs/gif/gif_bugs/giphy_kiti_boxlid.gif
/imgs/gif/gif_bugs/giphy_kiti_boxthru.gif
/imgs/gif/gif_bugs/giphy_kiti_inabox.gif
/imgs/gif/gif_bugs/giphy_kiti_lightning.gif
/imgs/gif/gif_bugs/giphy_kitisews.gif
/imgs/gif/gif_bugs/giphy_kity_wings.gif
/imgs/gif/gif_bugs/giphy_konabus_loosewheels.gif
/imgs/gif/gif_bugs/giphy_kt_baseball.gif
/imgs/gif/gif_bugs/giphy_lineart.gif
/imgs/gif/gif_bugs/giphy_lineart2.gif
/imgs/gif/gif_bugs/giphy_mouthballs.gif
/imgs/gif/gif_bugs/giphy_mouthtube.gif
/imgs/gif/gif_bugs/giphy_orb_stamper.gif
/imgs/gif/gif_bugs/giphy_orb_stars_.gif
/imgs/gif/gif_bugs/giphy_orb_wave.gif
/imgs/gif/gif_bugs/giphy_orbs_0721b.gif
/imgs/gif/gif_bugs/giphy_orbs_bubbles.gif
/imgs/gif/gif_bugs/giphy_orbs_pods.gif
/imgs/gif/gif_bugs/giphy_org0721a.gif
/imgs/gif/gif_bugs/giphy_ringman.gif
/imgs/gif/gif_bugs/giphy_skateboard_torus.gif
/imgs/gif/gif_bugs/giphy_sketch_laps.gif
/imgs/gif/gif_bugs/giphy_spinner_white.gif
/imgs/gif/gif_bugs/giphy_star_bounce.gif
/imgs/gif/gif_bugs/giphy_tanklite.gif
/imgs/gif/gif_bugs/giphy_thats_all_folks_porky.gif
/imgs/gif/gif_bugs/giphy_the_end2.gif
/imgs/gif/gif_bugs/giphy_the_end_shade.gif
/imgs/gif/gif_bugs/giphy_thinkguy.gif
/imgs/gif/gif_bugs/giphy_triangles.gif
/imgs/gif/gif_bugs/giphy_undulator.gif
/imgs/gif/gif_bugs/giphy_wrap_it_up.gif
/imgs/gif/gif_spinners/giph_headsy.gif
/imgs/gif/gif_spinners/giphy_0rbs21.gif
/imgs/gif/gif_spinners/giphy_ali_ropeadope.gif
/imgs/gif/gif_spinners/giphy_ball_in_box.gif
/imgs/gif/gif_spinners/giphy_barcoede.gif
/imgs/gif/gif_spinners/giphy_blow_the_house_down.gif
/imgs/gif/gif_spinners/giphy_bookdeamon.gif
/imgs/gif/gif_spinners/giphy_box_dancing.gif
/imgs/gif/gif_spinners/giphy_box_of_shame.gif
/imgs/gif/gif_spinners/giphy_box_of_shane2.gif
/imgs/gif/gif_spinners/giphy_boxes_in_boxes.gif
/imgs/gif/gif_spinners/giphy_boxes_up.gif
/imgs/gif/gif_spinners/giphy_bugout.gif
/imgs/gif/gif_spinners/giphy_bugs_alien_hothead.gif
/imgs/gif/gif_spinners/giphy_bugs_beepbeep_cliffdoor.gif
/imgs/gif/gif_spinners/giphy_bugs_beepbeep_crusin.gif
/imgs/gif/gif_spinners/giphy_bugs_beepbeep_crusin_sketch.gif
/imgs/gif/gif_spinners/giphy_bugs_piano_finger.gif
/imgs/gif/gif_spinners/giphy_bugwalker.gif
/imgs/gif/gif_spinners/giphy_cinderella_shoe_not4u.gif
/imgs/gif/gif_spinners/giphy_control_panel.gif
/imgs/gif/gif_spinners/giphy_crosses.gif
/imgs/gif/gif_spinners/giphy_cube_undulate.gif
/imgs/gif/gif_spinners/giphy_cubefalls.gif
/imgs/gif/gif_spinners/giphy_cubeline.gif
/imgs/gif/gif_spinners/giphy_evenplaning.gif
/imgs/gif/gif_spinners/giphy_eyet_ears.gif
/imgs/gif/gif_spinners/giphy_finders_eye_heart.gif
/imgs/gif/gif_spinners/giphy_fixit.gif
/imgs/gif/gif_spinners/giphy_fractals.gif
/imgs/gif/gif_spinners/giphy_fuzzy_orb.gif
/imgs/gif/gif_spinners/giphy_fuzzyv.gif
/imgs/gif/gif_spinners/giphy_girl_pokadots.gif
/imgs/gif/gif_spinners/giphy_go_gridwaves.gif
/imgs/gif/gif_spinners/giphy_go_lites_around.gif
/imgs/gif/gif_spinners/giphy_go_square_crosses.gif
/imgs/gif/gif_spinners/giphy_go_squares.gif
/imgs/gif/gif_spinners/giphy_go_squares_3d.gif
/imgs/gif/gif_spinners/giphy_go_wobbles.gif
/imgs/gif/gif_spinners/giphy_gorays.gif
/imgs/gif/gif_spinners/giphy_gradient.gif
/imgs/gif/gif_spinners/giphy_gush.gif
/imgs/gif/gif_spinners/giphy_gushpipes.gif
/imgs/gif/gif_spinners/giphy_guy_fingertalk.gif
/imgs/gif/gif_spinners/giphy_guy_salute.gif
/imgs/gif/gif_spinners/giphy_guy_stand_proud.gif
/imgs/gif/gif_spinners/giphy_guy_thumbs_down.gif
/imgs/gif/gif_spinners/giphy_hallway_wiggle.gif
/imgs/gif/gif_spinners/giphy_hand2sand.gif
/imgs/gif/gif_spinners/giphy_head_androidspin.gif
/imgs/gif/gif_spinners/giphy_head_dog.gif
/imgs/gif/gif_spinners/giphy_head_milkbob.gif
/imgs/gif/gif_spinners/giphy_head_oz.gif
/imgs/gif/gif_spinners/giphy_head_rings.gif
/imgs/gif/gif_spinners/giphy_head_running.gif
/imgs/gif/gif_spinners/giphy_head_spin.gif
/imgs/gif/gif_spinners/giphy_head_thinker.gif
/imgs/gif/gif_spinners/giphy_head_trippy.gif
/imgs/gif/gif_spinners/giphy_head_trippy_suit.gif
/imgs/gif/gif_spinners/giphy_headtoo.gif
/imgs/gif/gif_spinners/giphy_heart.gif
/imgs/gif/gif_spinners/giphy_heart_sunny.gif
/imgs/gif/gif_spinners/giphy_hex_mnaggots.gif
/imgs/gif/gif_spinners/giphy_hockey_snoopy.gif
/imgs/gif/gif_spinners/giphy_js.gif
/imgs/gif/gif_spinners/giphy_jumpher.gif
/imgs/gif/gif_spinners/giphy_kali22.gif
/imgs/gif/gif_spinners/giphy_kali_eyeball.gif
/imgs/gif/gif_spinners/giphy_kids_out_of_boxes.gif
/imgs/gif/gif_spinners/giphy_ko_ali.gif
/imgs/gif/gif_spinners/giphy_konabus_catpillar.gif
/imgs/gif/gif_spinners/giphy_kt_circlemovie.gif
/imgs/gif/gif_spinners/giphy_kt_orb_boxers.gif
/imgs/gif/gif_spinners/giphy_kt_wooky.gif
/imgs/gif/gif_spinners/giphy_laptops.gif
/imgs/gif/gif_spinners/giphy_latern.gif
/imgs/gif/gif_spinners/giphy_layers.gif
/imgs/gif/gif_spinners/giphy_litedisplay.gif
/imgs/gif/gif_spinners/giphy_litehouse_pyramid.gif
/imgs/gif/gif_spinners/giphy_longdress.gif
/imgs/gif/gif_spinners/giphy_man_siluet.gif
/imgs/gif/gif_spinners/giphy_manlaser.gif
/imgs/gif/gif_spinners/giphy_mesh_popcorn.gif
/imgs/gif/gif_spinners/giphy_meshwrap.gif
/imgs/gif/gif_spinners/giphy_network_grid.gif
/imgs/gif/gif_spinners/giphy_network_wiggle.gif
/imgs/gif/gif_spinners/giphy_noise3.gif
/imgs/gif/gif_spinners/giphy_orb_cicle.gif
/imgs/gif/gif_spinners/giphy_orb_drips.gif
/imgs/gif/gif_spinners/giphy_orb_fuzzy.gif
/imgs/gif/gif_spinners/giphy_orb_hary.gif
/imgs/gif/gif_spinners/giphy_orb_in_cube.gif
/imgs/gif/gif_spinners/giphy_orb_jar.gif
/imgs/gif/gif_spinners/giphy_orb_layers.gif
/imgs/gif/gif_spinners/giphy_orb_noise1.gif
/imgs/gif/gif_spinners/giphy_orb_noise2.gif
/imgs/gif/gif_spinners/giphy_orb_noise3.gif
/imgs/gif/gif_spinners/giphy_orb_slow.gif
/imgs/gif/gif_spinners/giphy_orb_spiral.gif
/imgs/gif/gif_spinners/giphy_orb_torus.gif
/imgs/gif/gif_spinners/giphy_orb_tubemesh.gif
/imgs/gif/gif_spinners/giphy_orb_undulate.gif
/imgs/gif/gif_spinners/giphy_orbnois4.gif
/imgs/gif/gif_spinners/giphy_orbtubes.gif
/imgs/gif/gif_spinners/giphy_pagedown.gif
/imgs/gif/gif_spinners/giphy_pastryroad_dunes.gif
/imgs/gif/gif_spinners/giphy_pdf.gif
/imgs/gif/gif_spinners/giphy_pyramid_spirals.gif
/imgs/gif/gif_spinners/giphy_radar.gif
/imgs/gif/gif_spinners/giphy_rectanges.gif
/imgs/gif/gif_spinners/giphy_runningman2.gif
/imgs/gif/gif_spinners/giphy_runningman_atyou.gif
/imgs/gif/gif_spinners/giphy_shades.gif
/imgs/gif/gif_spinners/giphy_spinner2.gif
/imgs/gif/gif_spinners/giphy_spinner3.gif
/imgs/gif/gif_spinners/giphy_spinner8.gif
/imgs/gif/gif_spinners/giphy_spinner9.gif
/imgs/gif/gif_spinners/giphy_spinner_disk.gif
/imgs/gif/gif_spinners/giphy_spinner_orb.gif
/imgs/gif/gif_spinners/giphy_spinner_sumi.gif
/imgs/gif/gif_spinners/giphy_spinners.gif
/imgs/gif/gif_spinners/giphy_spinners_cubes.gif
/imgs/gif/gif_spinners/giphy_spiral.gif
/imgs/gif/gif_spinners/giphy_spiraltwists.gif
/imgs/gif/gif_spinners/giphy_spotlite.gif
/imgs/gif/gif_spinners/giphy_sprial_ripples.gif
/imgs/gif/gif_spinners/giphy_stickynotes.gif
/imgs/gif/gif_spinners/giphy_tetertotter.gif
/imgs/gif/gif_spinners/giphy_toiletpaper.gif
/imgs/gif/gif_spinners/giphy_torusstripes.gif
/imgs/gif/gif_spinners/giphy_tvwatcher.gif
/imgs/gif/gif_spinners/giphy_undulate2.gif
/imgs/gif/gif_spinners/giphy_waveup.gif
/imgs/gif/gif_spinners/giphy_wirebouncer.gif
/imgs/gif/gif_spinners/tumblr_nbuxxtxV3w1tre1zbo1_500.gif
/imgs/gif/gifset_b/apple.gif
/imgs/gif/gifset_b/appleb.gif
/imgs/gif/gifset_b/appleb_1.gif
/imgs/gif/gifset_b/appleb_10.gif
/imgs/gif/gifset_b/appleb_100.gif
/imgs/gif/gifset_b/appleb_2.gif
/imgs/gif/gifset_b/appleb_20.gif
/imgs/gif/gifset_b/appleb_3.gif
/imgs/gif/gifset_b/appleb_30.gif
/imgs/gif/gifset_b/appleb_4.gif
/imgs/gif/gifset_b/appleb_40.gif
/imgs/gif/gifset_b/appleb_5.gif
/imgs/gif/gifset_b/appleb_50.gif
/imgs/gif/gifset_b/appleb_6.gif
/imgs/gif/gifset_b/appleb_7.gif
/imgs/gif/gifset_b/appleb_70.gif
/imgs/gif/gifset_b/appleb_8.gif
/imgs/gif/gifset_b/appleb_80.gif
/imgs/gif/gifset_b/appleb_9.gif
/imgs/gif/gifset_b/appleb_90.gif
/imgs/gif/gifset_b/appled.gif
/imgs/gif/gifset_b/appled_1.gif
/imgs/gif/gifset_b/appled_10.gif
/imgs/gif/gifset_b/appled_100.gif
/imgs/gif/gifset_b/appled_2.gif
/imgs/gif/gifset_b/appled_20.gif
/imgs/gif/gifset_b/appled_3.gif
/imgs/gif/gifset_b/appled_30.gif
/imgs/gif/gifset_b/appled_4.gif
/imgs/gif/gifset_b/appled_40.gif
/imgs/gif/gifset_b/appled_5.gif
/imgs/gif/gifset_b/appled_50.gif
/imgs/gif/gifset_b/appled_6.gif
/imgs/gif/gifset_b/appled_7.gif
/imgs/gif/gifset_b/appled_70.gif
/imgs/gif/gifset_b/appled_8.gif
/imgs/gif/gifset_b/appled_80.gif
/imgs/gif/gifset_b/appled_9.gif
/imgs/gif/gifset_b/appled_90.gif
/imgs/gif/gifset_b/applep.gif
/imgs/gif/gifset_b/applep_1.gif
/imgs/gif/gifset_b/applep_10.gif
/imgs/gif/gifset_b/applep_100.gif
/imgs/gif/gifset_b/applep_2.gif
/imgs/gif/gifset_b/applep_20.gif
/imgs/gif/gifset_b/applep_3.gif
/imgs/gif/gifset_b/applep_30.gif
/imgs/gif/gifset_b/applep_4.gif
/imgs/gif/gifset_b/applep_40.gif
/imgs/gif/gifset_b/applep_5.gif
/imgs/gif/gifset_b/applep_50.gif
/imgs/gif/gifset_b/applep_6.gif
/imgs/gif/gifset_b/applep_7.gif
/imgs/gif/gifset_b/applep_70.gif
/imgs/gif/gifset_b/applep_8.gif
/imgs/gif/gifset_b/applep_80.gif
/imgs/gif/gifset_b/applep_9.gif
/imgs/gif/gifset_b/applep_90.gif
/imgs/gif/gifset_b/appleq.gif
/imgs/gif/gifset_b/appleq_1.gif
/imgs/gif/gifset_b/appleq_10.gif
/imgs/gif/gifset_b/appleq_100.gif
/imgs/gif/gifset_b/appleq_2.gif
/imgs/gif/gifset_b/appleq_20.gif
/imgs/gif/gifset_b/appleq_3.gif
/imgs/gif/gifset_b/appleq_30.gif
/imgs/gif/gifset_b/appleq_4.gif
/imgs/gif/gifset_b/appleq_40.gif
/imgs/gif/gifset_b/appleq_5.gif
/imgs/gif/gifset_b/appleq_50.gif
/imgs/gif/gifset_b/appleq_6.gif
/imgs/gif/gifset_b/appleq_7.gif
/imgs/gif/gifset_b/appleq_70.gif
/imgs/gif/gifset_b/appleq_8.gif
/imgs/gif/gifset_b/appleq_80.gif
/imgs/gif/gifset_b/appleq_9.gif
/imgs/gif/gifset_b/appleq_90.gif
/imgs/gif/gifset_b/awards.gif
/imgs/gif/gifset_b/bh.gif
/imgs/gif/gifset_b/bhb.gif
/imgs/gif/gifset_b/bhb_1.gif
/imgs/gif/gifset_b/bhb_10.gif
/imgs/gif/gifset_b/bhb_100.gif
/imgs/gif/gifset_b/bhb_2.gif
/imgs/gif/gifset_b/bhb_20.gif
/imgs/gif/gifset_b/bhb_3.gif
/imgs/gif/gifset_b/bhb_30.gif
/imgs/gif/gifset_b/bhb_4.gif
/imgs/gif/gifset_b/bhb_40.gif
/imgs/gif/gifset_b/bhb_5.gif
/imgs/gif/gifset_b/bhb_50.gif
/imgs/gif/gifset_b/bhb_6.gif
/imgs/gif/gifset_b/bhb_7.gif
/imgs/gif/gifset_b/bhb_70.gif
/imgs/gif/gifset_b/bhb_8.gif
/imgs/gif/gifset_b/bhb_80.gif
/imgs/gif/gifset_b/bhb_9.gif
/imgs/gif/gifset_b/bhb_90.gif
/imgs/gif/gifset_b/bhd.gif
/imgs/gif/gifset_b/bhd_1.gif
/imgs/gif/gifset_b/bhd_10.gif
/imgs/gif/gifset_b/bhd_100.gif
/imgs/gif/gifset_b/bhd_2.gif
/imgs/gif/gifset_b/bhd_20.gif
/imgs/gif/gifset_b/bhd_3.gif
/imgs/gif/gifset_b/bhd_30.gif
/imgs/gif/gifset_b/bhd_4.gif
/imgs/gif/gifset_b/bhd_40.gif
/imgs/gif/gifset_b/bhd_5.gif
/imgs/gif/gifset_b/bhd_50.gif
/imgs/gif/gifset_b/bhd_6.gif
/imgs/gif/gifset_b/bhd_7.gif
/imgs/gif/gifset_b/bhd_70.gif
/imgs/gif/gifset_b/bhd_8.gif
/imgs/gif/gifset_b/bhd_80.gif
/imgs/gif/gifset_b/bhd_9.gif
/imgs/gif/gifset_b/bhd_90.gif
/imgs/gif/gifset_b/bhp.gif
/imgs/gif/gifset_b/bhp_1.gif
/imgs/gif/gifset_b/bhp_10.gif
/imgs/gif/gifset_b/bhp_100.gif
/imgs/gif/gifset_b/bhp_2.gif
/imgs/gif/gifset_b/bhp_20.gif
/imgs/gif/gifset_b/bhp_3.gif
/imgs/gif/gifset_b/bhp_30.gif
/imgs/gif/gifset_b/bhp_4.gif
/imgs/gif/gifset_b/bhp_40.gif
/imgs/gif/gifset_b/bhp_5.gif
/imgs/gif/gifset_b/bhp_50.gif
/imgs/gif/gifset_b/bhp_6.gif
/imgs/gif/gifset_b/bhp_7.gif
/imgs/gif/gifset_b/bhp_70.gif
/imgs/gif/gifset_b/bhp_8.gif
/imgs/gif/gifset_b/bhp_80.gif
/imgs/gif/gifset_b/bhp_9.gif
/imgs/gif/gifset_b/bhp_90.gif
/imgs/gif/gifset_b/bhq.gif
/imgs/gif/gifset_b/bhq_1.gif
/imgs/gif/gifset_b/bhq_10.gif
/imgs/gif/gifset_b/bhq_100.gif
/imgs/gif/gifset_b/bhq_2.gif
/imgs/gif/gifset_b/bhq_20.gif
/imgs/gif/gifset_b/bhq_3.gif
/imgs/gif/gifset_b/bhq_30.gif
/imgs/gif/gifset_b/bhq_4.gif
/imgs/gif/gifset_b/bhq_40.gif
/imgs/gif/gifset_b/bhq_5.gif
/imgs/gif/gifset_b/bhq_50.gif
/imgs/gif/gifset_b/bhq_6.gif
/imgs/gif/gifset_b/bhq_7.gif
/imgs/gif/gifset_b/bhq_70.gif
/imgs/gif/gifset_b/bhq_8.gif
/imgs/gif/gifset_b/bhq_80.gif
/imgs/gif/gifset_b/bhq_9.gif
/imgs/gif/gifset_b/bhq_90.gif
/imgs/gif/gifset_f/dollars.gif
/imgs/gif/gifset_f/dollarsb.gif
/imgs/gif/gifset_f/dollarsb_1.gif
/imgs/gif/gifset_f/dollarsb_10.gif
/imgs/gif/gifset_f/dollarsb_100.gif
/imgs/gif/gifset_f/dollarsb_2.gif
/imgs/gif/gifset_f/dollarsb_20.gif
/imgs/gif/gifset_f/dollarsb_3.gif
/imgs/gif/gifset_f/dollarsb_30.gif
/imgs/gif/gifset_f/dollarsb_4.gif
/imgs/gif/gifset_f/dollarsb_40.gif
/imgs/gif/gifset_f/dollarsb_5.gif
/imgs/gif/gifset_f/dollarsb_50.gif
/imgs/gif/gifset_f/dollarsb_6.gif
/imgs/gif/gifset_f/dollarsb_7.gif
/imgs/gif/gifset_f/dollarsb_70.gif
/imgs/gif/gifset_f/dollarsb_8.gif
/imgs/gif/gifset_f/dollarsb_80.gif
/imgs/gif/gifset_f/dollarsb_9.gif
/imgs/gif/gifset_f/dollarsb_90.gif
/imgs/gif/gifset_f/dollarsd.gif
/imgs/gif/gifset_f/dollarsd_1.gif
/imgs/gif/gifset_f/dollarsd_10.gif
/imgs/gif/gifset_f/dollarsd_100.gif
/imgs/gif/gifset_f/dollarsd_2.gif
/imgs/gif/gifset_f/dollarsd_20.gif
/imgs/gif/gifset_f/dollarsd_3.gif
/imgs/gif/gifset_f/dollarsd_30.gif
/imgs/gif/gifset_f/dollarsd_4.gif
/imgs/gif/gifset_f/dollarsd_40.gif
/imgs/gif/gifset_f/dollarsd_5.gif
/imgs/gif/gifset_f/dollarsd_50.gif
/imgs/gif/gifset_f/dollarsd_6.gif
/imgs/gif/gifset_f/dollarsd_7.gif
/imgs/gif/gifset_f/dollarsd_70.gif
/imgs/gif/gifset_f/dollarsd_8.gif
/imgs/gif/gifset_f/dollarsd_80.gif
/imgs/gif/gifset_f/dollarsd_9.gif
/imgs/gif/gifset_f/dollarsd_90.gif
/imgs/gif/gifset_f/dollarsp.gif
/imgs/gif/gifset_f/dollarsp_1.gif
/imgs/gif/gifset_f/dollarsp_10.gif
/imgs/gif/gifset_f/dollarsp_100.gif
/imgs/gif/gifset_f/dollarsp_2.gif
/imgs/gif/gifset_f/dollarsp_20.gif
/imgs/gif/gifset_f/dollarsp_3.gif
/imgs/gif/gifset_f/dollarsp_30.gif
/imgs/gif/gifset_f/dollarsp_4.gif
/imgs/gif/gifset_f/dollarsp_40.gif
/imgs/gif/gifset_f/dollarsp_5.gif
/imgs/gif/gifset_f/dollarsp_50.gif
/imgs/gif/gifset_f/dollarsp_6.gif
/imgs/gif/gifset_f/dollarsp_7.gif
/imgs/gif/gifset_f/dollarsp_70.gif
/imgs/gif/gifset_f/dollarsp_8.gif
/imgs/gif/gifset_f/dollarsp_80.gif
/imgs/gif/gifset_f/dollarsp_9.gif
/imgs/gif/gifset_f/dollarsp_90.gif
/imgs/gif/gifset_f/dollarsq.gif
/imgs/gif/gifset_f/dollarsq_1.gif
/imgs/gif/gifset_f/dollarsq_10.gif
/imgs/gif/gifset_f/dollarsq_100.gif
/imgs/gif/gifset_f/dollarsq_2.gif
/imgs/gif/gifset_f/dollarsq_20.gif
/imgs/gif/gifset_f/dollarsq_3.gif
/imgs/gif/gifset_f/dollarsq_30.gif
/imgs/gif/gifset_f/dollarsq_4.gif
/imgs/gif/gifset_f/dollarsq_40.gif
/imgs/gif/gifset_f/dollarsq_5.gif
/imgs/gif/gifset_f/dollarsq_50.gif
/imgs/gif/gifset_f/dollarsq_6.gif
/imgs/gif/gifset_f/dollarsq_7.gif
/imgs/gif/gifset_f/dollarsq_70.gif
/imgs/gif/gifset_f/dollarsq_8.gif
/imgs/gif/gifset_f/dollarsq_80.gif
/imgs/gif/gifset_f/dollarsq_9.gif
/imgs/gif/gifset_f/dollarsq_90.gif
/imgs/gif/gifset_f/eye1.gif
/imgs/gif/gifset_f/eye1b.gif
/imgs/gif/gifset_f/eye1b_1.gif
/imgs/gif/gifset_f/eye1b_10.gif
/imgs/gif/gifset_f/eye1b_100.gif
/imgs/gif/gifset_f/eye1b_2.gif
/imgs/gif/gifset_f/eye1b_20.gif
/imgs/gif/gifset_f/eye1b_3.gif
/imgs/gif/gifset_f/eye1b_30.gif
/imgs/gif/gifset_f/eye1b_4.gif
/imgs/gif/gifset_f/eye1b_40.gif
/imgs/gif/gifset_f/eye1b_5.gif
/imgs/gif/gifset_f/eye1b_50.gif
/imgs/gif/gifset_f/eye1b_6.gif
/imgs/gif/gifset_f/eye1b_7.gif
/imgs/gif/gifset_f/eye1b_70.gif
/imgs/gif/gifset_f/eye1b_8.gif
/imgs/gif/gifset_f/eye1b_80.gif
/imgs/gif/gifset_f/eye1b_9.gif
/imgs/gif/gifset_f/eye1b_90.gif
/imgs/gif/gifset_f/eye1d.gif
/imgs/gif/gifset_f/eye1d_1.gif
/imgs/gif/gifset_f/eye1d_10.gif
/imgs/gif/gifset_f/eye1d_100.gif
/imgs/gif/gifset_f/eye1d_2.gif
/imgs/gif/gifset_f/eye1d_20.gif
/imgs/gif/gifset_f/eye1d_3.gif
/imgs/gif/gifset_f/eye1d_30.gif
/imgs/gif/gifset_f/eye1d_4.gif
/imgs/gif/gifset_f/eye1d_40.gif
/imgs/gif/gifset_f/eye1d_5.gif
/imgs/gif/gifset_f/eye1d_50.gif
/imgs/gif/gifset_f/eye1d_6.gif
/imgs/gif/gifset_f/eye1d_7.gif
/imgs/gif/gifset_f/eye1d_70.gif
/imgs/gif/gifset_f/eye1d_8.gif
/imgs/gif/gifset_f/eye1d_80.gif
/imgs/gif/gifset_f/eye1d_9.gif
/imgs/gif/gifset_f/eye1d_90.gif
/imgs/gif/gifset_f/eye1p.gif
/imgs/gif/gifset_f/eye1p_1.gif
/imgs/gif/gifset_f/eye1p_10.gif
/imgs/gif/gifset_f/eye1p_100.gif
/imgs/gif/gifset_f/eye1p_2.gif
/imgs/gif/gifset_f/eye1p_20.gif
/imgs/gif/gifset_f/eye1p_3.gif
/imgs/gif/gifset_f/eye1p_30.gif
/imgs/gif/gifset_f/eye1p_4.gif
/imgs/gif/gifset_f/eye1p_40.gif
/imgs/gif/gifset_f/eye1p_5.gif
/imgs/gif/gifset_f/eye1p_50.gif
/imgs/gif/gifset_f/eye1p_6.gif
/imgs/gif/gifset_f/eye1p_7.gif
/imgs/gif/gifset_f/eye1p_70.gif
/imgs/gif/gifset_f/eye1p_8.gif
/imgs/gif/gifset_f/eye1p_80.gif
/imgs/gif/gifset_f/eye1p_9.gif
/imgs/gif/gifset_f/eye1p_90.gif
/imgs/gif/gifset_f/eye1q.gif
/imgs/gif/gifset_f/eye1q_1.gif
/imgs/gif/gifset_f/eye1q_10.gif
/imgs/gif/gifset_f/eye1q_100.gif
/imgs/gif/gifset_f/eye1q_2.gif
/imgs/gif/gifset_f/eye1q_20.gif
/imgs/gif/gifset_f/eye1q_3.gif
/imgs/gif/gifset_f/eye1q_30.gif
/imgs/gif/gifset_f/eye1q_4.gif
/imgs/gif/gifset_f/eye1q_40.gif
/imgs/gif/gifset_f/eye1q_5.gif
/imgs/gif/gifset_f/eye1q_50.gif
/imgs/gif/gifset_f/eye1q_6.gif
/imgs/gif/gifset_f/eye1q_7.gif
/imgs/gif/gifset_f/eye1q_70.gif
/imgs/gif/gifset_f/eye1q_8.gif
/imgs/gif/gifset_f/eye1q_80.gif
/imgs/gif/gifset_f/eye1q_9.gif
/imgs/gif/gifset_f/eye1q_90.gif
/imgs/gif/gifset_f/eye2.gif
/imgs/gif/gifset_f/eye2b.gif
/imgs/gif/gifset_f/eye2b_1.gif
/imgs/gif/gifset_f/eye2b_10.gif
/imgs/gif/gifset_f/eye2b_100.gif
/imgs/gif/gifset_f/eye2b_2.gif
/imgs/gif/gifset_f/eye2b_20.gif
/imgs/gif/gifset_f/eye2b_3.gif
/imgs/gif/gifset_f/eye2b_30.gif
/imgs/gif/gifset_f/eye2b_4.gif
/imgs/gif/gifset_f/eye2b_40.gif
/imgs/gif/gifset_f/eye2b_5.gif
/imgs/gif/gifset_f/eye2b_50.gif
/imgs/gif/gifset_f/eye2b_6.gif
/imgs/gif/gifset_f/eye2b_7.gif
/imgs/gif/gifset_f/eye2b_70.gif
/imgs/gif/gifset_f/eye2b_8.gif
/imgs/gif/gifset_f/eye2b_80.gif
/imgs/gif/gifset_f/eye2b_9.gif
/imgs/gif/gifset_f/eye2b_90.gif
/imgs/gif/gifset_f/eye2d.gif
/imgs/gif/gifset_f/eye2d_1.gif
/imgs/gif/gifset_f/eye2d_10.gif
/imgs/gif/gifset_f/eye2d_100.gif
/imgs/gif/gifset_f/eye2d_2.gif
/imgs/gif/gifset_f/eye2d_20.gif
/imgs/gif/gifset_f/eye2d_3.gif
/imgs/gif/gifset_f/eye2d_30.gif
/imgs/gif/gifset_f/eye2d_4.gif
/imgs/gif/gifset_f/eye2d_40.gif
/imgs/gif/gifset_f/eye2d_5.gif
/imgs/gif/gifset_f/eye2d_50.gif
/imgs/gif/gifset_f/eye2d_6.gif
/imgs/gif/gifset_f/eye2d_7.gif
/imgs/gif/gifset_f/eye2d_70.gif
/imgs/gif/gifset_f/eye2d_8.gif
/imgs/gif/gifset_f/eye2d_80.gif
/imgs/gif/gifset_f/eye2d_9.gif
/imgs/gif/gifset_f/eye2d_90.gif
/imgs/gif/gifset_f/eye2p.gif
/imgs/gif/gifset_f/eye2p_1.gif
/imgs/gif/gifset_f/eye2p_10.gif
/imgs/gif/gifset_f/eye2p_100.gif
/imgs/gif/gifset_f/eye2p_2.gif
/imgs/gif/gifset_f/eye2p_20.gif
/imgs/gif/gifset_f/eye2p_3.gif
/imgs/gif/gifset_f/eye2p_30.gif
/imgs/gif/gifset_f/eye2p_4.gif
/imgs/gif/gifset_f/eye2p_40.gif
/imgs/gif/gifset_f/eye2p_5.gif
/imgs/gif/gifset_f/eye2p_50.gif
/imgs/gif/gifset_f/eye2p_6.gif
/imgs/gif/gifset_f/eye2p_7.gif
/imgs/gif/gifset_f/eye2p_70.gif
/imgs/gif/gifset_f/eye2p_8.gif
/imgs/gif/gifset_f/eye2p_80.gif
/imgs/gif/gifset_f/eye2p_9.gif
/imgs/gif/gifset_f/eye2p_90.gif
/imgs/gif/gifset_f/eye2q.gif
/imgs/gif/gifset_f/eye2q_1.gif
/imgs/gif/gifset_f/eye2q_10.gif
/imgs/gif/gifset_f/eye2q_100.gif
/imgs/gif/gifset_f/eye2q_2.gif
/imgs/gif/gifset_f/eye2q_20.gif
/imgs/gif/gifset_f/eye2q_3.gif
/imgs/gif/gifset_f/eye2q_30.gif
/imgs/gif/gifset_f/eye2q_4.gif
/imgs/gif/gifset_f/eye2q_40.gif
/imgs/gif/gifset_f/eye2q_5.gif
/imgs/gif/gifset_f/eye2q_50.gif
/imgs/gif/gifset_f/eye2q_6.gif
/imgs/gif/gifset_f/eye2q_7.gif
/imgs/gif/gifset_f/eye2q_70.gif
/imgs/gif/gifset_f/eye2q_8.gif
/imgs/gif/gifset_f/eye2q_80.gif
/imgs/gif/gifset_f/eye2q_9.gif
/imgs/gif/gifset_f/eye2q_90.gif
/imgs/gif/gifset_f/eye3.gif
/imgs/gif/gifset_f/eye3b.gif
/imgs/gif/gifset_f/eye3b_1.gif
/imgs/gif/gifset_f/eye3b_10.gif
/imgs/gif/gifset_f/eye3b_100.gif
/imgs/gif/gifset_f/eye3b_2.gif
/imgs/gif/gifset_f/eye3b_20.gif
/imgs/gif/gifset_f/eye3b_3.gif
/imgs/gif/gifset_f/eye3b_30.gif
/imgs/gif/gifset_f/eye3b_4.gif
/imgs/gif/gifset_f/eye3b_40.gif
/imgs/gif/gifset_f/eye3b_5.gif
/imgs/gif/gifset_f/eye3b_50.gif
/imgs/gif/gifset_f/eye3b_6.gif
/imgs/gif/gifset_f/eye3b_7.gif
/imgs/gif/gifset_f/eye3b_70.gif
/imgs/gif/gifset_f/eye3b_8.gif
/imgs/gif/gifset_f/eye3b_80.gif
/imgs/gif/gifset_f/eye3b_9.gif
/imgs/gif/gifset_f/eye3b_90.gif
/imgs/gif/gifset_f/eye3d.gif
/imgs/gif/gifset_f/eye3d_1.gif
/imgs/gif/gifset_f/eye3d_10.gif
/imgs/gif/gifset_f/eye3d_100.gif
/imgs/gif/gifset_f/eye3d_2.gif
/imgs/gif/gifset_f/eye3d_20.gif
/imgs/gif/gifset_f/eye3d_3.gif
/imgs/gif/gifset_f/eye3d_30.gif
/imgs/gif/gifset_f/eye3d_4.gif
/imgs/gif/gifset_f/eye3d_40.gif
/imgs/gif/gifset_f/eye3d_5.gif
/imgs/gif/gifset_f/eye3d_50.gif
/imgs/gif/gifset_f/eye3d_6.gif
/imgs/gif/gifset_f/eye3d_7.gif
/imgs/gif/gifset_f/eye3d_70.gif
/imgs/gif/gifset_f/eye3d_8.gif
/imgs/gif/gifset_f/eye3d_80.gif
/imgs/gif/gifset_f/eye3d_9.gif
/imgs/gif/gifset_f/eye3d_90.gif
/imgs/gif/gifset_f/eye3p.gif
/imgs/gif/gifset_f/eye3p_1.gif
/imgs/gif/gifset_f/eye3p_10.gif
/imgs/gif/gifset_f/eye3p_100.gif
/imgs/gif/gifset_f/eye3p_2.gif
/imgs/gif/gifset_f/eye3p_20.gif
/imgs/gif/gifset_f/eye3p_3.gif
/imgs/gif/gifset_f/eye3p_30.gif
/imgs/gif/gifset_f/eye3p_4.gif
/imgs/gif/gifset_f/eye3p_40.gif
/imgs/gif/gifset_f/eye3p_5.gif
/imgs/gif/gifset_f/eye3p_50.gif
/imgs/gif/gifset_f/eye3p_6.gif
/imgs/gif/gifset_f/eye3p_7.gif
/imgs/gif/gifset_f/eye3p_70.gif
/imgs/gif/gifset_f/eye3p_8.gif
/imgs/gif/gifset_f/eye3p_80.gif
/imgs/gif/gifset_f/eye3p_9.gif
/imgs/gif/gifset_f/eye3p_90.gif
/imgs/gif/gifset_f/eye3q.gif
/imgs/gif/gifset_f/eye3q_1.gif
/imgs/gif/gifset_f/eye3q_10.gif
/imgs/gif/gifset_f/eye3q_100.gif
/imgs/gif/gifset_f/eye3q_2.gif
/imgs/gif/gifset_f/eye3q_20.gif
/imgs/gif/gifset_f/eye3q_3.gif
/imgs/gif/gifset_f/eye3q_30.gif
/imgs/gif/gifset_f/eye3q_4.gif
/imgs/gif/gifset_f/eye3q_40.gif
/imgs/gif/gifset_f/eye3q_5.gif
/imgs/gif/gifset_f/eye3q_50.gif
/imgs/gif/gifset_f/eye3q_6.gif
/imgs/gif/gifset_f/eye3q_7.gif
/imgs/gif/gifset_f/eye3q_70.gif
/imgs/gif/gifset_f/eye3q_8.gif
/imgs/gif/gifset_f/eye3q_80.gif
/imgs/gif/gifset_f/eye3q_9.gif
/imgs/gif/gifset_f/eye3q_90.gif
/imgs/gif/gifset_f/film.gif
/imgs/gif/gifset_f/filmb.gif
/imgs/gif/gifset_f/filmb_1.gif
/imgs/gif/gifset_f/filmb_10.gif
/imgs/gif/gifset_f/filmb_100.gif
/imgs/gif/gifset_f/filmb_2.gif
/imgs/gif/gifset_f/filmb_20.gif
/imgs/gif/gifset_f/filmb_3.gif
/imgs/gif/gifset_f/filmb_30.gif
/imgs/gif/gifset_f/filmb_4.gif
/imgs/gif/gifset_f/filmb_40.gif
/imgs/gif/gifset_f/filmb_5.gif
/imgs/gif/gifset_f/filmb_50.gif
/imgs/gif/gifset_f/filmb_6.gif
/imgs/gif/gifset_f/filmb_7.gif
/imgs/gif/gifset_f/filmb_70.gif
/imgs/gif/gifset_f/filmb_8.gif
/imgs/gif/gifset_f/filmb_80.gif
/imgs/gif/gifset_f/filmb_9.gif
/imgs/gif/gifset_f/filmb_90.gif
/imgs/gif/gifset_f/filmd.gif
/imgs/gif/gifset_f/filmd_1.gif
/imgs/gif/gifset_f/filmd_10.gif
/imgs/gif/gifset_f/filmd_100.gif
/imgs/gif/gifset_f/filmd_2.gif
/imgs/gif/gifset_f/filmd_20.gif
/imgs/gif/gifset_f/filmd_3.gif
/imgs/gif/gifset_f/filmd_30.gif
/imgs/gif/gifset_f/filmd_4.gif
/imgs/gif/gifset_f/filmd_40.gif
/imgs/gif/gifset_f/filmd_5.gif
/imgs/gif/gifset_f/filmd_50.gif
/imgs/gif/gifset_f/filmd_6.gif
/imgs/gif/gifset_f/filmd_7.gif
/imgs/gif/gifset_f/filmd_70.gif
/imgs/gif/gifset_f/filmd_8.gif
/imgs/gif/gifset_f/filmd_80.gif
/imgs/gif/gifset_f/filmd_9.gif
/imgs/gif/gifset_f/filmd_90.gif
/imgs/gif/gifset_f/filmp.gif
/imgs/gif/gifset_f/filmp_1.gif
/imgs/gif/gifset_f/filmp_10.gif
/imgs/gif/gifset_f/filmp_100.gif
/imgs/gif/gifset_f/filmp_2.gif
/imgs/gif/gifset_f/filmp_20.gif
/imgs/gif/gifset_f/filmp_3.gif
/imgs/gif/gifset_f/filmp_30.gif
/imgs/gif/gifset_f/filmp_4.gif
/imgs/gif/gifset_f/filmp_40.gif
/imgs/gif/gifset_f/filmp_5.gif
/imgs/gif/gifset_f/filmp_50.gif
/imgs/gif/gifset_f/filmp_6.gif
/imgs/gif/gifset_f/filmp_7.gif
/imgs/gif/gifset_f/filmp_70.gif
/imgs/gif/gifset_f/filmp_8.gif
/imgs/gif/gifset_f/filmp_80.gif
/imgs/gif/gifset_f/filmp_9.gif
/imgs/gif/gifset_f/filmp_90.gif
/imgs/gif/gifset_f/filmq.gif
/imgs/gif/gifset_f/filmq_1.gif
/imgs/gif/gifset_f/filmq_10.gif
/imgs/gif/gifset_f/filmq_100.gif
/imgs/gif/gifset_f/filmq_2.gif
/imgs/gif/gifset_f/filmq_20.gif
/imgs/gif/gifset_f/filmq_3.gif
/imgs/gif/gifset_f/filmq_30.gif
/imgs/gif/gifset_f/filmq_4.gif
/imgs/gif/gifset_f/filmq_40.gif
/imgs/gif/gifset_f/filmq_5.gif
/imgs/gif/gifset_f/filmq_50.gif
/imgs/gif/gifset_f/filmq_6.gif
/imgs/gif/gifset_f/filmq_7.gif
/imgs/gif/gifset_f/filmq_70.gif
/imgs/gif/gifset_f/filmq_8.gif
/imgs/gif/gifset_f/filmq_80.gif
/imgs/gif/gifset_f/filmq_9.gif
/imgs/gif/gifset_f/filmq_90.gif
/imgs/gif/gifset_f/firebubblesb_1.gif
/imgs/gif/gifset_f/firebubblesb_10.gif
/imgs/gif/gifset_f/firebubblesb_100.gif
/imgs/gif/gifset_f/firebubblesb_2.gif
/imgs/gif/gifset_f/firebubblesb_20.gif
/imgs/gif/gifset_f/firebubblesb_3.gif
/imgs/gif/gifset_f/firebubblesb_30.gif
/imgs/gif/gifset_f/firebubblesb_4.gif
/imgs/gif/gifset_f/firebubblesb_40.gif
/imgs/gif/gifset_f/firebubblesb_5.gif
/imgs/gif/gifset_f/firebubblesb_50.gif
/imgs/gif/gifset_f/firebubblesb_6.gif
/imgs/gif/gifset_f/firebubblesb_7.gif
/imgs/gif/gifset_f/firebubblesb_70.gif
/imgs/gif/gifset_f/firebubblesb_8.gif
/imgs/gif/gifset_f/firebubblesb_80.gif
/imgs/gif/gifset_f/firebubblesb_9.gif
/imgs/gif/gifset_f/firebubblesb_90.gif
/imgs/gif/gifset_f/firebubblesd_1.gif
/imgs/gif/gifset_f/firebubblesd_10.gif
/imgs/gif/gifset_f/firebubblesd_100.gif
/imgs/gif/gifset_f/firebubblesd_2.gif
/imgs/gif/gifset_f/firebubblesd_20.gif
/imgs/gif/gifset_f/firebubblesd_3.gif
/imgs/gif/gifset_f/firebubblesd_30.gif
/imgs/gif/gifset_f/firebubblesd_4.gif
/imgs/gif/gifset_f/firebubblesd_40.gif
/imgs/gif/gifset_f/firebubblesd_5.gif
/imgs/gif/gifset_f/firebubblesd_50.gif
/imgs/gif/gifset_f/firebubblesd_6.gif
/imgs/gif/gifset_f/firebubblesd_7.gif
/imgs/gif/gifset_f/firebubblesd_70.gif
/imgs/gif/gifset_f/firebubblesd_8.gif
/imgs/gif/gifset_f/firebubblesd_80.gif
/imgs/gif/gifset_f/firebubblesd_9.gif
/imgs/gif/gifset_f/firebubblesd_90.gif
/imgs/gif/gifset_f/firebubblesp_1.gif
/imgs/gif/gifset_f/firebubblesp_10.gif
/imgs/gif/gifset_f/firebubblesp_100.gif
/imgs/gif/gifset_f/firebubblesp_2.gif
/imgs/gif/gifset_f/firebubblesp_20.gif
/imgs/gif/gifset_f/firebubblesp_3.gif
/imgs/gif/gifset_f/firebubblesp_30.gif
/imgs/gif/gifset_f/firebubblesp_4.gif
/imgs/gif/gifset_f/firebubblesp_40.gif
/imgs/gif/gifset_f/firebubblesp_5.gif
/imgs/gif/gifset_f/firebubblesp_50.gif
/imgs/gif/gifset_f/firebubblesp_6.gif
/imgs/gif/gifset_f/firebubblesp_7.gif
/imgs/gif/gifset_f/firebubblesp_70.gif
/imgs/gif/gifset_f/firebubblesp_8.gif
/imgs/gif/gifset_f/firebubblesp_80.gif
/imgs/gif/gifset_f/firebubblesp_9.gif
/imgs/gif/gifset_f/firebubblesp_90.gif
/imgs/gif/gifset_firebubbles/firework.gif
/imgs/gif/gifset_firebubbles/fireworkb.gif
/imgs/gif/gifset_firebubbles/fireworkb_1.gif
/imgs/gif/gifset_firebubbles/fireworkb_10.gif
/imgs/gif/gifset_firebubbles/fireworkb_100.gif
/imgs/gif/gifset_firebubbles/fireworkb_2.gif
/imgs/gif/gifset_firebubbles/fireworkb_20.gif
/imgs/gif/gifset_firebubbles/fireworkb_3.gif
/imgs/gif/gifset_firebubbles/fireworkb_30.gif
/imgs/gif/gifset_firebubbles/fireworkb_4.gif
/imgs/gif/gifset_firebubbles/fireworkb_40.gif
/imgs/gif/gifset_firebubbles/fireworkb_5.gif
/imgs/gif/gifset_firebubbles/fireworkb_50.gif
/imgs/gif/gifset_firebubbles/fireworkb_6.gif
/imgs/gif/gifset_firebubbles/fireworkb_7.gif
/imgs/gif/gifset_firebubbles/fireworkb_70.gif
/imgs/gif/gifset_firebubbles/fireworkb_8.gif
/imgs/gif/gifset_firebubbles/fireworkb_80.gif
/imgs/gif/gifset_firebubbles/fireworkb_9.gif
/imgs/gif/gifset_firebubbles/fireworkb_90.gif
/imgs/gif/gifset_firebubbles/fireworkd.gif
/imgs/gif/gifset_firebubbles/fireworkd_1.gif
/imgs/gif/gifset_firebubbles/fireworkd_10.gif
/imgs/gif/gifset_firebubbles/fireworkd_100.gif
/imgs/gif/gifset_firebubbles/fireworkd_2.gif
/imgs/gif/gifset_firebubbles/fireworkd_20.gif
/imgs/gif/gifset_firebubbles/fireworkd_3.gif
/imgs/gif/gifset_firebubbles/fireworkd_30.gif
/imgs/gif/gifset_firebubbles/fireworkd_4.gif
/imgs/gif/gifset_firebubbles/fireworkd_40.gif
/imgs/gif/gifset_firebubbles/fireworkd_5.gif
/imgs/gif/gifset_firebubbles/fireworkd_50.gif
/imgs/gif/gifset_firebubbles/fireworkd_6.gif
/imgs/gif/gifset_firebubbles/fireworkd_7.gif
/imgs/gif/gifset_firebubbles/fireworkd_70.gif
/imgs/gif/gifset_firebubbles/fireworkd_8.gif
/imgs/gif/gifset_firebubbles/fireworkd_80.gif
/imgs/gif/gifset_firebubbles/fireworkd_9.gif
/imgs/gif/gifset_firebubbles/fireworkd_90.gif
/imgs/gif/gifset_firebubbles/fireworkp.gif
/imgs/gif/gifset_firebubbles/fireworkp_1.gif
/imgs/gif/gifset_firebubbles/fireworkp_10.gif
/imgs/gif/gifset_firebubbles/fireworkp_100.gif
/imgs/gif/gifset_firebubbles/fireworkp_2.gif
/imgs/gif/gifset_firebubbles/fireworkp_20.gif
/imgs/gif/gifset_firebubbles/fireworkp_3.gif
/imgs/gif/gifset_firebubbles/fireworkp_30.gif
/imgs/gif/gifset_firebubbles/fireworkp_4.gif
/imgs/gif/gifset_firebubbles/fireworkp_40.gif
/imgs/gif/gifset_firebubbles/fireworkp_5.gif
/imgs/gif/gifset_firebubbles/fireworkp_50.gif
/imgs/gif/gifset_firebubbles/fireworkp_6.gif
/imgs/gif/gifset_firebubbles/fireworkp_7.gif
/imgs/gif/gifset_firebubbles/fireworkp_70.gif
/imgs/gif/gifset_firebubbles/fireworkp_8.gif
/imgs/gif/gifset_firebubbles/fireworkp_80.gif
/imgs/gif/gifset_firebubbles/fireworkp_9.gif
/imgs/gif/gifset_firebubbles/fireworkp_90.gif
/imgs/gif/gifset_firebubbles/fireworkq.gif
/imgs/gif/gifset_firebubbles/fireworkq_1.gif
/imgs/gif/gifset_firebubbles/fireworkq_10.gif
/imgs/gif/gifset_firebubbles/fireworkq_100.gif
/imgs/gif/gifset_firebubbles/fireworkq_2.gif
/imgs/gif/gifset_firebubbles/fireworkq_20.gif
/imgs/gif/gifset_firebubbles/fireworkq_3.gif
/imgs/gif/gifset_firebubbles/fireworkq_30.gif
/imgs/gif/gifset_firebubbles/fireworkq_4.gif
/imgs/gif/gifset_firebubbles/fireworkq_40.gif
/imgs/gif/gifset_firebubbles/fireworkq_5.gif
/imgs/gif/gifset_firebubbles/fireworkq_50.gif
/imgs/gif/gifset_firebubbles/fireworkq_6.gif
/imgs/gif/gifset_firebubbles/fireworkq_7.gif
/imgs/gif/gifset_firebubbles/fireworkq_70.gif
/imgs/gif/gifset_firebubbles/fireworkq_8.gif
/imgs/gif/gifset_firebubbles/fireworkq_80.gif
/imgs/gif/gifset_firebubbles/fireworkq_9.gif
/imgs/gif/gifset_firebubbles/fireworkq_90.gif
/imgs/gif/gifset_h/geard2.gif
/imgs/gif/gifset_h/geard2b.gif
/imgs/gif/gifset_h/geard2b_1.gif
/imgs/gif/gifset_h/geard2b_10.gif
/imgs/gif/gifset_h/geard2b_100.gif
/imgs/gif/gifset_h/geard2b_2.gif
/imgs/gif/gifset_h/geard2b_20.gif
/imgs/gif/gifset_h/geard2b_3.gif
/imgs/gif/gifset_h/geard2b_30.gif
/imgs/gif/gifset_h/geard2b_4.gif
/imgs/gif/gifset_h/geard2b_40.gif
/imgs/gif/gifset_h/geard2b_5.gif
/imgs/gif/gifset_h/geard2b_50.gif
/imgs/gif/gifset_h/geard2b_6.gif
/imgs/gif/gifset_h/geard2b_7.gif
/imgs/gif/gifset_h/geard2b_70.gif
/imgs/gif/gifset_h/geard2b_8.gif
/imgs/gif/gifset_h/geard2b_80.gif
/imgs/gif/gifset_h/geard2b_9.gif
/imgs/gif/gifset_h/geard2b_90.gif
/imgs/gif/gifset_h/geard2d.gif
/imgs/gif/gifset_h/geard2d_1.gif
/imgs/gif/gifset_h/geard2d_10.gif
/imgs/gif/gifset_h/geard2d_100.gif
/imgs/gif/gifset_h/geard2d_2.gif
/imgs/gif/gifset_h/geard2d_20.gif
/imgs/gif/gifset_h/geard2d_3.gif
/imgs/gif/gifset_h/geard2d_30.gif
/imgs/gif/gifset_h/geard2d_4.gif
/imgs/gif/gifset_h/geard2d_40.gif
/imgs/gif/gifset_h/geard2d_5.gif
/imgs/gif/gifset_h/geard2d_50.gif
/imgs/gif/gifset_h/geard2d_6.gif
/imgs/gif/gifset_h/geard2d_7.gif
/imgs/gif/gifset_h/geard2d_70.gif
/imgs/gif/gifset_h/geard2d_8.gif
/imgs/gif/gifset_h/geard2d_80.gif
/imgs/gif/gifset_h/geard2d_9.gif
/imgs/gif/gifset_h/geard2d_90.gif
/imgs/gif/gifset_h/geard2p.gif
/imgs/gif/gifset_h/geard2p_1.gif
/imgs/gif/gifset_h/geard2p_10.gif
/imgs/gif/gifset_h/geard2p_100.gif
/imgs/gif/gifset_h/geard2p_2.gif
/imgs/gif/gifset_h/geard2p_20.gif
/imgs/gif/gifset_h/geard2p_3.gif
/imgs/gif/gifset_h/geard2p_30.gif
/imgs/gif/gifset_h/geard2p_4.gif
/imgs/gif/gifset_h/geard2p_40.gif
/imgs/gif/gifset_h/geard2p_5.gif
/imgs/gif/gifset_h/geard2p_50.gif
/imgs/gif/gifset_h/geard2p_6.gif
/imgs/gif/gifset_h/geard2p_7.gif
/imgs/gif/gifset_h/geard2p_70.gif
/imgs/gif/gifset_h/geard2p_8.gif
/imgs/gif/gifset_h/geard2p_80.gif
/imgs/gif/gifset_h/geard2p_9.gif
/imgs/gif/gifset_h/geard2p_90.gif
/imgs/gif/gifset_h/geard2q.gif
/imgs/gif/gifset_h/geard2q_1.gif
/imgs/gif/gifset_h/geard2q_10.gif
/imgs/gif/gifset_h/geard2q_100.gif
/imgs/gif/gifset_h/geard2q_2.gif
/imgs/gif/gifset_h/geard2q_20.gif
/imgs/gif/gifset_h/geard2q_3.gif
/imgs/gif/gifset_h/geard2q_30.gif
/imgs/gif/gifset_h/geard2q_4.gif
/imgs/gif/gifset_h/geard2q_40.gif
/imgs/gif/gifset_h/geard2q_5.gif
/imgs/gif/gifset_h/geard2q_50.gif
/imgs/gif/gifset_h/geard2q_6.gif
/imgs/gif/gifset_h/geard2q_7.gif
/imgs/gif/gifset_h/geard2q_70.gif
/imgs/gif/gifset_h/geard2q_8.gif
/imgs/gif/gifset_h/geard2q_80.gif
/imgs/gif/gifset_h/geard2q_9.gif
/imgs/gif/gifset_h/geard2q_90.gif
/imgs/gif/gifset_h/gears2.gif
/imgs/gif/gifset_h/gears2b.gif
/imgs/gif/gifset_h/gears2b_1.gif
/imgs/gif/gifset_h/gears2b_10.gif
/imgs/gif/gifset_h/gears2b_100.gif
/imgs/gif/gifset_h/gears2b_2.gif
/imgs/gif/gifset_h/gears2b_20.gif
/imgs/gif/gifset_h/gears2b_3.gif
/imgs/gif/gifset_h/gears2b_30.gif
/imgs/gif/gifset_h/gears2b_4.gif
/imgs/gif/gifset_h/gears2b_40.gif
/imgs/gif/gifset_h/gears2b_5.gif
/imgs/gif/gifset_h/gears2b_50.gif
/imgs/gif/gifset_h/gears2b_6.gif
/imgs/gif/gifset_h/gears2b_7.gif
/imgs/gif/gifset_h/gears2b_70.gif
/imgs/gif/gifset_h/gears2b_8.gif
/imgs/gif/gifset_h/gears2b_80.gif
/imgs/gif/gifset_h/gears2b_9.gif
/imgs/gif/gifset_h/gears2b_90.gif
/imgs/gif/gifset_h/gears2d.gif
/imgs/gif/gifset_h/gears2d_1.gif
/imgs/gif/gifset_h/gears2d_10.gif
/imgs/gif/gifset_h/gears2d_100.gif
/imgs/gif/gifset_h/gears2d_2.gif
/imgs/gif/gifset_h/gears2d_20.gif
/imgs/gif/gifset_h/gears2d_3.gif
/imgs/gif/gifset_h/gears2d_30.gif
/imgs/gif/gifset_h/gears2d_4.gif
/imgs/gif/gifset_h/gears2d_40.gif
/imgs/gif/gifset_h/gears2d_5.gif
/imgs/gif/gifset_h/gears2d_50.gif
/imgs/gif/gifset_h/gears2d_6.gif
/imgs/gif/gifset_h/gears2d_7.gif
/imgs/gif/gifset_h/gears2d_70.gif
/imgs/gif/gifset_h/gears2d_8.gif
/imgs/gif/gifset_h/gears2d_80.gif
/imgs/gif/gifset_h/gears2d_9.gif
/imgs/gif/gifset_h/gears2d_90.gif
/imgs/gif/gifset_h/gears2p.gif
/imgs/gif/gifset_h/gears2p_1.gif
/imgs/gif/gifset_h/gears2p_10.gif
/imgs/gif/gifset_h/gears2p_100.gif
/imgs/gif/gifset_h/gears2p_2.gif
/imgs/gif/gifset_h/gears2p_20.gif
/imgs/gif/gifset_h/gears2p_3.gif
/imgs/gif/gifset_h/gears2p_30.gif
/imgs/gif/gifset_h/gears2p_4.gif
/imgs/gif/gifset_h/gears2p_40.gif
/imgs/gif/gifset_h/gears2p_5.gif
/imgs/gif/gifset_h/gears2p_50.gif
/imgs/gif/gifset_h/gears2p_6.gif
/imgs/gif/gifset_h/gears2p_7.gif
/imgs/gif/gifset_h/gears2p_70.gif
/imgs/gif/gifset_h/gears2p_8.gif
/imgs/gif/gifset_h/gears2p_80.gif
/imgs/gif/gifset_h/gears2p_9.gif
/imgs/gif/gifset_h/gears2p_90.gif
/imgs/gif/gifset_h/gears2q.gif
/imgs/gif/gifset_h/gears2q_1.gif
/imgs/gif/gifset_h/gears2q_10.gif
/imgs/gif/gifset_h/gears2q_100.gif
/imgs/gif/gifset_h/gears2q_2.gif
/imgs/gif/gifset_h/gears2q_20.gif
/imgs/gif/gifset_h/gears2q_3.gif
/imgs/gif/gifset_h/gears2q_30.gif
/imgs/gif/gifset_h/gears2q_4.gif
/imgs/gif/gifset_h/gears2q_40.gif
/imgs/gif/gifset_h/gears2q_5.gif
/imgs/gif/gifset_h/gears2q_50.gif
/imgs/gif/gifset_h/gears2q_6.gif
/imgs/gif/gifset_h/gears2q_7.gif
/imgs/gif/gifset_h/gears2q_70.gif
/imgs/gif/gifset_h/gears2q_8.gif
/imgs/gif/gifset_h/gears2q_80.gif
/imgs/gif/gifset_h/gears2q_9.gif
/imgs/gif/gifset_h/gears2q_90.gif
/imgs/gif/gifset_h/header.gif
/imgs/gif/gifset_h/headerb.gif
/imgs/gif/gifset_h/headerb_1.gif
/imgs/gif/gifset_h/headerb_10.gif
/imgs/gif/gifset_h/headerb_100.gif
/imgs/gif/gifset_h/headerb_2.gif
/imgs/gif/gifset_h/headerb_20.gif
/imgs/gif/gifset_h/headerb_3.gif
/imgs/gif/gifset_h/headerb_30.gif
/imgs/gif/gifset_h/headerb_4.gif
/imgs/gif/gifset_h/headerb_40.gif
/imgs/gif/gifset_h/headerb_5.gif
/imgs/gif/gifset_h/headerb_50.gif
/imgs/gif/gifset_h/headerb_6.gif
/imgs/gif/gifset_h/headerb_7.gif
/imgs/gif/gifset_h/headerb_70.gif
/imgs/gif/gifset_h/headerb_8.gif
/imgs/gif/gifset_h/headerb_80.gif
/imgs/gif/gifset_h/headerb_9.gif
/imgs/gif/gifset_h/headerb_90.gif
/imgs/gif/gifset_h/headerd.gif
/imgs/gif/gifset_h/headerd_1.gif
/imgs/gif/gifset_h/headerd_10.gif
/imgs/gif/gifset_h/headerd_100.gif
/imgs/gif/gifset_h/headerd_2.gif
/imgs/gif/gifset_h/headerd_20.gif
/imgs/gif/gifset_h/headerd_3.gif
/imgs/gif/gifset_h/headerd_30.gif
/imgs/gif/gifset_h/headerd_4.gif
/imgs/gif/gifset_h/headerd_40.gif
/imgs/gif/gifset_h/headerd_5.gif
/imgs/gif/gifset_h/headerd_50.gif
/imgs/gif/gifset_h/headerd_6.gif
/imgs/gif/gifset_h/headerd_7.gif
/imgs/gif/gifset_h/headerd_70.gif
/imgs/gif/gifset_h/headerd_8.gif
/imgs/gif/gifset_h/headerd_80.gif
/imgs/gif/gifset_h/headerd_9.gif
/imgs/gif/gifset_h/headerd_90.gif
/imgs/gif/gifset_h/headerp.gif
/imgs/gif/gifset_h/headerp_1.gif
/imgs/gif/gifset_h/headerp_10.gif
/imgs/gif/gifset_h/headerp_100.gif
/imgs/gif/gifset_h/headerp_2.gif
/imgs/gif/gifset_h/headerp_20.gif
/imgs/gif/gifset_h/headerp_3.gif
/imgs/gif/gifset_h/headerp_30.gif
/imgs/gif/gifset_h/headerp_4.gif
/imgs/gif/gifset_h/headerp_40.gif
/imgs/gif/gifset_h/headerp_5.gif
/imgs/gif/gifset_h/headerp_50.gif
/imgs/gif/gifset_h/headerp_6.gif
/imgs/gif/gifset_h/headerp_7.gif
/imgs/gif/gifset_h/headerp_70.gif
/imgs/gif/gifset_h/headerp_8.gif
/imgs/gif/gifset_h/headerp_80.gif
/imgs/gif/gifset_h/headerp_9.gif
/imgs/gif/gifset_h/headerp_90.gif
/imgs/gif/gifset_h/headerq.gif
/imgs/gif/gifset_h/headerq_1.gif
/imgs/gif/gifset_h/headerq_10.gif
/imgs/gif/gifset_h/headerq_100.gif
/imgs/gif/gifset_h/headerq_2.gif
/imgs/gif/gifset_h/headerq_20.gif
/imgs/gif/gifset_h/headerq_3.gif
/imgs/gif/gifset_h/headerq_30.gif
/imgs/gif/gifset_h/headerq_4.gif
/imgs/gif/gifset_h/headerq_40.gif
/imgs/gif/gifset_h/headerq_5.gif
/imgs/gif/gifset_h/headerq_50.gif
/imgs/gif/gifset_h/headerq_6.gif
/imgs/gif/gifset_h/headerq_7.gif
/imgs/gif/gifset_h/headerq_70.gif
/imgs/gif/gifset_h/headerq_8.gif
/imgs/gif/gifset_h/headerq_80.gif
/imgs/gif/gifset_h/headerq_9.gif
/imgs/gif/gifset_h/headerq_90.gif
/imgs/gif/gifset_h/heart.gif
/imgs/gif/gifset_h/heartb.gif
/imgs/gif/gifset_h/heartb_1.gif
/imgs/gif/gifset_h/heartb_10.gif
/imgs/gif/gifset_h/heartb_100.gif
/imgs/gif/gifset_h/heartb_2.gif
/imgs/gif/gifset_h/heartb_20.gif
/imgs/gif/gifset_h/heartb_3.gif
/imgs/gif/gifset_h/heartb_30.gif
/imgs/gif/gifset_h/heartb_4.gif
/imgs/gif/gifset_h/heartb_40.gif
/imgs/gif/gifset_h/heartb_5.gif
/imgs/gif/gifset_h/heartb_50.gif
/imgs/gif/gifset_h/heartb_6.gif
/imgs/gif/gifset_h/heartb_7.gif
/imgs/gif/gifset_h/heartb_70.gif
/imgs/gif/gifset_h/heartb_8.gif
/imgs/gif/gifset_h/heartb_80.gif
/imgs/gif/gifset_h/heartb_9.gif
/imgs/gif/gifset_h/heartb_90.gif
/imgs/gif/gifset_h/heartd.gif
/imgs/gif/gifset_h/heartd_1.gif
/imgs/gif/gifset_h/heartd_10.gif
/imgs/gif/gifset_h/heartd_100.gif
/imgs/gif/gifset_h/heartd_2.gif
/imgs/gif/gifset_h/heartd_20.gif
/imgs/gif/gifset_h/heartd_3.gif
/imgs/gif/gifset_h/heartd_30.gif
/imgs/gif/gifset_h/heartd_4.gif
/imgs/gif/gifset_h/heartd_40.gif
/imgs/gif/gifset_h/heartd_5.gif
/imgs/gif/gifset_h/heartd_50.gif
/imgs/gif/gifset_h/heartd_6.gif
/imgs/gif/gifset_h/heartd_7.gif
/imgs/gif/gifset_h/heartd_70.gif
/imgs/gif/gifset_h/heartd_8.gif
/imgs/gif/gifset_h/heartd_80.gif
/imgs/gif/gifset_h/heartd_9.gif
/imgs/gif/gifset_h/heartd_90.gif
/imgs/gif/gifset_h/heartp.gif
/imgs/gif/gifset_h/heartp_1.gif
/imgs/gif/gifset_h/heartp_10.gif
/imgs/gif/gifset_h/heartp_100.gif
/imgs/gif/gifset_h/heartp_2.gif
/imgs/gif/gifset_h/heartp_20.gif
/imgs/gif/gifset_h/heartp_3.gif
/imgs/gif/gifset_h/heartp_30.gif
/imgs/gif/gifset_h/heartp_4.gif
/imgs/gif/gifset_h/heartp_40.gif
/imgs/gif/gifset_h/heartp_5.gif
/imgs/gif/gifset_h/heartp_50.gif
/imgs/gif/gifset_h/heartp_6.gif
/imgs/gif/gifset_h/heartp_7.gif
/imgs/gif/gifset_h/heartp_70.gif
/imgs/gif/gifset_h/heartp_8.gif
/imgs/gif/gifset_h/heartp_80.gif
/imgs/gif/gifset_h/heartp_9.gif
/imgs/gif/gifset_h/heartp_90.gif
/imgs/gif/gifset_h/heartq.gif
/imgs/gif/gifset_h/heartq_1.gif
/imgs/gif/gifset_h/heartq_10.gif
/imgs/gif/gifset_h/heartq_100.gif
/imgs/gif/gifset_h/heartq_2.gif
/imgs/gif/gifset_h/heartq_20.gif
/imgs/gif/gifset_h/heartq_3.gif
/imgs/gif/gifset_h/heartq_30.gif
/imgs/gif/gifset_h/heartq_4.gif
/imgs/gif/gifset_h/heartq_40.gif
/imgs/gif/gifset_h/heartq_5.gif
/imgs/gif/gifset_h/heartq_50.gif
/imgs/gif/gifset_h/heartq_6.gif
/imgs/gif/gifset_h/heartq_7.gif
/imgs/gif/gifset_h/heartq_70.gif
/imgs/gif/gifset_h/heartq_8.gif
/imgs/gif/gifset_h/heartq_80.gif
/imgs/gif/gifset_h/heartq_9.gif
/imgs/gif/gifset_h/heartq_90.gif
/imgs/gif/gifset_h/helpbean.gif
/imgs/gif/gifset_knots/knot.gif
/imgs/gif/gifset_knots/knot_koeye.gif
/imgs/gif/gifset_knots/knotb.gif
/imgs/gif/gifset_knots/knotb_1.gif
/imgs/gif/gifset_knots/knotb_10.gif
/imgs/gif/gifset_knots/knotb_100.gif
/imgs/gif/gifset_knots/knotb_2.gif
/imgs/gif/gifset_knots/knotb_20.gif
/imgs/gif/gifset_knots/knotb_3.gif
/imgs/gif/gifset_knots/knotb_30.gif
/imgs/gif/gifset_knots/knotb_4.gif
/imgs/gif/gifset_knots/knotb_40.gif
/imgs/gif/gifset_knots/knotb_5.gif
/imgs/gif/gifset_knots/knotb_50.gif
/imgs/gif/gifset_knots/knotb_6.gif
/imgs/gif/gifset_knots/knotb_7.gif
/imgs/gif/gifset_knots/knotb_70.gif
/imgs/gif/gifset_knots/knotb_8.gif
/imgs/gif/gifset_knots/knotb_80.gif
/imgs/gif/gifset_knots/knotb_9.gif
/imgs/gif/gifset_knots/knotb_90.gif
/imgs/gif/gifset_knots/knotd.gif
/imgs/gif/gifset_knots/knotd_1.gif
/imgs/gif/gifset_knots/knotd_10.gif
/imgs/gif/gifset_knots/knotd_100.gif
/imgs/gif/gifset_knots/knotd_2.gif
/imgs/gif/gifset_knots/knotd_20.gif
/imgs/gif/gifset_knots/knotd_3.gif
/imgs/gif/gifset_knots/knotd_30.gif
/imgs/gif/gifset_knots/knotd_4.gif
/imgs/gif/gifset_knots/knotd_40.gif
/imgs/gif/gifset_knots/knotd_5.gif
/imgs/gif/gifset_knots/knotd_50.gif
/imgs/gif/gifset_knots/knotd_6.gif
/imgs/gif/gifset_knots/knotd_7.gif
/imgs/gif/gifset_knots/knotd_70.gif
/imgs/gif/gifset_knots/knotd_8.gif
/imgs/gif/gifset_knots/knotd_80.gif
/imgs/gif/gifset_knots/knotd_9.gif
/imgs/gif/gifset_knots/knotd_90.gif
/imgs/gif/gifset_knots/knotl.gif
/imgs/gif/gifset_knots/knotp.gif
/imgs/gif/gifset_knots/knotp_1.gif
/imgs/gif/gifset_knots/knotp_10.gif
/imgs/gif/gifset_knots/knotp_100.gif
/imgs/gif/gifset_knots/knotp_2.gif
/imgs/gif/gifset_knots/knotp_20.gif
/imgs/gif/gifset_knots/knotp_3.gif
/imgs/gif/gifset_knots/knotp_30.gif
/imgs/gif/gifset_knots/knotp_4.gif
/imgs/gif/gifset_knots/knotp_40.gif
/imgs/gif/gifset_knots/knotp_5.gif
/imgs/gif/gifset_knots/knotp_50.gif
/imgs/gif/gifset_knots/knotp_6.gif
/imgs/gif/gifset_knots/knotp_7.gif
/imgs/gif/gifset_knots/knotp_70.gif
/imgs/gif/gifset_knots/knotp_8.gif
/imgs/gif/gifset_knots/knotp_80.gif
/imgs/gif/gifset_knots/knotp_9.gif
/imgs/gif/gifset_knots/knotp_90.gif
/imgs/gif/gifset_knots/knotq.gif
/imgs/gif/gifset_knots/knotq_1.gif
/imgs/gif/gifset_knots/knotq_10.gif
/imgs/gif/gifset_knots/knotq_100.gif
/imgs/gif/gifset_knots/knotq_2.gif
/imgs/gif/gifset_knots/knotq_20.gif
/imgs/gif/gifset_knots/knotq_3.gif
/imgs/gif/gifset_knots/knotq_30.gif
/imgs/gif/gifset_knots/knotq_4.gif
/imgs/gif/gifset_knots/knotq_40.gif
/imgs/gif/gifset_knots/knotq_5.gif
/imgs/gif/gifset_knots/knotq_50.gif
/imgs/gif/gifset_knots/knotq_6.gif
/imgs/gif/gifset_knots/knotq_7.gif
/imgs/gif/gifset_knots/knotq_70.gif
/imgs/gif/gifset_knots/knotq_8.gif
/imgs/gif/gifset_knots/knotq_80.gif
/imgs/gif/gifset_knots/knotq_9.gif
/imgs/gif/gifset_knots/knotq_90.gif
/imgs/gif/gifset_knots/koeye_knot.gif
/imgs/gif/gifset_knots/koeye_knot_100x40.gif
/imgs/gif/gifset_knots/koeye_knot_200x80.gif
/imgs/gif/gifset_knots/koeye_knot_400x160.gif
/imgs/gif/gifset_knots/koeye_rings.gif
/imgs/gif/gifset_m/laser1.gif
/imgs/gif/gifset_m/laser1b.gif
/imgs/gif/gifset_m/laser1b_1.gif
/imgs/gif/gifset_m/laser1b_10.gif
/imgs/gif/gifset_m/laser1b_100.gif
/imgs/gif/gifset_m/laser1b_2.gif
/imgs/gif/gifset_m/laser1b_20.gif
/imgs/gif/gifset_m/laser1b_3.gif
/imgs/gif/gifset_m/laser1b_30.gif
/imgs/gif/gifset_m/laser1b_4.gif
/imgs/gif/gifset_m/laser1b_40.gif
/imgs/gif/gifset_m/laser1b_5.gif
/imgs/gif/gifset_m/laser1b_50.gif
/imgs/gif/gifset_m/laser1b_6.gif
/imgs/gif/gifset_m/laser1b_7.gif
/imgs/gif/gifset_m/laser1b_70.gif
/imgs/gif/gifset_m/laser1b_8.gif
/imgs/gif/gifset_m/laser1b_80.gif
/imgs/gif/gifset_m/laser1b_9.gif
/imgs/gif/gifset_m/laser1b_90.gif
/imgs/gif/gifset_m/laser1d.gif
/imgs/gif/gifset_m/laser1d_1.gif
/imgs/gif/gifset_m/laser1d_10.gif
/imgs/gif/gifset_m/laser1d_100.gif
/imgs/gif/gifset_m/laser1d_2.gif
/imgs/gif/gifset_m/laser1d_20.gif
/imgs/gif/gifset_m/laser1d_3.gif
/imgs/gif/gifset_m/laser1d_30.gif
/imgs/gif/gifset_m/laser1d_4.gif
/imgs/gif/gifset_m/laser1d_40.gif
/imgs/gif/gifset_m/laser1d_5.gif
/imgs/gif/gifset_m/laser1d_50.gif
/imgs/gif/gifset_m/laser1d_6.gif
/imgs/gif/gifset_m/laser1d_7.gif
/imgs/gif/gifset_m/laser1d_70.gif
/imgs/gif/gifset_m/laser1d_8.gif
/imgs/gif/gifset_m/laser1d_80.gif
/imgs/gif/gifset_m/laser1d_9.gif
/imgs/gif/gifset_m/laser1d_90.gif
/imgs/gif/gifset_m/laser1p.gif
/imgs/gif/gifset_m/laser1p_1.gif
/imgs/gif/gifset_m/laser1p_10.gif
/imgs/gif/gifset_m/laser1p_100.gif
/imgs/gif/gifset_m/laser1p_2.gif
/imgs/gif/gifset_m/laser1p_20.gif
/imgs/gif/gifset_m/laser1p_3.gif
/imgs/gif/gifset_m/laser1p_30.gif
/imgs/gif/gifset_m/laser1p_4.gif
/imgs/gif/gifset_m/laser1p_40.gif
/imgs/gif/gifset_m/laser1p_5.gif
/imgs/gif/gifset_m/laser1p_50.gif
/imgs/gif/gifset_m/laser1p_6.gif
/imgs/gif/gifset_m/laser1p_7.gif
/imgs/gif/gifset_m/laser1p_70.gif
/imgs/gif/gifset_m/laser1p_8.gif
/imgs/gif/gifset_m/laser1p_80.gif
/imgs/gif/gifset_m/laser1p_9.gif
/imgs/gif/gifset_m/laser1p_90.gif
/imgs/gif/gifset_m/laser1q.gif
/imgs/gif/gifset_m/laser1q_1.gif
/imgs/gif/gifset_m/laser1q_10.gif
/imgs/gif/gifset_m/laser1q_100.gif
/imgs/gif/gifset_m/laser1q_2.gif
/imgs/gif/gifset_m/laser1q_20.gif
/imgs/gif/gifset_m/laser1q_3.gif
/imgs/gif/gifset_m/laser1q_30.gif
/imgs/gif/gifset_m/laser1q_4.gif
/imgs/gif/gifset_m/laser1q_40.gif
/imgs/gif/gifset_m/laser1q_5.gif
/imgs/gif/gifset_m/laser1q_50.gif
/imgs/gif/gifset_m/laser1q_6.gif
/imgs/gif/gifset_m/laser1q_7.gif
/imgs/gif/gifset_m/laser1q_70.gif
/imgs/gif/gifset_m/laser1q_8.gif
/imgs/gif/gifset_m/laser1q_80.gif
/imgs/gif/gifset_m/laser1q_9.gif
/imgs/gif/gifset_m/laser1q_90.gif
/imgs/gif/gifset_m/laser2.gif
/imgs/gif/gifset_m/laser2b.gif
/imgs/gif/gifset_m/laser2b_1.gif
/imgs/gif/gifset_m/laser2b_10.gif
/imgs/gif/gifset_m/laser2b_100.gif
/imgs/gif/gifset_m/laser2b_2.gif
/imgs/gif/gifset_m/laser2b_20.gif
/imgs/gif/gifset_m/laser2b_3.gif
/imgs/gif/gifset_m/laser2b_30.gif
/imgs/gif/gifset_m/laser2b_4.gif
/imgs/gif/gifset_m/laser2b_40.gif
/imgs/gif/gifset_m/laser2b_5.gif
/imgs/gif/gifset_m/laser2b_50.gif
/imgs/gif/gifset_m/laser2b_6.gif
/imgs/gif/gifset_m/laser2b_7.gif
/imgs/gif/gifset_m/laser2b_70.gif
/imgs/gif/gifset_m/laser2b_8.gif
/imgs/gif/gifset_m/laser2b_80.gif
/imgs/gif/gifset_m/laser2b_9.gif
/imgs/gif/gifset_m/laser2b_90.gif
/imgs/gif/gifset_m/laser2d.gif
/imgs/gif/gifset_m/laser2d_1.gif
/imgs/gif/gifset_m/laser2d_10.gif
/imgs/gif/gifset_m/laser2d_100.gif
/imgs/gif/gifset_m/laser2d_2.gif
/imgs/gif/gifset_m/laser2d_20.gif
/imgs/gif/gifset_m/laser2d_3.gif
/imgs/gif/gifset_m/laser2d_30.gif
/imgs/gif/gifset_m/laser2d_4.gif
/imgs/gif/gifset_m/laser2d_40.gif
/imgs/gif/gifset_m/laser2d_5.gif
/imgs/gif/gifset_m/laser2d_50.gif
/imgs/gif/gifset_m/laser2d_6.gif
/imgs/gif/gifset_m/laser2d_7.gif
/imgs/gif/gifset_m/laser2d_70.gif
/imgs/gif/gifset_m/laser2d_8.gif
/imgs/gif/gifset_m/laser2d_80.gif
/imgs/gif/gifset_m/laser2d_9.gif
/imgs/gif/gifset_m/laser2d_90.gif
/imgs/gif/gifset_m/laser2p.gif
/imgs/gif/gifset_m/laser2p_1.gif
/imgs/gif/gifset_m/laser2p_10.gif
/imgs/gif/gifset_m/laser2p_100.gif
/imgs/gif/gifset_m/laser2p_2.gif
/imgs/gif/gifset_m/laser2p_20.gif
/imgs/gif/gifset_m/laser2p_3.gif
/imgs/gif/gifset_m/laser2p_30.gif
/imgs/gif/gifset_m/laser2p_4.gif
/imgs/gif/gifset_m/laser2p_40.gif
/imgs/gif/gifset_m/laser2p_5.gif
/imgs/gif/gifset_m/laser2p_50.gif
/imgs/gif/gifset_m/laser2p_6.gif
/imgs/gif/gifset_m/laser2p_7.gif
/imgs/gif/gifset_m/laser2p_70.gif
/imgs/gif/gifset_m/laser2p_8.gif
/imgs/gif/gifset_m/laser2p_80.gif
/imgs/gif/gifset_m/laser2p_9.gif
/imgs/gif/gifset_m/laser2p_90.gif
/imgs/gif/gifset_m/laser2q.gif
/imgs/gif/gifset_m/laser2q_1.gif
/imgs/gif/gifset_m/laser2q_10.gif
/imgs/gif/gifset_m/laser2q_100.gif
/imgs/gif/gifset_m/laser2q_2.gif
/imgs/gif/gifset_m/laser2q_20.gif
/imgs/gif/gifset_m/laser2q_3.gif
/imgs/gif/gifset_m/laser2q_30.gif
/imgs/gif/gifset_m/laser2q_4.gif
/imgs/gif/gifset_m/laser2q_40.gif
/imgs/gif/gifset_m/laser2q_5.gif
/imgs/gif/gifset_m/laser2q_50.gif
/imgs/gif/gifset_m/laser2q_6.gif
/imgs/gif/gifset_m/laser2q_7.gif
/imgs/gif/gifset_m/laser2q_70.gif
/imgs/gif/gifset_m/laser2q_8.gif
/imgs/gif/gifset_m/laser2q_80.gif
/imgs/gif/gifset_m/laser2q_9.gif
/imgs/gif/gifset_m/laser2q_90.gif
/imgs/gif/gifset_m/laser3.gif
/imgs/gif/gifset_m/laser3b.gif
/imgs/gif/gifset_m/laser3b_1.gif
/imgs/gif/gifset_m/laser3b_10.gif
/imgs/gif/gifset_m/laser3b_100.gif
/imgs/gif/gifset_m/laser3b_2.gif
/imgs/gif/gifset_m/laser3b_20.gif
/imgs/gif/gifset_m/laser3b_3.gif
/imgs/gif/gifset_m/laser3b_30.gif
/imgs/gif/gifset_m/laser3b_4.gif
/imgs/gif/gifset_m/laser3b_40.gif
/imgs/gif/gifset_m/laser3b_5.gif
/imgs/gif/gifset_m/laser3b_50.gif
/imgs/gif/gifset_m/laser3b_6.gif
/imgs/gif/gifset_m/laser3b_7.gif
/imgs/gif/gifset_m/laser3b_70.gif
/imgs/gif/gifset_m/laser3b_8.gif
/imgs/gif/gifset_m/laser3b_80.gif
/imgs/gif/gifset_m/laser3b_9.gif
/imgs/gif/gifset_m/laser3b_90.gif
/imgs/gif/gifset_m/laser3d.gif
/imgs/gif/gifset_m/laser3d_1.gif
/imgs/gif/gifset_m/laser3d_10.gif
/imgs/gif/gifset_m/laser3d_100.gif
/imgs/gif/gifset_m/laser3d_2.gif
/imgs/gif/gifset_m/laser3d_20.gif
/imgs/gif/gifset_m/laser3d_3.gif
/imgs/gif/gifset_m/laser3d_30.gif
/imgs/gif/gifset_m/laser3d_4.gif
/imgs/gif/gifset_m/laser3d_40.gif
/imgs/gif/gifset_m/laser3d_5.gif
/imgs/gif/gifset_m/laser3d_50.gif
/imgs/gif/gifset_m/laser3d_6.gif
/imgs/gif/gifset_m/laser3d_7.gif
/imgs/gif/gifset_m/laser3d_70.gif
/imgs/gif/gifset_m/laser3d_8.gif
/imgs/gif/gifset_m/laser3d_80.gif
/imgs/gif/gifset_m/laser3d_9.gif
/imgs/gif/gifset_m/laser3d_90.gif
/imgs/gif/gifset_m/laser3p.gif
/imgs/gif/gifset_m/laser3p_1.gif
/imgs/gif/gifset_m/laser3p_10.gif
/imgs/gif/gifset_m/laser3p_100.gif
/imgs/gif/gifset_m/laser3p_2.gif
/imgs/gif/gifset_m/laser3p_20.gif
/imgs/gif/gifset_m/laser3p_3.gif
/imgs/gif/gifset_m/laser3p_30.gif
/imgs/gif/gifset_m/laser3p_4.gif
/imgs/gif/gifset_m/laser3p_40.gif
/imgs/gif/gifset_m/laser3p_5.gif
/imgs/gif/gifset_m/laser3p_50.gif
/imgs/gif/gifset_m/laser3p_6.gif
/imgs/gif/gifset_m/laser3p_7.gif
/imgs/gif/gifset_m/laser3p_70.gif
/imgs/gif/gifset_m/laser3p_8.gif
/imgs/gif/gifset_m/laser3p_80.gif
/imgs/gif/gifset_m/laser3p_9.gif
/imgs/gif/gifset_m/laser3p_90.gif
/imgs/gif/gifset_m/laser3q.gif
/imgs/gif/gifset_m/laser3q_1.gif
/imgs/gif/gifset_m/laser3q_10.gif
/imgs/gif/gifset_m/laser3q_100.gif
/imgs/gif/gifset_m/laser3q_2.gif
/imgs/gif/gifset_m/laser3q_20.gif
/imgs/gif/gifset_m/laser3q_3.gif
/imgs/gif/gifset_m/laser3q_30.gif
/imgs/gif/gifset_m/laser3q_4.gif
/imgs/gif/gifset_m/laser3q_40.gif
/imgs/gif/gifset_m/laser3q_5.gif
/imgs/gif/gifset_m/laser3q_50.gif
/imgs/gif/gifset_m/laser3q_6.gif
/imgs/gif/gifset_m/laser3q_7.gif
/imgs/gif/gifset_m/laser3q_70.gif
/imgs/gif/gifset_m/laser3q_8.gif
/imgs/gif/gifset_m/laser3q_80.gif
/imgs/gif/gifset_m/laser3q_9.gif
/imgs/gif/gifset_m/laser3q_90.gif
/imgs/gif/gifset_m/meterbars.gif
/imgs/gif/gifset_m/meterbarsb.gif
/imgs/gif/gifset_m/meterbarsb_1.gif
/imgs/gif/gifset_m/meterbarsb_10.gif
/imgs/gif/gifset_m/meterbarsb_100.gif
/imgs/gif/gifset_m/meterbarsb_2.gif
/imgs/gif/gifset_m/meterbarsb_20.gif
/imgs/gif/gifset_m/meterbarsb_3.gif
/imgs/gif/gifset_m/meterbarsb_30.gif
/imgs/gif/gifset_m/meterbarsb_4.gif
/imgs/gif/gifset_m/meterbarsb_40.gif
/imgs/gif/gifset_m/meterbarsb_5.gif
/imgs/gif/gifset_m/meterbarsb_50.gif
/imgs/gif/gifset_m/meterbarsb_6.gif
/imgs/gif/gifset_m/meterbarsb_7.gif
/imgs/gif/gifset_m/meterbarsb_70.gif
/imgs/gif/gifset_m/meterbarsb_8.gif
/imgs/gif/gifset_m/meterbarsb_80.gif
/imgs/gif/gifset_m/meterbarsb_9.gif
/imgs/gif/gifset_m/meterbarsb_90.gif
/imgs/gif/gifset_m/meterbarsd.gif
/imgs/gif/gifset_m/meterbarsd_1.gif
/imgs/gif/gifset_m/meterbarsd_10.gif
/imgs/gif/gifset_m/meterbarsd_100.gif
/imgs/gif/gifset_m/meterbarsd_2.gif
/imgs/gif/gifset_m/meterbarsd_20.gif
/imgs/gif/gifset_m/meterbarsd_3.gif
/imgs/gif/gifset_m/meterbarsd_30.gif
/imgs/gif/gifset_m/meterbarsd_4.gif
/imgs/gif/gifset_m/meterbarsd_40.gif
/imgs/gif/gifset_m/meterbarsd_5.gif
/imgs/gif/gifset_m/meterbarsd_50.gif
/imgs/gif/gifset_m/meterbarsd_6.gif
/imgs/gif/gifset_m/meterbarsd_7.gif
/imgs/gif/gifset_m/meterbarsd_70.gif
/imgs/gif/gifset_m/meterbarsd_8.gif
/imgs/gif/gifset_m/meterbarsd_80.gif
/imgs/gif/gifset_m/meterbarsd_9.gif
/imgs/gif/gifset_m/meterbarsd_90.gif
/imgs/gif/gifset_m/meterbarsp.gif
/imgs/gif/gifset_m/meterbarsp_1.gif
/imgs/gif/gifset_m/meterbarsp_10.gif
/imgs/gif/gifset_m/meterbarsp_100.gif
/imgs/gif/gifset_m/meterbarsp_2.gif
/imgs/gif/gifset_m/meterbarsp_20.gif
/imgs/gif/gifset_m/meterbarsp_3.gif
/imgs/gif/gifset_m/meterbarsp_30.gif
/imgs/gif/gifset_m/meterbarsp_4.gif
/imgs/gif/gifset_m/meterbarsp_40.gif
/imgs/gif/gifset_m/meterbarsp_5.gif
/imgs/gif/gifset_m/meterbarsp_50.gif
/imgs/gif/gifset_m/meterbarsp_6.gif
/imgs/gif/gifset_m/meterbarsp_7.gif
/imgs/gif/gifset_m/meterbarsp_70.gif
/imgs/gif/gifset_m/meterbarsp_8.gif
/imgs/gif/gifset_m/meterbarsp_80.gif
/imgs/gif/gifset_m/meterbarsp_9.gif
/imgs/gif/gifset_m/meterbarsp_90.gif
/imgs/gif/gifset_m/meterbarsq.gif
/imgs/gif/gifset_m/meterbarsq_1.gif
/imgs/gif/gifset_m/meterbarsq_10.gif
/imgs/gif/gifset_m/meterbarsq_100.gif
/imgs/gif/gifset_m/meterbarsq_2.gif
/imgs/gif/gifset_m/meterbarsq_20.gif
/imgs/gif/gifset_m/meterbarsq_3.gif
/imgs/gif/gifset_m/meterbarsq_30.gif
/imgs/gif/gifset_m/meterbarsq_4.gif
/imgs/gif/gifset_m/meterbarsq_40.gif
/imgs/gif/gifset_m/meterbarsq_5.gif
/imgs/gif/gifset_m/meterbarsq_50.gif
/imgs/gif/gifset_m/meterbarsq_6.gif
/imgs/gif/gifset_m/meterbarsq_7.gif
/imgs/gif/gifset_m/meterbarsq_70.gif
/imgs/gif/gifset_m/meterbarsq_8.gif
/imgs/gif/gifset_m/meterbarsq_80.gif
/imgs/gif/gifset_m/meterbarsq_9.gif
/imgs/gif/gifset_m/meterbarsq_90.gif
/imgs/gif/gifset_m/meterdots.gif
/imgs/gif/gifset_m/meterdotsb.gif
/imgs/gif/gifset_m/meterdotsb_1.gif
/imgs/gif/gifset_m/meterdotsb_10.gif
/imgs/gif/gifset_m/meterdotsb_100.gif
/imgs/gif/gifset_m/meterdotsb_2.gif
/imgs/gif/gifset_m/meterdotsb_20.gif
/imgs/gif/gifset_m/meterdotsb_3.gif
/imgs/gif/gifset_m/meterdotsb_30.gif
/imgs/gif/gifset_m/meterdotsb_4.gif
/imgs/gif/gifset_m/meterdotsb_40.gif
/imgs/gif/gifset_m/meterdotsb_5.gif
/imgs/gif/gifset_m/meterdotsb_50.gif
/imgs/gif/gifset_m/meterdotsb_6.gif
/imgs/gif/gifset_m/meterdotsb_7.gif
/imgs/gif/gifset_m/meterdotsb_70.gif
/imgs/gif/gifset_m/meterdotsb_8.gif
/imgs/gif/gifset_m/meterdotsb_80.gif
/imgs/gif/gifset_m/meterdotsb_9.gif
/imgs/gif/gifset_m/meterdotsb_90.gif
/imgs/gif/gifset_m/meterdotsd.gif
/imgs/gif/gifset_m/meterdotsd_1.gif
/imgs/gif/gifset_m/meterdotsd_10.gif
/imgs/gif/gifset_m/meterdotsd_100.gif
/imgs/gif/gifset_m/meterdotsd_2.gif
/imgs/gif/gifset_m/meterdotsd_20.gif
/imgs/gif/gifset_m/meterdotsd_3.gif
/imgs/gif/gifset_m/meterdotsd_30.gif
/imgs/gif/gifset_m/meterdotsd_4.gif
/imgs/gif/gifset_m/meterdotsd_40.gif
/imgs/gif/gifset_m/meterdotsd_5.gif
/imgs/gif/gifset_m/meterdotsd_50.gif
/imgs/gif/gifset_m/meterdotsd_6.gif
/imgs/gif/gifset_m/meterdotsd_7.gif
/imgs/gif/gifset_m/meterdotsd_70.gif
/imgs/gif/gifset_m/meterdotsd_8.gif
/imgs/gif/gifset_m/meterdotsd_80.gif
/imgs/gif/gifset_m/meterdotsd_9.gif
/imgs/gif/gifset_m/meterdotsd_90.gif
/imgs/gif/gifset_m/meterdotsp.gif
/imgs/gif/gifset_m/meterdotsp_1.gif
/imgs/gif/gifset_m/meterdotsp_10.gif
/imgs/gif/gifset_m/meterdotsp_100.gif
/imgs/gif/gifset_m/meterdotsp_2.gif
/imgs/gif/gifset_m/meterdotsp_20.gif
/imgs/gif/gifset_m/meterdotsp_3.gif
/imgs/gif/gifset_m/meterdotsp_30.gif
/imgs/gif/gifset_m/meterdotsp_4.gif
/imgs/gif/gifset_m/meterdotsp_40.gif
/imgs/gif/gifset_m/meterdotsp_5.gif
/imgs/gif/gifset_m/meterdotsp_50.gif
/imgs/gif/gifset_m/meterdotsp_6.gif
/imgs/gif/gifset_m/meterdotsp_7.gif
/imgs/gif/gifset_m/meterdotsp_70.gif
/imgs/gif/gifset_m/meterdotsp_8.gif
/imgs/gif/gifset_m/meterdotsp_80.gif
/imgs/gif/gifset_m/meterdotsp_9.gif
/imgs/gif/gifset_m/meterdotsp_90.gif
/imgs/gif/gifset_m/meterdotsq.gif
/imgs/gif/gifset_m/meterdotsq_1.gif
/imgs/gif/gifset_m/meterdotsq_10.gif
/imgs/gif/gifset_m/meterdotsq_100.gif
/imgs/gif/gifset_m/meterdotsq_2.gif
/imgs/gif/gifset_m/meterdotsq_20.gif
/imgs/gif/gifset_m/meterdotsq_3.gif
/imgs/gif/gifset_m/meterdotsq_30.gif
/imgs/gif/gifset_m/meterdotsq_4.gif
/imgs/gif/gifset_m/meterdotsq_40.gif
/imgs/gif/gifset_m/meterdotsq_5.gif
/imgs/gif/gifset_m/meterdotsq_50.gif
/imgs/gif/gifset_m/meterdotsq_6.gif
/imgs/gif/gifset_m/meterdotsq_7.gif
/imgs/gif/gifset_m/meterdotsq_70.gif
/imgs/gif/gifset_m/meterdotsq_8.gif
/imgs/gif/gifset_m/meterdotsq_80.gif
/imgs/gif/gifset_m/meterdotsq_9.gif
/imgs/gif/gifset_m/meterdotsq_90.gif
/imgs/gif/gifset_r/firebubblesq_1.gif
/imgs/gif/gifset_r/firebubblesq_10.gif
/imgs/gif/gifset_r/firebubblesq_100.gif
/imgs/gif/gifset_r/firebubblesq_2.gif
/imgs/gif/gifset_r/firebubblesq_20.gif
/imgs/gif/gifset_r/firebubblesq_3.gif
/imgs/gif/gifset_r/firebubblesq_30.gif
/imgs/gif/gifset_r/firebubblesq_4.gif
/imgs/gif/gifset_r/firebubblesq_40.gif
/imgs/gif/gifset_r/firebubblesq_5.gif
/imgs/gif/gifset_r/firebubblesq_50.gif
/imgs/gif/gifset_r/firebubblesq_6.gif
/imgs/gif/gifset_r/firebubblesq_7.gif
/imgs/gif/gifset_r/firebubblesq_70.gif
/imgs/gif/gifset_r/firebubblesq_8.gif
/imgs/gif/gifset_r/firebubblesq_80.gif
/imgs/gif/gifset_r/firebubblesq_9.gif
/imgs/gif/gifset_r/firebubblesq_90.gif
/imgs/gif/gifset_r/penny.gif
/imgs/gif/gifset_r/pennyb.gif
/imgs/gif/gifset_r/pennyb_1.gif
/imgs/gif/gifset_r/pennyb_10.gif
/imgs/gif/gifset_r/pennyb_100.gif
/imgs/gif/gifset_r/pennyb_2.gif
/imgs/gif/gifset_r/pennyb_20.gif
/imgs/gif/gifset_r/pennyb_3.gif
/imgs/gif/gifset_r/pennyb_30.gif
/imgs/gif/gifset_r/pennyb_4.gif
/imgs/gif/gifset_r/pennyb_40.gif
/imgs/gif/gifset_r/pennyb_5.gif
/imgs/gif/gifset_r/pennyb_50.gif
/imgs/gif/gifset_r/pennyb_6.gif
/imgs/gif/gifset_r/pennyb_7.gif
/imgs/gif/gifset_r/pennyb_70.gif
/imgs/gif/gifset_r/pennyb_8.gif
/imgs/gif/gifset_r/pennyb_80.gif
/imgs/gif/gifset_r/pennyb_9.gif
/imgs/gif/gifset_r/pennyb_90.gif
/imgs/gif/gifset_r/pennyd.gif
/imgs/gif/gifset_r/pennyd_1.gif
/imgs/gif/gifset_r/pennyd_10.gif
/imgs/gif/gifset_r/pennyd_100.gif
/imgs/gif/gifset_r/pennyd_2.gif
/imgs/gif/gifset_r/pennyd_20.gif
/imgs/gif/gifset_r/pennyd_3.gif
/imgs/gif/gifset_r/pennyd_30.gif
/imgs/gif/gifset_r/pennyd_4.gif
/imgs/gif/gifset_r/pennyd_40.gif
/imgs/gif/gifset_r/pennyd_5.gif
/imgs/gif/gifset_r/pennyd_50.gif
/imgs/gif/gifset_r/pennyd_6.gif
/imgs/gif/gifset_r/pennyd_7.gif
/imgs/gif/gifset_r/pennyd_70.gif
/imgs/gif/gifset_r/pennyd_8.gif
/imgs/gif/gifset_r/pennyd_80.gif
/imgs/gif/gifset_r/pennyd_9.gif
/imgs/gif/gifset_r/pennyd_90.gif
/imgs/gif/gifset_r/pennyp.gif
/imgs/gif/gifset_r/pennyp_1.gif
/imgs/gif/gifset_r/pennyp_10.gif
/imgs/gif/gifset_r/pennyp_100.gif
/imgs/gif/gifset_r/pennyp_2.gif
/imgs/gif/gifset_r/pennyp_20.gif
/imgs/gif/gifset_r/pennyp_3.gif
/imgs/gif/gifset_r/pennyp_30.gif
/imgs/gif/gifset_r/pennyp_4.gif
/imgs/gif/gifset_r/pennyp_40.gif
/imgs/gif/gifset_r/pennyp_5.gif
/imgs/gif/gifset_r/pennyp_50.gif
/imgs/gif/gifset_r/pennyp_6.gif
/imgs/gif/gifset_r/pennyp_7.gif
/imgs/gif/gifset_r/pennyp_70.gif
/imgs/gif/gifset_r/pennyp_8.gif
/imgs/gif/gifset_r/pennyp_80.gif
/imgs/gif/gifset_r/pennyp_9.gif
/imgs/gif/gifset_r/pennyp_90.gif
/imgs/gif/gifset_r/pennyq.gif
/imgs/gif/gifset_r/pennyq_1.gif
/imgs/gif/gifset_r/pennyq_10.gif
/imgs/gif/gifset_r/pennyq_100.gif
/imgs/gif/gifset_r/pennyq_2.gif
/imgs/gif/gifset_r/pennyq_20.gif
/imgs/gif/gifset_r/pennyq_3.gif
/imgs/gif/gifset_r/pennyq_30.gif
/imgs/gif/gifset_r/pennyq_4.gif
/imgs/gif/gifset_r/pennyq_40.gif
/imgs/gif/gifset_r/pennyq_5.gif
/imgs/gif/gifset_r/pennyq_50.gif
/imgs/gif/gifset_r/pennyq_6.gif
/imgs/gif/gifset_r/pennyq_7.gif
/imgs/gif/gifset_r/pennyq_70.gif
/imgs/gif/gifset_r/pennyq_8.gif
/imgs/gif/gifset_r/pennyq_80.gif
/imgs/gif/gifset_r/pennyq_9.gif
/imgs/gif/gifset_r/pennyq_90.gif
/imgs/gif/gifset_r/ringsb_1.gif
/imgs/gif/gifset_r/ringsb_10.gif
/imgs/gif/gifset_r/ringsb_100.gif
/imgs/gif/gifset_r/ringsb_2.gif
/imgs/gif/gifset_r/ringsb_20.gif
/imgs/gif/gifset_r/ringsb_3.gif
/imgs/gif/gifset_r/ringsb_30.gif
/imgs/gif/gifset_r/ringsb_4.gif
/imgs/gif/gifset_r/ringsb_40.gif
/imgs/gif/gifset_r/ringsb_5.gif
/imgs/gif/gifset_r/ringsb_50.gif
/imgs/gif/gifset_r/ringsb_6.gif
/imgs/gif/gifset_r/ringsb_7.gif
/imgs/gif/gifset_r/ringsb_70.gif
/imgs/gif/gifset_r/ringsb_8.gif
/imgs/gif/gifset_r/ringsb_80.gif
/imgs/gif/gifset_r/ringsb_9.gif
/imgs/gif/gifset_r/ringsb_90.gif
/imgs/gif/gifset_r/ringsd_1.gif
/imgs/gif/gifset_r/ringsd_10.gif
/imgs/gif/gifset_r/ringsd_100.gif
/imgs/gif/gifset_r/ringsd_2.gif
/imgs/gif/gifset_r/ringsd_20.gif
/imgs/gif/gifset_r/ringsd_3.gif
/imgs/gif/gifset_r/ringsd_30.gif
/imgs/gif/gifset_r/ringsd_4.gif
/imgs/gif/gifset_r/ringsd_40.gif
/imgs/gif/gifset_r/ringsd_5.gif
/imgs/gif/gifset_r/ringsd_50.gif
/imgs/gif/gifset_r/ringsd_6.gif
/imgs/gif/gifset_r/ringsd_7.gif
/imgs/gif/gifset_r/ringsd_70.gif
/imgs/gif/gifset_r/ringsd_8.gif
/imgs/gif/gifset_r/ringsd_80.gif
/imgs/gif/gifset_r/ringsd_9.gif
/imgs/gif/gifset_r/ringsd_90.gif
/imgs/gif/gifset_r/ringsp_1.gif
/imgs/gif/gifset_r/ringsp_10.gif
/imgs/gif/gifset_r/ringsp_100.gif
/imgs/gif/gifset_r/ringsp_2.gif
/imgs/gif/gifset_r/ringsp_20.gif
/imgs/gif/gifset_r/ringsp_3.gif
/imgs/gif/gifset_r/ringsp_30.gif
/imgs/gif/gifset_r/ringsp_4.gif
/imgs/gif/gifset_r/ringsp_40.gif
/imgs/gif/gifset_r/ringsp_5.gif
/imgs/gif/gifset_r/ringsp_50.gif
/imgs/gif/gifset_r/ringsp_6.gif
/imgs/gif/gifset_r/ringsp_7.gif
/imgs/gif/gifset_r/ringsp_70.gif
/imgs/gif/gifset_r/ringsp_8.gif
/imgs/gif/gifset_r/ringsp_80.gif
/imgs/gif/gifset_r/ringsp_9.gif
/imgs/gif/gifset_r/ringsp_90.gif
/imgs/gif/gifset_r/ringsq_1.gif
/imgs/gif/gifset_r/ringsq_10.gif
/imgs/gif/gifset_r/ringsq_100.gif
/imgs/gif/gifset_r/ringsq_2.gif
/imgs/gif/gifset_r/ringsq_20.gif
/imgs/gif/gifset_r/ringsq_3.gif
/imgs/gif/gifset_r/ringsq_30.gif
/imgs/gif/gifset_r/ringsq_4.gif
/imgs/gif/gifset_r/ringsq_40.gif
/imgs/gif/gifset_r/ringsq_5.gif
/imgs/gif/gifset_r/ringsq_50.gif
/imgs/gif/gifset_r/ringsq_6.gif
/imgs/gif/gifset_r/ringsq_7.gif
/imgs/gif/gifset_r/ringsq_70.gif
/imgs/gif/gifset_r/ringsq_8.gif
/imgs/gif/gifset_r/ringsq_80.gif
/imgs/gif/gifset_r/ringsq_9.gif
/imgs/gif/gifset_r/ringsq_90.gif
/imgs/gif/gifset_r/rotate.gif
/imgs/gif/gifset_r/rotateb.gif
/imgs/gif/gifset_r/rotateb_1.gif
/imgs/gif/gifset_r/rotateb_10.gif
/imgs/gif/gifset_r/rotateb_100.gif
/imgs/gif/gifset_r/rotateb_2.gif
/imgs/gif/gifset_r/rotateb_20.gif
/imgs/gif/gifset_r/rotateb_3.gif
/imgs/gif/gifset_r/rotateb_30.gif
/imgs/gif/gifset_r/rotateb_4.gif
/imgs/gif/gifset_r/rotateb_40.gif
/imgs/gif/gifset_r/rotateb_5.gif
/imgs/gif/gifset_r/rotateb_50.gif
/imgs/gif/gifset_r/rotateb_6.gif
/imgs/gif/gifset_r/rotateb_7.gif
/imgs/gif/gifset_r/rotateb_70.gif
/imgs/gif/gifset_r/rotateb_8.gif
/imgs/gif/gifset_r/rotateb_80.gif
/imgs/gif/gifset_r/rotateb_9.gif
/imgs/gif/gifset_r/rotateb_90.gif
/imgs/gif/gifset_r/rotated.gif
/imgs/gif/gifset_r/rotated_1.gif
/imgs/gif/gifset_r/rotated_10.gif
/imgs/gif/gifset_r/rotated_100.gif
/imgs/gif/gifset_r/rotated_2.gif
/imgs/gif/gifset_r/rotated_20.gif
/imgs/gif/gifset_r/rotated_3.gif
/imgs/gif/gifset_r/rotated_30.gif
/imgs/gif/gifset_r/rotated_4.gif
/imgs/gif/gifset_r/rotated_40.gif
/imgs/gif/gifset_r/rotated_5.gif
/imgs/gif/gifset_r/rotated_50.gif
/imgs/gif/gifset_r/rotated_6.gif
/imgs/gif/gifset_r/rotated_7.gif
/imgs/gif/gifset_r/rotated_70.gif
/imgs/gif/gifset_r/rotated_8.gif
/imgs/gif/gifset_r/rotated_80.gif
/imgs/gif/gifset_r/rotated_9.gif
/imgs/gif/gifset_r/rotated_90.gif
/imgs/gif/gifset_r/rotatep.gif
/imgs/gif/gifset_r/rotatep_1.gif
/imgs/gif/gifset_r/rotatep_10.gif
/imgs/gif/gifset_r/rotatep_100.gif
/imgs/gif/gifset_r/rotatep_2.gif
/imgs/gif/gifset_r/rotatep_20.gif
/imgs/gif/gifset_r/rotatep_3.gif
/imgs/gif/gifset_r/rotatep_30.gif
/imgs/gif/gifset_r/rotatep_4.gif
/imgs/gif/gifset_r/rotatep_40.gif
/imgs/gif/gifset_r/rotatep_5.gif
/imgs/gif/gifset_r/rotatep_50.gif
/imgs/gif/gifset_r/rotatep_6.gif
/imgs/gif/gifset_r/rotatep_7.gif
/imgs/gif/gifset_r/rotatep_70.gif
/imgs/gif/gifset_r/rotatep_8.gif
/imgs/gif/gifset_r/rotatep_80.gif
/imgs/gif/gifset_r/rotatep_9.gif
/imgs/gif/gifset_r/rotatep_90.gif
/imgs/gif/gifset_r/rotateq.gif
/imgs/gif/gifset_r/rotateq_1.gif
/imgs/gif/gifset_r/rotateq_10.gif
/imgs/gif/gifset_r/rotateq_100.gif
/imgs/gif/gifset_r/rotateq_2.gif
/imgs/gif/gifset_r/rotateq_20.gif
/imgs/gif/gifset_r/rotateq_3.gif
/imgs/gif/gifset_r/rotateq_30.gif
/imgs/gif/gifset_r/rotateq_4.gif
/imgs/gif/gifset_r/rotateq_40.gif
/imgs/gif/gifset_r/rotateq_5.gif
/imgs/gif/gifset_r/rotateq_50.gif
/imgs/gif/gifset_r/rotateq_6.gif
/imgs/gif/gifset_r/rotateq_7.gif
/imgs/gif/gifset_r/rotateq_70.gif
/imgs/gif/gifset_r/rotateq_8.gif
/imgs/gif/gifset_r/rotateq_80.gif
/imgs/gif/gifset_r/rotateq_9.gif
/imgs/gif/gifset_r/rotateq_90.gif
/imgs/gif/gifset_t/soccorball.gif
/imgs/gif/gifset_t/soccorballb.gif
/imgs/gif/gifset_t/soccorballb_1.gif
/imgs/gif/gifset_t/soccorballb_10.gif
/imgs/gif/gifset_t/soccorballb_100.gif
/imgs/gif/gifset_t/soccorballb_2.gif
/imgs/gif/gifset_t/soccorballb_20.gif
/imgs/gif/gifset_t/soccorballb_3.gif
/imgs/gif/gifset_t/soccorballb_30.gif
/imgs/gif/gifset_t/soccorballb_4.gif
/imgs/gif/gifset_t/soccorballb_40.gif
/imgs/gif/gifset_t/soccorballb_5.gif
/imgs/gif/gifset_t/soccorballb_50.gif
/imgs/gif/gifset_t/soccorballb_6.gif
/imgs/gif/gifset_t/soccorballb_7.gif
/imgs/gif/gifset_t/soccorballb_70.gif
/imgs/gif/gifset_t/soccorballb_8.gif
/imgs/gif/gifset_t/soccorballb_80.gif
/imgs/gif/gifset_t/soccorballb_9.gif
/imgs/gif/gifset_t/soccorballb_90.gif
/imgs/gif/gifset_t/soccorballd.gif
/imgs/gif/gifset_t/soccorballd_1.gif
/imgs/gif/gifset_t/soccorballd_10.gif
/imgs/gif/gifset_t/soccorballd_100.gif
/imgs/gif/gifset_t/soccorballd_2.gif
/imgs/gif/gifset_t/soccorballd_20.gif
/imgs/gif/gifset_t/soccorballd_3.gif
/imgs/gif/gifset_t/soccorballd_30.gif
/imgs/gif/gifset_t/soccorballd_4.gif
/imgs/gif/gifset_t/soccorballd_40.gif
/imgs/gif/gifset_t/soccorballd_5.gif
/imgs/gif/gifset_t/soccorballd_50.gif
/imgs/gif/gifset_t/soccorballd_6.gif
/imgs/gif/gifset_t/soccorballd_7.gif
/imgs/gif/gifset_t/soccorballd_70.gif
/imgs/gif/gifset_t/soccorballd_8.gif
/imgs/gif/gifset_t/soccorballd_80.gif
/imgs/gif/gifset_t/soccorballd_9.gif
/imgs/gif/gifset_t/soccorballd_90.gif
/imgs/gif/gifset_t/soccorballp.gif
/imgs/gif/gifset_t/soccorballp_1.gif
/imgs/gif/gifset_t/soccorballp_10.gif
/imgs/gif/gifset_t/soccorballp_100.gif
/imgs/gif/gifset_t/soccorballp_2.gif
/imgs/gif/gifset_t/soccorballp_20.gif
/imgs/gif/gifset_t/soccorballp_3.gif
/imgs/gif/gifset_t/soccorballp_30.gif
/imgs/gif/gifset_t/soccorballp_4.gif
/imgs/gif/gifset_t/soccorballp_40.gif
/imgs/gif/gifset_t/soccorballp_5.gif
/imgs/gif/gifset_t/soccorballp_50.gif
/imgs/gif/gifset_t/soccorballp_6.gif
/imgs/gif/gifset_t/soccorballp_7.gif
/imgs/gif/gifset_t/soccorballp_70.gif
/imgs/gif/gifset_t/soccorballp_8.gif
/imgs/gif/gifset_t/soccorballp_80.gif
/imgs/gif/gifset_t/soccorballp_9.gif
/imgs/gif/gifset_t/soccorballp_90.gif
/imgs/gif/gifset_t/soccorballq.gif
/imgs/gif/gifset_t/soccorballq_1.gif
/imgs/gif/gifset_t/soccorballq_10.gif
/imgs/gif/gifset_t/soccorballq_100.gif
/imgs/gif/gifset_t/soccorballq_2.gif
/imgs/gif/gifset_t/soccorballq_20.gif
/imgs/gif/gifset_t/soccorballq_3.gif
/imgs/gif/gifset_t/soccorballq_30.gif
/imgs/gif/gifset_t/soccorballq_4.gif
/imgs/gif/gifset_t/soccorballq_40.gif
/imgs/gif/gifset_t/soccorballq_5.gif
/imgs/gif/gifset_t/soccorballq_50.gif
/imgs/gif/gifset_t/soccorballq_6.gif
/imgs/gif/gifset_t/soccorballq_7.gif
/imgs/gif/gifset_t/soccorballq_70.gif
/imgs/gif/gifset_t/soccorballq_8.gif
/imgs/gif/gifset_t/soccorballq_80.gif
/imgs/gif/gifset_t/soccorballq_9.gif
/imgs/gif/gifset_t/soccorballq_90.gif
/imgs/gif/gifset_t/sun.gif
/imgs/gif/gifset_t/sunb.gif
/imgs/gif/gifset_t/sunb_1.gif
/imgs/gif/gifset_t/sunb_10.gif
/imgs/gif/gifset_t/sunb_100.gif
/imgs/gif/gifset_t/sunb_2.gif
/imgs/gif/gifset_t/sunb_20.gif
/imgs/gif/gifset_t/sunb_3.gif
/imgs/gif/gifset_t/sunb_30.gif
/imgs/gif/gifset_t/sunb_4.gif
/imgs/gif/gifset_t/sunb_40.gif
/imgs/gif/gifset_t/sunb_5.gif
/imgs/gif/gifset_t/sunb_50.gif
/imgs/gif/gifset_t/sunb_6.gif
/imgs/gif/gifset_t/sunb_7.gif
/imgs/gif/gifset_t/sunb_70.gif
/imgs/gif/gifset_t/sunb_8.gif
/imgs/gif/gifset_t/sunb_80.gif
/imgs/gif/gifset_t/sunb_9.gif
/imgs/gif/gifset_t/sunb_90.gif
/imgs/gif/gifset_t/sund.gif
/imgs/gif/gifset_t/sund_1.gif
/imgs/gif/gifset_t/sund_10.gif
/imgs/gif/gifset_t/sund_100.gif
/imgs/gif/gifset_t/sund_2.gif
/imgs/gif/gifset_t/sund_20.gif
/imgs/gif/gifset_t/sund_3.gif
/imgs/gif/gifset_t/sund_30.gif
/imgs/gif/gifset_t/sund_4.gif
/imgs/gif/gifset_t/sund_40.gif
/imgs/gif/gifset_t/sund_5.gif
/imgs/gif/gifset_t/sund_50.gif
/imgs/gif/gifset_t/sund_6.gif
/imgs/gif/gifset_t/sund_7.gif
/imgs/gif/gifset_t/sund_70.gif
/imgs/gif/gifset_t/sund_8.gif
/imgs/gif/gifset_t/sund_80.gif
/imgs/gif/gifset_t/sund_9.gif
/imgs/gif/gifset_t/sund_90.gif
/imgs/gif/gifset_t/sunp.gif
/imgs/gif/gifset_t/sunp_1.gif
/imgs/gif/gifset_t/sunp_10.gif
/imgs/gif/gifset_t/sunp_100.gif
/imgs/gif/gifset_t/sunp_2.gif
/imgs/gif/gifset_t/sunp_20.gif
/imgs/gif/gifset_t/sunp_3.gif
/imgs/gif/gifset_t/sunp_30.gif
/imgs/gif/gifset_t/sunp_4.gif
/imgs/gif/gifset_t/sunp_40.gif
/imgs/gif/gifset_t/sunp_5.gif
/imgs/gif/gifset_t/sunp_50.gif
/imgs/gif/gifset_t/sunp_6.gif
/imgs/gif/gifset_t/sunp_7.gif
/imgs/gif/gifset_t/sunp_70.gif
/imgs/gif/gifset_t/sunp_8.gif
/imgs/gif/gifset_t/sunp_80.gif
/imgs/gif/gifset_t/sunp_9.gif
/imgs/gif/gifset_t/sunp_90.gif
/imgs/gif/gifset_t/sunq.gif
/imgs/gif/gifset_t/sunq_1.gif
/imgs/gif/gifset_t/sunq_10.gif
/imgs/gif/gifset_t/sunq_100.gif
/imgs/gif/gifset_t/sunq_2.gif
/imgs/gif/gifset_t/sunq_20.gif
/imgs/gif/gifset_t/sunq_3.gif
/imgs/gif/gifset_t/sunq_30.gif
/imgs/gif/gifset_t/sunq_4.gif
/imgs/gif/gifset_t/sunq_40.gif
/imgs/gif/gifset_t/sunq_5.gif
/imgs/gif/gifset_t/sunq_50.gif
/imgs/gif/gifset_t/sunq_6.gif
/imgs/gif/gifset_t/sunq_7.gif
/imgs/gif/gifset_t/sunq_70.gif
/imgs/gif/gifset_t/sunq_8.gif
/imgs/gif/gifset_t/sunq_80.gif
/imgs/gif/gifset_t/sunq_9.gif
/imgs/gif/gifset_t/sunq_90.gif
/imgs/gif/gifset_t/taz.gif
/imgs/gif/gifset_t/tazb.gif
/imgs/gif/gifset_t/tazb_1.gif
/imgs/gif/gifset_t/tazb_10.gif
/imgs/gif/gifset_t/tazb_100.gif
/imgs/gif/gifset_t/tazb_2.gif
/imgs/gif/gifset_t/tazb_20.gif
/imgs/gif/gifset_t/tazb_3.gif
/imgs/gif/gifset_t/tazb_30.gif
/imgs/gif/gifset_t/tazb_4.gif
/imgs/gif/gifset_t/tazb_40.gif
/imgs/gif/gifset_t/tazb_5.gif
/imgs/gif/gifset_t/tazb_50.gif
/imgs/gif/gifset_t/tazb_6.gif
/imgs/gif/gifset_t/tazb_7.gif
/imgs/gif/gifset_t/tazb_70.gif
/imgs/gif/gifset_t/tazb_8.gif
/imgs/gif/gifset_t/tazb_80.gif
/imgs/gif/gifset_t/tazb_9.gif
/imgs/gif/gifset_t/tazb_90.gif
/imgs/gif/gifset_t/tazd.gif
/imgs/gif/gifset_t/tazd_1.gif
/imgs/gif/gifset_t/tazd_10.gif
/imgs/gif/gifset_t/tazd_100.gif
/imgs/gif/gifset_t/tazd_2.gif
/imgs/gif/gifset_t/tazd_20.gif
/imgs/gif/gifset_t/tazd_3.gif
/imgs/gif/gifset_t/tazd_30.gif
/imgs/gif/gifset_t/tazd_4.gif
/imgs/gif/gifset_t/tazd_40.gif
/imgs/gif/gifset_t/tazd_5.gif
/imgs/gif/gifset_t/tazd_50.gif
/imgs/gif/gifset_t/tazd_6.gif
/imgs/gif/gifset_t/tazd_7.gif
/imgs/gif/gifset_t/tazd_70.gif
/imgs/gif/gifset_t/tazd_8.gif
/imgs/gif/gifset_t/tazd_80.gif
/imgs/gif/gifset_t/tazd_9.gif
/imgs/gif/gifset_t/tazd_90.gif
/imgs/gif/gifset_t/tazp.gif
/imgs/gif/gifset_t/tazp_1.gif
/imgs/gif/gifset_t/tazp_10.gif
/imgs/gif/gifset_t/tazp_100.gif
/imgs/gif/gifset_t/tazp_2.gif
/imgs/gif/gifset_t/tazp_20.gif
/imgs/gif/gifset_t/tazp_3.gif
/imgs/gif/gifset_t/tazp_30.gif
/imgs/gif/gifset_t/tazp_4.gif
/imgs/gif/gifset_t/tazp_40.gif
/imgs/gif/gifset_t/tazp_5.gif
/imgs/gif/gifset_t/tazp_50.gif
/imgs/gif/gifset_t/tazp_6.gif
/imgs/gif/gifset_t/tazp_7.gif
/imgs/gif/gifset_t/tazp_70.gif
/imgs/gif/gifset_t/tazp_8.gif
/imgs/gif/gifset_t/tazp_80.gif
/imgs/gif/gifset_t/tazp_9.gif
/imgs/gif/gifset_t/tazp_90.gif
/imgs/gif/gifset_t/tazq.gif
/imgs/gif/gifset_t/tazq_1.gif
/imgs/gif/gifset_t/tazq_10.gif
/imgs/gif/gifset_t/tazq_100.gif
/imgs/gif/gifset_t/tazq_2.gif
/imgs/gif/gifset_t/tazq_20.gif
/imgs/gif/gifset_t/tazq_3.gif
/imgs/gif/gifset_t/tazq_30.gif
/imgs/gif/gifset_t/tazq_4.gif
/imgs/gif/gifset_t/tazq_40.gif
/imgs/gif/gifset_t/tazq_5.gif
/imgs/gif/gifset_t/tazq_50.gif
/imgs/gif/gifset_t/tazq_6.gif
/imgs/gif/gifset_t/tazq_7.gif
/imgs/gif/gifset_t/tazq_70.gif
/imgs/gif/gifset_t/tazq_8.gif
/imgs/gif/gifset_t/tazq_80.gif
/imgs/gif/gifset_t/tazq_9.gif
/imgs/gif/gifset_t/tazq_90.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1b.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1b_1.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1b_10.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1b_100.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1b_2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1b_20.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1b_3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1b_30.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1b_4.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1b_40.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1b_5.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1b_50.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1b_6.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1b_7.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1b_70.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1b_8.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1b_80.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1b_9.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1b_90.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1d.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1d_1.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1d_10.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1d_100.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1d_2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1d_20.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1d_3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1d_30.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1d_4.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1d_40.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1d_5.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1d_50.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1d_6.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1d_7.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1d_70.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1d_8.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1d_80.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1d_9.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1d_90.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1p.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1p_1.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1p_10.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1p_100.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1p_2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1p_20.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1p_3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1p_30.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1p_4.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1p_40.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1p_5.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1p_50.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1p_6.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1p_7.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1p_70.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1p_8.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1p_80.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1p_9.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1p_90.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1q.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1q_1.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1q_10.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1q_100.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1q_2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1q_20.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1q_3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1q_30.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1q_4.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1q_40.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1q_5.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1q_50.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1q_6.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1q_7.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1q_70.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1q_8.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1q_80.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1q_9.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b1q_90.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2b.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2b_1.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2b_10.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2b_100.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2b_2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2b_20.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2b_3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2b_30.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2b_4.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2b_40.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2b_5.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2b_50.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2b_6.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2b_7.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2b_70.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2b_8.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2b_80.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2b_9.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2b_90.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2d.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2d_1.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2d_10.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2d_100.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2d_2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2d_20.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2d_3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2d_30.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2d_4.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2d_40.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2d_5.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2d_50.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2d_6.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2d_7.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2d_70.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2d_8.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2d_80.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2d_9.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2d_90.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2p.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2p_1.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2p_10.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2p_100.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2p_2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2p_20.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2p_3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2p_30.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2p_4.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2p_40.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2p_5.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2p_50.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2p_6.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2p_7.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2p_70.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2p_8.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2p_80.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2p_9.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2p_90.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2q.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2q_1.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2q_10.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2q_100.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2q_2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2q_20.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2q_3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2q_30.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2q_4.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2q_40.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2q_5.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2q_50.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2q_6.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2q_7.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2q_70.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2q_8.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2q_80.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2q_9.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b2q_90.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3b.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3b_1.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3b_10.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3b_100.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3b_2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3b_20.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3b_3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3b_30.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3b_4.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3b_40.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3b_5.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3b_50.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3b_6.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3b_7.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3b_70.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3b_8.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3b_80.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3b_9.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3b_90.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3d.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3d_1.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3d_10.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3d_100.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3d_2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3d_20.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3d_3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3d_30.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3d_4.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3d_40.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3d_5.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3d_50.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3d_6.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3d_7.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3d_70.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3d_8.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3d_80.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3d_9.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3d_90.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3p.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3p_1.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3p_10.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3p_100.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3p_2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3p_20.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3p_3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3p_30.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3p_4.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3p_40.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3p_5.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3p_50.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3p_6.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3p_7.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3p_70.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3p_8.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3p_80.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3p_9.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3p_90.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3q.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3q_1.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3q_10.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3q_100.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3q_2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3q_20.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3q_3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3q_30.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3q_4.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3q_40.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3q_5.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3q_50.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3q_6.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3q_7.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3q_70.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3q_8.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3q_80.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3q_9.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_b3q_90.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kick.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickb.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickb_1.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickb_10.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickb_100.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickb_2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickb_20.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickb_3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickb_30.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickb_4.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickb_40.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickb_5.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickb_50.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickb_6.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickb_7.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickb_70.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickb_8.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickb_80.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickb_9.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickb_90.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickd.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickd_1.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickd_10.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickd_100.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickd_2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickd_20.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickd_3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickd_30.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickd_4.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickd_40.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickd_5.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickd_50.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickd_6.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickd_7.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickd_70.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickd_8.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickd_80.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickd_9.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickd_90.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickp.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickp_1.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickp_10.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickp_100.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickp_2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickp_20.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickp_3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickp_30.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickp_4.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickp_40.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickp_5.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickp_50.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickp_6.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickp_7.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickp_70.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickp_8.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickp_80.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickp_9.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickp_90.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickq.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickq_1.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickq_10.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickq_100.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickq_2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickq_20.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickq_3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickq_30.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickq_4.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickq_40.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickq_5.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickq_50.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickq_6.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickq_7.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickq_70.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickq_8.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickq_80.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickq_9.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_kickq_90.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_l.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lb.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lb_1.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lb_10.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lb_100.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lb_2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lb_20.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lb_3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lb_30.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lb_4.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lb_40.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lb_5.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lb_50.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lb_6.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lb_7.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lb_70.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lb_8.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lb_80.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lb_9.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lb_90.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_ld.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_ld_1.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_ld_10.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_ld_100.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_ld_2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_ld_20.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_ld_3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_ld_30.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_ld_4.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_ld_40.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_ld_5.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_ld_50.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_ld_6.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_ld_7.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_ld_70.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_ld_8.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_ld_80.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_ld_9.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_ld_90.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lp.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lp_1.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lp_10.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lp_100.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lp_2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lp_20.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lp_3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lp_30.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lp_4.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lp_40.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lp_5.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lp_50.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lp_6.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lp_7.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lp_70.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lp_8.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lp_80.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lp_9.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lp_90.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lq.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lq_1.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lq_10.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lq_100.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lq_2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lq_20.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lq_3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lq_30.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lq_4.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lq_40.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lq_5.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lq_50.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lq_6.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lq_7.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lq_70.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lq_8.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lq_80.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lq_9.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_lq_90.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2b.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2b_1.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2b_10.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2b_100.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2b_2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2b_20.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2b_3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2b_30.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2b_4.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2b_40.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2b_5.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2b_50.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2b_6.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2b_7.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2b_70.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2b_8.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2b_80.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2b_9.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2b_90.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2d.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2d_1.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2d_10.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2d_100.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2d_2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2d_20.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2d_3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2d_30.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2d_4.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2d_40.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2d_5.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2d_50.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2d_6.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2d_7.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2d_70.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2d_8.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2d_80.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2d_9.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2d_90.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2p.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2p_1.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2p_10.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2p_100.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2p_2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2p_20.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2p_3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2p_30.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2p_4.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2p_40.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2p_5.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2p_50.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2p_6.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2p_7.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2p_70.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2p_8.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2p_80.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2p_9.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2p_90.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2q.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2q_1.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2q_10.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2q_100.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2q_2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2q_20.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2q_3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2q_30.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2q_4.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2q_40.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2q_5.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2q_50.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2q_6.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2q_7.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2q_70.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2q_8.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2q_80.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2q_9.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w2q_90.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3b.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3b_1.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3b_10.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3b_100.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3b_2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3b_20.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3b_3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3b_30.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3b_4.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3b_40.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3b_5.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3b_50.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3b_6.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3b_7.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3b_70.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3b_8.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3b_80.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3b_9.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3b_90.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3d.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3d_1.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3d_10.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3d_100.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3d_2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3d_20.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3d_3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3d_30.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3d_4.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3d_40.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3d_5.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3d_50.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3d_6.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3d_7.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3d_70.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3d_8.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3d_80.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3d_9.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3d_90.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3p.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3p_1.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3p_10.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3p_100.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3p_2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3p_20.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3p_3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3p_30.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3p_4.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3p_40.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3p_5.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3p_50.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3p_6.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3p_7.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3p_70.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3p_8.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3p_80.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3p_9.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3p_90.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3q.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3q_1.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3q_10.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3q_100.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3q_2.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3q_20.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3q_3.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3q_30.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3q_4.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3q_40.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3q_5.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3q_50.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3q_6.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3q_7.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3q_70.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3q_8.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3q_80.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3q_9.gif
/imgs/gif/gifset_trcx/trcx_sxygirl_w3q_90.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4b.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4b_1.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4b_10.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4b_100.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4b_2.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4b_20.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4b_3.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4b_30.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4b_4.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4b_40.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4b_5.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4b_50.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4b_6.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4b_7.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4b_70.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4b_8.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4b_80.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4b_9.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4b_90.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4d.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4d_1.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4d_10.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4d_100.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4d_2.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4d_20.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4d_3.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4d_30.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4d_4.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4d_40.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4d_5.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4d_50.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4d_6.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4d_7.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4d_70.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4d_8.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4d_80.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4d_9.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4d_90.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4p.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4p_1.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4p_10.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4p_100.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4p_2.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4p_20.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4p_3.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4p_30.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4p_4.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4p_40.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4p_5.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4p_50.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4p_6.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4p_7.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4p_70.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4p_8.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4p_80.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4p_9.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4p_90.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4q.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4q_1.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4q_10.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4q_100.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4q_2.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4q_20.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4q_3.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4q_30.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4q_4.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4q_40.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4q_5.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4q_50.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4q_6.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4q_7.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4q_70.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4q_8.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4q_80.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4q_9.gif
/imgs/gif/gifset_trcx/trcx_szygirl_b4q_90.gif
/imgs/gif/gifset_w/trophy.gif
/imgs/gif/gifset_w/trophyb.gif
/imgs/gif/gifset_w/trophyb_1.gif
/imgs/gif/gifset_w/trophyb_10.gif
/imgs/gif/gifset_w/trophyb_100.gif
/imgs/gif/gifset_w/trophyb_2.gif
/imgs/gif/gifset_w/trophyb_20.gif
/imgs/gif/gifset_w/trophyb_3.gif
/imgs/gif/gifset_w/trophyb_30.gif
/imgs/gif/gifset_w/trophyb_4.gif
/imgs/gif/gifset_w/trophyb_40.gif
/imgs/gif/gifset_w/trophyb_5.gif
/imgs/gif/gifset_w/trophyb_50.gif
/imgs/gif/gifset_w/trophyb_6.gif
/imgs/gif/gifset_w/trophyb_7.gif
/imgs/gif/gifset_w/trophyb_70.gif
/imgs/gif/gifset_w/trophyb_8.gif
/imgs/gif/gifset_w/trophyb_80.gif
/imgs/gif/gifset_w/trophyb_9.gif
/imgs/gif/gifset_w/trophyb_90.gif
/imgs/gif/gifset_w/trophyd.gif
/imgs/gif/gifset_w/trophyd_1.gif
/imgs/gif/gifset_w/trophyd_10.gif
/imgs/gif/gifset_w/trophyd_100.gif
/imgs/gif/gifset_w/trophyd_2.gif
/imgs/gif/gifset_w/trophyd_20.gif
/imgs/gif/gifset_w/trophyd_3.gif
/imgs/gif/gifset_w/trophyd_30.gif
/imgs/gif/gifset_w/trophyd_4.gif
/imgs/gif/gifset_w/trophyd_40.gif
/imgs/gif/gifset_w/trophyd_5.gif
/imgs/gif/gifset_w/trophyd_50.gif
/imgs/gif/gifset_w/trophyd_6.gif
/imgs/gif/gifset_w/trophyd_7.gif
/imgs/gif/gifset_w/trophyd_70.gif
/imgs/gif/gifset_w/trophyd_8.gif
/imgs/gif/gifset_w/trophyd_80.gif
/imgs/gif/gifset_w/trophyd_9.gif
/imgs/gif/gifset_w/trophyd_90.gif
/imgs/gif/gifset_w/trophyp.gif
/imgs/gif/gifset_w/trophyp_1.gif
/imgs/gif/gifset_w/trophyp_10.gif
/imgs/gif/gifset_w/trophyp_100.gif
/imgs/gif/gifset_w/trophyp_2.gif
/imgs/gif/gifset_w/trophyp_20.gif
/imgs/gif/gifset_w/trophyp_3.gif
/imgs/gif/gifset_w/trophyp_30.gif
/imgs/gif/gifset_w/trophyp_4.gif
/imgs/gif/gifset_w/trophyp_40.gif
/imgs/gif/gifset_w/trophyp_5.gif
/imgs/gif/gifset_w/trophyp_50.gif
/imgs/gif/gifset_w/trophyp_6.gif
/imgs/gif/gifset_w/trophyp_7.gif
/imgs/gif/gifset_w/trophyp_70.gif
/imgs/gif/gifset_w/trophyp_8.gif
/imgs/gif/gifset_w/trophyp_80.gif
/imgs/gif/gifset_w/trophyp_9.gif
/imgs/gif/gifset_w/trophyp_90.gif
/imgs/gif/gifset_w/trophyq.gif
/imgs/gif/gifset_w/trophyq_1.gif
/imgs/gif/gifset_w/trophyq_10.gif
/imgs/gif/gifset_w/trophyq_100.gif
/imgs/gif/gifset_w/trophyq_2.gif
/imgs/gif/gifset_w/trophyq_20.gif
/imgs/gif/gifset_w/trophyq_3.gif
/imgs/gif/gifset_w/trophyq_30.gif
/imgs/gif/gifset_w/trophyq_4.gif
/imgs/gif/gifset_w/trophyq_40.gif
/imgs/gif/gifset_w/trophyq_5.gif
/imgs/gif/gifset_w/trophyq_50.gif
/imgs/gif/gifset_w/trophyq_6.gif
/imgs/gif/gifset_w/trophyq_7.gif
/imgs/gif/gifset_w/trophyq_70.gif
/imgs/gif/gifset_w/trophyq_8.gif
/imgs/gif/gifset_w/trophyq_80.gif
/imgs/gif/gifset_w/trophyq_9.gif
/imgs/gif/gifset_w/trophyq_90.gif
/imgs/gif/gifset_w/warning.gif
/imgs/gif/gifset_w/warningb.gif
/imgs/gif/gifset_w/warningb_1.gif
/imgs/gif/gifset_w/warningb_10.gif
/imgs/gif/gifset_w/warningb_100.gif
/imgs/gif/gifset_w/warningb_2.gif
/imgs/gif/gifset_w/warningb_20.gif
/imgs/gif/gifset_w/warningb_3.gif
/imgs/gif/gifset_w/warningb_30.gif
/imgs/gif/gifset_w/warningb_4.gif
/imgs/gif/gifset_w/warningb_40.gif
/imgs/gif/gifset_w/warningb_5.gif
/imgs/gif/gifset_w/warningb_50.gif
/imgs/gif/gifset_w/warningb_6.gif
/imgs/gif/gifset_w/warningb_7.gif
/imgs/gif/gifset_w/warningb_70.gif
/imgs/gif/gifset_w/warningb_8.gif
/imgs/gif/gifset_w/warningb_80.gif
/imgs/gif/gifset_w/warningb_9.gif
/imgs/gif/gifset_w/warningb_90.gif
/imgs/gif/gifset_w/warningd.gif
/imgs/gif/gifset_w/warningd_1.gif
/imgs/gif/gifset_w/warningd_10.gif
/imgs/gif/gifset_w/warningd_100.gif
/imgs/gif/gifset_w/warningd_2.gif
/imgs/gif/gifset_w/warningd_20.gif
/imgs/gif/gifset_w/warningd_3.gif
/imgs/gif/gifset_w/warningd_30.gif
/imgs/gif/gifset_w/warningd_4.gif
/imgs/gif/gifset_w/warningd_40.gif
/imgs/gif/gifset_w/warningd_5.gif
/imgs/gif/gifset_w/warningd_50.gif
/imgs/gif/gifset_w/warningd_6.gif
/imgs/gif/gifset_w/warningd_7.gif
/imgs/gif/gifset_w/warningd_70.gif
/imgs/gif/gifset_w/warningd_8.gif
/imgs/gif/gifset_w/warningd_80.gif
/imgs/gif/gifset_w/warningd_9.gif
/imgs/gif/gifset_w/warningd_90.gif
/imgs/gif/gifset_w/warningp.gif
/imgs/gif/gifset_w/warningp_1.gif
/imgs/gif/gifset_w/warningp_10.gif
/imgs/gif/gifset_w/warningp_100.gif
/imgs/gif/gifset_w/warningp_2.gif
/imgs/gif/gifset_w/warningp_20.gif
/imgs/gif/gifset_w/warningp_3.gif
/imgs/gif/gifset_w/warningp_30.gif
/imgs/gif/gifset_w/warningp_4.gif
/imgs/gif/gifset_w/warningp_40.gif
/imgs/gif/gifset_w/warningp_5.gif
/imgs/gif/gifset_w/warningp_50.gif
/imgs/gif/gifset_w/warningp_6.gif
/imgs/gif/gifset_w/warningp_7.gif
/imgs/gif/gifset_w/warningp_70.gif
/imgs/gif/gifset_w/warningp_8.gif
/imgs/gif/gifset_w/warningp_80.gif
/imgs/gif/gifset_w/warningp_9.gif
/imgs/gif/gifset_w/warningp_90.gif
/imgs/gif/gifset_w/warningq.gif
/imgs/gif/gifset_w/warningq_1.gif
/imgs/gif/gifset_w/warningq_10.gif
/imgs/gif/gifset_w/warningq_100.gif
/imgs/gif/gifset_w/warningq_2.gif
/imgs/gif/gifset_w/warningq_20.gif
/imgs/gif/gifset_w/warningq_3.gif
/imgs/gif/gifset_w/warningq_30.gif
/imgs/gif/gifset_w/warningq_4.gif
/imgs/gif/gifset_w/warningq_40.gif
/imgs/gif/gifset_w/warningq_5.gif
/imgs/gif/gifset_w/warningq_50.gif
/imgs/gif/gifset_w/warningq_6.gif
/imgs/gif/gifset_w/warningq_7.gif
/imgs/gif/gifset_w/warningq_70.gif
/imgs/gif/gifset_w/warningq_8.gif
/imgs/gif/gifset_w/warningq_80.gif
/imgs/gif/gifset_w/warningq_9.gif
/imgs/gif/gifset_w/warningq_90.gif
/imgs/gif/gifset_w/welcome.gif
/imgs/gif/gifset_w/welcomeb.gif
/imgs/gif/gifset_w/welcomeb_1.gif
/imgs/gif/gifset_w/welcomeb_10.gif
/imgs/gif/gifset_w/welcomeb_100.gif
/imgs/gif/gifset_w/welcomeb_2.gif
/imgs/gif/gifset_w/welcomeb_20.gif
/imgs/gif/gifset_w/welcomeb_3.gif
/imgs/gif/gifset_w/welcomeb_30.gif
/imgs/gif/gifset_w/welcomeb_4.gif
/imgs/gif/gifset_w/welcomeb_40.gif
/imgs/gif/gifset_w/welcomeb_5.gif
/imgs/gif/gifset_w/welcomeb_50.gif
/imgs/gif/gifset_w/welcomeb_6.gif
/imgs/gif/gifset_w/welcomeb_7.gif
/imgs/gif/gifset_w/welcomeb_70.gif
/imgs/gif/gifset_w/welcomeb_8.gif
/imgs/gif/gifset_w/welcomeb_80.gif
/imgs/gif/gifset_w/welcomeb_9.gif
/imgs/gif/gifset_w/welcomeb_90.gif
/imgs/gif/gifset_w/welcomed.gif
/imgs/gif/gifset_w/welcomed_1.gif
/imgs/gif/gifset_w/welcomed_10.gif
/imgs/gif/gifset_w/welcomed_100.gif
/imgs/gif/gifset_w/welcomed_2.gif
/imgs/gif/gifset_w/welcomed_20.gif
/imgs/gif/gifset_w/welcomed_3.gif
/imgs/gif/gifset_w/welcomed_30.gif
/imgs/gif/gifset_w/welcomed_4.gif
/imgs/gif/gifset_w/welcomed_40.gif
/imgs/gif/gifset_w/welcomed_5.gif
/imgs/gif/gifset_w/welcomed_50.gif
/imgs/gif/gifset_w/welcomed_6.gif
/imgs/gif/gifset_w/welcomed_7.gif
/imgs/gif/gifset_w/welcomed_70.gif
/imgs/gif/gifset_w/welcomed_8.gif
/imgs/gif/gifset_w/welcomed_80.gif
/imgs/gif/gifset_w/welcomed_9.gif
/imgs/gif/gifset_w/welcomed_90.gif
/imgs/gif/gifset_w/welcomep.gif
/imgs/gif/gifset_w/welcomep_1.gif
/imgs/gif/gifset_w/welcomep_10.gif
/imgs/gif/gifset_w/welcomep_100.gif
/imgs/gif/gifset_w/welcomep_2.gif
/imgs/gif/gifset_w/welcomep_20.gif
/imgs/gif/gifset_w/welcomep_3.gif
/imgs/gif/gifset_w/welcomep_30.gif
/imgs/gif/gifset_w/welcomep_4.gif
/imgs/gif/gifset_w/welcomep_40.gif
/imgs/gif/gifset_w/welcomep_5.gif
/imgs/gif/gifset_w/welcomep_50.gif
/imgs/gif/gifset_w/welcomep_6.gif
/imgs/gif/gifset_w/welcomep_7.gif
/imgs/gif/gifset_w/welcomep_70.gif
/imgs/gif/gifset_w/welcomep_8.gif
/imgs/gif/gifset_w/welcomep_80.gif
/imgs/gif/gifset_w/welcomep_9.gif
/imgs/gif/gifset_w/welcomep_90.gif
/imgs/gif/gifset_w/welcomeq.gif
/imgs/gif/gifset_w/welcomeq_1.gif
/imgs/gif/gifset_w/welcomeq_10.gif
/imgs/gif/gifset_w/welcomeq_100.gif
/imgs/gif/gifset_w/welcomeq_2.gif
/imgs/gif/gifset_w/welcomeq_20.gif
/imgs/gif/gifset_w/welcomeq_3.gif
/imgs/gif/gifset_w/welcomeq_30.gif
/imgs/gif/gifset_w/welcomeq_4.gif
/imgs/gif/gifset_w/welcomeq_40.gif
/imgs/gif/gifset_w/welcomeq_5.gif
/imgs/gif/gifset_w/welcomeq_50.gif
/imgs/gif/gifset_w/welcomeq_6.gif
/imgs/gif/gifset_w/welcomeq_7.gif
/imgs/gif/gifset_w/welcomeq_70.gif
/imgs/gif/gifset_w/welcomeq_8.gif
/imgs/gif/gifset_w/welcomeq_80.gif
/imgs/gif/gifset_w/welcomeq_9.gif
/imgs/gif/gifset_w/welcomeq_90.gif
/imgs/gif/gifset_w/worksign.gif
/imgs/gif/gifset_w/worksignb.gif
/imgs/gif/gifset_w/worksignb_1.gif
/imgs/gif/gifset_w/worksignb_10.gif
/imgs/gif/gifset_w/worksignb_100.gif
/imgs/gif/gifset_w/worksignb_2.gif
/imgs/gif/gifset_w/worksignb_20.gif
/imgs/gif/gifset_w/worksignb_3.gif
/imgs/gif/gifset_w/worksignb_30.gif
/imgs/gif/gifset_w/worksignb_4.gif
/imgs/gif/gifset_w/worksignb_40.gif
/imgs/gif/gifset_w/worksignb_5.gif
/imgs/gif/gifset_w/worksignb_50.gif
/imgs/gif/gifset_w/worksignb_6.gif
/imgs/gif/gifset_w/worksignb_7.gif
/imgs/gif/gifset_w/worksignb_70.gif
/imgs/gif/gifset_w/worksignb_8.gif
/imgs/gif/gifset_w/worksignb_80.gif
/imgs/gif/gifset_w/worksignb_9.gif
/imgs/gif/gifset_w/worksignb_90.gif
/imgs/gif/gifset_w/worksignd.gif
/imgs/gif/gifset_w/worksignd_1.gif
/imgs/gif/gifset_w/worksignd_10.gif
/imgs/gif/gifset_w/worksignd_100.gif
/imgs/gif/gifset_w/worksignd_2.gif
/imgs/gif/gifset_w/worksignd_20.gif
/imgs/gif/gifset_w/worksignd_3.gif
/imgs/gif/gifset_w/worksignd_30.gif
/imgs/gif/gifset_w/worksignd_4.gif
/imgs/gif/gifset_w/worksignd_40.gif
/imgs/gif/gifset_w/worksignd_5.gif
/imgs/gif/gifset_w/worksignd_50.gif
/imgs/gif/gifset_w/worksignd_6.gif
/imgs/gif/gifset_w/worksignd_7.gif
/imgs/gif/gifset_w/worksignd_70.gif
/imgs/gif/gifset_w/worksignd_8.gif
/imgs/gif/gifset_w/worksignd_80.gif
/imgs/gif/gifset_w/worksignd_9.gif
/imgs/gif/gifset_w/worksignd_90.gif
/imgs/gif/gifset_w/worksignp.gif
/imgs/gif/gifset_w/worksignp_1.gif
/imgs/gif/gifset_w/worksignp_10.gif
/imgs/gif/gifset_w/worksignp_100.gif
/imgs/gif/gifset_w/worksignp_2.gif
/imgs/gif/gifset_w/worksignp_20.gif
/imgs/gif/gifset_w/worksignp_3.gif
/imgs/gif/gifset_w/worksignp_30.gif
/imgs/gif/gifset_w/worksignp_4.gif
/imgs/gif/gifset_w/worksignp_40.gif
/imgs/gif/gifset_w/worksignp_5.gif
/imgs/gif/gifset_w/worksignp_50.gif
/imgs/gif/gifset_w/worksignp_6.gif
/imgs/gif/gifset_w/worksignp_7.gif
/imgs/gif/gifset_w/worksignp_70.gif
/imgs/gif/gifset_w/worksignp_8.gif
/imgs/gif/gifset_w/worksignp_80.gif
/imgs/gif/gifset_w/worksignp_9.gif
/imgs/gif/gifset_w/worksignp_90.gif
/imgs/gif/gifset_w/worksignq.gif
/imgs/gif/gifset_w/worksignq_1.gif
/imgs/gif/gifset_w/worksignq_10.gif
/imgs/gif/gifset_w/worksignq_100.gif
/imgs/gif/gifset_w/worksignq_2.gif
/imgs/gif/gifset_w/worksignq_20.gif
/imgs/gif/gifset_w/worksignq_3.gif
/imgs/gif/gifset_w/worksignq_30.gif
/imgs/gif/gifset_w/worksignq_4.gif
/imgs/gif/gifset_w/worksignq_40.gif
/imgs/gif/gifset_w/worksignq_5.gif
/imgs/gif/gifset_w/worksignq_50.gif
/imgs/gif/gifset_w/worksignq_6.gif
/imgs/gif/gifset_w/worksignq_7.gif
/imgs/gif/gifset_w/worksignq_70.gif
/imgs/gif/gifset_w/worksignq_8.gif
/imgs/gif/gifset_w/worksignq_80.gif
/imgs/gif/gifset_w/worksignq_9.gif
/imgs/gif/gifset_w/worksignq_90.gif
/imgs/gif/giphy_dollars/giph_weight.gif
/imgs/gif/giphy_dollars/giphy._hands2gif.gif
/imgs/gif/giphy_dollars/giphy.gif
/imgs/gif/giphy_dollars/giphy001.gif
/imgs/gif/giphy_dollars/giphy002.gif
/imgs/gif/giphy_dollars/giphy003.gif
/imgs/gif/giphy_dollars/giphy006.gif
/imgs/gif/giphy_dollars/giphy_005.gif
/imgs/gif/giphy_dollars/giphy_armodillo.gif
/imgs/gif/giphy_dollars/giphy_arrors.gif
/imgs/gif/giphy_dollars/giphy_bitcoikn.gif
/imgs/gif/giphy_dollars/giphy_bounce.gif
/imgs/gif/giphy_dollars/giphy_circl30.gif
/imgs/gif/giphy_dollars/giphy_compassion.gif
/imgs/gif/giphy_dollars/giphy_dolla.gif
/imgs/gif/giphy_dollars/giphy_dollar.gif
/imgs/gif/giphy_dollars/giphy_dollar11.gif
/imgs/gif/giphy_dollars/giphy_dolrpool.gif
/imgs/gif/giphy_dollars/giphy_droll_wimsy.gif
/imgs/gif/giphy_dollars/giphy_expression.gif
/imgs/gif/giphy_dollars/giphy_getalawyer_horns.gif
/imgs/gif/giphy_dollars/giphy_go20.gif
/imgs/gif/giphy_dollars/giphy_go3.gif
/imgs/gif/giphy_dollars/giphy_gold.gif
/imgs/gif/giphy_dollars/giphy_gov.gif
/imgs/gif/giphy_dollars/giphy_graph2.gif
/imgs/gif/giphy_dollars/giphy_hallway.gif
/imgs/gif/giphy_dollars/giphy_hands.gif
/imgs/gif/giphy_dollars/giphy_hands2.gif
/imgs/gif/giphy_dollars/giphy_hugs.gif
/imgs/gif/giphy_dollars/giphy_kalidis.gif
/imgs/gif/giphy_dollars/giphy_kinetic.gif
/imgs/gif/giphy_dollars/giphy_konabus.gif
/imgs/gif/giphy_dollars/giphy_konabus_stickr.gif
/imgs/gif/giphy_dollars/giphy_kt30.gif
/imgs/gif/giphy_dollars/giphy_law.gif
/imgs/gif/giphy_dollars/giphy_law01.gif
/imgs/gif/giphy_dollars/giphy_law02.gif
/imgs/gif/giphy_dollars/giphy_letter.gif
/imgs/gif/giphy_dollars/giphy_littletipper.gif
/imgs/gif/giphy_dollars/giphy_makechange.gif
/imgs/gif/giphy_dollars/giphy_moneyclap.gif
/imgs/gif/giphy_dollars/giphy_moneyeye.gif
/imgs/gif/giphy_dollars/giphy_moneymachine.gif
/imgs/gif/giphy_dollars/giphy_moneymonkey.gif
/imgs/gif/giphy_dollars/giphy_moneyspiral.gif
/imgs/gif/giphy_dollars/giphy_monydog.gif
/imgs/gif/giphy_dollars/giphy_mouse/giph_phone04y.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy._nophonegif.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy.gif_construction06.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_constrion20.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_construction01.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_construction02.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_construction03.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_construction04.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_construction08.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_construction09.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_construction11.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_construction12.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_construction15.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_construction21.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_construction25.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_construction_10.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_construction_dogs.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_falling01.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_falling02.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_falling03.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_falling04.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_falling06.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_falling07.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_falling08.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_falling09.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_filecabinat.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_focus10.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_mouse01.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_mouse02.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_mouse03.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_mouse06.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_mouse_konabus.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_phone05.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_phone06.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_snap.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphyfu.gif
/imgs/gif/giphy_dollars/giphy_pano.gif
/imgs/gif/giphy_dollars/giphy_pencil.gif
/imgs/gif/giphy_dollars/giphy_phonepage.gif
/imgs/gif/giphy_dollars/giphy_presentermedia.gif
/imgs/gif/giphy_dollars/giphy_presentermedia2.gif
/imgs/gif/giphy_dollars/giphy_ropeup.gif
/imgs/gif/giphy_dollars/giphy_scrollstats.gif
/imgs/gif/giphy_dollars/giphy_trsansform.gif
/imgs/gif/giphy_dollars/giphy_typer.gif
/imgs/gif/giphy_dollars/giphy_verified.gif
/imgs/gif/giphy_dollars/giphy_water.gif
/imgs/gif/giphy_dollars/giphy_weaigh5.gif
/imgs/gif/giphy_dollars/giphy_weight3.gif
/imgs/gif/giphy_dollars/giphyarrowfire.gif
/imgs/gif/giphy_dollars/giphybuslt.gif
/imgs/gif/giphy_dollars/giphyfocuseyes.gif
/imgs/gif/giphy_dollars/giphygowave'.gif
/imgs/gif/giphy_dollars/giphygraph.gif
/imgs/gif/giphy_dollars/giphymoney_smerf.gif
/imgs/gif/giphy_dollars/giphytwist.gif
/imgs/gif/giphy_dollars/giphyvortex.gif
/imgs/gif/giphy_dollars/giphyweaight2.gif
/imgs/gif/giphy_us_news_focus/5kYpl7hIHEKwNOhjgU1_gV84APypkdg-yYH09H0fkS0.gif
/imgs/gif/giphy_us_news_focus/gip_falls3hy.gif
/imgs/gif/giphy_us_news_focus/giph_applebitesy.gif
/imgs/gif/giphy_us_news_focus/giph_armymovie_dancing.gif
/imgs/gif/giphy_us_news_focus/giph_auroa1y.gif
/imgs/gif/giphy_us_news_focus/giph_cloudlipsy.gif
/imgs/gif/giphy_us_news_focus/giph_crazy_chipndale.gif
/imgs/gif/giphy_us_news_focus/giph_cuberolly.gif
/imgs/gif/giphy_us_news_focus/giph_droopywalkery.gif
/imgs/gif/giphy_us_news_focus/giph_ducks_hatchety.gif
/imgs/gif/giphy_us_news_focus/giph_fallsy.gif
/imgs/gif/giphy_us_news_focus/giph_fradykaty.gif
/imgs/gif/giphy_us_news_focus/giph_hand6y.gif
/imgs/gif/giphy_us_news_focus/giph_handsignxy.gif
/imgs/gif/giphy_us_news_focus/giph_homer_skippingy.gif
/imgs/gif/giphy_us_news_focus/giph_kiti_dancey.gif
/imgs/gif/giphy_us_news_focus/giph_labthinker_startle.gif
/imgs/gif/giphy_us_news_focus/giph_mouthorbsy.gif
/imgs/gif/giphy_us_news_focus/giph_mrrogers_fingersy.gif
/imgs/gif/giphy_us_news_focus/giph_officer_byrdbelly.gif
/imgs/gif/giphy_us_news_focus/giph_pastryroad_food_strollersy.gif
/imgs/gif/giphy_us_news_focus/giph_portalguyy.gif
/imgs/gif/giphy_us_news_focus/giph_roullett2y.gif
/imgs/gif/giphy_us_news_focus/giph_tinkerbell_sity.gif
/imgs/gif/giphy_us_news_focus/giph_tinkerbell_wavey.gif
/imgs/gif/giphy_us_news_focus/giph_yoga_gloey.gif
/imgs/gif/giphy_us_news_focus/giphroullettey.gif
/imgs/gif/giphy_us_news_focus/giphy._andy_pilllession.gif
/imgs/gif/giphy_us_news_focus/giphy._astricgif.gif
/imgs/gif/giphy_us_news_focus/giphy._bigcombgif.gif
/imgs/gif/giphy_us_news_focus/giphy._bugs_blueprintgif.gif
/imgs/gif/giphy_us_news_focus/giphy._bugs_survalgif.gif
/imgs/gif/giphy_us_news_focus/giphy._byrdpucker_newsgif.gif
/imgs/gif/giphy_us_news_focus/giphy._crazy_belegosygif.gif
/imgs/gif/giphy_us_news_focus/giphy._hallwaygif.gif
/imgs/gif/giphy_us_news_focus/giphy._handripplesgif.gif
/imgs/gif/giphy_us_news_focus/giphy._headnhandsgif.gif
/imgs/gif/giphy_us_news_focus/giphy._horse_dancygif.gif
/imgs/gif/giphy_us_news_focus/giphy._horsegirl_toongif.gif
/imgs/gif/giphy_us_news_focus/giphy._jak1gif.gif
/imgs/gif/giphy_us_news_focus/giphy._jumpropegif.gif
/imgs/gif/giphy_us_news_focus/giphy._kitihahagif.gif
/imgs/gif/giphy_us_news_focus/giphy._musicgif.gif
/imgs/gif/giphy_us_news_focus/giphy._oldknobegif.gif
/imgs/gif/giphy_us_news_focus/giphy._orbcube2gif.gif
/imgs/gif/giphy_us_news_focus/giphy._orbsgif.gif
/imgs/gif/giphy_us_news_focus/giphy._ponygirl_runninggif.gif
/imgs/gif/giphy_us_news_focus/giphy._sniffergif.gif
/imgs/gif/giphy_us_news_focus/giphy._timefacegif.gif
/imgs/gif/giphy_us_news_focus/giphy._zoom_creepygif.gif
/imgs/gif/giphy_us_news_focus/giphy._zoom_microgif.gif
/imgs/gif/giphy_us_news_focus/giphy.gif
/imgs/gif/giphy_us_news_focus/giphy.gif_duckbottom.gif
/imgs/gif/giphy_us_news_focus/giphy_321run.gif
/imgs/gif/giphy_us_news_focus/giphy_al_ankovick_handflail.gif
/imgs/gif/giphy_us_news_focus/giphy_alien_bio2.gif
/imgs/gif/giphy_us_news_focus/giphy_alien_dancer.gif
/imgs/gif/giphy_us_news_focus/giphy_alien_handflal.gif
/imgs/gif/giphy_us_news_focus/giphy_alien_heads.gif
/imgs/gif/giphy_us_news_focus/giphy_alien_pause.gif
/imgs/gif/giphy_us_news_focus/giphy_android_breath.gif
/imgs/gif/giphy_us_news_focus/giphy_arm_n_hand.gif
/imgs/gif/giphy_us_news_focus/giphy_army_dancehands.gif
/imgs/gif/giphy_us_news_focus/giphy_armydance_rusia.gif
/imgs/gif/giphy_us_news_focus/giphy_bananahat.gif
/imgs/gif/giphy_us_news_focus/giphy_bettyboop_accounting.gif
/imgs/gif/giphy_us_news_focus/giphy_bigjoger.gif
/imgs/gif/giphy_us_news_focus/giphy_bird_jogger.gif
/imgs/gif/giphy_us_news_focus/giphy_birdgirl_vinage.gif
/imgs/gif/giphy_us_news_focus/giphy_blocks.gif
/imgs/gif/giphy_us_news_focus/giphy_bluecircle.gif
/imgs/gif/giphy_us_news_focus/giphy_bugs_mirror.gif
/imgs/gif/giphy_us_news_focus/giphy_buzznduck.gif
/imgs/gif/giphy_us_news_focus/giphy_byrdpucker_cowgirl_yodkle.gif
/imgs/gif/giphy_us_news_focus/giphy_calwheel.gif
/imgs/gif/giphy_us_news_focus/giphy_carterwalk.gif
/imgs/gif/giphy_us_news_focus/giphy_catglasses.gif
/imgs/gif/giphy_us_news_focus/giphy_chain.gif
/imgs/gif/giphy_us_news_focus/giphy_chap2act.gif
/imgs/gif/giphy_us_news_focus/giphy_charleybrown_depressesd.gif
/imgs/gif/giphy_us_news_focus/giphy_circlecircle.gif
/imgs/gif/giphy_us_news_focus/giphy_clouds.gif
/imgs/gif/giphy_us_news_focus/giphy_clubbing.gif
/imgs/gif/giphy_us_news_focus/giphy_connect.gif
/imgs/gif/giphy_us_news_focus/giphy_cowgirl_hat.gif
/imgs/gif/giphy_us_news_focus/giphy_cowgirl_hips.gif
/imgs/gif/giphy_us_news_focus/giphy_crazy_flowergirl.gif
/imgs/gif/giphy_us_news_focus/giphy_crazy_manson.gif
/imgs/gif/giphy_us_news_focus/giphy_crazy_simson1.gif
/imgs/gif/giphy_us_news_focus/giphy_crazycats.gif
/imgs/gif/giphy_us_news_focus/giphy_crazydanc1.gif
/imgs/gif/giphy_us_news_focus/giphy_crazydanse2.gif
/imgs/gif/giphy_us_news_focus/giphy_crazyeyes.gif
/imgs/gif/giphy_us_news_focus/giphy_crazyguy2.gif
/imgs/gif/giphy_us_news_focus/giphy_crazyhead3.gif
/imgs/gif/giphy_us_news_focus/giphy_curealla_doorflash.gif
/imgs/gif/giphy_us_news_focus/giphy_cute_ponygirl.gif
/imgs/gif/giphy_us_news_focus/giphy_cute_ponytoon.gif
/imgs/gif/giphy_us_news_focus/giphy_cutekiti3.gif
/imgs/gif/giphy_us_news_focus/giphy_cutekity.gif
/imgs/gif/giphy_us_news_focus/giphy_cycklebars.gif
/imgs/gif/giphy_us_news_focus/giphy_cycle2.gif
/imgs/gif/giphy_us_news_focus/giphy_dance_pinocio.gif
/imgs/gif/giphy_us_news_focus/giphy_dancerbears.gif
/imgs/gif/giphy_us_news_focus/giphy_daneworm2.gif
/imgs/gif/giphy_us_news_focus/giphy_derbys.gif
/imgs/gif/giphy_us_news_focus/giphy_dogdron.gif
/imgs/gif/giphy_us_news_focus/giphy_dresswalking.gif
/imgs/gif/giphy_us_news_focus/giphy_drummerboy.gif
/imgs/gif/giphy_us_news_focus/giphy_duck_hotpic.gif
/imgs/gif/giphy_us_news_focus/giphy_duck_refusal.gif
/imgs/gif/giphy_us_news_focus/giphy_duckdance.gif
/imgs/gif/giphy_us_news_focus/giphy_duckdance_1.gif
/imgs/gif/giphy_us_news_focus/giphy_duckwalking.gif
/imgs/gif/giphy_us_news_focus/giphy_dwaf_.gif
/imgs/gif/giphy_us_news_focus/giphy_eyes_cat.gif
/imgs/gif/giphy_us_news_focus/giphy_faint.gif
/imgs/gif/giphy_us_news_focus/giphy_falls2.gif
/imgs/gif/giphy_us_news_focus/giphy_fasttalker.gif
/imgs/gif/giphy_us_news_focus/giphy_feet_aquarium.gif
/imgs/gif/giphy_us_news_focus/giphy_fileburn.gif
/imgs/gif/giphy_us_news_focus/giphy_floatorbe_n_alien.gif
/imgs/gif/giphy_us_news_focus/giphy_focus_pendulum.gif
/imgs/gif/giphy_us_news_focus/giphy_funnwalker.gif
/imgs/gif/giphy_us_news_focus/giphy_gear1.gif
/imgs/gif/giphy_us_news_focus/giphy_goathead.gif
/imgs/gif/giphy_us_news_focus/giphy_goflow.gif
/imgs/gif/giphy_us_news_focus/giphy_gonoard_water.gif
/imgs/gif/giphy_us_news_focus/giphy_handeyes.gif
/imgs/gif/giphy_us_news_focus/giphy_handshadows.gif
/imgs/gif/giphy_us_news_focus/giphy_head3.gif
/imgs/gif/giphy_us_news_focus/giphy_headbank.gif
/imgs/gif/giphy_us_news_focus/giphy_headinhead.gif
/imgs/gif/giphy_us_news_focus/giphy_holloween_waited2long.gif
/imgs/gif/giphy_us_news_focus/giphy_horse_champ.gif
/imgs/gif/giphy_us_news_focus/giphy_horse_circle.gif
/imgs/gif/giphy_us_news_focus/giphy_horse_connelly.gif
/imgs/gif/giphy_us_news_focus/giphy_horseguy.gif
/imgs/gif/giphy_us_news_focus/giphy_horseguy_dancer.gif
/imgs/gif/giphy_us_news_focus/giphy_horseguy_greekdance.gif
/imgs/gif/giphy_us_news_focus/giphy_horsehead2head.gif
/imgs/gif/giphy_us_news_focus/giphy_hotdogs_woof.gif
/imgs/gif/giphy_us_news_focus/giphy_hummingbird.gif
/imgs/gif/giphy_us_news_focus/giphy_icecreamman.gif
/imgs/gif/giphy_us_news_focus/giphy_jkwiitree.gif
/imgs/gif/giphy_us_news_focus/giphy_jtf30_sinkhole.gif
/imgs/gif/giphy_us_news_focus/giphy_jumproap.gif
/imgs/gif/giphy_us_news_focus/giphy_kids_teatertater.gif
/imgs/gif/giphy_us_news_focus/giphy_kiti_piano1.gif
/imgs/gif/giphy_us_news_focus/giphy_kitisocks.gif
/imgs/gif/giphy_us_news_focus/giphy_klatu_visor.gif
/imgs/gif/giphy_us_news_focus/giphy_ko_air_gituar.gif
/imgs/gif/giphy_us_news_focus/giphy_konabus_bigroll.gif
/imgs/gif/giphy_us_news_focus/giphy_kt_closereflex.gif
/imgs/gif/giphy_us_news_focus/giphy_kt_dance.gif
/imgs/gif/giphy_us_news_focus/giphy_kt_warmup.gif
/imgs/gif/giphy_us_news_focus/giphy_kt_wip.gif
/imgs/gif/giphy_us_news_focus/giphy_lab_thinker.gif
/imgs/gif/giphy_us_news_focus/giphy_labthinker_gotit.gif
/imgs/gif/giphy_us_news_focus/giphy_labthinker_happydance.gif
/imgs/gif/giphy_us_news_focus/giphy_labthinker_nod.gif
/imgs/gif/giphy_us_news_focus/giphy_labthinker_poof.gif
/imgs/gif/giphy_us_news_focus/giphy_labthinker_v.gif
/imgs/gif/giphy_us_news_focus/giphy_lawguy_crazy.gif
/imgs/gif/giphy_us_news_focus/giphy_lawguy_doublecrazy.gif
/imgs/gif/giphy_us_news_focus/giphy_lawguy_doublefinders.gif
/imgs/gif/giphy_us_news_focus/giphy_lawguy_singlefinger.gif
/imgs/gif/giphy_us_news_focus/giphy_loopdeloop.gif
/imgs/gif/giphy_us_news_focus/giphy_lovegyro.gif
/imgs/gif/giphy_us_news_focus/giphy_magicdress1.gif
/imgs/gif/giphy_us_news_focus/giphy_magicdress_1.gif
/imgs/gif/giphy_us_news_focus/giphy_magicdress_2.gif
/imgs/gif/giphy_us_news_focus/giphy_magicdress_carage.gif
/imgs/gif/giphy_us_news_focus/giphy_magicfingers.gif
/imgs/gif/giphy_us_news_focus/giphy_magicgeometry.gif
/imgs/gif/giphy_us_news_focus/giphy_mcclown.gif
/imgs/gif/giphy_us_news_focus/giphy_mickey_boatwistle.gif
/imgs/gif/giphy_us_news_focus/giphy_mickey_devildance.gif
/imgs/gif/giphy_us_news_focus/giphy_mickey_magic.gif
/imgs/gif/giphy_us_news_focus/giphy_mickeymagic_hands1.gif
/imgs/gif/giphy_us_news_focus/giphy_mickeymagic_hands2.gif
/imgs/gif/giphy_us_news_focus/giphy_mickeypiano2.gif
/imgs/gif/giphy_us_news_focus/giphy_mickeypiano_32.gif
/imgs/gif/giphy_us_news_focus/giphy_mickymagic_hat1.gif
/imgs/gif/giphy_us_news_focus/giphy_mickymagic_haton.gif
/imgs/gif/giphy_us_news_focus/giphy_mikey_piano.gif
/imgs/gif/giphy_us_news_focus/giphy_miky_magic_stars.gif
/imgs/gif/giphy_us_news_focus/giphy_monkeytrap_release.gif
/imgs/gif/giphy_us_news_focus/giphy_mousedance_1.gif
/imgs/gif/giphy_us_news_focus/giphy_mousedance_2.gif
/imgs/gif/giphy_us_news_focus/giphy_mouth_wavy.gif
/imgs/gif/giphy_us_news_focus/giphy_nosign.gif
/imgs/gif/giphy_us_news_focus/giphy_oragatang_hairblower.gif
/imgs/gif/giphy_us_news_focus/giphy_orbs_n_arcs.gif
/imgs/gif/giphy_us_news_focus/giphy_ozcouple.gif
/imgs/gif/giphy_us_news_focus/giphy_peterpan_closecall.gif
/imgs/gif/giphy_us_news_focus/giphy_piano_mouses.gif
/imgs/gif/giphy_us_news_focus/giphy_pills.gif
/imgs/gif/giphy_us_news_focus/giphy_pinocia_danc2.gif
/imgs/gif/giphy_us_news_focus/giphy_pinup_barbq.gif
/imgs/gif/giphy_us_news_focus/giphy_ponyride.gif
/imgs/gif/giphy_us_news_focus/giphy_potion_head.gif
/imgs/gif/giphy_us_news_focus/giphy_potterywheel.gif
/imgs/gif/giphy_us_news_focus/giphy_powerwoamn.gif
/imgs/gif/giphy_us_news_focus/giphy_pperms_stars_stripes.gif
/imgs/gif/giphy_us_news_focus/giphy_ripples.gif
/imgs/gif/giphy_us_news_focus/giphy_simpsons_takemeaway.gif
/imgs/gif/giphy_us_news_focus/giphy_sitter.gif
/imgs/gif/giphy_us_news_focus/giphy_sitter_pondeyes.gif
/imgs/gif/giphy_us_news_focus/giphy_sloop.gif
/imgs/gif/giphy_us_news_focus/giphy_slots.gif
/imgs/gif/giphy_us_news_focus/giphy_slowwalker.gif
/imgs/gif/giphy_us_news_focus/giphy_soupstorm.gif
/imgs/gif/giphy_us_news_focus/giphy_spion_walker.gif
/imgs/gif/giphy_us_news_focus/giphy_spiral.gif
/imgs/gif/giphy_us_news_focus/giphy_spiralss.gif
/imgs/gif/giphy_us_news_focus/giphy_sprialss.gif
/imgs/gif/giphy_us_news_focus/giphy_starwar_evilhood.gif
/imgs/gif/giphy_us_news_focus/giphy_sumi_gospinner.gif
/imgs/gif/giphy_us_news_focus/giphy_sumo_bodyhead.gif
/imgs/gif/giphy_us_news_focus/giphy_swinggirls.gif
/imgs/gif/giphy_us_news_focus/giphy_tetertater_gus2.gif
/imgs/gif/giphy_us_news_focus/giphy_tetertater_spiners.gif
/imgs/gif/giphy_us_news_focus/giphy_time_bugs.gif
/imgs/gif/giphy_us_news_focus/giphy_time_clockhands.gif
/imgs/gif/giphy_us_news_focus/giphy_timeguy2.gif
/imgs/gif/giphy_us_news_focus/giphy_tinkerbell_.gif
/imgs/gif/giphy_us_news_focus/giphy_tinkerbell_.kickgif.gif
/imgs/gif/giphy_us_news_focus/giphy_tinkerbell_2.gif
/imgs/gif/giphy_us_news_focus/giphy_tinkerbell_4.gif
/imgs/gif/giphy_us_news_focus/giphy_tinkerbell_crazy.gif
/imgs/gif/giphy_us_news_focus/giphy_tinkerbell_mad.gif
/imgs/gif/giphy_us_news_focus/giphy_tinkerbell_mapout.gif
/imgs/gif/giphy_us_news_focus/giphy_tinkerbell_riverdance.gif
/imgs/gif/giphy_us_news_focus/giphy_tinkerbell_starstreamers.gif
/imgs/gif/giphy_us_news_focus/giphy_tinkerbell_surprise.gif
/imgs/gif/giphy_us_news_focus/giphy_tinkerbell_thimble.gif
/imgs/gif/giphy_us_news_focus/giphy_tinkerbell_turnn.gif
/imgs/gif/giphy_us_news_focus/giphy_tinkerbell_wall.gif
/imgs/gif/giphy_us_news_focus/giphy_tinkerbell_waterfall.gif
/imgs/gif/giphy_us_news_focus/giphy_tinkerbell_woops.gif
/imgs/gif/giphy_us_news_focus/giphy_tinrtbell_turm.gif
/imgs/gif/giphy_us_news_focus/giphy_toiletpaper.gif
/imgs/gif/giphy_us_news_focus/giphy_toothout.gif
/imgs/gif/giphy_us_news_focus/giphy_train_justintime.gif
/imgs/gif/giphy_us_news_focus/giphy_trainview.gif
/imgs/gif/giphy_us_news_focus/giphy_trcx_horsewip.gif
/imgs/gif/giphy_us_news_focus/giphy_tvstatic_drips.gif
/imgs/gif/giphy_us_news_focus/giphy_uphill.gif
/imgs/gif/giphy_us_news_focus/giphy_us_chatter.gif
# /imgs/gif/giphy_view30.gif
/imgs/gif/iperms/giphy_army_cleanfun.gif
/imgs/gif/iperms/giphy_army_kiti.gif
/imgs/gif/iperms/giphy_army_marksync.gif
/imgs/gif/iperms/giphy_army_pushups_nohands.gif
/imgs/gif/iperms/giphy_army_seal_sparkle.gif
/imgs/gif/iperms/giphy_army_shake_salure.gif
/imgs/gif/iperms/giphy_army_tankroll.gif
/imgs/gif/iperms/giphy_armydance1.gif
/imgs/gif/iperms/giphy_armymarchn.gif
/imgs/gif/iperms/giphy_armytoon_late.gif
/imgs/gif/iperms/giphy_armywave.gif
/imgs/gif/iperms/giphy_armywave_barrel.gif
/imgs/gif/iperms/giphy_iperms.gif
/imgs/gif/iperms/giphy_iperms_bell.gif
/imgs/gif/iperms/giphy_iperms_strips.gif
/imgs/gif/kali/adfaf.gif
/imgs/gif/kali/kali16.gif
/imgs/gif/kali/kali2.gif
/imgs/gif/kali/kali25.gif
/imgs/gif/kali/kali3.gif
/imgs/gif/kali/kali4.gif
/imgs/gif/kali/kali5.gif
/imgs/gif/kali/kali8].gif
/imgs/gif/kali/kalid1.gif
/imgs/gif/kali/maskflash.gif
/imgs/gif/kali/staic20.gif
/imgs/gif/kali/static1.gif
/imgs/gif/kali/static3.gif
/imgs/gif/kali/static6.gif
/imgs/gif/kitiworks/giphy._kitiworks_read.gif
/imgs/gif/kitiworks/giphy_kiti_ipadfish.gif
/imgs/gif/kitiworks/giphy_kiti_purfect.gif
/imgs/gif/kitiworks/giphy_kitimail.gif
/imgs/gif/kitiworks/giphy_kitionline.gif
/imgs/gif/kitiworks/giphy_kitirunning.gif
/imgs/gif/kitiworks/giphy_kitiwork_bounce.gif
/imgs/gif/kitiworks/giphy_kitiworks_trail.gif
/imgs/gif/kitiworks/giphy_kitiwrites.gif
/imgs/gif/kitiworks/giphy_kocats.gif
/imgs/gif/kitiworks/giphy_news_kitiworks.gif
/imgs/gif/konabus/giphy_konabus10.gif
/imgs/gif/konabus/giphy_konabus11.gif
/imgs/gif/konabus/giphy_konabus13.gif
/imgs/gif/konabus/giphy_konabus14.gif
/imgs/gif/konabus/giphy_konabus20.gif
/imgs/gif/konabus/giphy_skullflowers.gif
/imgs/gif/konabus/giphy_vkonabus03.gif
/imgs/gif/konet/giphy_weave.gif
/imgs/gif/kt/giphy_finger_arat.gif
/imgs/gif/kt/giphy_funnywalking.gif
/imgs/gif/kt/giphy_gymtoss.gif
/imgs/gif/kt/giphy_hand2s.gif
/imgs/gif/kt/giphy_handhither_gloves.gif
/imgs/gif/kt/giphy_hands1.gif
/imgs/gif/kt/giphy_headwaves.gif
/imgs/gif/kt/giphy_homerhandflaling.gif
/imgs/gif/kt/giphy_kt01.gif
/imgs/gif/kt/giphy_kt02.gif
/imgs/gif/kt/giphy_kt03.gif
/imgs/gif/kt/giphy_notes20.gif
/imgs/gif/med/giphy_eyeline.gif
/imgs/gif/med/giphy_eyes_line.gif
/imgs/gif/med/giphy_eyeworms.gif
/imgs/gif/med/giphy_heart01.gif
/imgs/gif/med/giphy_heart02.gif
/imgs/gif/med/giphy_heart04.gif
/imgs/gif/med/giphy_heart06.gif
/imgs/gif/med/giphy_heart10.gif
/imgs/gif/med/giphy_heart11.gif
/imgs/gif/med/giphy_heart12.gif
/imgs/gif/med/giphy_heart13.gif
/imgs/gif/med/giphy_heart15.gif
/imgs/gif/med/giphy_heart16.gif
/imgs/gif/med/giphy_heart17.gif
/imgs/gif/med/giphy_heart18.gif
/imgs/gif/med/giphy_heart19.gif
/imgs/gif/med/giphy_heart20.gif
/imgs/gif/med/giphy_heart21.gif
/imgs/gif/med/giphy_heart22.gif
/imgs/gif/med/giphy_heart23.gif
/imgs/gif/med/giphy_heart24.gif
/imgs/gif/med/giphy_heart25.gif
/imgs/gif/med/giphy_heart26.gif
/imgs/gif/med/giphy_heart27.gif
/imgs/gif/med/giphy_heart28.gif
/imgs/gif/med/giphy_heart29.gif
/imgs/gif/mouse/giphy.gif
/imgs/gif/mouse/giphy_construction01.gif
/imgs/gif/mouse/giphy_construction02.gif
/imgs/gif/mouse/giphy_construction03.gif
/imgs/gif/mouse/giphy_construction04.gif
/imgs/gif/mouse/giphy_construction05.gif
/imgs/gif/mouse/giphy_construction06.gif
/imgs/gif/mouse/giphy_construction07.gif
/imgs/gif/mouse/giphy_construction08.gif
/imgs/gif/mouse/giphy_construction09.gif
/imgs/gif/mouse/giphy_construction10.gif
/imgs/gif/mouse/giphy_construction11.gif
/imgs/gif/mouse/giphy_construction12.gif
/imgs/gif/mouse/giphy_construction13.gif
/imgs/gif/mouse/giphy_construction14.gif
/imgs/gif/mouse/giphy_construction15.gif
/imgs/gif/mouse/giphy_falling01.gif
/imgs/gif/mouse/giphy_falling02.gif
/imgs/gif/mouse/giphy_falling03.gif
/imgs/gif/mouse/giphy_falling04.gif
/imgs/gif/mouse/giphy_falling06.gif
/imgs/gif/mouse/giphy_falling07.gif
/imgs/gif/mouse/giphy_falling08.gif
/imgs/gif/mouse/giphy_falling09.gif
/imgs/gif/mouse/giphy_filecabinat.gif
/imgs/gif/mouse/giphy_focus10.gif
/imgs/gif/mouse/giphy_fu.gif
/imgs/gif/mouse/giphy_mouse01.gif
/imgs/gif/mouse/giphy_mouse02.gif
/imgs/gif/mouse/giphy_mouse03.gif
/imgs/gif/mouse/giphy_mouse06.gif
/imgs/gif/mouse/giphy_mouse_konabus.gif
/imgs/gif/mouse/giphy_phone01.gif
/imgs/gif/mouse/giphy_phone04.gif
/imgs/gif/mouse/giphy_phone05.gif
/imgs/gif/mouse/giphy_phone06.gif
/imgs/gif/mouse/giphy_snap.gif
/imgs/gif/new.gif
/imgs/gif/notes/giphy_konabus16.gif
/imgs/gif/notes/giphy_kt10.gif
/imgs/gif/notes/giphy_notes00.gif
/imgs/gif/notes/giphy_notes01.gif
/imgs/gif/notes/giphy_notes02.gif
/imgs/gif/notes/giphy_notes03.gif
/imgs/gif/notes/giphy_notes04.gif
/imgs/gif/notes/giphy_notes05.gif
/imgs/gif/notes/giphy_notes06.gif
/imgs/gif/notes/giphy_notes07.gif
/imgs/gif/notes/giphy_notes08.gif
/imgs/gif/notes/giphy_notes09.gif
/imgs/gif/notes/giphy_notes10.gif
/imgs/gif/notes/giphy_notes11.gif
/imgs/gif/notes/giphy_notes13.gif
/imgs/gif/notes/giphy_notes15.gif
/imgs/gif/notes/giphy_notes16.gif
/imgs/gif/notes/giphy_notes18.gif
/imgs/gif/notes/giphy_notes19.gif
/imgs/gif/notes/giphy_notes19b.gif
/imgs/gif/notes/giphy_notes23.gif
/imgs/gif/notes/giphy_notes24.gif
/imgs/gif/notes/giphy_notes25.gif
/imgs/gif/notes/giphy_notes26.gif
/imgs/gif/notes/giphy_notes27.gif
/imgs/gif/orbs/balls3.gif
/imgs/gif/orbs/balls4.gif
/imgs/gif/orbs/ballsrainbow.gif
/imgs/gif/orbs/cub1.gif
/imgs/gif/orbs/dia3.gif
/imgs/gif/orbs/diam1.gif
/imgs/gif/orbs/godots.gif
/imgs/gif/orbs/godotss.gif
/imgs/gif/orbs/goripple.gif
/imgs/gif/orbs/helix1.gif
/imgs/gif/orbs/jellyfish.gif
/imgs/gif/orbs/kali11.gif
/imgs/gif/orbs/kali15.gif
/imgs/gif/orbs/kali20.gif
/imgs/gif/orbs/laki21.gif
/imgs/gif/orbs/orb1.gif
/imgs/gif/orbs/orb10.gif
/imgs/gif/orbs/orb11.gif
/imgs/gif/orbs/orb3.gif
/imgs/gif/orbs/orb43.gif
/imgs/gif/orbs/orb6.gif
/imgs/gif/orbs/orb8.gif
/imgs/gif/orbs/orbcryst_alpulse.gif
/imgs/gif/orbs/orbdrip.gif
/imgs/gif/orbs/orbrainbow.gif
/imgs/gif/orbs/orbring.gif
/imgs/gif/orbs/orbspiral.gif
/imgs/gif/orbs/ringcube.gif
/imgs/gif/orbs/rings.gif
/imgs/gif/orbs/rings2.gif
/imgs/gif/orbs/ringworm.gif
/imgs/gif/orbs/rubix.gif
/imgs/gif/orbs/soccorball.gif
/imgs/gif/orbs/sprayfountain.gif
/imgs/gif/orbs/sssfg.gif
/imgs/gif/pastryroad/cakelite.gif
/imgs/gif/pastryroad/giphy._crazycookgif.gif
/imgs/gif/pastryroad/giphy_canydrops.gif
/imgs/gif/pastryroad/giphy_honeydrip.gif
/imgs/gif/pastryroad/giphy_pastryroad_frosting.gif
/imgs/gif/pastryroad/giphy_pastryroad_mixer.gif
/imgs/gif/pastryroad/giphy_woohoo.gif
/imgs/gif/ring.gif
/imgs/gif/ringb.gif
/imgs/gif/ringd.gif
/imgs/gif/ringp.gif
/imgs/gif/ringq.gif
/imgs/gif/rings.gif
/imgs/gif/ringsb.gif
/imgs/gif/ringsd.gif
/imgs/gif/ringsp.gif
/imgs/gif/ringsq.gif
/imgs/gif/spacers/giphy_handkither.gif
/imgs/gif/spacers/giphy_jkwii_head.gif
/imgs/gif/spacers/giphy_jkwii_head2.gif
/imgs/gif/spacers/giphy_spacer_01.gif
/imgs/gif/spacers/giphy_spacer_02.gif
/imgs/gif/spacers/giphy_spacer_03.gif
/imgs/gif/spacers/giphy_spacer_04.gif
/imgs/gif/spacers/giphy_spacer_05.gif
/imgs/gif/spacers/giphy_spacer_07.gif
/imgs/gif/spacers/giphy_spacer_08.gif
/imgs/gif/spacers/giphy_spacer_09.gif
/imgs/gif/spacers/giphy_spacer_10.gif
/imgs/gif/spacers/giphy_spacer_11.gif
/imgs/gif/spacers/giphy_spacer_12.gif
/imgs/gif/spacers/giphy_spacer_13.gif
/imgs/gif/spacers/giphy_spacer_15.gif
/imgs/gif/spacers/giphy_spacer_17.gif
/imgs/gif/spacers/giphy_spacer_19.gif
/imgs/gif/spacers/giphy_spacer_20.gif
/imgs/gif/spacers/giphy_spacer_21.gif
/imgs/gif/spacers/giphy_spacer_22.gif
/imgs/gif/spacers/tn/tn_giphy_handkither.gif
/imgs/gif/spacers/tn/tn_giphy_jkwii_head.gif
/imgs/gif/spacers/tn/tn_giphy_jkwii_head2.gif
/imgs/gif/spacers/tn/tn_giphy_spacer_01.gif
/imgs/gif/spacers/tn/tn_giphy_spacer_02.gif
/imgs/gif/spacers/tn/tn_giphy_spacer_03.gif
/imgs/gif/spacers/tn/tn_giphy_spacer_04.gif
/imgs/gif/spacers/tn/tn_giphy_spacer_05.gif
/imgs/gif/spacers/tn/tn_giphy_spacer_07.gif
/imgs/gif/spacers/tn/tn_giphy_spacer_08.gif
/imgs/gif/spacers/tn/tn_giphy_spacer_09.gif
/imgs/gif/spacers/tn/tn_giphy_spacer_10.gif
/imgs/gif/spacers/tn/tn_giphy_spacer_11.gif
/imgs/gif/spacers/tn/tn_giphy_spacer_12.gif
/imgs/gif/spacers/tn/tn_giphy_spacer_13.gif
/imgs/gif/spacers/tn/tn_giphy_spacer_15.gif
/imgs/gif/spacers/tn/tn_giphy_spacer_17.gif
/imgs/gif/spacers/tn/tn_giphy_spacer_19.gif
/imgs/gif/spacers/tn/tn_giphy_spacer_20.gif
/imgs/gif/spacers/tn/tn_giphy_spacer_21.gif
/imgs/gif/spacers/tn/tn_giphy_spacer_22.gif
/imgs/gif/time/giph_time_ticktocky.gif
/imgs/gif/time/giphy+flag_fireworks.gif
/imgs/gif/time/giphy_circlenumbers.gif
/imgs/gif/time/giphy_kititail.gif
/imgs/gif/time/giphy_konabus_kitibong.gif
/imgs/gif/time/giphy_paperhandling.gif
/imgs/gif/time/giphy_recordtime.gif
/imgs/gif/time/giphy_time1.gif
/imgs/gif/time/giphy_time_1213.gif
/imgs/gif/time/giphy_time_clockrays.gif
/imgs/gif/time/giphy_time_clocks.gif
/imgs/gif/time/giphy_time_cubist.gif
/imgs/gif/time/giphy_time_cycle.gif
/imgs/gif/time/giphy_time_flywheel.gif
/imgs/gif/time/giphy_time_gears.gif
/imgs/gif/time/giphy_time_goo.gif
/imgs/gif/time/giphy_time_hotsand.gif
/imgs/gif/time/giphy_time_kiti_ticktail.gif
/imgs/gif/time/giphy_time_numbers.gif
/imgs/gif/time/giphy_time_running.gif
/imgs/gif/time/giphy_time_schedule.gif
/imgs/gif/time/giphy_time_silouette.gif
/imgs/gif/time/giphy_time_spinn.gif
/imgs/gif/time/giphy_time_spiral.gif
/imgs/gif/time/giphy_time_spiral_up.gif
/imgs/gif/time/giphy_time_strobe.gif
/imgs/gif/time/giphy_time_swingers.gif
/imgs/gif/time/giphy_time_toons.gif
/imgs/gif/time/giphy_time_up.gif
/imgs/gif/time/giphy_timebench.gif
/imgs/gif/time/giphy_timeferro.gif
/imgs/gif/time/giphy_timegirls.gif
/imgs/gif/time/giphy_timeguy.gif
/imgs/gif/time/giphy_timegym.gif
/imgs/gif/time/giphy_timeinky.gif
/imgs/gif/time/giphy_timerunning.gif
/imgs/gif/time/giphy_timespinner.gif
/imgs/gif/time/giphy_timespiral_gold.gif
/imgs/gif/time/giphy_yellowbird_lookin.gif
/imgs/gif/time/stoptheclock.gif
/imgs/gif/time/tn/tn_giph_time_ticktocky.gif
/imgs/gif/time/tn/tn_giphy+flag_fireworks.gif
/imgs/gif/time/tn/tn_giphy_circlenumbers.gif
/imgs/gif/time/tn/tn_giphy_kititail.gif
/imgs/gif/time/tn/tn_giphy_konabus_kitibong.gif
/imgs/gif/time/tn/tn_giphy_paperhandling.gif
/imgs/gif/time/tn/tn_giphy_recordtime.gif
/imgs/gif/time/tn/tn_giphy_time1.gif
/imgs/gif/time/tn/tn_giphy_time_1213.gif
/imgs/gif/time/tn/tn_giphy_time_clockrays.gif
/imgs/gif/time/tn/tn_giphy_time_clocks.gif
/imgs/gif/time/tn/tn_giphy_time_cubist.gif
/imgs/gif/time/tn/tn_giphy_time_cycle.gif
/imgs/gif/time/tn/tn_giphy_time_flywheel.gif
/imgs/gif/time/tn/tn_giphy_time_gears.gif
/imgs/gif/time/tn/tn_giphy_time_goo.gif
/imgs/gif/time/tn/tn_giphy_time_hotsand.gif
/imgs/gif/time/tn/tn_giphy_time_kiti_ticktail.gif
/imgs/gif/time/tn/tn_giphy_time_numbers.gif
/imgs/gif/time/tn/tn_giphy_time_running.gif
/imgs/gif/time/tn/tn_giphy_time_schedule.gif
/imgs/gif/time/tn/tn_giphy_time_silouette.gif
/imgs/gif/time/tn/tn_giphy_time_spinn.gif
/imgs/gif/time/tn/tn_giphy_time_spiral.gif
/imgs/gif/time/tn/tn_giphy_time_spiral_up.gif
/imgs/gif/time/tn/tn_giphy_time_strobe.gif
/imgs/gif/time/tn/tn_giphy_time_swingers.gif
/imgs/gif/time/tn/tn_giphy_time_toons.gif
/imgs/gif/time/tn/tn_giphy_time_up.gif
/imgs/gif/time/tn/tn_giphy_timebench.gif
/imgs/gif/time/tn/tn_giphy_timeferro.gif
/imgs/gif/time/tn/tn_giphy_timegirls.gif
/imgs/gif/time/tn/tn_giphy_timeguy.gif
/imgs/gif/time/tn/tn_giphy_timegym.gif
/imgs/gif/time/tn/tn_giphy_timeinky.gif
/imgs/gif/time/tn/tn_giphy_timerunning.gif
/imgs/gif/time/tn/tn_giphy_timespinner.gif
/imgs/gif/time/tn/tn_giphy_timespiral_gold.gif
/imgs/gif/time/tn/tn_giphy_yellowbird_lookin.gif
/imgs/gif/time/tn/tn_stoptheclock.gif
/imgs/gif/us/giph_jkwii_handglowy.gif
/imgs/gif/us/giph_jkwii_popcorny.gif
/imgs/gif/us/giph_us_snapshot.gif
/imgs/gif/us/giphy_alien_bio3.gif
/imgs/gif/us/giphy_alien_worms.gif
/imgs/gif/us/giphy_book_flipblank.gif
/imgs/gif/us/giphy_book_flipedge.gif
/imgs/gif/us/giphy_book_flipfast.gif
/imgs/gif/us/giphy_book_flipflat.gif
/imgs/gif/us/giphy_book_flipold.gif
/imgs/gif/us/giphy_books_shelf.gif
/imgs/gif/us/giphy_bugs_jaildoorsgif.gif
/imgs/gif/us/giphy_bugs_paper.gif
/imgs/gif/us/giphy_bugs_typer.gif
/imgs/gif/us/giphy_bugs_umbrellagif.gif
/imgs/gif/us/giphy_bugsmugs.gif
/imgs/gif/us/giphy_bulbfire.gif
/imgs/gif/us/giphy_byrdpucker_donutlaw_simpsons.gif
/imgs/gif/us/giphy_byrdpucker_hatgirls.gif
/imgs/gif/us/giphy_byrdpucker_horseheadsgif.gif
/imgs/gif/us/giphy_byrdpucker_scan.gif
/imgs/gif/us/giphy_circles_n_bbs.gif
/imgs/gif/us/giphy_coffee_drip.gif
/imgs/gif/us/giphy_coffee_steam.gif
/imgs/gif/us/giphy_demonhorns.gif
/imgs/gif/us/giphy_flagybanner.gif
/imgs/gif/us/giphy_flipbook.gif
/imgs/gif/us/giphy_flipbook2.gif
/imgs/gif/us/giphy_flipbook_glow.gif
/imgs/gif/us/giphy_flipbooks.gif
/imgs/gif/us/giphy_focus_eyeball_hivey.gif
/imgs/gif/us/giphy_g.gif
/imgs/gif/us/giphy_go_crystalcube.gif
/imgs/gif/us/giphy_gridpart.gif
/imgs/gif/us/giphy_jkwii_glance.gif
/imgs/gif/us/giphy_jkwii_handorb.gif
/imgs/gif/us/giphy_jkwii_headwave2.gif
/imgs/gif/us/giphy_k.gif
/imgs/gif/us/giphy_keyboard_onoff_handtoggle.gif
/imgs/gif/us/giphy_keyboard_round.gif
/imgs/gif/us/giphy_kids_arcstrollers.gif
/imgs/gif/us/giphy_kids_tinkerbel_block.gif
/imgs/gif/us/giphy_kids_tinkerbell_laughblock.gif
/imgs/gif/us/giphy_kids_tinkerbell_leafdoor.gif
/imgs/gif/us/giphy_kids_tinkerbell_stare.gif
/imgs/gif/us/giphy_konabus_bugs_rolln.gif
/imgs/gif/us/giphy_konabus_headsmokn.gif
/imgs/gif/us/giphy_konabus_mushrooms.gif
/imgs/gif/us/giphy_konabus_schrooms.gif
/imgs/gif/us/giphy_koswell50.gif
/imgs/gif/us/giphy_kou_elbowpipes.gif
/imgs/gif/us/giphy_kou_magnets1.gif
/imgs/gif/us/giphy_kou_mercury_steps.gif
/imgs/gif/us/giphy_kou_newschool100.gif
/imgs/gif/us/giphy_kou_science_pour.gif
/imgs/gif/us/giphy_med_headknock1.gif
/imgs/gif/us/giphy_med_heart.gif
/imgs/gif/us/giphy_med_teethgif.gif
/imgs/gif/us/giphy_mistspray.gif
/imgs/gif/us/giphy_news_bookworm.gif
/imgs/gif/us/giphy_news_phone.gif
/imgs/gif/us/giphy_news_presses.gif
/imgs/gif/us/giphy_news_slow.gif
/imgs/gif/us/giphy_news_toon.gif
/imgs/gif/us/giphy_orb7.gif
/imgs/gif/us/giphy_orb_caravan.gif
/imgs/gif/us/giphy_orb_coat.gif
/imgs/gif/us/giphy_orb_crystal.gif
/imgs/gif/us/giphy_orb_cubepulse.gif
/imgs/gif/us/giphy_orb_forward.gif
/imgs/gif/us/giphy_orb_glow.gif
/imgs/gif/us/giphy_orb_linear.gif
/imgs/gif/us/giphy_orb_outgif.gif
/imgs/gif/us/giphy_orb_particles.gif
/imgs/gif/us/giphy_orb_plasmagif.gif
/imgs/gif/us/giphy_orb_spirorbgif.gif
/imgs/gif/us/giphy_orb_static.gif
/imgs/gif/us/giphy_orb_wave.gif
/imgs/gif/us/giphy_orbs_birdseye.gif
/imgs/gif/us/giphy_pastryroad_layersgif.gif
/imgs/gif/us/giphy_pulse.gif
/imgs/gif/us/giphy_pulse_big.gif
/imgs/gif/us/giphy_pulse_cube.gif
/imgs/gif/us/giphy_ringshadows.gif
/imgs/gif/us/giphy_runningman_draw.gif
/imgs/gif/us/giphy_scene_medow_butterfly.gif
/imgs/gif/us/giphy_scene_medow_sky.gif
/imgs/gif/us/giphy_scene_moonpond.gif
/imgs/gif/us/giphy_scene_motiongallery.gif
/imgs/gif/us/giphy_slinky_treadmill.gif
/imgs/gif/us/giphy_spinner1.gif
/imgs/gif/us/giphy_spinner_dark.gif
/imgs/gif/us/giphy_time_platters.gif
/imgs/gif/us/giphy_us_alien_dancers.gif
/imgs/gif/us/giphy_us_babyheads.gif
/imgs/gif/us/giphy_us_ballhead2.gif
/imgs/gif/us/giphy_us_ballheads.gif
/imgs/gif/us/giphy_us_flirty1.gif
/imgs/gif/us/giphy_us_flirty2.gif
/imgs/gif/us/giphy_us_headblinkers.gif
/imgs/gif/us/giphy_us_headline.gif
/imgs/gif/us/giphy_us_headwave.gif
/imgs/gif/us/giphy_us_hive.gif
/imgs/gif/us/giphy_us_hive_walkers.gif
/imgs/gif/us/giphy_us_joggers.gif
/imgs/gif/us/giphy_us_pacer.gif
/imgs/gif/us/giphy_us_toons2.gif
/imgs/gif/us/giphy_us_touch1.gif
/imgs/gif/us/giphy_us_walkers.gif
/imgs/gif/us/giphy_woohoo_mickey.gif
/imgs/gif/us/giphy_xmastrees.gif
/imgs/gif/us/giphy_zensitter.gif
/imgs/gif/us/giphy_zoom_earth.gif
/imgs/gif/us/giphy_zoom_typos_fold.gif
/imgs/gif/us/tn/tn_giph_jkwii_handglowy.gif
/imgs/gif/us/tn/tn_giph_jkwii_popcorny.gif
/imgs/gif/us/tn/tn_giph_us_snapshot.gif
/imgs/gif/us/tn/tn_giphy_alien_bio3.gif
/imgs/gif/us/tn/tn_giphy_alien_worms.gif
/imgs/gif/us/tn/tn_giphy_book_flipblank.gif
/imgs/gif/us/tn/tn_giphy_book_flipedge.gif
/imgs/gif/us/tn/tn_giphy_book_flipfast.gif
/imgs/gif/us/tn/tn_giphy_book_flipflat.gif
/imgs/gif/us/tn/tn_giphy_book_flipold.gif
/imgs/gif/us/tn/tn_giphy_books_shelf.gif
/imgs/gif/us/tn/tn_giphy_bugs_jaildoorsgif.gif
/imgs/gif/us/tn/tn_giphy_bugs_paper.gif
/imgs/gif/us/tn/tn_giphy_bugs_typer.gif
/imgs/gif/us/tn/tn_giphy_bugs_umbrellagif.gif
/imgs/gif/us/tn/tn_giphy_bugsmugs.gif
/imgs/gif/us/tn/tn_giphy_bulbfire.gif
/imgs/gif/us/tn/tn_giphy_byrdpucker_donutlaw_simpsons.gif
/imgs/gif/us/tn/tn_giphy_byrdpucker_hatgirls.gif
/imgs/gif/us/tn/tn_giphy_byrdpucker_horseheadsgif.gif
/imgs/gif/us/tn/tn_giphy_byrdpucker_scan.gif
/imgs/gif/us/tn/tn_giphy_circles_n_bbs.gif
/imgs/gif/us/tn/tn_giphy_coffee_drip.gif
/imgs/gif/us/tn/tn_giphy_coffee_steam.gif
/imgs/gif/us/tn/tn_giphy_demonhorns.gif
/imgs/gif/us/tn/tn_giphy_flagybanner.gif
/imgs/gif/us/tn/tn_giphy_flipbook.gif
/imgs/gif/us/tn/tn_giphy_flipbook2.gif
/imgs/gif/us/tn/tn_giphy_flipbook_glow.gif
/imgs/gif/us/tn/tn_giphy_flipbooks.gif
/imgs/gif/us/tn/tn_giphy_focus_eyeball_hivey.gif
/imgs/gif/us/tn/tn_giphy_g.gif
/imgs/gif/us/tn/tn_giphy_go_crystalcube.gif
/imgs/gif/us/tn/tn_giphy_gridpart.gif
/imgs/gif/us/tn/tn_giphy_jkwii_glance.gif
/imgs/gif/us/tn/tn_giphy_jkwii_handorb.gif
/imgs/gif/us/tn/tn_giphy_jkwii_headwave2.gif
/imgs/gif/us/tn/tn_giphy_k.gif
/imgs/gif/us/tn/tn_giphy_keyboard_onoff_handtoggle.gif
/imgs/gif/us/tn/tn_giphy_keyboard_round.gif
/imgs/gif/us/tn/tn_giphy_kids_arcstrollers.gif
/imgs/gif/us/tn/tn_giphy_kids_tinkerbel_block.gif
/imgs/gif/us/tn/tn_giphy_kids_tinkerbell_laughblock.gif
/imgs/gif/us/tn/tn_giphy_kids_tinkerbell_leafdoor.gif
/imgs/gif/us/tn/tn_giphy_kids_tinkerbell_stare.gif
/imgs/gif/us/tn/tn_giphy_konabus_bugs_rolln.gif
/imgs/gif/us/tn/tn_giphy_konabus_headsmokn.gif
/imgs/gif/us/tn/tn_giphy_konabus_mushrooms.gif
/imgs/gif/us/tn/tn_giphy_konabus_schrooms.gif
/imgs/gif/us/tn/tn_giphy_koswell50.gif
/imgs/gif/us/tn/tn_giphy_kou_elbowpipes.gif
/imgs/gif/us/tn/tn_giphy_kou_magnets1.gif
/imgs/gif/us/tn/tn_giphy_kou_mercury_steps.gif
/imgs/gif/us/tn/tn_giphy_kou_newschool100.gif
/imgs/gif/us/tn/tn_giphy_kou_science_pour.gif
/imgs/gif/us/tn/tn_giphy_med_headknock1.gif
/imgs/gif/us/tn/tn_giphy_med_heart.gif
/imgs/gif/us/tn/tn_giphy_med_teethgif.gif
/imgs/gif/us/tn/tn_giphy_mistspray.gif
/imgs/gif/us/tn/tn_giphy_news_bookworm.gif
/imgs/gif/us/tn/tn_giphy_news_phone.gif
/imgs/gif/us/tn/tn_giphy_news_presses.gif
/imgs/gif/us/tn/tn_giphy_news_slow.gif
/imgs/gif/us/tn/tn_giphy_news_toon.gif
/imgs/gif/us/tn/tn_giphy_orb7.gif
/imgs/gif/us/tn/tn_giphy_orb_caravan.gif
/imgs/gif/us/tn/tn_giphy_orb_coat.gif
/imgs/gif/us/tn/tn_giphy_orb_crystal.gif
/imgs/gif/us/tn/tn_giphy_orb_cubepulse.gif
/imgs/gif/us/tn/tn_giphy_orb_forward.gif
/imgs/gif/us/tn/tn_giphy_orb_glow.gif
/imgs/gif/us/tn/tn_giphy_orb_linear.gif
/imgs/gif/us/tn/tn_giphy_orb_outgif.gif
/imgs/gif/us/tn/tn_giphy_orb_particles.gif
/imgs/gif/us/tn/tn_giphy_orb_plasmagif.gif
/imgs/gif/us/tn/tn_giphy_orb_spirorbgif.gif
/imgs/gif/us/tn/tn_giphy_orb_static.gif
/imgs/gif/us/tn/tn_giphy_orb_wave.gif
/imgs/gif/us/tn/tn_giphy_orbs_birdseye.gif
/imgs/gif/us/tn/tn_giphy_pastryroad_layersgif.gif
/imgs/gif/us/tn/tn_giphy_pulse.gif
/imgs/gif/us/tn/tn_giphy_pulse_big.gif
/imgs/gif/us/tn/tn_giphy_pulse_cube.gif
/imgs/gif/us/tn/tn_giphy_ringshadows.gif
/imgs/gif/us/tn/tn_giphy_runningman_draw.gif
/imgs/gif/us/tn/tn_giphy_scene_medow_butterfly.gif
/imgs/gif/us/tn/tn_giphy_scene_medow_sky.gif
/imgs/gif/us/tn/tn_giphy_scene_moonpond.gif
/imgs/gif/us/tn/tn_giphy_scene_motiongallery.gif
/imgs/gif/us/tn/tn_giphy_slinky_treadmill.gif
/imgs/gif/us/tn/tn_giphy_spinner1.gif
/imgs/gif/us/tn/tn_giphy_spinner_dark.gif
/imgs/gif/us/tn/tn_giphy_time_platters.gif
/imgs/gif/us/tn/tn_giphy_us_alien_dancers.gif
/imgs/gif/us/tn/tn_giphy_us_babyheads.gif
/imgs/gif/us/tn/tn_giphy_us_ballhead2.gif
/imgs/gif/us/tn/tn_giphy_us_ballheads.gif
/imgs/gif/us/tn/tn_giphy_us_flirty1.gif
/imgs/gif/us/tn/tn_giphy_us_flirty2.gif
/imgs/gif/us/tn/tn_giphy_us_headblinkers.gif
/imgs/gif/us/tn/tn_giphy_us_headline.gif
/imgs/gif/us/tn/tn_giphy_us_headwave.gif
/imgs/gif/us/tn/tn_giphy_us_hive.gif
/imgs/gif/us/tn/tn_giphy_us_hive_walkers.gif
/imgs/gif/us/tn/tn_giphy_us_joggers.gif
/imgs/gif/us/tn/tn_giphy_us_pacer.gif
/imgs/gif/us/tn/tn_giphy_us_toons2.gif
/imgs/gif/us/tn/tn_giphy_us_touch1.gif
/imgs/gif/us/tn/tn_giphy_us_walkers.gif
/imgs/gif/us/tn/tn_giphy_woohoo_mickey.gif
/imgs/gif/us/tn/tn_giphy_xmastrees.gif
/imgs/gif/us/tn/tn_giphy_zensitter.gif
/imgs/gif/us/tn/tn_giphy_zoom_earth.gif
/imgs/gif/us/tn/tn_giphy_zoom_typos_fold.gif
/imgs/gif/us_big/giph_us_touch_arms.gif
/imgs/gif/us_big/giphy_alien_bigdancer1.gif
/imgs/gif/us_big/giphy_alien_bigdancer2.gif
/imgs/gif/us_big/giphy_android_anatomy.gif
/imgs/gif/us_big/giphy_boxinbox.gif
/imgs/gif/us_big/giphy_faces2.gif
/imgs/gif/us_big/giphy_finger_team.gif
/imgs/gif/us_big/giphy_focus_android.gif
/imgs/gif/us_big/giphy_jkwii_finger.gif
/imgs/gif/us_big/giphy_jkwii_headwaves2.gif
/imgs/gif/us_big/giphy_keyboard_wavepanel.gif
/imgs/gif/us_big/giphy_kids_bouncedown.gif
/imgs/gif/us_big/giphy_konabus_exhale.gif
/imgs/gif/us_big/giphy_kou_magnet_arc.gif
/imgs/gif/us_big/giphy_kou_magnet_ring.gif
/imgs/gif/us_big/giphy_magnet_link.gif
/imgs/gif/us_big/giphy_med_alien_bio.gif
/imgs/gif/us_big/giphy_med_heart3.gif
/imgs/gif/us_big/giphy_med_implosion.gif
/imgs/gif/us_big/giphy_news_keaton_bignews.gif
/imgs/gif/us_big/giphy_orb_sandripple.gif
/imgs/gif/us_big/giphy_orb_square.gif
/imgs/gif/us_big/giphy_orb_static2.gif
/imgs/gif/us_big/giphy_orbs_concavering.gif
/imgs/gif/us_big/giphy_pastryroad_flipn.gif
/imgs/gif/us_big/giphy_spinner_copper.gif
/imgs/gif/us_big/giphy_us_ballhead_bouncers.gif
/imgs/gif/us_big/giphy_us_gooddeed.gif
/imgs/gif/us_big/giphy_us_hatshake.gif
/imgs/gif/us_big/giphy_us_meet_latex_portal.gif
/imgs/gif/us_big/giphy_us_morph1.gif
/imgs/gif/us_big/giphy_us_morph2.gif
/imgs/gif/us_big/giphy_us_sarandancer.gif
/imgs/gif/us_big/giphy_us_toons1.gif
/imgs/gif/us_big/giphy_zoom_bug.gif
/imgs/gif/view/giphy_us01.gif
/imgs/gif/view/giphy_view00.gif
/imgs/gif/view/giphy_view01.gif
/imgs/gif/view/giphy_view02.gif
/imgs/gif/view/giphy_view03.gif
/imgs/gif/view/giphy_view04.gif
/imgs/gif/view/giphy_view05.gif
/imgs/gif/view/giphy_view06.gif
/imgs/gif/view/giphy_view08.gif
/imgs/gif/view/giphy_view09.gif
/imgs/gif/view/giphy_view10.gif
/imgs/gif/view/giphy_view11.gif
/imgs/gif/view/giphy_view12.gif
/imgs/gif/view/giphy_view13.gif
/imgs/gif/view/giphy_view14.gif
/imgs/gif/view/giphy_view15y.gif
/imgs/gif/view/giphy_view16.gif
/imgs/gif/view/giphy_view17.gif
/imgs/gif/view/giphy_view19.gif
/imgs/gif/view/giphy_view20.gif
/imgs/gif/view/giphy_view21.gif
/imgs/gif/view/giphy_view22.gif
/imgs/gif/view/giphy_view25.gif
/imgs/gif/view/giphy_view26.gif
/imgs/gif/view/giphy_view27.gif
/imgs/gif/view/giphy_view28.gif
/imgs/gif/view/giphy_view29.gif
/imgs/gif/view/giphy_view30.gif
/imgs/gif/view/giphy_view31.gif
/imgs/gif/view/giphy_view32.gif
/imgs/gif/view/giphy_view33.gif
/imgs/gif/view/giphy_view34.gif
/imgs/gif/view/giphy_view35.gif
`;

kolists['bb'] = ``;
kolists['dd'] = ``;

kolists['pn'] = 
`/pn/imgs/pano_creek5.jpg
/pn/imgs/pano_burmuda.jpg
/pn/imgs/PIA22313_pano.jpg
/pn/imgs/Sol83-PremiersGivres-pano.jpg
/pn/imgs/Taipo_pano.jpg
/pn/imgs/Opportunity-Mars-Rover-Lander-pia19112.jpg
/pn/imgs/mars-rover-opportunity-pia19111_Sol3902B_Cape_Tribulation_L2R2ana.jpg
/pn/imgs/mars-rover-opportunity-pia19110_Sol3902B_Cape_Tribulation_L257F.jpg
/pn/imgs/mars-gale-crater-panorama-pia11241-full.jpg
/pn/imgs/opportunity-panorama-warton-ridge-enhanced-pia20850-full.jpg
/pn/imgs/mars-panoramic-mt-sharp-rover-curiosity-pia19662.jpg
/pn/imgs/pano_jtf_entrance_jtf.jpg
/pn/imgs/pano_jtf_entrance.jpg
/pn/imgs/pano_fork_grass.jpg
/pn/imgs/pano_jtfarms_entrance_9700x100.jpg
/pn/imgs/pano_backyard_all.jpg
/pn/imgs/pano_jtfarms_enter_hi.jpg
/pn/imgs/pano_falls.jpg
/pn/imgs/pano_falls1_4000.jpg
/pn/imgs/pano_courtyard2.jpg
/pn/imgs/pano_courtyard1.jpg
/pn/imgs/pano_closeline.jpg
/pn/imgs/pano_falls_south.jpg
/pn/imgs/pano_falls_north.jpg
/pn/imgs/pano_falls_015-285.jpg
/pn/imgs/pano_creek.jpg
/pn/imgs/yard.jpg
/pn/imgs/veneer.jpg
/pn/imgs/sphere.jpg
/pn/imgs/pano.jpg
/pn/imgs/mars-gale-crater-panorama-pia11241-full.jpg,.
/pn/imgs,mars-gale-crater-panorama-pia11241-full.jpg,mars-gale-crater-panorama-pia11241-full,.jpg,18009851,2017-07-17_07:37:49,
/pn/imgs/yard.jpg,.
/pn/imgs,yard.jpg,yard,.jpg,100790,2007-05-10_20:35:18,
/pn/imgs/pano_creek5.jpg
/pn/imgs/pano_burmuda.jpg
/pn/imgs/PIA22313_pano.jpg
/pn/imgs/Sol83-PremiersGivres-pano.jpg
/pn/imgs/Taipo_pano.jpg
/pn/imgs/Opportunity-Mars-Rover-Lander-pia19112.jpg
/pn/imgs/mars-rover-opportunity-pia19111_Sol3902B_Cape_Tribulation_L2R2ana.jpg
/pn/imgs/mars-rover-opportunity-pia19110_Sol3902B_Cape_Tribulation_L257F.jpg
/pn/imgs/mars-gale-crater-panorama-pia11241-full.jpg
/pn/imgs/opportunity-panorama-warton-ridge-enhanced-pia20850-full.jpg
/pn/imgs/mars-panoramic-mt-sharp-rover-curiosity-pia19662.jpg
/pn/imgs/pano_jtf_entrance_jtf.jpg
/pn/imgs/pano_jtf_entrance.jpg
/pn/imgs/pano_fork_grass.jpg
/pn/imgs/pano_jtfarms_entrance_9700x100.jpg
/pn/imgs/pano_backyard_all.jpg
/pn/imgs/pano_jtfarms_enter_hi.jpg
/pn/imgs/pano_falls.jpg
/pn/imgs/pano_falls1_4000.jpg
/pn/imgs/pano_courtyard2.jpg
/pn/imgs/pano_courtyard1.jpg
/pn/imgs/pano_closeline.jpg
/pn/imgs/pano_falls_south.jpg
/pn/imgs/pano_falls_north.jpg
/pn/imgs/pano_falls_015-285.jpg
/pn/imgs/pano_creek.jpg
/pn/imgs/yard.jpg
/pn/imgs/veneer.jpg
/pn/imgs/sphere.jpg
/pn/imgs/pano.jpg
// img.src = '
/pn/imgs/pano_falls.jpg';
// img.src = '
/pn/imgs/pano_jtf_sky.jpg';
// img.src = '
/pn/imgs/pano_falls1_4000.jpg';
// img.src = '
/pn/imgs/pano_falls_north.jpg';
// img.src = '
/pn/imgs/pano_falls_south.jpg';
// img.src = '
/pn/imgs/pano_jtf_entrance.jpg';
// img.src = '
/pn/imgs/pano_courtyard1_12b.jpg';
//img.src = '
/pn/imgs/pano_falls1_4000.jpg';
<img name="pano" src=
/pn/imgs/tn/tn_pano.png border=0>
<img name="pano" src=
/pn/imgs/tn/tn_pano_closeline.png border=0>
<img name="pano" src=
/pn/imgs/tn/tn_pano_courtyard1.png border=0>
/pn/imgs/pano_creek5.jpg
/pn/imgs/pano_burmuda.jpg
/pn/imgs/PIA22313_pano.jpg
/pn/imgs/Sol83-PremiersGivres-pano.jpg
/pn/imgs/Taipo_pano.jpg
/pn/imgs/Opportunity-Mars-Rover-Lander-pia19112.jpg
/pn/imgs/mars-rover-opportunity-pia19111_Sol3902B_Cape_Tribulation_L2R2ana.jpg
/pn/imgs/mars-rover-opportunity-pia19110_Sol3902B_Cape_Tribulation_L257F.jpg
/pn/imgs/mars-gale-crater-panorama-pia11241-full.jpg
/pn/imgs/opportunity-panorama-warton-ridge-enhanced-pia20850-full.jpg
/pn/imgs/mars-panoramic-mt-sharp-rover-curiosity-pia19662.jpg
/pn/imgs/pano_jtf_entrance_jtf.jpg
/pn/imgs/pano_jtf_entrance.jpg
/pn/imgs/pano_fork_grass.jpg
/pn/imgs/pano_jtfarms_entrance_9700x100.jpg
/pn/imgs/pano_backyard_all.jpg
/pn/imgs/pano_jtfarms_enter_hi.jpg
/pn/imgs/pano_falls.jpg
/pn/imgs/pano_falls1_4000.jpg
/pn/imgs/pano_courtyard2.jpg
/pn/imgs/pano_courtyard1.jpg
/pn/imgs/pano_closeline.jpg
/pn/imgs/pano_falls_south.jpg
/pn/imgs/pano_falls_north.jpg
/pn/imgs/pano_falls_015-285.jpg
/pn/imgs/yard.jpg
/pn/imgs/veneer.jpg
/pn/imgs/sphere.jpg
/pn/imgs/pano.jpg

`;
kolists['sl'] = 
`/sl/html/index_sl.html
/sl/html/index_sl_20180509.html
/sl/html/index_sl_20180514.html
/sl/html/index_sl_20180515_2000.html
/sl/html/index_sl_20180516_0145.html
/sl/html/index_sl_20180516_0330.html
/sl/html/index_sl_20180517.html
/sl/html/index_sl_20180518.html
/sl/html/index_sl_20180520_2000_debugs.html
/sl/html/index_sl_20180521_1200.html
/sl/html/index_sl_20180701.html
/sl/html/index_sl_i.html
/sl/html/index_sl_imgs-anim.html
/sl/html/index_sl_imgs-bg.html
/sl/html/index_sl_imgs-btn.html
/sl/html/index_sl_imgs-links.html
/sl/html/index_sl_jtfdc-kb-animal_control.html
/sl/html/index_sl_jtfdc-kb-court-jpg_eagles_theft.html
/sl/html/index_sl_jtfdc-kb-court-pdf2jpg_20151215_acd.html
/sl/html/index_sl_jtfdc-kb-jpg_20161007_jtflaw_alexander.html
/sl/html/index_sl_jtfdc-kb-jtf_takes.html
/sl/html/index_sl_jtfdc-kb-jtfdc_v_jtfinc.html
/sl/html/index_sl_jtfdc-kb-ka_jtf29_title.html
/sl/html/index_sl_jtfdc-kb-restraining.html
/sl/html/index_sl_jtfdc.html
/sl/html/index_sl_kb-books-go-200807.html
/sl/html/index_sl_kb-books-go-200808.html
/sl/html/index_sl_kb-books-go-20130726.html
/sl/html/index_sl_kb-books-jmh-cleveland copy.html
/sl/html/index_sl_kb-books-jmh-cleveland.html
/sl/html/index_sl_kb-books-jmh-jmh2015 copy.html
/sl/html/index_sl_kb-books-jmh-jmh2015.html
/sl/html/index_sl_kb-books-jmh-jmh71-jmh71a copy.html
/sl/html/index_sl_kb-books-jmh-jmh71-jmh71a.html
/sl/html/index_sl_kb-books-jmh-jmh71-jmh71b copy.html
/sl/html/index_sl_kb-books-jmh-jmh71-jmh71b.html
/sl/html/index_sl_kb-books-jmh-userguide_80_bw copy.html
/sl/html/index_sl_kb-books-jmh-userguide_80_bw.html
/sl/html/index_sl_kb-books-kids-rumplestiltskin.html
/sl/html/index_sl_kb-books-kids-schruvelpeter.html
/sl/html/index_sl_kb-books-mil-iperms.html
/sl/html/index_sl_kb-books-mil-korea74.html
/sl/html/index_sl_kb-books-mil-leonardwood90.html
/sl/html/index_sl_kb-books-mil-saic.html
/sl/html/index_sl_kb-books-tech-astronomy_lacross_menschic.html
/sl/html/index_sl_kb-books-tech-calculus.html
/sl/html/index_sl_kb-books-tech-digitalmag.html
/sl/html/index_sl_kb-books-tech-duden.html
/sl/html/index_sl_kb-books-tech-physics.html
/sl/html/index_sl_kb-books-tech-time.html
/sl/html/index_sl_kb-intl-deutsche_memories.html
/sl/html/index_sl_kb-intl-ein_hundes_leben.html
/sl/html/index_sl_kb-intl-romanian_bocc.html
/sl/html/index_sl_kb-jmh71.html
/sl/html/index_sl_kb-kt-aikido_dynamic_sphere.html
/sl/html/index_sl_kb-kt-asian_fighting_arats_dragger.html
/sl/html/index_sl_kb-kt-chinesemed.html
/sl/html/index_sl_kb-kt-masters.html
/sl/html/index_sl_kb-kt-muschi_five_rings.html
/sl/html/index_sl_links.html
/sl/html/index_sl_medcan_bible.html
`;

kolists['tm'] = ``;

kolists['tl'] = 
`/tl/avg.json
/tl/avg_kt.json
/tl/codekit-config.json
/tl/example_json.json
/tl/iperms.json
/tl/jtfdc.json
/tl/jtfinc.json
/tl/ka.json
/tl/ko_json.json
/tl/ko_json_orig.json
/tl/konet.json
/tl/model.json
/tl/saic.json
/tl/t.json
/tl/tl.json
/tl/tl00.json
/tl/tl1.json
/tl/tl1_json.json
/tl/tl2.json
/tl/tl2_json.json
/tl/tl3.json
/tl/tl3_json.json
/tl/tl4_json.json
/tl/tl_best.json
/tl/tl_best1.json
/tl/tl_db.json
/tl/tl_db_cli.json
/tl/tl_db_jpg.json
/tl/tl_db_mp4.json
/tl/tl_fb_law.json
/tl/tl_fb_law_jkwiiv_byrdbell.json
/tl/tl_jenna_json.json
/tl/tl_jpg.json
/tl/tl_jtfdc_kids.json
/tl/tl_jtfdc_stalkarounds.json
/tl/tl_jtfinc_neighbors.json
/tl/tl_mp4.json
/tl/tl_ne.json
/tl/tl_st.json
/tl/tl_templet.json
/tl/tldb.json
/tl/tldb1.json
/tl/tldb2.json
/tl/tli.json
/tl/tll.json
/tl/tlphp.json
`;

kolists['yt'] = 
`yt_20200408_mcduff|https://www.youtube.com/watch?v=baK-7kr-zoo
yt_20200408_webb|https://www.youtube.com/watch?v=QdZ-vfJSE9U
yt_20200407_webb|https://www.youtube.com/watch?v=R4dLXs0PIrI
yt_20200406_webb|https://www.youtube.com/watch?v=xgtAHyssRmo
yt_20150625_chrisrea_somewhere_between_stars_santo_spirito|https://www.youtube.com/watch?v=0RF1mXxAhys
yt_20200331_carlin_germs|https://www.youtube.com/watch?v=l_L6AS1Huno
yt_20190311_bob_dylan_gotta_serve_somebody_audio|https://www.youtube.com/watch?v=wC10VWDTzmU
yt_20200407_stroppyme|https://www.youtube.com/watch?v=unNuvGJ3ses
yt_20200406_autodidactic_chinese_tartate_1729|https://www.youtube.com/watch?v=bwoF1MlckRw
yt_20190905_quinn_timothy_oneil_band_let_it_rain_official|https://www.youtube.com/watch?v=CHedk8yAF_g
yt_20200407_housitonic|https://www.youtube.com/watch?v=_pBsL0qW2Vs
yt_20200407_amazingpolly|https://www.youtube.com/watch?v=zoK6h4Mg7E8
yt_20200406_vlad9vt_sicily_polygonal_ancient_masonry|https://www.youtube.com/watch?v=sVMjRmpdUIw
yt_20200404_vlad9vt_malta_magalith|https://www.youtube.com/watch?v=zpHy1Q-fqCU
yt_20200326_borealusforum_wal_thornhil_this_is_our_electric_univers_p1of2|https://www.youtube.com/watch?v=u7peR-2m8XI
yt_szigetfestival_20120811_caro_emerald_mistaken_identiy|https://www.youtube.com/watch?v=qV8CV475WHw
yt_szigetfestival_20120811_caro_emerald_night_like_this|https://www.youtube.com/watch?v=Fc6izYdLhNE
yt_caroemerald_20130826_caro_emerald_paris_acoustic|https://www.youtube.com/watch?v=B3aWlt81EwU
yt_caroemerald_20100715_caro_emerald_back_it_up|https://www.youtube.com/watch?v=jo1cyl0QbWo
yt_caroemerald_20100701_caro_emerald_that_man|https://www.youtube.com/watch?v=CFA6dEwWOb4
yt_hotsardines_20160616_when_i_get_low_i_get_high_alan_cumming|https://www.youtube.com/watch?v=rPnXCPmrV3Y
yt_bigbadvoodoodaddy_20121016_diga_diga_doo_official|https://www.youtube.com/watch?v=ufvmD9s76X0
yt_hartandbonamassa_20130707_strange_fruit_official_beht_n_joe|https://www.youtube.com/watch?v=3Qf_aytrlpQ
yt_doristunes_20191201_twelve_bar_blues_band_you_gonna_need_my_help_someday|https://www.youtube.com/watch?v=x1dBWRybOxc
yt_postmodernjukebos_2081115_purple_rain_prince_cover_miche_braden|https://www.youtube.com/watch?v=LT8dW7bGuuM
yt_sanbornsessions_20200129_michael_mcdonald_find_it_in_your_heard_brian_owens|https://www.youtube.com/watch?v=yt4zhbE07Cg
yt_bjork_20200210_ociania_bjork|https://www.youtube.com/watch?v=thnTE2e341g
yt_webb 20200210_streaming_to_joe_biden_water_island_with_sub_base|https://www.youtube.com/watch?v=3wAy4lMjpVU
yt_mcduff_20200210_mindfields_ep5_vatican_assassins|https://www.youtube.com/watch?v=YX2HWrnPZQ4
yt_quinn_20200210_see_ya_later_twitter_deleting_app|https://www.youtube.com/watch?v=p2RkhTBAyG0
yt_newsbud_20200207_turkey_russia_marriage_convenience_nearing_end|https://www.youtube.com/watch?v=XkiOgnu4Ifs
yt_munder_20200210_china_burning_bright_signatures_from_space|https://www.youtube.com/watch?v=LEcj3cBagCQ
yt_dahboo7_20200120_germany_reports_outbreak_h5n8_bird_flu|https://www.youtube.com/watch?v=4tSZN7r6g5U
yt_dahboo7_20200120_20200210_brazil_virus_unknown_origin_genes|https://www.youtube.com/watch?v=pd6oqf-lzNE
yt_vlad9vt_20200210_yonaguni_underwater_structure|https://www.youtube.com/watch?v=S-UGC-gkyCU
yt_instituetofnoeticsciences_20160707_experiments_consciousness_affects_matter_dean_radin_phd|https://www.youtube.com/watch?v=nRSBaq3vAeY
yt_zachstar_20200210_calculus_optimization_beyond|https://www.youtube.com/watch?v=6O8Jyrr9LRc
yt_vipertv_20200210_olmec_orgins_odd_conclusion|https://www.youtube.com/watch?v=pSE9m9jQKpk
yt_liziqi_20190906_liziqi_channel_corn_chinese|https://www.youtube.com/watch?v=bZsfEwr9i6I
yt_ted_20120312_david_gallo_deep_ocean_mysteries_n_wonders|https://www.youtube.com/watch?v=Uqly8ERIkHM
yt_foodwishes_20150422_greek_lemon_chicken_potatoes|https://www.youtube.com/watch?v=h6OSMbfhIao
`;

kolists['zm'] = 
`/zm/space_2019/thule/TileGroup0/0-0-0.jpg
/zm/space_2019/thule1/TileGroup0/0-0-0.jpg
/zm/space_2019/thule2/TileGroup0/0-0-0.jpg
/zm/space_2018/bennu/TileGroup0/0-0-0.jpg
/zm/space_2018/bennu_face/TileGroup0/0-0-0.jpg
/zm/space_2018/mars_barcode_circuitboard/TileGroup0/0-0-0.jpg
/zm/space_2019/mars_barcode10000/TileGroup0/0-0-0.jpg
/heart/notre_dame_easter_2019/imgs/zm/big_12364080-6929643-An_interior_view_of_the_dpi600_Notre_Dame_Cathedral_in_Paris_in_the_aft-a-88_1555453712194/TileGroup0/0-0-0.jpg
/heart/notre_dame_easter_2019/imgs/zm/big_12375020-6929643-image-a-1_1555482644826/TileGroup0/0-0-0.jpg
/heart/notre_dame_easter_2019/imgs/zm/big_12375022-6929643-image-a-4_1555482679561/TileGroup0/0-0-0.jpg
/heart/notre_dame_easter_2019/imgs/zm/big_12375026-6929643-image-a-8_1555482902378/TileGroup0/0-0-0.jpg
/heart/notre_dame_easter_2019/imgs/zm/big_12375032-6929643-image-a-14_1555482936340/TileGroup0/0-0-0.jpg
/heart/notre_dame_easter_2019/imgs/zm/big_12375036-6929643-One_of_the_cathedral_s_many_intricate_fdpi_acades_around_where_the_t-a-1_1555486099469/TileGroup0/0-0-0.jpg
/heart/notre_dame_easter_2019/imgs/zm/big_12381954-6929643-image-m-20_1555496529559/TileGroup0/0-0-0.jpg
/heart/notre_dame_easter_2019/imgs/zm/big_12358952-6929643-Pictured_the_blaze_at_Notre_Dame_yesterday_Much_of_the_roof_was_-/TileGroup0/0-0-0.jpg
/heart/notre_dame_easter_2019/imgs/zm/big_a-91_1555453712206/TileGroup0/0-0-0.jpg
/heart/notre_dame_easter_2019/imgs/zm/big_12361102-6929643-How_did_it_escape_the_flames_The_gdpi_olden_crucifix_standing_above_-a-2_1555486099472/TileGroup0/0-0-0.jpg
/heart/notre_dame_easter_2019/imgs/zm/big_12354988-6928937-Plumes_of_smoke_quickly_billowed_from_the_cathedral_and_could_be-a-22_1555440231597/TileGroup0/0-0-0.jpg
/heart/notre_dame_easter_2019/imgs/zm/big_12356584-6928937-The_fire_swiftly_ripped_through_the_cathedral_s_oak_roof_support-a-35_1555440231801/TileGroup0/0-0-0.jpg
/zm/space_2018/mars_rebar_mouldings/TileGroup0/0-0-0.jpg
/zm/space_2018/mars_pouch_rings/TileGroup0/0-0-0.jpg
/zm/space_2018/pano_mars_mtsharp/TileGroup0/0-0-0.jpg
/zm/space_2018/pano_caralperu/TileGroup0/0-0-0.jpg
/zm/space_2018/pano_jtfinc/TileGroup0/0-0-0.jpg
/zm/space_2018/pano_jtfdc/TileGroup0/0-0-0.jpg
/zm/space_2018/mars_barcode_circuitboard/TileGroup0/0-0-0.jpg
/zm/space_2018/mars_barcode_circuitboard/TileGroup0/0-0-0.jpg
/zm/space_2018/mars_barcode_circuitboard/TileGroup0/0-0-0.jpg
/zm/space_2018/mars_barcode_circuitboard/TileGroup0/0-0-0.jpg
/zm/space_2018/mars_barcode_circuitboard/TileGroup0/0-0-0.jpg
/zm/zm_nasa/mars_zigzag_panels2400/TileGroup0/0-0-0.jpg
/zm/zm_nasa/nasa/1-scientistsfl/TileGroup0/0-0-0.jpg
/zm/zm_nasa/nasa/Echus-Chasma-On-Mars/TileGroup0/0-0-0.jpg
/zm/zm_nasa/nasa/mars_zigzag_panels/TileGroup0/0-0-0.jpg
/zm/zm_nasa/zm/Curiosity-Murray-Buttes/TileGroup0/0-0-0.jpg
/zm/zm_nasa/venus_400/TileGroup0/0-0-0.jpg
/zm/zm_nasa/zm5_planets/1-scientistsfl/TileGroup0/0-0-0.jpg
/zm/zm_nasa/zm5_planets/1-scientistsfl/TileGroup0/0-0-0.jpg
/zm/hrc2009stl/TileGroup0/0-0-0.jpg
/zm/hrc2011/TileGroup0/0-0-0.jpg
/zm/komap/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/070214_val_marineris_02/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/071010-msl-site1-02/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/071127-venus-surface-02/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/080409-phobos-02/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/081016-crater-mound-02/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/081103-mars-ripples-02/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/081204-rock-layers-02/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/090331-mars-starburst-02/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/090813-mars-crater-02.jpg/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/100113-mars-illusion-02/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/20070507_185501_1010108/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/365430main_nacl000000fd_middle_540x540/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/367307main_cracked_hahn_lg/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/369230main_apollolandinglocator_full/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/388038main_milichius_full/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/393992main_ejecta_20091014_full/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/400202main_lroc_apollo11_20091109_full/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/403330main_cabeus_lg/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/414923main_wrinkle-ridge-full/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/416286main_new-images-1-full/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/417415main_tychocloseup-20100115-full/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/417417main_tychofull-20100115-full/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/417869main_arist_bands321-full/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/417873main_M111918050R_thumb-full/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/419421main_AS16-M-0891-full/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/419425main_M106088433R-full/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/421320main_hadley_rille/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/421615main_plato_2_lg/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/421619main_plato_crater_lg/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/422349main_byrgius-a-20100203-full/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/422590-mars-taber-ansigt-/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/424828main_LunarOrbiterIII_3085_med/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/433446main_20100311_crisium_lg/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/445016main_anax3600_500/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/445021main_anax_wac_500/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/449172main_WAC_crop_context/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/449174main_M104376385_thumb/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/450800main_tsiol_2_lg/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/450994main_full_moon_lg/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/453514main_meteor_crater2_lg/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/453516main_meteor_crater_az_lg/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/455939main_holeinone_far_lg/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/463365main_M128202846LE/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/503670main_120210a/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/521685main_022111a/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/521691main_022111b/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/524173main_022511a/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/524220main_030211b/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/528087main_031110a/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/529214main_031611a/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/529221main_031611c/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/531407main_031811b/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/533097main_033111b/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/534165main_040511a/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/536801main_041311aa/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/539777main_042111b/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/541041main_042711a/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/555516main_053111a/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/558017main_060211a/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/561423main_060811b/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/576849main_062811b/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/576883main_062911b/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/58-pluto-3-large/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/ap11_landinJSC2007e045375/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/ap12_landsitea_JSC2011e118358/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/ap15_9aa_JSC2007e045378/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/ap15_lmnortha_JSC2007e045379/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/ap15_s2a_JSC2011e118359/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/ap16_lmviewa_JSC2007e045380/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/ap16_lmwesat_JSC2007e045380/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/ap16_s10a_JSC2007e045380/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/ap16_s11a_JSC2007e045380/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/ap16_s13_JSC2007e045380/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/ap16_s13a_JSC2007e045380/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/ap16_s1a_JSC2007e045380/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/ap16_s1ba_JSC2007e045380/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/ap16_slandsitea_JSC2007e045380/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/ap17_alsepa_JSC2004e52772/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/ap17_eva1a_JSC2007e045384/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/ap17_evaalsepa_JSC2007e045385/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/ap17_s1easta_JSC2004e52773/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/ap17_s1westa_JSC2004e52776/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/ap17_s2a_JSC2004e52777/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/ap17_s2eva2a_JSC2004e52774/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/ap17_s3a_JSC2004e52778/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/ap17_s3a_JSC2007e045386/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/ap17_s4a_JSC2007e045388/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/ap17_s5_JSC2004e20304/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/ap17_s5a_JSC2004e20304/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/ap17_s6a_JSC2007e045387/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/ap17_s6southa_JSC2004e52779/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/ap17_s7a_JSC2004e52775/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/apll-5_JSC2008e040725/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/AS14-68-9450HR/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/lunar-recon-orbiter-apollo-12-surveyor-3-sites-1/TileGroup0/0-0-0.jpg
/zm/zm_nasa/appollo17_4800/TileGroup0/0-0-0.jpg
/zm/zm_nasa/Curiosity-Murray-Buttes/TileGroup0/0-0-0.jpg
/zm/zm_nasa/zm5_planets/2MASS-Redshift-Survey/TileGroup0/0-0-0.jpg
/us/realtor/ky/zoom/map_doevalley/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf01/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf02/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf03/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf04/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf05/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf06/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf07/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf08/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf09/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf10/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf11/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf12/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf14/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf15/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf16/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf17510/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf17570/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf21/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf22/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf23/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf24/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf26/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf27/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf28/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf29/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf29 copy/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf30/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf31/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf32/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf34/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf35/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf36/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf38/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf40/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf41/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf42/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf43/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf44/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf_n/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf_ne/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtfdc/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtfdc_012/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtfdc_e/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtfdc_greater/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtfdc_inc/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtfdc_n/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtfdc_s/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtfdc_theater/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtfdc_w/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtfinc/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtfinc_proper/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jttf37/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jyf44/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/souixp/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/souixp_boat/TileGroup0/0-0-0.jpg
`;

// kolists['default'] = "neuz konet iperms kids kitiworks pastryroad konabus jtfdc jtfdcr jtfinc jtfdcr dogs memes";
			kolists['divs'] = "av bb fb gm pn sl tl yt zm";
			kolists['kovs'] = "neuz konet iperms kids kitiworks pastryroad konabus jtfdc jtfdcr jtfinc jtfdcr dogs memes";
			kolists['kov'] = "neuz konet iperms kids kitiworks pastryroad konabus jtfdc jtfdcr jtfinc jtfdcr dogs memes";
//			kolists['av'] = jax('/av.txt');
//			kolists['fb'] = jax('/fb.txt');
//			kolists['pn'] = jax('/pn.txt');
//			kolists['sl'] = jax('/sl.txt');
//			kolists['tl'] = jax('/tl.txt');
//			kolists['zm'] = jax('/zm.txt');
			</script>

		<script id="script_jax">
//			alert( "BUGS_5120 jax default_jaxurl="+default_jaxurl );
//			alert( "BUGS_5120 jax jaxurl="+jaxurl );
//			alert( "BUGS_12700 jax kolists_ticktick="+kolists[''] );
//			alert( "BUGS_12700 jax fb="+kolists['fb'] );
//			alert( "BUGS_12701 jax kolists_default="+kolists['default'] );
//			alert( "BUGS_12702 jax kolists_konet="+kolists['default'] );
//			alert( "BUGS_12703 jax kolists_iperms="+kolists['default'] );
//			alert( "BUGS_12704 jax kolists_jtfdcr="+kolists['default'] );
//			alert( "BUGS_12700 jax kolists_jax="+kolists['jax'] );
			var default_jaxurl = "jax.html";
			var jaxurl = default_jaxurl;
			function jax(jaxurl) {
//				alert( "BUGS_19490 jax jaxurl="+jaxurl );
				if(!filecheck(jaxurl)) {
					alert( "BUGS_19493 NOTFOUND jaxurl="+jaxurl );
					return("NOTFOUND="+jaxurl );
					}
				var jaxbak = '-=jaxbak=-';
				kolists['jax'] = '-=jax=-';
//				alert( "BUGS_19500 FOUND jaxurl="+jaxurl );
				$.ajax({
					url: jaxurl,
					context: document.body,
					success: function(responseText) {
// 						alert( "BUGS_19501 jax TXT URL="+jaxurl+" LEN="+responseText.split("\n").length+"  responseText="+responseText );
						kolists['jax'] = responseText;
// 						alert( "BUGS_19502 jax KOL URL="+jaxurl+" LEN="+kolists['jax'].split("\n").length+"  responseText="+kolists['jax'] );
						jaxbak = responseText;
// 						alert( "BUGS_19503 jax JAXBAK URL="+jaxurl+" LEN="+jaxbak.split("\n").length+"  responseText="+jaxbak );
						$("#div_jax").html(responseText);

						var scriptflag = "true";
						if( scriptflag == "true" ) {
							$("#div_jax").find("script").each(function(i) {
								eval($(this).text());
								});
							}
					}
				});
// alert( "BUGS_19538 jax end" );
// alert( "BUGS_19601 jax TXT URL="+jaxurl+" LEN="+responseText.split("\n").length+"  responseText="+responseText );
// alert( "BUGS_19602 jax KOL URL="+jaxurl+" LEN="+kolists['jax'].split("\n").length+"  responseText="+kolists['jax'] );
// alert( "BUGS_19603 jax JAXBAK URL="+jaxurl+" LEN="+jaxbak.split("\n").length+"  responseText="+jaxbak );
// 			alert( "BUGS_19539 jax END" );
			return( jaxbak );
			alert( "BUGS_19540 jax END END" );
			};
		</script>

	<script id="script_startup_blobs">
		function startup_blobs(args) {
//			alert( "BUGS_17401 startup_blobs args="+args );
			startup_blob(args);
//			alert( "BUGS_17402 startup_blobs" );
			}
		</script>
	<script id="script_startup_blob1">
		function startup_blob1(args) {
//			alert( "BUGS_17411 startup_blob args="+args );
//			init();
//			alert( "BUGS_17412 startup_blob tail" );

			}
		</script>


	<script id="script_load_kolists">
kolists['listids'] = 
`av|/txt/avlist.txt
fb|/txt/fblist.txt
pn|/txt/pnlist.txt
sl|/txt/sllist.txt
tl|/txt/tllist.txt
yt|/txt/ytlist_today.txt
zm|/txt/zmlist.txt
`;
		function load_kolists(args) {
//			args='txt/ytlist_todays.txt';
//			alert( "BUGS_19541 load_kolists args="+args);
//			var ytlist_url='ytlist.txt';
//			if( args ) {ytlist_url=args; }
//			alert( "BUGS_19550 load_kolists ytlist_url="+ytlist_url);
//			alert( "BUGS_19550 show_kolists kolists_ytlist="+kolists['ytlist']);

			var listids=kolists['listids'].split("\n");
			for( j=0; j< listids.length; j++ ) {
				if( /^#/.test(listids[j])) { continue; }
				var len = listids[j].split("|").length;
				var id=listids[j].split("|")[0];
				if( id == undefined ) { continue; }
				if( id == "" ) { continue; }

				var url=listids[j].split("|")[len-1];
				if(! filecheck(url)) { 
					alert( "BUGS_19573 NOTFOUND j="+j+" id="+id+" url="+url );
					continue; 
					}

				
				var listid=id+"list";
				kolists[listid] = '';
				kolists[listid] = "HEAD listid="+listid;
//				alert( "BUGS_19591 j="+j+" id="+id+" url="+url );
				jax(url);
				kolists[listid] = jax(url);
// alert( "BUGS_19601 load_kolists j="+j+" ID="+id+" URL="+url+"\n\nLIST="+kolists[listid] );
				kolists[listid] = kolists['jax'];
// alert( "BUGS_19602 load_kolists j="+j+" ID="+id+" URL="+url+"\n\nLIST="+kolists[listid] );

//				jax(url); kolists[listid]=kolists['jax'];
//				alert( "BUGS_19603 load_kolists FOUND LEN="+kolists[listid].length+"  listid="+listid+" url="+url );
//				len = kolists[listid].split("\n").length;
//				alert( "BUGS_19604 load_kolists FOUND j="+j+" URL="+url+" LEN="+len+"\n\n LIST="+kolists[listid].split("\n"));
				}
//			alert( "BUGS_19611 jaxbak="+jaxbak );
//			alert( "BUGS_19612 kolists_jax="+kolists['jax'] );
//			alert( "BUGS_19613 kolists_fblist="+kolists['fblist'] );
//			alert( "BUGS_19614 kolists_ytlist="+kolists['ytlist'] );
//			alert( "BUGS_19615 kolists_pnlist="+kolists['pnlist'] );
			return(args);
			}
		</script>

	<script id="script_show_kolists">
		function show_kolists(args) {
//			alert( "BUGS_1961 show_kolists args="+args);
//			alert( "BUGS_1961 show_kolists kolists_listids="+kolists['listids']);
//			alert( "BUGS_1961 show_kolists kolists_fblist="+kolists['fblist']);
//			alert( "BUGS_1962 show_kolists kolists_ytlist="+kolists['ytlist']);
//			alert( "BUGS_1963 show_kolists kolists_avlist="+kolists['avlist']);
//			alert( "BUGS_1963 show_kolists args="+args);
			return(args);
			}
		</script>




	<script id="script_startup">
//		if( filecheck(url_yt)) { 
//			alert( "BUGS_12111 ___FOUND url_yt="+url_yt);
//			kolists['yt'] = jax(url_yt); 
//			alert( "BUGS_11982 kolists="+kolists['yt'];
//			}
//		else {
//			alert( "BUGS_11983 NOTFOUND url_yt="+url_yt );
//			}

		function kludge(args) {
			alert( "BUGS_19850 kludge args="+args );
			}
		
		function blob_sound(args) {
//			alert( "BUGS_19900 blob_sound args="+args );

			if( document.getElementById('img_blob_sound')) {
//				alert( "BUGS_19900 blob_sound args="+args );
//				document.getElementById('audio_sound').src=sound;
//				document.getElementById('audio_sound').play();
//				alert( "BUGS_19900 blob_sound args="+args );

//				document.getElementById('img_blob_sound').src="/imgs/sound/btn_sound13.png";
//				document.getElementById('img_blob_sound').src="/imgs/gif/spacers/giphy_spacer_21.gif";
				document.getElementById('img_blob_sound').src=random_gif;
				if( args != "" ) { sound=args; }
				var sound = "/gm/sounds/bubbles.mp3";
				var sounds = kolists['sounds'];
				sounds += kolists['mp3'];
				sounds += kolists['mp3_bavaria']; 
				sounds += kolists['mp3_jkwii'];

				sounds = sounds.split("\n");
//				var sounds = kolists['sounds'].split("\n");
//				var sounds = kolists['mp3'].split("\n");
				
				sound_max = sounds.length;
//					alert( "BUGS_501 blob_sound sound_max="+sound_max );
				soundid = random_int(sound_max,0);
//					alert( "BUGS_502 blob_sound soundid="+soundid );
				var sound = sounds[soundid];
//					alert( "BUGS_503 blob_sound sound="+sound );

				if(filecheck(sound)) {
//					alert( "BUGS_504 blob_sound FOUND sound="+sound );
					if( document.getElementById('audio_sound')) {
//						alert( "BUGS_505 blob_sound SRC sound="+sound );
						document.getElementById('audio_sound').src=sound;
						document.getElementById('audio_sound').play();
//						alert( "BUGS_506 blob_sound PLAY sound="+sound );
						}
					if( document.getElementById('div_blob_playlist')) {
						var htout = "";
						htout += '<div id="div_blob_playlist">';
						var sound=document.getElementById('audio_sound').src;
						htout += '<h2>'+sound+'</h2>';
						htout += '<h3>'+random_gif+'</h3>';
						htout += '	</div>';
						document.getElementById('div_blob_playlist').innerHTML=htout;
						document.getElementById('div_blob_playlist').style.display="inline";
						}




					}
				}
			else {
//				document.getElementById('img_blob_sound').src="/imgs/sound/btn_sound2.png";
//				document.getElementById('img_blob_sound').src="/imgs/sound/btn_sound10.png";
//				document.getElementById('img_blob_sound').src="/imgs/gif/spacers/giphy_spacer_21.gif";
				if( filecheck(random_gif)) {
					document.getElementById('img_blob_sound').src=random_gif;
					}
				else {
					document.getElementById('img_blob_sound').src="/imgs/gif/notfound.gif";
					}
				}
			}
		</script>


	<script id="script_mp3_playlist" >
		function mp3_playlist(args) {
			var htmout="";
			var kolist = "";
//			kolist += kolists['sounds'];
			kolist += kolists['mp3'];
			kolist += kolists['mp3_jkwii'];
			kolist += kolists['mp3_bavaria'];
			if( args != "" ) {
				kolist = kolists[args];
				}

			var sounds=kolist.split("\n");
			sounds_len=sounds.length;
//			alert( "BUGS_24555 len="+sounds_len+" sounds="+sounds )
			var j=0;
			for( j=0; j<sounds_len; j++ ) {
//				if( j == 0 ) { continue; }
//				if( sound == "" ) { continue; }
				sound=sounds[j];
				note=sound.replace('/kb/mp3/','');
//				alert( "BUGS_24600 j="+j+" sound="+sound+"  len="+sounds_len+" sounds="+sounds )
				if( /\n/.test(sound)) {continue; }
				if( /alloff/.test(sound)) {continue; }
				if( /allon/.test(sound)) { continue; }
				if( /toggle/.test(sound)) { continue; }
				if( /undefined/.test(sound)) { continue; }
//				if( /</.test(sound)) { htmout += sound; continue;}
				if(sound == "undefined" ) { continue };

//				htmout += '<img src="/imgs/sound/btn_sound_note.png" ';
//				htmout += '<img src="/imgs/btn/koeye.png" ';
				htmout += '<img src="/imgs/sound/btn_sound_note.png" ';
				htmout += '	alt="'+sound+'" ';
				htmout += '	onclick="window.open(\''+sound+'\'); return false;"';
				htmout += '	height=20 >';
				htmout += 'j='+j+' note='+note+'<br>';
				htmout += '<hr color=blue>';
				}

//			alert( "BUGS_24525 sounds="+sounds );
//			alert( "BUGS_24530 htmout="+htmout );
			if( document.getElementById('img_mp3_playlist')) {
				document.getElementById('img_mp3_playlist').src="/imgs/sound/btn_sound1.png";
				}
			if( document.getElementById('div_mp3_playlist')) {
				document.getElementById('div_mp3_playlist').innerHTML=htmout;
				}
			}
		</script>



		
	<script id="script_blob_mute">
		function blob_mute(args) {
//			alert( "BUGS_19852 blob_mute args="+args );
			jukeboxs = gifs=kolists['imgs_jukebox'].split("\n");
			max_jukeboxs=jukeboxs.length;
			random_jukeboxid=random_int(max_jukeboxs,0);
			random_jukebox=jukeboxs[random_jukeboxid];

			gifs=kolists['gifwave'].split("\n");
			max_gifs = gifs.length;
			random_gifid = random_int(max_gifs,0);
			random_gif = gifs[random_gifid];

			if( document.getElementById('audio_sound')) {
				if( document.getElementById('audio_sound').muted == true ) {
					document.getElementById('audio_sound').muted = false;
					if( document.getElementById('img_blob_mute')) {
//						document.getElementById('img_blob_mute').src="/imgs/sound/btn_soundwavew.png";
//						document.getElementById('img_blob_mute').src="/imgs/sound/giphy_wave03t.gif";
//						document.getElementById('img_blob_mute').src="/giftran/temp.gif";
//						document.getElementById('img_blob_mute').src=random_gif;
//						document.getElementById('img_blob_mute').src="/imgs/sound/ringworm_1.gif";
//						document.getElementById('img_blob_mute').src="/imgs/imgs_jukebox/record_04.gif";
						document.getElementById('img_blob_mute').src=random_jukebox;
						}
					if( document.getElementById('input_volume')) {
						document.getElementById('input_volume').style.display="inline";
						}
					if( document.getElementById('img_blob_sound')) {
						document.getElementById('img_blob_sound').style.display="inline";
						}

			if( document.getElementById('div_blob_playlist')) {
				var htout = "";
				htout += '<div id="div_blob_playlist">';
				var sound=document.getElementById('audio_sound').src;
				htout += '<h2>'+sound+'</h2>';
				htout += '<h3>'+random_gif+'</h3>';
				htout += '	</div>';
				document.getElementById('div_blob_playlist').innerHTML=htout;
				document.getElementById('div_blob_playlist').style.display="inline";
				}



					}
				else {
					document.getElementById('audio_sound').muted = true;
					if( document.getElementById('img_blob_mute')) {
//						document.getElementById('img_blob_mute').src="/imgs/sound/btn_soundwaveb.png";
						document.getElementById('img_blob_mute').src="/imgs/sound/ringworm_00.png";
						}
					if( document.getElementById('input_volume')) {
						document.getElementById('input_volume').style.display="none";
						}
					if( document.getElementById('img_blob_sound')) {
						document.getElementById('img_blob_sound').style.display="none";
						}
					if( document.getElementById('div_blob_playlist')) {
						document.getElementById('div_blob_playlist').style.display="none";
						}
					}
				}
			}
		</script>
	<script id="script_pdfs">


kolists['pdfs_default'] = 
`/email.pdf
/fb/donutvanlaw/imgs/tourdedonut_Itinerary_bike_donut_bike_donut_bike_drink_beer_maybe_passoout.pdf
/fb/emails/pdf/archcitydefenders.pdf
/fb/emails/pdf/archcitydefenders_pg1.pdf`;


kolists['pdfs'] = 
`/email.pdf
/pdf/pdf/konet.pdf
/pdf/pdf/iperms.pdf
/pdf/pdf/kou.pdf
/pdf/pdf/kids.pdf
/pdf/pdf/saic.pdf
/pdf/pdf/pastryroad.pdf
/pdf/pdf/kitiworks.pdf
/pdf/pdf/trial6.pdf
/pdf/pdf/trial7.pdf
/pdf/pdf/konabus.pdf
/fb/donutvanlaw/imgs/tourdedonut_Itinerary_bike_donut_bike_donut_bike_drink_beer_maybe_passoout.pdf
/fb/emails/pdf/archcitydefenders.pdf
/fb/emails/pdf/archcitydefenders_pg1.pdf
/fb/emails/pdf/email.pdf
/fb/emails/pdf/email_archcity.pdf
/fb/emails/pdf/email_archcity1.pdf
/fb/emails/pdf/email_archcity2.pdf
/fb/emails/pdf/email_bballs.pdf
/fb/emails/pdf/email_bluehost_david.pdf
/fb/emails/pdf/email_cohan_restran_jtf31_gardners.pdf
/fb/emails/pdf/email_cohana_2.pdf
/fb/emails/pdf/email_cohana_restraint_jtf32_donovanlaw.pdf
/fb/emails/pdf/email_cohana_restraint_majtf30_martin.pdf
/fb/emails/pdf/email_cohana_restraints.pdf
/fb/emails/pdf/email_edrmedia.pdf
/fb/emails/pdf/email_focus.pdf
/fb/emails/pdf/email_ggore_dowdbennett.pdf
/fb/emails/pdf/email_green_alan.pdf
/fb/emails/pdf/email_habbegger1.pdf
/fb/emails/pdf/email_habegger.pdf
/fb/emails/pdf/email_housatonic.pdf
/fb/emails/pdf/email_law_referal.pdf
/fb/emails/pdf/email_lawkwkt.pdf
/fb/emails/pdf/email_lawkwkt1.pdf
/fb/emails/pdf/email_lds_edrmedia.pdf
/fb/emails/pdf/email_missioncontinues.pdf
/fb/emails/pdf/email_quinn.pdf
/fb/emails/pdf/email_saic_sk2alverson.pdf
/fb/emails/pdf/email_usmail_hardy.pdf
/fb/emails/pdf/jk_restrain_donovan_pg7.pdf
/fb/emails/pdf/jk_restrain_donovan_pg8.pdf
/fb/emails/pdf/jk_restrain_gardner_pg7.pdf
/fb/emails/pdf/jk_restrain_gardner_pg8.pdf
/fb/emails/pdf/jk_restrain_martin_pg7.pdf
/fb/emails/pdf/jk_restrain_martin_pg8.pdf
/fb/emails/pdf/konet_itso_oy4_award_e0007_po10093205_rel2.pdf
/fb/emails/pdfjs1/web/compressed.tracemonkey-pldi-09.pdf
/fb/imgs/Download - Printer Drivers.pdf
/fb/jtfdcr/chap2/jtfdc_20200224_settlement_agreement.pdf
/fb/jtfdcr/chap2/jtfdc__v_jtfinc_settlement.pdf
/fb/jtfdcr/imgs/IMG_1885_property_map.JPG.pdf
/fb/jtfdcr/imgs/jk_restrain_donovan_pg1.pdf
/fb/jtfdcr/imgs/jk_restrain_donovan_pg2.pdf
/fb/jtfdcr/imgs/jk_restrain_donovan_pg3.pdf
/fb/jtfdcr/imgs/jk_restrain_donovan_pg6.pdf
/fb/jtfdcr/imgs/jk_restrain_donovan_pg7.pdf
/fb/jtfdcr/imgs/jkassil_case(s)_details.doc.pdf
/fb/jtfdcr/imgs/propertymap_court.pdf
/fb/jtfdcr/imgs/spry199.pdf
/fb/jtfdcr/imgs/stlcounty_kassil.pdf
/fb/jtfdcr/jtfdc_exhibits/jk_restrain_donovan_pg1.pdf
/fb/jtfdcr/jtfdc_exhibits/jk_restrain_donovan_pg2.pdf
/fb/jtfdcr/jtfdc_exhibits/jk_restrain_donovan_pg3.pdf
/fb/jtfdcr/jtfdc_exhibits/jk_restrain_donovan_pg6.pdf
/fb/jtfdcr/jtfdc_exhibits/jk_restrain_donovan_pg7.pdf
/fb/jtfdcr/jtfdc_exhibits/jkassil_case(s)_details.doc.pdf
/fb/jtfdcr/jtfdcr_202004/kb_20200413_1300/faithacademystlouis_com.pdf
/fb/jtfdcr/jtfdcr_202004/kb_20200413_1300/faithchurch_com.pdf
/fb/jtfdcr/jtfdcr_202004/kb_20200413_1300/faithchurch_com_all_locations.pdf
/fb/jtfdcr/jtfdcr_202004/kb_20200413_1300/faithchurch_com_dreamteam.pdf
/fb/jtfdcr/jtfdcr_202004/kb_20200413_1300/faithchurch_com_events_sunday_services_earth_city_mo.pdf
/fb/jtfdcr/jtfdcr_202004/kb_20200413_1300/www_whatdoesitmean_com.pdf
/fb/jtfdcr/pages/jk_restrain_donovan_pg1.pdf
/fb/jtfdcr/pages/jk_restrain_donovan_pg2.pdf
/fb/jtfdcr/pages/jk_restrain_donovan_pg3.pdf
/fb/jtfdcr/pages/jk_restrain_donovan_pg6.pdf
/fb/jtfdcr/pages/jkassil_case(s)_details.doc.pdf
/fb/jtfdcr/txt/2014_taxdetails.xls.pdf
/fb/jtfdcr/txt/jk_restrain_donovan_pg1.pdf
/fb/jtfdcr/txt/jk_restrain_donovan_pg2.pdf
/fb/jtfdcr/txt/jk_restrain_donovan_pg3.pdf
/fb/jtfdcr/txt/jk_restrain_donovan_pg4.pdf
/fb/jtfdcr/txt/jk_restrain_donovan_pg5.pdf
/fb/jtfdcr/txt/jk_restrain_donovan_pg6.pdf
/fb/jtfdcr/txt/jk_restrain_donovan_pg7.pdf
/fb/jtfdcr/txt/jk_restrain_donovan_pg8.pdf
/fb/jtfdcr/txt/jk_restrain_gardner_pg1.pdf
/fb/jtfdcr/txt/jk_restrain_gardner_pg2.pdf
/fb/jtfdcr/txt/jk_restrain_gardner_pg3.pdf
/fb/jtfdcr/txt/jk_restrain_gardner_pg4.pdf
/fb/jtfdcr/txt/jk_restrain_gardner_pg5.pdf
/fb/jtfdcr/txt/jk_restrain_gardner_pg6.pdf
/fb/jtfdcr/txt/jk_restrain_gardner_pg7.pdf
/fb/jtfdcr/txt/jk_restrain_gardner_pg8.pdf
/fb/jtfdcr/txt/jk_restrain_martin_pg1.pdf
/fb/jtfdcr/txt/jk_restrain_martin_pg2.pdf
/fb/jtfdcr/txt/jk_restrain_martin_pg3.pdf
/fb/jtfdcr/txt/jk_restrain_martin_pg4.pdf
/fb/jtfdcr/txt/jk_restrain_martin_pg5.pdf
/fb/jtfdcr/txt/jk_restrain_martin_pg6.pdf
/fb/jtfdcr/txt/jk_restrain_martin_pg7.pdf
/fb/jtfdcr/txt/jk_restrain_martin_pg8.pdf
/fb/kitiworks/kitiweds/imgs/lace/Dressmaker - Wikipedia.pdf
/fb/konet/email/20110517_1124_chapmanr2barnett_hd_transport_knox.pdf
/fb/konet/email/2012_10_26_SLAC2013REGISTRATIONPACKET.pdf
/fb/konet/email/army_networthiness_overview.pdf
/fb/konet/email/attach0-konet_task_order_rfp_cw110816-07.pdf
/fb/konet/email/attach1-_Konet_sms_-_sow_do_8_29_08_lat_20080829.pdf
/fb/konet/email/attach1-konet_entity_0007-sow_opty_3_20110718.pdf
/fb/konet/email/attach16-subcontract_closeout_package_20110930_1112.pdf
/fb/konet/email/attach_04-konet_SMS-SOW_DO_8_29_08_lat.pdf
/fb/konet/email/attachment2_data_protection_and_assessment_for_phi_or_pii_20120316_1333_level2_data_protection.pdf
/fb/konet/email/attachment_b-reps_and_certs_d_oci_rev11-17-09_signed.pdf
/fb/konet/email/Award_Eagles_Business_Brochure_rev2.pdf
/fb/konet/email/big-ip.pdf
/fb/konet/email/brick_based_storage_carnegie_mellon_2003-a461187.pdf
/fb/konet/email/commercial_price_list_or_GSA_Catalog_hourly_rates.pdf
/fb/konet/email/contacts_jerry_brown_koreintillery_investigatore.pdf
/fb/konet/email/core_webcast_human_hacking_exposed.pdf
/fb/konet/email/dell_poweredge_r610.pdf
/fb/konet/email/DEOCSTalkingpaperMar2012[1].pdf
/fb/konet/email/director_priorities_11_oct_12.pdf
/fb/konet/email/dnb_iUpdate_konet_dups.pdf
/fb/konet/email/draft_v3_eeoc_20131113_0117.pdf
/fb/konet/email/draft_v3_eeoc_20131113_0833.pdf
/fb/konet/email/drafts_201311008_0930_ko2greerj_wsb_conflict_equitable_adj.pdf
/fb/konet/email/drafts_20131108_2151_jk2thomeczekm_nara_marsh_zussblatte.pdf
/fb/konet/email/drafts_20131308_0933_jk2jk_pirates_esbbean_jksv.pdf
/fb/konet/email/eeoc_Joachim_Kassil_20131122_1100.pdf
/fb/konet/email/email_20090618_0925_bosweorth2all_mark_hydar_retirement_0701.pdf
/fb/konet/email/email_20090702_0917_ko2saic_konet_invoice_fy10-04_20090515.pdf
/fb/konet/email/email_20100816_1030_chapman_directhire_whiteheadj_ctrle.pdf
/fb/konet/email/email_20100816_1030_fromto_chapman_directhire_whiteheadj_ctrle.pdf
/fb/konet/email/email_20100929_0942_fromto_whiteheadj_civ.pdf
/fb/konet/email/email_20100929_0942_whiteheadj_civ.pdf
/fb/konet/email/email_20101007_1403_morgan2shere_iperms_notes_aors_ltrs_knox_xp.pdf
/fb/konet/email/email_20101013_0925_jk2jk_iperms_aors2knx_notes.pdf
/fb/konet/email/email_20101013_1104_morgan3saic_iperms_aors_not_identified_knox_jcl.pdf
/fb/konet/email/email_20101013_1108_morgan2genet_iperms_josh_app_that_converts.pdf
/fb/konet/email/email_20101015_1335_schere2jk_no_longer_be_working.pdf
/fb/konet/email/email_20101027_1026_thomeczek2ko_nara_marsh_va.pdf
/fb/konet/email/email_20101104_1011_triplett2morgan_who_wrote_maintains_app_srccode.pdf
/fb/konet/email/email_20110111_1150_wilson2ko_subk_4400159794_mod10.pdf
/fb/konet/email/email_20110124_1227_lukefahr2jk_missing_orders.pdf
/fb/konet/email/email_20110124_1335_harry2knox_kassilj_iperms_mo_extension.pdf
/fb/konet/email/email_20110124_1445_jk2barnett_lance_agrees_extension.pdf
/fb/konet/email/email_20110126_1057_jk2barnett_hrcextension_request_status.pdf
/fb/konet/email/email_20110127_1442_miguel2jk_knox_monday_chapman_heard_noext.pdf
/fb/konet/email/email_20110127_1542_triplett2jk_extension_barnett_chapman_not_morgan.pdf
/fb/konet/email/email_20110128_0817_barnett2jk_extention_denied_chapman.pdf
/fb/konet/email/email_20110131_0806_genet2jk_extension_aproved_friday.pdf
/fb/konet/email/email_20110131_0930_jk2bennesh_stl_april_extenstion.pdf
/fb/konet/email/email_20110138_0800_jk2genet_extention_denial_bosworth_overriden.pdf
/fb/konet/email/email_20110215_0735_jk2morgan_agrimis_ready_moa_sshact.pdf
/fb/konet/email/email_20110215_0735_lance2jk_agrimis_app_josh_created_e.pdf
/fb/konet/email/email_20110217_1149_wallrap2gosnekll_iperms_support_pwreset.pdf
/fb/konet/email/email_20110223_0918_wallrapp2kilgeman_rpas_letters_not_injected_since_dec2010_.pdf
/fb/konet/email/email_20110301_1045_hiza2morgan_iperms_discharge_orders_support.pdf
/fb/konet/email/email_20110330_1410_jk2lds_iperms_agrinmis_knox_info.pdf
/fb/konet/email/email_20110405_0903_whiteheadj_hardin_hospital.pdf
/fb/konet/email/email_20110405_0942_morgan2iperms_kassil_iperms_intro_.pdf
/fb/konet/email/email_20110405_1143_jk2jk_contacts_bagley_imm_sw.pdf
/fb/konet/email/email_20110406_1107_jk2lds_aors_intro_justification.pdf
/fb/konet/email/email_20110407_0919_jk2morgan_no_iperms_support.pdf
/fb/konet/email/email_20110407_1120_morgan2jk_iperms_support_needs.pdf
/fb/konet/email/email_20110407_2157_jk2morgan_iperms_justificatiobn_6mth.pdf
/fb/konet/email/email_20110407_2157_jk2morgan_konet_kassilj_aors_continueity_justification.pdf
/fb/konet/email/email_20110411_1424_drb2all_signed_appointment_orders_sa.pdf
/fb/konet/email/email_20110412_0809_morgan2iperms_aors_iperms_kassilj_injection_recommend.pdf
/fb/konet/email/email_20110412_1054_jk2lds_iperms_aors_planb_backhome.pdf
/fb/konet/email/email_20110413_0950_lds2jk_separate_iperms_lance_share.pdf
/fb/konet/email/email_20110413_1412_jk2jk_hrc_bx_tbl_notes.pdf
/fb/konet/email/email_20110427_0803_imm2jk_dbr_to_make_sure_someone_else_aors_adm.pdf
/fb/konet/email/email_20110427_0934_lesley_wilson_depart.pdf
/fb/konet/email/email_20110427_1016_jk2morgan_aors_notes.pdf
/fb/konet/email/email_20110428_0656_jk2jk_aors_notes_quickref.pdf
/fb/konet/email/email_20110429_0721_heigleman2lance_garder_bognar_ok_kassil_iperms_support.pdf
/fb/konet/email/email_20110429_1200_wilson2all_intro_cathy_wells.pdf
/fb/konet/email/email_20110505_0752_imm2jk_rare_iperms_wanting_you_desparately_happy_my_side.pdf
/fb/konet/email/email_20110510_1332_jk2drb_iperms_status_hankey_mainfram.pdf
/fb/konet/email/email_20110512_0628_drb2all_mainframe_team.pdf
/fb/konet/email/email_20110512_1201_imm2drb_jk_leave_iperms_lot_or_progress.pdf
/fb/konet/email/email_20110512_1238_rivera2all_hd_transport_ltc_campbell_kiefer_okje.pdf
/fb/konet/email/email_20110513_1200_rivera2all_hd_stl2knox.pdf
/fb/konet/email/email_20110513_1238_saic2hrc_hd_transport_chain_custody.pdf
/fb/konet/email/email_20110517_1124_chapmanr2barnett_hd_transport_knox.pdf
/fb/konet/email/email_20110519_0707_aors_issue51911_.pdf
/fb/konet/email/email_20110520_0227_jk2hankey_iperms_zos_tool.pdf
/fb/konet/email/email_20110520_0558_hanley2all_iperms_manual_inject.pdf
/fb/konet/email/email_20110520_1427_jk2hankey_iperms_zos_sh.pdf
/fb/konet/email/email_20110522_1010_jk2hilgeman_iperms_status_sunday_resp.pdf
/fb/konet/email/email_20110523_0622_drb2scott_zos_perl_install_request.pdf
/fb/konet/email/email_20110523_1311_jk2jk_epm_hardcode_pw_meet.pdf
/fb/konet/email/email_20110524_1511_imm2jk_best_solution_notesb.pdf
/fb/konet/email/email_20110525_0819_jk2jk_hrc_compare_scp_esb_mvt.pdf
/fb/konet/email/email_20110525_0819_jk2mil_compare_scp_esb_mvt_plan.pdf
/fb/konet/email/email_20110601_1430_whiteheadj_surgery.pdf
/fb/konet/email/email_20110603_1429_hankey2jk_trumpet_20yrltrs_backlog.pdf
/fb/konet/email/email_20110606_0746_whiteheadj_hospital.pdf
/fb/konet/email/email_20110606_1126_chapman2all_change_of_duty_dbr_gs14.pdf
/fb/konet/email/email_20110606_1126_chapman2all_drb_change_of_duties_chief_esb.pdf
/fb/konet/email/email_20110607_0510_jk2jk_sqlite3_datemath_quickref.pdf
/fb/konet/email/email_20110615_0547_rateanalysis.pdf
/fb/konet/email/email_20110623_1121_saic2jk_itil_training.pdf
/fb/konet/email/email_20110630_0519_drb2all_networthiness_site.pdf
/fb/konet/email/email_20110817_0729_saic2all_we_contractors_resolved_lowest_level.pdf
/fb/konet/email/email_20110817_1351_lds2ko_itso_draft.pdf
/fb/konet/email/email_20110817_1524_ko2wells_rfp_iperms_generally_offhrs.pdf
/fb/konet/email/email_20110817_1632_ko2saic_240hr_iperms_req.pdf
/fb/konet/email/email_20110817_1722-wells2ko_3week-16294dolr.pdf
/fb/konet/email/email_20110817_1722_wells2ko_oy3_16294.pdf
/fb/konet/email/email_20110818_1034_iperms_ltrs_status.pdf
/fb/konet/email/email_20110818_1138_jk2easter_iperms_aors_20110810-11_injectin.pdf
/fb/konet/email/email_20110818_1223-jk2ko_ky2mo_status.pdf
/fb/konet/email/email_20110818_1223_jk2imm_iperms_esb_todo_leaving.pdf
/fb/konet/email/email_20110818_1618_ko2wells_atrisk_ok_16294_3weeks.pdf
/fb/konet/email/email_20110823_1204_jk2jk_stephen_meyer_lead_unix_admin.pdf
/fb/konet/email/email_20110828_1104_jk2jk_mike_taft_show.pdf
/fb/konet/email/email_20110828_1621_iperms_aors_vm_down.pdf
/fb/konet/email/email_20110829_0740_iperms_ltrs_plans.pdf
/fb/konet/email/email_20110829_0740_morgan2hiza_20yr_ltr_status.pdf
/fb/konet/email/email_20110829_0744_bagley_barnetth_farewell.pdf
/fb/konet/email/email_20110829_0744_drb2all_barnett_bye_los_nopales_lunch.pdf
/fb/konet/email/email_20110829_0744_drb2all_harry_barnett_luncheon.pdf
/fb/konet/email/email_20110829_0777_barnetth_farwell.pdf
/fb/konet/email/email_20110830_0818-jk2jkmil_iperms_vmstatus.pdf
/fb/konet/email/email_20110830_1256_jk2morgan_aors_vm_status_ssh_.pdf
/fb/konet/email/email_20110901_0912_jk2jk_iperms_mainframe_fears_desires.pdf
/fb/konet/email/email_20110901_0912_kohpx_vg_pl_vg2fstab.pdf
/fb/konet/email/email_20110901_1037-lanced2jk_iperms_server_observations_draft.pdf
/fb/konet/email/email_20110903_0830_imm2drb_aors_vm_restore_pending.pdf
/fb/konet/email/email_20110905_1158_ko2lds_cw110728-01_respsonse.pdf
/fb/konet/email/email_20110906_0936_ko2saic_cw11728-01_20110906_zip.pdf
/fb/konet/email/email_20110906_0936_ko2wells_konet_cw110728-01_response.pdf
/fb/konet/email/email_20110907_0852_koresp_cw11072801.pdf
/fb/konet/email/email_20110908_0825_wells_atrisk_funded_22521k.pdf
/fb/konet/email/email_20110909_1149_jk2jk_aors_ltrs_metrics_20110909.pdf
/fb/konet/email/email_20110909_1624_coresys_bac.pdf
/fb/konet/email/email_20110910_0620_imm2db2_aors_vm_resored_jk2verify.pdf
/fb/konet/email/email_20110910_1914_imm2all_thanksjosh_notify_iperms.pdf
/fb/konet/email/email_20110912_0827_jk2jk_ko_scrub_pl.pdf
/fb/konet/email/email_20110912_1058_jk2ko_talk_like_a_pirate.pdf
/fb/konet/email/email_20110912_1565_jk2morgan_iperms_connection_issues_burkje_troublkeshoot.pdf
/fb/konet/email/email_20110912_1654_jk2all_status_iperms_broken.pdf
/fb/konet/email/email_20110912_1654_jk2iperms_jk_running_injections.pdf
/fb/konet/email/email_20110915_1325-iperms2all_tim_davis.pdf
/fb/konet/email/email_20110916_1110_wells2ko_5weeks_28244k_artrisk.pdf
/fb/konet/email/email_20110921_0725_pippin2jk_corehours.pdf
/fb/konet/email/email_20110921_0726_jk_core_workhours_mods.pdf
/fb/konet/email/email_20110921_0938_stategicstaff2ko_erika_marsek.pdf
/fb/konet/email/email_20110922_0840_iperms_tim_davis_meeting_plan.pdf
/fb/konet/email/email_20110927_1259_saic2ko_saic_to_fully_honor.pdf
/fb/konet/email/email_20110927_1343_iperms2jk_change_request.pdf
/fb/konet/email/email_20110927_1343_jk2tibbals_aors_aorc_pdf.pdf
/fb/konet/email/email_20110930_0652_wells2all_not_our_intent.pdf
/fb/konet/email/email_20110930_0652_wells2ko_oy34_not_our_intent.pdf
/fb/konet/email/email_20110930_1100_trouten_saic_audit_bank.pdf
/fb/konet/email/email_20110930_1112_ko2ssg_saic_auth_finrec_req.pdf
/fb/konet/email/email_20110930_1658_atrisk.pdf
/fb/konet/email/email_20110930_1659_atrisk_5others.pdf
/fb/konet/email/email_201109_1948_lds2ko_morgan_saic_hrc_direction4comp.pdf
/fb/konet/email/email_20111003_1115_wells2all_konetsub_fully_executed.pdf
/fb/konet/email/email_20111003_1115_wells2all_oy3_award_subcontract_2011.pdf
/fb/konet/email/saic_fullyhonor.pdf
/fb/konet/imgs/Copy of saic_mod12_pii.pdf
/fb/konet/imgs/Copy of saic_mod12_pii_attatchment2.pdf
/fb/konet/imgs/Copy of saic_mod1_001.pdf
/fb/konet/imgs/Copy of saic_mod2_001.pdf
/fb/konet/imgs/Copy of saic_pii_konet.pdf
/fb/konet/imgs/konet_saic_mod10-sighed_01.pdf
/fb/konet/pages/4 Ways JavaScript Can Redirect Or Navigate To A Url Or Refresh The Page 🔀.pdf
/fb/konet/pages/Bette Davis filmography - Wikipedia.pdf
/fb/konet/pages/Multiple files upload at once with PHP.pdf
/fb/konet/pages/Multiple files upload using HTML and PHP - The Debuggers.pdf
/fb/konet/pages/SSH avoid "Connection reset by peer" - Jérémy Verda's IT Blog.pdf
/fb/konet/pages/Using window.location to Redirect to a Different URL with JavaScript | appendTo.pdf
/fb/konet/pages/Working With PHP Arrays in the Right Way.pdf
/fb/konet/pages/“Ghost Warrior” Wants Trump Assassinated—Hints It's Coming Soon.pdf
/fb/kt/dragongate_sanctuary/pdf/Dragon Gate School of Internal Arts and Healing.pdf
/fb/kt/dragongate_sanctuary/pdf/Dragon's Gate - Wikipedia.pdf
/fb/kt/dragongate_sanctuary/pdf/SIFU CHRISTOPHER MATSUO: DRAGON GATE SANCTUARY – Atlas Tea + Apothecary.pdf
/fb/kt/reeders/imgs/reeders_history_frontiernet_mgreyn.pdf
/fb/kt/reeders/reeders_history_frontiernet_mgreyn.pdf
/fb/law/imgs/county_gov_stl.pdf
/fb/law/imgs/Legalaidadmin_mo.pdf
/fb/law/imgs/Meyer_atty_il.pdf
/fb/law/trial2_hon_judge_schrader/pages/jk_restrain_donovan_pg1.pdf
/fb/law/trial2_hon_judge_schrader/pages/jk_restrain_donovan_pg2.pdf
/fb/law/trial2_hon_judge_schrader/pages/jk_restrain_donovan_pg3.pdf
/fb/law/trial2_hon_judge_schrader/pages/jk_restrain_donovan_pg6.pdf
/fb/law/trial2_hon_judge_schrader/pages/jk_restrain_donovan_pg7.pdf
/fb/law/trial2_hon_judge_schrader/pages/jkassil_case(s)_details.doc.pdf
/fb/lkonet/imgs/Konet Subcontract 4400159794 Mod 2 Executed .pdf
/fb/operation/imgs/www_healthgrades_com_physician_dr_alok_katyal_ynwtq.pdf
/fb/operation/imgs/www_slhv_com_provider_alok_katyal_md_facc.pdf
/fb/pastryroad/recipes/"Carrot Cake" from The Seaside Baker 2.pdf
/fb/pastryroad/recipes/"Carrot Cake" from The Seaside Baker.pdf
/fb/pastryroad/recipes/20140704_german_yeast_coffee_cake 2.pdf
/fb/pastryroad/recipes/20140704_german_yeast_coffee_cake.pdf
/fb/pastryroad/recipes/20140704_polish_yeast_cake_recipe 2.pdf
/fb/pastryroad/recipes/20140704_polish_yeast_cake_recipe.pdf
/fb/pastryroad/recipes/3-Ingredient Mango Margarita 2.pdf
/fb/pastryroad/recipes/3-Ingredient Mango Margarita.pdf
/fb/pastryroad/recipes/3-Layer Pistachio Cake 2.pdf
/fb/pastryroad/recipes/3-Layer Pistachio Cake.pdf
/fb/pastryroad/recipes/5-Ingredient Peach Shortcake Parfaits 2.pdf
/fb/pastryroad/recipes/5-Ingredient Peach Shortcake Parfaits.pdf
/fb/pastryroad/recipes/7 Dessert Recipes That Will Bake Away Your Leftover Egg Whites 2.pdf
/fb/pastryroad/recipes/7 Dessert Recipes That Will Bake Away Your Leftover Egg Whites.pdf
/fb/pastryroad/recipes/Adam Richman's Pulled Pork Egg Rolls 2.pdf
/fb/pastryroad/recipes/Adam Richman's Pulled Pork Egg Rolls.pdf
/fb/pastryroad/recipes/Al Roker's Broccoli, Ham and Cheddar Quiche 2.pdf
/fb/pastryroad/recipes/Al Roker's Broccoli, Ham and Cheddar Quiche.pdf
/fb/pastryroad/recipes/Al Roker's Grilled Pork Chops with Pineapple 2.pdf
/fb/pastryroad/recipes/Al Roker's Grilled Pork Chops with Pineapple 3.pdf
/fb/pastryroad/recipes/Al Roker's Grilled Pork Chops with Pineapple.pdf
/fb/pastryroad/recipes/Al Roker's Potato Salad with Lemon and Mint 2.pdf
/fb/pastryroad/recipes/Al Roker's Potato Salad with Lemon and Mint.pdf
/fb/pastryroad/recipes/Al Roker's Smoky Baked Beans with Sausage 2.pdf
/fb/pastryroad/recipes/Al Roker's Smoky Baked Beans with Sausage.pdf
/fb/pastryroad/recipes/Al Roker's Sticky Ginger Ale Ribs 2.pdf
/fb/pastryroad/recipes/Al Roker's Sticky Ginger Ale Ribs.pdf
/fb/pastryroad/recipes/Al's Lemon Vanilla Dutch Baby with Blueberry Sauce 2.pdf
/fb/pastryroad/recipes/Al's Lemon Vanilla Dutch Baby with Blueberry Sauce.pdf
/fb/pastryroad/recipes/All About Pastry Cream - Pastries Like a Pro 2.pdf
/fb/pastryroad/recipes/All About Pastry Cream - Pastries Like a Pro.pdf
/fb/pastryroad/recipes/Almond and Coconut Macaroons, Raw and Vegan Recipe | Yummly 2.pdf
/fb/pastryroad/recipes/Almond and Coconut Macaroons, Raw and Vegan Recipe | Yummly.pdf
/fb/pastryroad/recipes/Amaretto Truffle Torte - Pastries Like a Pro 2.pdf
/fb/pastryroad/recipes/Amaretto Truffle Torte - Pastries Like a Pro.pdf
/fb/pastryroad/recipes/American Pie Crust Tutorial - Pastries Like a Pro 2.pdf
/fb/pastryroad/recipes/American Pie Crust Tutorial - Pastries Like a Pro.pdf
/fb/pastryroad/recipes/Another Take on Quiche. And the Race I didn't run. 2.pdf
/fb/pastryroad/recipes/Another Take on Quiche. And the Race I didn't run..pdf
/fb/pastryroad/recipes/Anti-Inflammatory Berry, Watermelon, and Ginger Smoothie Recipe | Yummly 2.pdf
/fb/pastryroad/recipes/Anti-Inflammatory Berry, Watermelon, and Ginger Smoothie Recipe | Yummly.pdf
/fb/pastryroad/recipes/Apple Cider Doughnuts Recipe _ Tastebook Blog_todayshow 2.pdf
/fb/pastryroad/recipes/Apple Cider Doughnuts Recipe _ Tastebook Blog_todayshow.pdf
/fb/pastryroad/recipes/Austro-Hungarian Hazelnut Cream Torte Recipe 2.pdf
/fb/pastryroad/recipes/Austro-Hungarian Hazelnut Cream Torte Recipe.pdf
/fb/pastryroad/recipes/Authentic Chinese Egg Rolls (from a Chinese person) - Printer Friendly - Allrecipes.com 2.pdf
/fb/pastryroad/recipes/Authentic Chinese Egg Rolls (from a Chinese person) - Printer Friendly - Allrecipes.com.pdf
/fb/pastryroad/recipes/Bake Day.... Cream cheese babka and sourdough 2.pdf
/fb/pastryroad/recipes/Bake Day.... Cream cheese babka and sourdough.pdf
/fb/pastryroad/recipes/Baked Sweet Hawaiian Chicken 2.pdf
/fb/pastryroad/recipes/Baked Sweet Hawaiian Chicken _ The Recipe Critic 2.pdf
/fb/pastryroad/recipes/Baked Sweet Hawaiian Chicken _ The Recipe Critic.pdf
/fb/pastryroad/recipes/Baked Sweet Hawaiian Chicken.pdf
/fb/pastryroad/recipes/Baking Powder Biscuits _ James Beard Foundation 2.pdf
/fb/pastryroad/recipes/Baking Powder Biscuits _ James Beard Foundation.pdf
/fb/pastryroad/recipes/Baking Powder vs. Baking Soda, When and Where to Use Which 2.pdf
/fb/pastryroad/recipes/Baking Powder vs. Baking Soda, When and Where to Use Which.pdf
/fb/pastryroad/recipes/Baklava - Phyllo at its Finest 2.pdf
/fb/pastryroad/recipes/Baklava - Phyllo at its Finest.pdf
/fb/pastryroad/recipes/Banana Pudding 2.pdf
/fb/pastryroad/recipes/Banana Pudding Cupcakes - Printer Friendly - Allrecipes.com 2.pdf
/fb/pastryroad/recipes/Banana Pudding Cupcakes - Printer Friendly - Allrecipes.com.pdf
/fb/pastryroad/recipes/Banana Pudding.pdf
/fb/pastryroad/recipes/Basic Croissant_Dough_Recipe 2.pdf
/fb/pastryroad/recipes/Basic Croissant_Dough_Recipe.pdf
/fb/pastryroad/recipes/Basic_Croissants_1 2.pdf
/fb/pastryroad/recipes/Basic_Croissants_1.pdf
/fb/pastryroad/recipes/Beatty's Chocolate Cake Recipe _ Ina Garten _ Food Network 2.pdf
/fb/pastryroad/recipes/Beatty's Chocolate Cake Recipe _ Ina Garten _ Food Network.pdf
/fb/pastryroad/recipes/Beignets 2.pdf
/fb/pastryroad/recipes/Beignets.pdf
/fb/pastryroad/recipes/Best Ever Blondies With Chocolate Chips and a Shortbread Crust 2.pdf
/fb/pastryroad/recipes/Best Ever Blondies With Chocolate Chips and a Shortbread Crust.pdf
/fb/pastryroad/recipes/Best Ever No-Cook Play Dough Recipe! - The Imagination Tree 2.pdf
/fb/pastryroad/recipes/Best Ever No-Cook Play Dough Recipe! - The Imagination Tree.pdf
/fb/pastryroad/recipes/Black Bean Burger with Sweet Hoisin Glaze 2.pdf
/fb/pastryroad/recipes/Black Bean Burger with Sweet Hoisin Glaze.pdf
/fb/pastryroad/recipes/Blondie Ice Cream Cake 2.pdf
/fb/pastryroad/recipes/Blondie Ice Cream Cake.pdf
/fb/pastryroad/recipes/Blueberry Banana Zucchini Bread - Made To Be A Momma 2.pdf
/fb/pastryroad/recipes/Blueberry Banana Zucchini Bread - Made To Be A Momma.pdf
/fb/pastryroad/recipes/Bourbon Balls Recipe - Joyofbaking 2.pdf
/fb/pastryroad/recipes/Bourbon Balls Recipe - Joyofbaking.pdf
/fb/pastryroad/recipes/Buffalo Cauliflower Lettuce Wraps [Vegan, Gluten-Free] Recipe | Yummly 2.pdf
/fb/pastryroad/recipes/Buffalo Cauliflower Lettuce Wraps [Vegan, Gluten-Free] Recipe | Yummly.pdf
/fb/pastryroad/recipes/Buffalo Cauliflower Lettuce Wraps Recipe | Yummly 2.pdf
/fb/pastryroad/recipes/Buffalo Cauliflower Lettuce Wraps Recipe | Yummly.pdf
/fb/pastryroad/recipes/Buffalo Cauliflower Recipe | Yummly 2.pdf
/fb/pastryroad/recipes/Buffalo Cauliflower Recipe | Yummly.pdf
/fb/pastryroad/recipes/Buffalo Cauliflower with Blue Cheese Sauce Recipe : Food Network Kitchen : Food Network 2.pdf
/fb/pastryroad/recipes/Buffalo Cauliflower with Blue Cheese Sauce Recipe : Food Network Kitchen : Food Network.pdf
/fb/pastryroad/recipes/Buffalo Cauliflower Wraps Recipe | Yummly 2.pdf
/fb/pastryroad/recipes/Buffalo Cauliflower Wraps Recipe | Yummly.pdf
/fb/pastryroad/recipes/Buttery Shortbread Cookie Recipe 2.pdf
/fb/pastryroad/recipes/Buttery Shortbread Cookie Recipe.pdf
/fb/pastryroad/recipes/Cake Batter Ice Cream Recipe - Food.com 2 2.pdf
/fb/pastryroad/recipes/Cake Batter Ice Cream Recipe - Food.com 2.pdf
/fb/pastryroad/recipes/Cake Batter Ice Cream Recipe - Food.com.pdf
/fb/pastryroad/recipes/California Walnut Macaroons Recipe - California Walnuts 2.pdf
/fb/pastryroad/recipes/California Walnut Macaroons Recipe - California Walnuts.pdf
/fb/pastryroad/recipes/Cauliflower Fried Rice 2.pdf
/fb/pastryroad/recipes/Cauliflower Fried Rice.pdf
/fb/pastryroad/recipes/Cauliflower Hummus 2.pdf
/fb/pastryroad/recipes/Cauliflower Hummus.pdf
/fb/pastryroad/recipes/Cauliflower Mac and Cheese 2.pdf
/fb/pastryroad/recipes/Cauliflower Mac and Cheese.pdf
/fb/pastryroad/recipes/Cheddar Bacon Chicken Tenders recipe from Pillsbury 2.pdf
/fb/pastryroad/recipes/Cheddar Bacon Chicken Tenders recipe from Pillsbury.pdf
/fb/pastryroad/recipes/Chef John's Pita Bread - Printer Friendly - Allrecipes.com 2.pdf
/fb/pastryroad/recipes/Chef John's Pita Bread - Printer Friendly - Allrecipes.com.pdf
/fb/pastryroad/recipes/Chicken and Dumplings - TODAY 2.pdf
/fb/pastryroad/recipes/Chicken and Dumplings - TODAY.pdf
/fb/pastryroad/recipes/Chicken, Scallop and Steak Skewers with Yakitori Sauce 2.pdf
/fb/pastryroad/recipes/Chicken, Scallop and Steak Skewers with Yakitori Sauce.pdf
/fb/pastryroad/recipes/Chipotle’s Cilantro Lime Rice | Skinnytaste 2.pdf
/fb/pastryroad/recipes/Chipotle’s Cilantro Lime Rice | Skinnytaste.pdf
/fb/pastryroad/recipes/Chocolate Buckeyes 2.pdf
/fb/pastryroad/recipes/Chocolate Buckeyes.pdf
/fb/pastryroad/recipes/Chocolate Cake - Pastries Like a Pro 2.pdf
/fb/pastryroad/recipes/Chocolate Cake - Pastries Like a Pro.pdf
/fb/pastryroad/recipes/Chocolate Chip Cookie Ice Cream Bars 2.pdf
/fb/pastryroad/recipes/Chocolate Chip Cookie Ice Cream Bars.pdf
/fb/pastryroad/recipes/Chocolate Chocolate Truffles - Pastries Like a Pro 2.pdf
/fb/pastryroad/recipes/Chocolate Chocolate Truffles - Pastries Like a Pro.pdf
/fb/pastryroad/recipes/Chocolate Raspberry Marzipan Gateau - Pastries Like a Pro 2.pdf
/fb/pastryroad/recipes/Chocolate Raspberry Marzipan Gateau - Pastries Like a Pro.pdf
/fb/pastryroad/recipes/Chocolate Strawberry Mousse Torte - Pastries Like a Pro 2.pdf
/fb/pastryroad/recipes/Chocolate Strawberry Mousse Torte - Pastries Like a Pro.pdf
/fb/pastryroad/recipes/Chocolate Strawberry Ruffle Cake - Pastries Like a Pro 2.pdf
/fb/pastryroad/recipes/Chocolate Strawberry Ruffle Cake - Pastries Like a Pro.pdf
/fb/pastryroad/recipes/Chocolate-Orange Cake Pops Recipe : Giada De Laurentiis : Food Network 2.pdf
/fb/pastryroad/recipes/Chocolate-Orange Cake Pops Recipe : Giada De Laurentiis : Food Network.pdf
/fb/pastryroad/recipes/Chocolate-Orange Cupcakes with Pistachio Buttercream - Printer Friendly - Allrecipes.com 2.pdf
/fb/pastryroad/recipes/Chocolate-Orange Cupcakes with Pistachio Buttercream - Printer Friendly - Allrecipes.com.pdf
/fb/pastryroad/recipes/Classic Butter Shortbread Recipe 2.pdf
/fb/pastryroad/recipes/Classic Butter Shortbread Recipe.pdf
/fb/pastryroad/recipes/Classic Chicken and Dumplings Recipe _ Real Simple 2.pdf
/fb/pastryroad/recipes/Classic Chicken and Dumplings Recipe _ Real Simple.pdf
/fb/pastryroad/recipes/Classic Kentucky Bourbon Balls Recipe 2.pdf
/fb/pastryroad/recipes/Classic Kentucky Bourbon Balls Recipe.pdf
/fb/pastryroad/recipes/Classic Snickerdoodle Recipe 2.pdf
/fb/pastryroad/recipes/Classic Snickerdoodle Recipe.pdf
/fb/pastryroad/recipes/Coconut Macaroons German Style - Printer Friendly - Allrecipes.com 2.pdf
/fb/pastryroad/recipes/Coconut Macaroons German Style - Printer Friendly - Allrecipes.com.pdf
/fb/pastryroad/recipes/Coconut Milk Ice Cream Recipe - Food.com 2.pdf
/fb/pastryroad/recipes/Coconut Milk Ice Cream Recipe - Food.com.pdf
/fb/pastryroad/recipes/Coconut Rice 2.pdf
/fb/pastryroad/recipes/Coconut Rice.pdf
/fb/pastryroad/recipes/Coconut-Pineapple Loaf Cake 2.pdf
/fb/pastryroad/recipes/Coconut-Pineapple Loaf Cake 3.pdf
/fb/pastryroad/recipes/Coconut-Pineapple Loaf Cake.pdf
/fb/pastryroad/recipes/Coffee Ice Cream Recipe - Food.com 2.pdf
/fb/pastryroad/recipes/Coffee Ice Cream Recipe - Food.com.pdf
/fb/pastryroad/recipes/Copy of creamed_cabbage_recipe 2.pdf
/fb/pastryroad/recipes/Copy of creamed_cabbage_recipe.pdf
/fb/pastryroad/recipes/Copy of polish_sour_cream_cabbage_recipe 2.pdf
/fb/pastryroad/recipes/Copy of polish_sour_cream_cabbage_recipe.pdf
/fb/pastryroad/recipes/Copy of sour_cream_cabbage_recipe 2.pdf
/fb/pastryroad/recipes/Copy of sour_cream_cabbage_recipe.pdf
/fb/pastryroad/recipes/Copy of sushi_rice 2.pdf
/fb/pastryroad/recipes/Copy of sushi_rice.pdf
/fb/pastryroad/recipes/Copycat Cinnabon Stix 2.pdf
/fb/pastryroad/recipes/Copycat Cinnabon Stix.pdf
/fb/pastryroad/recipes/Copycat Red Lobster Cheddar Bay Biscuits 2.pdf
/fb/pastryroad/recipes/Copycat Red Lobster Cheddar Bay Biscuits.pdf
/fb/pastryroad/recipes/Copycat Texas Roadhouse Rolls 2.pdf
/fb/pastryroad/recipes/Copycat Texas Roadhouse Rolls.pdf
/fb/pastryroad/recipes/Cranberry Bread with Cranberry Butter 2.pdf
/fb/pastryroad/recipes/Cranberry Bread with Cranberry Butter.pdf
/fb/pastryroad/recipes/Cream Filled Cupcakes - Printer Friendly - Allrecipes.com 2.pdf
/fb/pastryroad/recipes/Cream Filled Cupcakes - Printer Friendly - Allrecipes.com.pdf
/fb/pastryroad/recipes/Creamy White Chili Recipe _ Taste of Home 2.pdf
/fb/pastryroad/recipes/Creamy White Chili Recipe _ Taste of Home.pdf
/fb/pastryroad/recipes/Creme Filling I - Printer Friendly - Allrecipes.com 2.pdf
/fb/pastryroad/recipes/Creme Filling I - Printer Friendly - Allrecipes.com.pdf
/fb/redeclaration_of_independence/imgs/A Planetary Nebula Pair - NASA Spitzer Space Telescope.pdf
/fb/redeclaration_of_independence/imgs/animation design GIF - Find & Share on GIPHY.pdf
/fb/redeclaration_of_independence/imgs/Nebula Photos - Hubble, Chandra, Spitzer Picture archives.pdf
/fb/skwii/android/Download/06smg-1-6p_Intro.pdf
/fb/skwii/android/Download/cabin_menu_dinner-1.pdf
/fb/skwii/android/Download/cabin_menu_dinner.pdf
/fb/skwii/android/Download/free_information_2016_web2.pdf
/fb/ssstl/imgs/www_healthgrades_com_physician_dr_alok_katyal_ynwtq.pdf
/fb/ssstl/imgs/www_slhv_com_provider_alok_katyal_md_facc.pdf
/fb/turnjs4-api-docs.pdf
/fb/us/kdar/pdf/100MC_Assembly_Instructions_May_2012.pdf
/fb/us/kdar/pdf/125WFG_Manual_Rev_2_06292011.pdf
/fb/us/kdar/pdf/135WFG_Manual_Rev_4_06292011.pdf
/fb/us/kdar/pdf/175WFG_Manual_Rev_4_06292011.pdf
/fb/us/kdar/pdf/2012_Device_Chart_Grid_090424.pdf
/fb/us/kdar/pdf/2012_Hot_Max_Full_Line_Catalog_Standard_Res.pdf
/fb/us/kdar/pdf/23000_Anti_Spatter_MSDS.pdf
/fb/us/kdar/pdf/23108_Aluminum_MIG_Wire_MSDS.pdf
/fb/us/kdar/pdf/23109_Stainless_Steel_MIG_Wire_MSDS.pdf
/fb/us/kdar/pdf/23110_Nozzle_Gel_MSDS.pdf
/fb/us/kdar/pdf/24008_Aluminum_Brazing_Rods_MSDS.pdf
/fb/us/kdar/pdf/24163_Soft_Silver_Solder_MSDS.pdf
/fb/us/kdar/pdf/24171_Solder_Paste_MSDS.pdf
/fb/us/kdar/pdf/27000_Spray_Galv_MSDS.pdf
/fb/us/kdar/pdf/AC300_ARC_Welder_Manual_May_2012.pdf
/fb/us/kdar/pdf/AFA_AFP_Owners_Manual_Rev_May_2012.pdf
/fb/us/kdar/pdf/Aluminum_E4043_ARC_Electrodes_MSDS.pdf
/fb/us/kdar/pdf/ANSI_Z49.1-2005.pdf
/fb/us/kdar/pdf/ARC100_Manual.pdf
/fb/us/kdar/pdf/ARC100_Welder_Manual_May_2012.pdf
/fb/us/kdar/pdf/Arc200_Welder_Manual_May_2012.pdf
/fb/us/kdar/pdf/Bronze_Alloy_Brazing_Rods_MSDS.pdf
/fb/us/kdar/pdf/HM2000_Manual.pdf
/fb/us/kdar/pdf/HM3500_Manual.pdf
/fb/us/kdar/pdf/HM6500_Manual.pdf
/fb/us/kdar/pdf/HM8000_Manual.pdf
/fb/us/kdar/pdf/Hot_Max_Product_Registration.pdf
/fb/us/kdar/pdf/HTK-MD_Manual.pdf
/fb/us/kdar/pdf/Lead_Free_Solder_MSDS.pdf
/fb/us/kdar/pdf/Mild_Steel_Brazing_Rods_MSDS.pdf
/fb/us/kdar/pdf/MM-1_Mobile_Max_Owners_Manual_May_2012.pdf
/fb/us/kdar/pdf/Nickel_Alloy_ARC_Electrodes_MSDS.pdf
/fb/us/kdar/pdf/PL-25_Operators_Manual_May_2012.pdf
/fb/us/kdar/pdf/PL-40_Operators_Manual_May_2012.pdf
/fb/us/kdar/pdf/PW2000_Manual.pdf
/fb/us/kdar/pdf/PW3000_Manual.pdf
/fb/us/kdar/pdf/PW3600_Manual.pdf
/fb/us/kdar/pdf/Rosin_Flux_Core_MSDS.pdf
/fb/us/kdar/pdf/Solid_Wire_Solder_MSDS.pdf
/fb/us/kdar/pdf/SPG_Manual.pdf
/fb/us/kdar/pdf/VTK-HD-A_Manual.pdf
/fb/us/kdar/pdf/VTK-HD-B_Manual.pdf
/fb/us/kdar/pdf/VTK-MD_Manual.pdf
/fb/us/kdar/pdf/WP201-30-40 Manual.pdf
/fb/us/kdar/pdf/WP30TP_Rev1_07-05-2011.pdf
/fb/zpid/pdf/www_healthgrades_com_physician_dr_richard_gestring_gfg9n.pdf
/fb/zpid/pdf/www_zillow_com_colorado_springs_co_searchQueryState_7B_22pag.pdf
/fb/zpid/pdf/www_zillow_com_homedetails_3620_Saddle_Rock_Ct_Colorado_Spri.pdf
/fb/zpid/pdf/www_zillow_com_homedetails_4420_Cobbleskill_Dr_Colorado_Spri.pdf
/fb/zpid/pdf/www_zillow_com_homedetails_4650_Bradford_Hts_Colorado_Spring.pdf
/fb/zpid/pdf/www_zillow_com_homedetails_524_Silver_Oak_Grv_Colorado_Sprin.pdf
/fb/zpid/pdf/www_zillow_com_homedetails_5290_Lanagan_St_Colorado_Springs_.pdf
/fb/zpid/pdf/www_zillow_com_homedetails_7164_Oak_Valley_Dr_Colorado_Sprin.pdf
/fonts/264632-ff-yokkmokk-ot/documentation/FontFont Installation Guides.pdf
/fonts/264632-ff-yokkmokk-ot/documentation/YakkmakkOT-InfoGuide.pdf
/fonts/264632-ff-yokkmokk-ot/documentation/YakkmakkOT-SpecSheet.pdf
/fonts/264632-ff-yokkmokk-ot/documentation/YokkmokkOT-InfoGuide.pdf
/fonts/264632-ff-yokkmokk-ot/documentation/YokkmokkOT-SpecSheet.pdf
/fonts/264632-ff-yokkmokk-ot/Free FontFont EULA.pdf
/fonts/Barcode Software - Barcode Resource.pdf
/fonts/BarcodeBrochure.pdf
/fonts/Code 39 Barcode Fonts.pdf
/fonts/FF_OT_User_Guide.pdf
/fonts/HTML Slideshow.pdf
/fonts/Label printing with Javascript and PDF.pdf
/gm/ur/en_wikipedia_org_wiki_Game_pieces_of_the_Lewis_chessmen_hoar.pdf
/gm/ur/en_wikipedia_org_wiki_Irving_Finkel.pdf
/gm/ur/en_wikipedia_org_wiki_Royal_Game_of_Ur.pdf
/gm/ur/van Binsbergen 1997.pdf
/gm/ur/www_ancientgames_org_royal_game_ur_game_20_squares.pdf
/gm/ur/www_mastersofgames_com_rules_royal_ur_rules_htm.pdf
/go/dgs/pdf/mountain lion - How do I change the "primary group" for an existing user? - Ask Different.pdf
/go/dgs/pdf/New Dragon Go Server desktop client - DGS Electric : baduk.pdf
/h5/b64/imgs/btn/calendar.pdf
/h5/b64/imgs/btn2/calendar.pdf
/heart/heart_faiths/Buddhism - Wikipedia.pdf
/heart/heart_faiths/Easter Bunny - Wikipedia.pdf
/heart/heart_faiths/Eastern Orthodox Church - Wikipedia.pdf
/heart/heart_faiths/Hinduism - Wikipedia.pdf
/heart/heart_faiths/Islam - Wikipedia.pdf
/heart/heart_faiths/Passover - Wikipedia.pdf
/imgs/julius_mocsari_001.pdf
/imgs/links/BDO_SSG.pdf
/imgs/links/BDO_USA_Announces_Major_Midwest_Expansion_Through_Addition_of_SSG..pdf
/imgs/links/byrdpucker/About - Pucker and Pout.pdf
/imgs/links/byrdpucker/Barney Miller Max Gail Darlene Parks original 7x9 Photo M7054 at Amazon's Entertainment Collectibles Store.pdf
/imgs/links/byrdpucker/Bonnie Franklin - Wikipedia.pdf
/imgs/links/byrdpucker/Chicken - Wikipedia.pdf
/imgs/links/byrdpucker/Dale Evans - Wikipedia.pdf
/imgs/links/byrdpucker/Flicka - Wikipedia.pdf
/imgs/links/byrdpucker/Hot in Cleveland - Wikipedia.pdf
/imgs/links/byrdpucker/Lassie - Wikipedia.pdf
/imgs/links/byrdpucker/Principia Discordia - Wikipedia.pdf
/imgs/links/byrdpucker/pucker - Dictionary Definition : Vocabulary.com.pdf
/imgs/links/byrdpucker/Rin Tin Tin - Wikipedia.pdf
/imgs/links/byrdpucker/Roy Rogers - Wikipedia.pdf
/imgs/links/byrdpucker/Strands of Volcanic Glass Called ‘Pele’s Hair’ Rain Down on Hawaii Residents - Motherboard.pdf
/imgs/links/byrdpucker/The 5,000-year-old Pyramid City of Caral | Ancient Origins.pdf
/imgs/links/byrdpucker/Trigger (horse) - Wikipedia.pdf

/imgs/pdf_jk_ts_20120411_001/jk_ts_20120411_001.pdf
/imgs/pdf_jk_ts_20120411_001/jk_ts_20120411_002.pdf
/imgs/pdf_jk_ts_20120411_001/jk_ts_20120411_003.pdf
/imgs/pdf_jk_ts_20120411_001/jk_ts_20120411_004.pdf
/imgs/pdf_jk_ts_20120411_001/jk_ts_20120411_005.pdf
/imgs/pdf_jk_ts_20120411_001/jk_ts_20120411_006.pdf
/imgs/pdf_jk_ts_20120411_001/jk_ts_20120411_007.pdf
/imgs/pdf_jk_ts_20120411_001/jk_ts_20120411_008.pdf
/imgs/pdf_jk_ts_20120411_001/jk_ts_20120411_009.pdf
/imgs/pdf_jk_ts_20120411_001/jk_ts_20120411_010.pdf
/imgs/pdf_jk_ts_20120411_001/jk_ts_20120411_011.pdf
/imgs/pdf_jk_ts_20120411_001/jk_ts_20120411_012.pdf
/imgs/pdf_jk_ts_20120411_001/jk_ts_20120411_013.pdf
/imgs/pdf_jk_ts_20120411_001/jk_ts_20120411_014.pdf
/imgs/pdf_jk_ts_20120411_001/jk_ts_20120411_015.pdf
/imgs/pdf_jk_ts_20120411_001/jk_ts_20120411_016.pdf
/imgs/pdf_jk_ts_20120411_001/jk_ts_20120411_017.pdf
/imgs/pdf_saic_mod1_001/saic_mod12_pii.pdf
/imgs/pdf_saic_mod1_001/saic_mod12_pii_attatchment2.pdf
/imgs/pdf_saic_mod1_001/saic_mod1_001.pdf
/imgs/pdf_saic_mod1_001/saic_mod2_001.pdf
/imgs/pdf_saic_mod1_001/saic_pii_konet.pdf
/imgs/scan/jk_ts_20120411_001.pdf
/imgs/scan/jk_ts_20120411_002.pdf
/imgs/scan/jk_ts_20120411_003.pdf
/imgs/scan/jk_ts_20120411_004.pdf
/imgs/scan/jk_ts_20120411_005.pdf
/imgs/scan/jk_ts_20120411_006.pdf
/imgs/scan/jk_ts_20120411_007.pdf
/imgs/scan/jk_ts_20120411_008.pdf
/imgs/scan/jk_ts_20120411_009.pdf
/imgs/scan/jk_ts_20120411_010.pdf
/imgs/scan/jk_ts_20120411_011.pdf
/imgs/scan/jk_ts_20120411_012.pdf
/imgs/scan/jk_ts_20120411_013.pdf
/imgs/scan/jk_ts_20120411_014.pdf
/imgs/scan/jk_ts_20120411_015.pdf
/imgs/scan/jk_ts_20120411_016.pdf
/imgs/scan/jk_ts_20120411_017.pdf
/imgs/scan/saic_mod12_pii.pdf
/imgs/scan/saic_mod12_pii_attatchment2.pdf
/imgs/scan/saic_mod1_001.pdf
/imgs/scan/saic_mod2_001.pdf
/imgs/scan/saic_pii_konet.pdf
/iperms/gm/ur/en_wikipedia_org_wiki_Game_pieces_of_the_Lewis_chessmen_hoar.pdf
/iperms/gm/ur/en_wikipedia_org_wiki_Irving_Finkel.pdf
/iperms/gm/ur/en_wikipedia_org_wiki_Royal_Game_of_Ur.pdf
/iperms/gm/ur/van Binsbergen 1997.pdf
/iperms/gm/ur/www_ancientgames_org_royal_game_ur_game_20_squares.pdf
/iperms/gm/ur/www_mastersofgames_com_rules_royal_ur_rules_htm.pdf
/iperms/iperms.pdf
/iperms/iperms_cdr.pdf
/iperms/tl/examples/gao.pdf
/iperms/tl/htm/gao.pdf
/jkwii/pdf_20170430/Images of Asteroid and Comets.pdf
/jkwii/pdf_20170430/Images of Mercury.pdf
/jkwii/pdf_20170430/Images of Mercury900.pdf
/jkwii/pdf_20170430/Images of Neptune and All Available Satellites.pdf
/jkwii/pdf_20170430/Images of Venus.pdf
/jtfdc/kb/court/pdf/archcitydefenders_app_pg2.pdf
/jtfdc/kb/court/pdf/call_summary_29jamestown.pdf
/jtfdc/kb/court/pdf/call_summary_jamestown_pg1.pdf
/jtfdc/kb/court/pdf/call_summary_jamestown_pg2.pdf
/jtfdc/kb/court/pdf/call_summary_jamestown_pg3.pdf
/jtfdc/kb/court/pdf/cohen_15403521_15445941_comb_151203.pdf
/jtfdc/kb/court/pdf/cohen_15403521_15445941_cont_160121.pdf
/jtfdc/kb/court/pdf/cohen_15403521_continued_151203.pdf
/jtfdc/kb/court/pdf/cohen_affidavit_records_151030.pdf
/jtfdc/kb/court/pdf/incrpt_1530736_citincident_150526_pg1.pdf
/jtfdc/kb/court/pdf/incrpt_1530736_citincident_150526_pg2.pdf
/jtfdc/kb/court/pdf/incrpt_1530736_citincident_150526_pg3.pdf
/jtfdc/kb/court/pdf/incrpt_1530736_citincident_150526_pg4.pdf
/jtfdc/kb/court/pdf/incrpt_1530736_citincident_150526_pg5.pdf
/jtfdc/kb/court/pdf/incrpt_1530736_citincident_150526_pg6.pdf
/jtfdc/kb/court/pdf/incrpt_1530736_citincident_150526_pg7.pdf
/jtfdc/kb/court/pdf/incrpt_1530736_citincident_150526_pg8.pdf
/jtfdc/kb/court/pdf/incrpt_1540352_martin_150716_pg1.pdf
/jtfdc/kb/court/pdf/incrpt_1540352_martin_150716_pg2.pdf
/jtfdc/kb/court/pdf/incrpt_1540352_martin_150716_pg3.pdf
/jtfdc/kb/court/pdf/incrpt_1544594_gardner_150807_pg1.pdf
/jtfdc/kb/court/pdf/incrpt_1544594_gardner_150807_pg2.pdf
/jtfdc/kb/court/pdf/incrpt_1552246_gardner_150919_pg1.pdf
/jtfdc/kb/court/pdf/incrpt_1552246_gardner_150919_pg2.pdf
/jtfdc/kb/court/pdf/incrpt_1552246_supplement1_gardner_150919_pg1.pdf
/jtfdc/kb/court/pdf/incrpt_1552326_gardner_150919_pg1.pdf
/jtfdc/kb/court/pdf/incrpt_1552326_gardner_150919_pg2.pdf
/jtfdc/kb/court/pdf/incrpt_1553710_martin_150928_pg1.pdf
/jtfdc/kb/court/pdf/incrpt_1553710_martin_150928_pg2.pdf
/jtfdc/kb/court/pdf/incrpt_1558386_gardner_151023_pg1.pdf
/jtfdc/kb/court/pdf/incrpt_1558386_gardner_151023_pg2.pdf
/jtfdc/kb/court/pdf/incrpt_descriptions_pg1.pdf
/jtfdc/kb/court/pdf/incrpt_descriptions_pg2.pdf
/jtfdc/kb/court/pdf/incrpt_descriptions_pg3.pdf
/jtfdc/kb/court/pdf/incrpt_descriptions_pg4.pdf
/jtfdc/kb/court/pdf/summons_15445941_gardner_pg1.pdf
/jtfdc/kb/court/pdf/summons_15445941_gardner_pg2.pdf
/jtfdc/kb/court/pdf/summons_15445941_gardner_pg3.pdf
/jtfdc/kb/court/pdf/summons_15445941_gardner_pg4.pdf
/jtfdc/kb/lawyers/county_gov_stl.pdf
/jtfdc/kb/lawyers/Legalaidadmin_mo.pdf
/jtfdc/kb/lawyers/Meyer_atty_il.pdf
/jtfdc/kb/restraining/jpg_20159818_0715/contact_sheet_20150904c.pdf
/jtfdc/kb/restraining/jpg_20159818_0715/contact_sheet_20150904d.pdf
/jtfdc/kb/restraining/jpg_20159818_0715/test.pdf
/ka2/tl/htm/gao.pdf
/kb/dta/pdf/bitcoin_getting_started.pdf
/kb/dta/pdf/bitcoin_mining_software_bitcoinx.pdf
/kb/dta/pdf/China's Drone Program Appears To Be Moving Into Overdrive.pdf
/kb/dta/pdf/chinese_hackers_resume_attacks_on_u.s._targets-nytimes.pdf
/kb/dta/pdf/choose_your_wallet-bitcoin.pdf
/kb/dta/pdf/colorado_legislator_wants_to_treat_‘high_times’_magazine_like_porn_the_raw_story.pdf
/kb/dta/pdf/comparison_of_mining_pools-bitcoin.pdf
/kb/dta/pdf/computer_fraud_and_abuse_act-wikipedia,_the_free_encyclopedia.pdf
/kb/dta/pdf/contact_us-govconalert_llc.pdf
/kb/dta/pdf/cross-platform_3d_game_engine_with_all-in-one_visual_editor.pdf
/kb/dta/pdf/digital_currency-wikipedia,_the_free_encyclopedia.pdf
/kb/dta/pdf/dutch_coffee_shops_in_‘open_revolt’_of_ban_on_selling_cannabis_to_foreigners_the_raw_story.pdf
/kb/dta/pdf/dutchman_arrested_for_‘biggest_ever’_cyberattack_that_slowed_down_the_internet_the_raw_story.pdf
/kb/dta/pdf/force_engineering_ltd_linear_induction_motor_control.pdf
/kb/dta/pdf/force_engineering_ltd_linear_induction_motor_options.pdf
/kb/dta/pdf/force_engineering_ltd_recommended_reading.pdf
/kb/dta/pdf/foreign_investors_snap_up_cheap_homes_in_deserted_sicily_villages_the_raw_story.pdf
/kb/dta/pdf/game_creation_resources.pdf
/kb/dta/pdf/gamestudio_video_game_designer_studio_game_magazine_for_developers.pdf
/kb/dta/pdf/google_glass_apps_show_off_what_headset_can_really_do-tech-22_may_2013-new_scientist.pdf
/kb/dta/pdf/google_glass_has_already_been_hacked_by_jailbreakers-forbes.pdf
/kb/dta/pdf/Haaretz.pdf
/kb/dta/pdf/hemp_poll_finds_majority_favors_legalization.pdf
/kb/dta/pdf/himalayan_components_inc.pdf
/kb/dta/pdf/how_to_stream_video_to_an_ipad_or_iphone_using_vlc_streamer_reviews_cnet_uk.pdf
/kb/dta/pdf/html5-building_apps_with_html5_what_you_need_to_know.pdf
/kb/dta/pdf/hydropower_megaproject_to_dam_river_congo-tech-23_may_2013-new_scientist.pdf
/kb/dta/pdf/irs_bolo_tax_exempt_appications_review.pdf
/kb/dta/pdf/itch_protein_may_hold_key_to_cure_for_skin_conditions-health-23_may_2013-new_scientist.pdf
/kb/dta/pdf/quantum_clones_let_hackers_hide_in_background_noise-tech-03_may_2013-new_scientist.pdf
/kb/dta/pdf/quantum_magnetism_observed_for_first_time,_physicists_say.pdf
/kb/dta/pdf/realmyst_walkthrough,_guide,_tips_big_fish.pdf
/kb/dta/pdf/reese_witherspoon_argues_with_cop_in_arrest_tape_video.pdf
/kb/dta/pdf/researchers_to_recreate_world’s_first_website_after_20_years_the_raw_story.pdf
/kb/dta/pdf/Right_Way_Do_Wrong_1110.pdf
/kb/dta/pdf/riven_complete_walkthrough-mystjourney.pdf
/kb/dta/pdf/riven_for_ipad_for_ipad_on_the_itunes_app_store.pdf
/kb/dta/pdf/riven_game_walkthrough.pdf
/kb/dta/pdf/riven_the_sequel_to_myst_for_iphone,_ipod_touch,_and_ipad_on_the_itunes_app_store.pdf
/kb/dta/pdf/riven_walkthrough.pdf
/kb/dta/pdf/robot_discovers_ancient_burial_chambers_in_mexico_the_raw_story.pdf
/kb/dta/pdf/rubbery_robot_snake_is_a_slithering_mimic-tech-30_april_2013-new_scientist.pdf
/kb/dta/pdf/Vintage Apple-1 Sells for Record $671,400 - NYTimes.pdf
/kb/dta/pdf/vintage_typewriters_find_new_life_in_hands_of_writers,_actors_and_old_repairmen_the_raw_story.pdf
/kb/dta/pdf/vtg_silex_pyrex_glass_stove_top_glass_vacuum_coffee_pot_maker_percolator_ebay.pdf
/kb/fonts/BarcodeBrochure.pdf
/kb/fonts/code_39_barcode_fonts.pdf
/kb/fonts/FF_OT_User_Guide.pdf
/kb/memes/a_barr_christmas_story/barr_theme_201806_doj_obstruction.pdf
/kb/memes/a_barr_christmas_story/Internet-Research-Agency-Indictment.pdf
/kb/pdf/pdf_20190126/dmo_20190125_2400_Couple_reveal_how_van_life_isnt_always_glamorous.pdf
/kb/pdf/pdf_20190126/dmo_20190125_2400_cuban_ghosttown_chocolate_baron_milton_hershey.pdf
/kb/pdf/pdf_20190126/dmo_20190125_2400_google_ai_beats_professional_players_at_deepmind_starcraftii.pdf
/kb/pdf/pdf_20190126/dmo_20190125_2400_hubble_lostlight_image-deepest_ever_view_universe.pdf
/kb/recipes/almond_pastry_cream_recipe.pdf
/kb/recipes/alphabet_chart.pdf
/kb/recipes/apple_cider_doughnuts_recipe_tastebook_blog_todayshow.pdf
/kb/recipes/asian_grilled_ribs_todayshow.pdf
/kb/recipes/bacon_noodle_recipe.pdf
/kb/recipes/bake_day...._cream_cheese_babka_and_sourdough.pdf
/kb/recipes/baking_powder_biscuits_james_beard_foundation.pdf
/kb/recipes/banana_bread_recipe.pdf
/kb/recipes/banana_chocolate_chip_bars_recipe.pdf
/kb/recipes/basic_croissant_3.pdf
/kb/recipes/basic_croissant_4.pdf
/kb/recipes/basic_croissant_6.pdf
/kb/recipes/basic_croissant_7.pdf
/kb/recipes/basic_croissant_8.pdf
/kb/recipes/basic_croissant_dough_recipe.pdf
/kb/recipes/Basic_Croissants_1.pdf
/kb/recipes/basic_croissants_2.pdf
/kb/recipes/basic_croissants_5.pdf
/kb/recipes/best_buttercream_frosting_recipe.pdf
/kb/recipes/black_raspberry_pastry_cream_recipe.pdf
/kb/recipes/blacktie_photos_maggi_and_steve_brunkhorst,_carol_gardner,_bob_marsh,_vicki_gatesh,_ron_montgomery.pdf
/kb/recipes/brown_sugar_meringue_bars_recipe.pdf
/kb/recipes/cabbage_with_prosciutto_recipe.pdf
/kb/recipes/chocolate_frosting_recipe.pdf
/kb/recipes/chocolate_pastry_cream_recipe.pdf
/kb/recipes/coconut_chocolate_cake_recipe.pdf
/kb/recipes/coffee_pastry_cream_recipe.pdf
/kb/recipes/copy_of_creamed_cabbage_recipe.pdf
/kb/recipes/copy_of_polish_sour_cream_cabbage_recipe.pdf
/kb/recipes/copy_of_sour_cream_cabbage_recipe.pdf
/kb/recipes/copy_of_sushi_rice.pdf
/kb/recipes/copycat_cinnabon_stix.pdf
/kb/recipes/copycat_red_lobster_cheddar_bay_biscuits.pdf
/kb/recipes/copycat_texas_roadhouse_rolls.pdf
/kb/recipes/creamed_cabbage_recipe.pdf
/kb/recipes/creamy_white_chili_recipe_taste_of_home.pdf
/kb/recipes/crepe_batter_with_chocolate_recipe.pdf
/kb/recipes/crepes_recipe.pdf
/kb/recipes/crepes_recipe_chocolate_and_grand_marnier.pdf
/kb/recipes/crème_fraîche_recipes.pdf
/kb/recipes/crispy_baked_chicken_wings_todayshow.pdf
/kb/recipes/current_projects_university_of_miami_bench_thiel_design_studios,_inc.pdf
/kb/recipes/curried_chickpea_doubles.pdf
/kb/recipes/easy_fake_whipped_cream_frosting_fecipe.pdf
/kb/recipes/edgar_lewin_linkedin.pdf
/kb/recipes/fettuccine_pasta_with_prosciutto_peas_and_cream_sauce_recipe.pdf
/kb/recipes/foolproof_cheesecake_national-purewow.pdf
/kb/recipes/french_apple_tart_with_pastry_cream_and_apricot_glaze.pdf
/kb/recipes/french_chocolate_mousse_recipe.pdf
/kb/recipes/french_strawberry_tart_with_pastry_cream_recipe.pdf
/kb/recipes/fried_chicken_todayshow.pdf
/kb/recipes/fried_cornmeal_mush_recipe_taste_of_home.pdf
/kb/recipes/fruit_pavlova_recipe.pdf
/kb/recipes/fudge_icing_recipe.pdf
/kb/recipes/german_fruit_tart_recipe.pdf
/kb/recipes/german_script_alphabet_information.pdf
/kb/recipes/homemade_napoleon_mille-feuille_recipe.pdf
/kb/recipes/honey_tangerine_gelatin_recipes_cooking_channel.pdf
/kb/recipes/honey_wheat_oatmeal_bread.pdf
/kb/recipes/how_to_make_flaky_pie_crust_recipe.pdf
/kb/recipes/how_to_make_soft_meringue_recipe.pdf
/kb/recipes/how_to_make_sushi_rice_sushi_recipe.pdf
/kb/recipes/how_to_measure_flour_recipe.pdf
/kb/recipes/lemon_cream_tartlet_recipe.pdf
/kb/recipes/lemon_crepes_recipe_lemon.pdf
/kb/recipes/lemon_pastry_cream_recipe.pdf
/kb/recipes/meringue_cookies_recipe.pdf
/kb/recipes/meringue_recipe.pdf
/kb/recipes/new_horizon_archive_liv_broadcastss.pdf
/kb/recipes/new_horizons.pdf
/kb/recipes/oatmeal_raisin_cookies_recipe_paula_deen_food_network.pdf
/kb/recipes/orange_crepes_recipe_orange.pdf
/kb/recipes/orange_pastry_cream_recipe.pdf
/kb/recipes/passion_fruit_meringue_tartlets_recipe.pdf
/kb/recipes/pavlova_recipe.pdf
/kb/recipes/Peach_Fritters_doughnut_todayshow.pdf
/kb/recipes/peach_praline_meringue_torte_recipe.pdf
/kb/recipes/perfect_chocolate_buttercream_frosting_recipe.pdf
/kb/recipes/petits_fours_recipes_cooking_channel.pdf
/kb/recipes/polish_sour_cream_cabbage_recipe.pdf
/kb/recipes/poll_dooley_campaign_in_serious_peril-the_missouri_times.pdf
/kb/recipes/pretzel_rolls_pretzel_buns.pdf
/kb/recipes/puff_pastry_dough_recipe_2.pdf
/kb/recipes/puff_pastry_dough_recipe_3.pdf
/kb/recipes/puff_pastry_dough_recipe_4.pdf
/kb/recipes/puff_pastry_dough_recipe_5.pdf
/kb/recipes/puff_pastry_dough_recipe_6.pdf
/kb/recipes/puff_pastry_dough_recipe_7.pdf
/kb/recipes/puff_pastry_dough_recipe_8.pdf
/kb/recipes/puff_pastry_dough_recipe_homemade_pate_feuilletee_puff_pastry.pdf
/kb/recipes/puff_pastry_dough_recipe_pate_feuilletee_1.pdf
/kb/recipes/puff_pastry_recipe_9_pastry_cream.pdf
/kb/recipes/pumpkin_bread_recipe.pdf
/kb/recipes/pumpkin_pastry_cream_recipe.pdf
/kb/recipes/salted_caramels_recipes_cooking_channel.pdf
/kb/recipes/sautèed_cabbage_with_crisp_prosciutto_ham.pdf
/kb/recipes/Simon's Jewelers A PAWS for Celebration.pdf
/kb/recipes/slovak_apricot_cake.pdf
/kb/recipes/slow_cooker_chicken_and_dumplings_recipe.pdf
/kb/recipes/snickerdoodles_recipe.pdf
/kb/recipes/sour_cream_cabbage_recipe.pdf
/kb/recipes/spaghetti_with_parmesan_and_bacon_recipe.pdf
/kb/recipes/strawberry_meringue_cream_recipe.pdf
/kb/recipes/strawberry_shortcake_recipe.pdf
/kb/recipes/SuperDecadentChocolateCakeandFudgeFrosting.pdf
/kb/recipes/sushi_rice.pdf
/kb/recipes/sweet_dough_recipe.pdf
/kb/recipes/sweet_french_pastry_crust.pdf
/kb/recipes/T4, LLC Wins $3.pdf
/kb/recipes/t4,_llc.pdf
/kb/recipes/t4,_llc_business_profile_in_alexandria,_va_credibility.pdf
/kb/recipes/the_best_chocolate_cake_recipe.pdf
/kb/recipes/the_best_chocolate_cake_with_fudge_icing_recipe.pdf
/kb/recipes/the_slow_roasted_italian-printable_recipes_copycat_red_lobster_cheddar_bay_biscuits_printable.pdf
/kb/recipes/Treat yourself with the White House's Halloween sweet dough butter cookie recipe - TODAY.pdf
/kb/recipes/tropical_meringue_layer_cake_recipet.pdf
/kb/recipes/us_army_linkedin.pdf
/kb/recipes/vanilla_pastry_cream_recipe.pdf`;

kolists['btn_pdf'] =
`/imgs/btn/btn_divider1.png
/imgs/btn/btn_divider2.png
/imgs/btn/btn_divider3.png
/imgs/btn/btn_merge1.png
/imgs/btn/btn_merge2.png
/imgs/btn/btn_merge3.png
/imgs/btn/btn_pdf.png
/imgs/btn/btn_pdf1.png
/imgs/btn/btn_pdf10.png
/imgs/btn/btn_pdf11.png
/imgs/btn/btn_pdf12.png
/imgs/btn/btn_pdf13.png
/imgs/btn/btn_pdf15.png
/imgs/btn/btn_pdf16.png
/imgs/btn/btn_pdf17.png
/imgs/btn/btn_pdf19.png
/imgs/btn/btn_pdf2.png
/imgs/btn/btn_pdf20.png
/imgs/btn/btn_pdf21.png
/imgs/btn/btn_pdf22.png
/imgs/btn/btn_pdf24.png
/imgs/btn/btn_pdf25.png
/imgs/btn/btn_pdf27.png
/imgs/btn/btn_pdf3.png
/imgs/btn/btn_pdf4.png
/imgs/btn/btn_pdf5.png
/imgs/btn/btn_pdf6.png
/imgs/btn/btn_pdf7.png
/imgs/btn/btn_pdf8.png
/imgs/btn/btn_pdf9.png
/imgs/btn/btn_pdf_focus.png
/imgs/btn/btn_pdfs2.png
/imgs/btn/btn_pdfs3.png
/imgs/btn/btn_pdfs5.png
/imgs/btn/btn_pdfs6.png
/imgs/btn/btn_pdfsplus.png`;

kolists['hats'] =
`/imgs/imgs_hat
/imgs/imgs_hat/external-content.duckduckgo.com.jpg
/imgs/imgs_hat/hat_americaneagle.jpg
/imgs/imgs_hat/hat_aviation.jpg
/imgs/imgs_hat/hat_blue.jpg
/imgs/imgs_hat/hat_cowboy_leather.png
/imgs/imgs_hat/hat_derby.jpg
/imgs/imgs_hat/hat_jester.png
/imgs/imgs_hat/hat_kiti.jpg
/imgs/imgs_hat/hat_madhatter.jpg
/imgs/imgs_hat/hat_tophat_silver.png
/imgs/imgs_hat/hat_wacadoodle.jpg
/imgs/imgs_hat/hatb_biretta.jpg
/imgs/imgs_hat/hatb_cowboy.jpg
/imgs/imgs_hat/hatb_derby2.png
/imgs/imgs_hat/hatb_knitflower.jpg
/imgs/imgs_hat/hatb_man.jpg
/imgs/imgs_hat/hatb_model.jpg
/imgs/imgs_hat/hatb_rabbit.jpg
/imgs/imgs_hat/hatb_sexy.jpg
/imgs/imgs_hat/hatb_shelockholmes.png
/imgs/imgs_hat/hatb_skullnbones.jpg
/imgs/imgs_hat/hatb_sombraro2.jpg
/imgs/imgs_hat/hatb_sombrero.jpg
/imgs/imgs_hat/hatb_top.jpg
/imgs/imgs_hat/hatb_viking.jpg
/imgs/imgs_hat/hatb_witc ch.png
/imgs/imgs_hat/hatbgw.jpg
/imgs/imgs_hat/hatbgw_clip.jpg
/imgs/imgs_hat/hatbgw_hackers.jpg
/imgs/imgs_hat/hatblue_party.jpg
/imgs/imgs_hat/hatbw.jpg
/imgs/imgs_hat/hatbw_spy.jpg
/imgs/imgs_hat/hatbw_spy2.jpg
/imgs/imgs_hat/hatg.jpg
/imgs/imgs_hat/hatr_drsuess.jpg
/imgs/imgs_hat/hatr_fez.jpg
/imgs/imgs_hat/hatr_knit.jpg
/imgs/imgs_hat/hatrwb.jpg
/imgs/imgs_hat/hatrwb_clip.jpg
/imgs/imgs_hat/hatw_aidida.jpg
/imgs/imgs_hat/hatw_army_mp.jpg
/imgs/imgs_hat/hatw_band.jpg
/imgs/imgs_hat/hatw_beanie_peruvian.jpg
/imgs/imgs_hat/hatw_bride.jpg
/imgs/imgs_hat/hatw_bucket.jpg
/imgs/imgs_hat/hatw_bucket2.jpg
/imgs/imgs_hat/hatw_cap.jpg
/imgs/imgs_hat/hatw_catinthehat.jpg
/imgs/imgs_hat/hatw_character_morality.jpg
/imgs/imgs_hat/hatw_cheff.jpg
/imgs/imgs_hat/hatw_chefs.jpg
/imgs/imgs_hat/hatw_cloche.jpg
/imgs/imgs_hat/hatw_cloche_brim.jpg
/imgs/imgs_hat/hatw_cowboy.jpg
/imgs/imgs_hat/hatw_cowgirl.jpg
/imgs/imgs_hat/hatw_derbyfeather.jpg
/imgs/imgs_hat/hatw_doff.jpg
/imgs/imgs_hat/hatw_dress.jpg
/imgs/imgs_hat/hatw_feather.jpg
/imgs/imgs_hat/hatw_glasses.jpg
/imgs/imgs_hat/hatw_grad.jpg
/imgs/imgs_hat/hatw_hacker.jpg
/imgs/imgs_hat/hatw_helmet_safty.png
/imgs/imgs_hat/hatw_helmet_vector.png
/imgs/imgs_hat/hatw_kkk.jpg
/imgs/imgs_hat/hatw_melania.jpg
/imgs/imgs_hat/hatw_melania2.jpg
/imgs/imgs_hat/hatw_movie.jpg
/imgs/imgs_hat/hatw_policegerman.jpg
/imgs/imgs_hat/hatw_post.jpg
/imgs/imgs_hat/hatw_poster.jpg
/imgs/imgs_hat/hatw_rearview.jpg
/imgs/imgs_hat/hatw_reflection.jpg
/imgs/imgs_hat/hatw_ribbon.jpg
/imgs/imgs_hat/hatw_rose.jpg
/imgs/imgs_hat/hatw_sexyfedory.jpg
/imgs/imgs_hat/hatw_texas.jpg
/imgs/imgs_hat/hatw_top.png
/imgs/imgs_hat/hatw_top3.jpg
/imgs/imgs_hat/hatw_topfeather.jpg
/imgs/imgs_hat/hatw_tux.jpg
/imgs/imgs_hat/hatw_vector.png
/imgs/imgs_hat/hatw_victorian.jpg
/imgs/imgs_hat/hatw_whitehats.jpg
`;

kolists['kurrent'] = 
`/imgs/letters/botanical_lithograph.png
/imgs/letters/ltr_jk.png
/imgs/letters/ltr_js_cups.png
/imgs/letters/heart.png
/imgs/letters/heilige_gescrif.png
/imgs/letters/kurrent08.png
/imgs/letters/kurrent10.png
/imgs/letters/kurrent11.png
/imgs/letters/kurrent12.png
/imgs/letters/kurrent13.png
/imgs/letters/kurrent14.png
/imgs/letters/kurrent16.png
/imgs/letters/kurrent18.png
/imgs/letters/kurrent2.png
/imgs/letters/kurrent20.png
/imgs/letters/kurrent21.png
/imgs/letters/kurrent22.png
/imgs/letters/kurrent24.png
/imgs/letters/kurrent26.png
/imgs/letters/kurrent28.png
/imgs/letters/kurrent3.png
/imgs/letters/kurrent30.png
/imgs/letters/kurrent33.png
/imgs/letters/kurrent4.png
/imgs/letters/kurrent5.png
/imgs/letters/kurrent_f.png
/imgs/letters/kurrent_history.png
/imgs/letters/kurrent_j.png
/imgs/letters/kurrent_k.png
/imgs/letters/kurrent_karl.png
/imgs/letters/kurrent_lacecard.png
/imgs/letters/kurrent_o.png
/imgs/letters/kurrent_passport.png
/imgs/letters/kurrent_pen.png
/imgs/letters/kurrent_s.png
/imgs/letters/kurrent_set.png
/imgs/letters/kurrent_t.png
/imgs/letters/kurrent_x.png
`;

kolists['letters_j'] =
`/imgs/letters/ltr_j1.png
/imgs/letters/ltr_j10.png
/imgs/letters/ltr_j13.png
/imgs/letters/ltr_j14.png
/imgs/letters/ltr_j15.png
/imgs/letters/ltr_j2.png
/imgs/letters/ltr_j20.png
/imgs/letters/ltr_j3.png
/imgs/letters/ltr_j31.png
/imgs/letters/ltr_j33.png
/imgs/letters/ltr_j34.png
/imgs/letters/ltr_j35.png
/imgs/letters/ltr_j4.png
/imgs/letters/ltr_j7.png
/imgs/letters/ltr_j_36.png
/imgs/letters/ltr_j_3d.png
/imgs/letters/ltr_j_3d2.png
/imgs/letters/ltr_j_3d3.png
/imgs/letters/ltr_j_3d5.png
/imgs/letters/ltr_j_baby.png
/imgs/letters/ltr_j_brushedsilver.png
/imgs/letters/ltr_j_circle.png
/imgs/letters/ltr_j_decorative_metal.png
/imgs/letters/ltr_j_fancy.png
/imgs/letters/ltr_j_fancy2.png
/imgs/letters/ltr_j_fantasy.png
/imgs/letters/ltr_j_frames.png
/imgs/letters/ltr_j_glow.png
/imgs/letters/ltr_j_gothic.png
/imgs/letters/ltr_j_gothic2.png
/imgs/letters/ltr_j_heart.png
/imgs/letters/ltr_j_jewel2.png
/imgs/letters/ltr_j_jewled.png
/imgs/letters/ltr_j_konabus.png
/imgs/letters/ltr_j_konet.png
/imgs/letters/ltr_j_lemonade.png
/imgs/letters/ltr_j_monogram.png
/imgs/letters/ltr_j_neon.png
/imgs/letters/ltr_j_neon2.png
/imgs/letters/ltr_j_pdf.png
/imgs/letters/ltr_j_presentation.png
/imgs/letters/ltr_j_rainbowsparkle.png
/imgs/letters/ltr_j_ribon.png
/imgs/letters/ltr_j_scroll.png
/imgs/letters/ltr_j_scrolled.png
/imgs/letters/ltr_j_set2.png
/imgs/letters/ltr_j_split.png
/imgs/letters/ltr_j_superj.png
/imgs/letters/ltr_j_usa.png
/imgs/letters/ltr_j_usa2.png`;


kolists['letters_k'] =
`/imgs/letters/ltr_k1.png
/imgs/letters/ltr_k3.png
/imgs/letters/ltr_k60.png
/imgs/letters/ltr_k_3d1.png
/imgs/letters/ltr_k_3dcircle.png
/imgs/letters/ltr_k_block.png
/imgs/letters/ltr_k_bluesparkle.png
/imgs/letters/ltr_k_borders.png
/imgs/letters/ltr_k_chevron.png
/imgs/letters/ltr_k_desigh.png
/imgs/letters/ltr_k_doodle.png
/imgs/letters/ltr_k_glow.png
/imgs/letters/ltr_k_gold.png
/imgs/letters/ltr_k_illuminate.png
/imgs/letters/ltr_k_kid.png
/imgs/letters/ltr_k_kitti.png
/imgs/letters/ltr_k_konabus.png
/imgs/letters/ltr_k_konabus2.png
/imgs/letters/ltr_k_konet.png
/imgs/letters/ltr_k_logi.png
/imgs/letters/ltr_k_luxury.png
/imgs/letters/ltr_k_neon.png
/imgs/letters/ltr_k_pencil.png
/imgs/letters/ltr_k_posh.png
/imgs/letters/ltr_k_pretty.png
/imgs/letters/ltr_k_pushguy.png
/imgs/letters/ltr_k_red3d.png
/imgs/letters/ltr_k_ribbons.png
/imgs/letters/ltr_k_sbrushedmetal.png
/imgs/letters/ltr_k_scrip23.png
/imgs/letters/ltr_k_script.png
/imgs/letters/ltr_k_script5.png
/imgs/letters/ltr_k_split.png
/imgs/letters/ltr_k_superglow.png
/imgs/letters/ltr_k_superiron.png
/imgs/letters/ltr_k_swirl.png
/imgs/letters/ltr_k_swirl2.png
/imgs/letters/ltr_k_swirl5.png
/imgs/letters/ltr_k_usa.png
/imgs/letters/ltr_k_woodcut.png
/imgs/letters/ltr_k_woodcut2.png
/imgs/letters/ltr_k_zentangle.png`;

kolists['letters_s'] =
`/imgs/letters/ltr_l11.png
/imgs/letters/ltr_s1.png
/imgs/letters/ltr_s10.png
/imgs/letters/ltr_s2.png
/imgs/letters/ltr_s21.png
/imgs/letters/ltr_s22.png
/imgs/letters/ltr_s24.png
/imgs/letters/ltr_s26.png
/imgs/letters/ltr_s32.png
/imgs/letters/ltr_s33.png
/imgs/letters/ltr_s4.png
/imgs/letters/ltr_s41.png
/imgs/letters/ltr_s43.png
/imgs/letters/ltr_s44.png
/imgs/letters/ltr_s48.png
/imgs/letters/ltr_s5.png
/imgs/letters/ltr_s55.png
/imgs/letters/ltr_s6.png
/imgs/letters/ltr_s7.png
/imgs/letters/ltr_s_bluegold.png
/imgs/letters/ltr_s_brushedmetal.png
/imgs/letters/ltr_s_circle.png
/imgs/letters/ltr_s_circle2.png
/imgs/letters/ltr_s_construct.png
/imgs/letters/ltr_s_donu2t.png
/imgs/letters/ltr_s_donut.png
/imgs/letters/ltr_s_doodle.png
/imgs/letters/ltr_s_drp.png
/imgs/letters/ltr_s_embrodery.png
/imgs/letters/ltr_s_flower.png
/imgs/letters/ltr_s_glass.png
/imgs/letters/ltr_s_glow.png
/imgs/letters/ltr_s_gold.png
/imgs/letters/ltr_s_heart.png
/imgs/letters/ltr_s_heart2.png
/imgs/letters/ltr_s_jewel.png
/imgs/letters/ltr_s_logo.png
/imgs/letters/ltr_s_luxury.png
/imgs/letters/ltr_s_pushguy.png
/imgs/letters/ltr_s_roses.png
/imgs/letters/ltr_s_scriot.png
/imgs/letters/ltr_s_scriot3.png
/imgs/letters/ltr_s_scrit.png
/imgs/letters/ltr_s_silver.png
/imgs/letters/ltr_s_slinky.png
/imgs/letters/ltr_s_snail.png
/imgs/letters/ltr_s_split.png
/imgs/letters/ltr_s_sunny.png
/imgs/letters/ltr_s_swan.png
/imgs/letters/ltr_s_texture.png
/imgs/letters/ltr_s_textured.png
/imgs/letters/ltr_s_textured2.png
/imgs/letters/ltr_s_woodcut.png
/imgs/letters/ltr_sj.png`;


kolists['pdfgrps'] =
`konet
iperms
saic
kou
kids
kitiworks
pastryroad
konabus
jtfdc
jtfdc
jtfinc
trial6
trial7`;





		function pdfs_show(div_divid,args) {
//			alert( "MSG_28230_pdfs div_divid="+div_divid+" args="+args );
			match=args;
//			div_divid="div_pdfs";

			if( document.getElementById(div_divid)) {
				if( document.getElementById(div_divid).style.display == "inline" ) {
					document.getElementById(div_divid).style.display = "none";
					return(div_divid);
					}
				else {
					document.getElementById(div_divid).style.display="inline";
					}	
				}

//			alert("MSG_23251 kolists_btn_pdf_default="+kolists['pdfs_default'] );
//			alert("MSG_23250 kolists_btn_pdf="+kolists['pdfs'] );
			btn_pdfs=kolists['btn_pdf'].split("\n");
			btn_pdfs_len=btn_pdfs.length;
			btn_pdf_num=random_int(btn_pdfs_len,0);
			btn_pdf=btn_pdfs[btn_pdf_num];
//			alert( "BUGS_28260 btn_pdf="+btn_pdf );
//			if( document.getElementByClassName('class_btn_pdf')) {
//				document.getElementByClassName('class_btn_pdf').src=btn_pdf;
//				}



			if( document.getElementById(div_divid)){
				if( document.getElementById(div_divid).style.display == "none" ) {
//					document.getElementById(div_divid).style.display="inline";
					if( document.getElementById('img_btn_pdf')) {
//						document.getElementById('img_btn_pdf').src="/imgs/btn/btn_pdf1.png";
						}
					}
				else {
//					document.getElementById(div_divid).style.display="none";
					if( document.getElementById('img_btn_pdf')) {
//						document.getElementById('img_btn_pdf').src="/imgs/btn/btn_pdf7.png";
						}
					}
				}

			if( match == "" ) {
				pdfs = kolists['pdfs_default'].split("\n");
				}
			else {
				pdfs = kolists['pdfs'].split("\n");
				}

//			alert( "BUGS_28400 match="+match+" pdfs_len="+pdfs.length+" pdfs="+pdfs );
			pdfs_len=pdfs.length;
			htmout="";
			htmout += '<div id="div_pdfs" >';
			htmout += '	<h1>div_pdfs</h1>';
			htmout += '	<hr color=linen>';
			htmout += '	<h2>'+match+'</h2>';
			htmout += '	<hr color=linen>';

//			pdfs_grps = kolists['pdfs_grps'].split("\n");
//			alert( "BUGS_28460 pdfs_grps="+pdfs_grps );
//			pdfs_grps_len=pdfs_grps.length;
//			for( j=0; j<pdfs_grps_len; j++ ) {
//				pdf_grp=pdfs_grps[j];
//				htmout += '<img src="'+btn_pdfs+'"';
//				htmout += '	alt="+pdf_grp+"';
//				htmout += '	onclick="window.open(\''+pdf_grp+'\');return false;"';
//				htmout += '	height=200 borders=0>';
//				htmout += 'j='+j+' '+pdf_grp;
//				htmout += '&nbsp &nbsp &nbsp &nbsp';
//				}
//

			for( j=0; j<pdfs_len; j++ ) {
				pdfdta=pdfs[j].split("|");
				pdfdta_len=pdfs[j].split("|").length;
				pdfurl=pdfdta[0];
				let regexp = '/'+match+'/gi';
//				alert( "BUGS_28351 j="+j+" pdfdta="+pdfdta+" match="+match  );
//				alert( "BUGS_28351 j="+j+" pdfdta="+pdfdta+" match="+match+" regexp="+regexp );
//				alert( "BUGS_28352 j="+j+" pdfdta="+pdfdta+" match="+match+" regexp="+regexp  );

				if(( match != "" ) & ( match != "all" )) {
//					alert( "BUGS_28455 MATCHMODE="+match+" pdfdta="+pdfdta );
//					if( /match/.test(pdfdta)) { 
//					if( regexp.test(pdfdta)) { 
					regexp='/'+match+'/';

					regex = RegExp(match);	
					regexg = RegExp(match,"gi");

//					alert( "BUGS_28500 regexp="+regexp+"  match="+match );
//					if( /konet/.test(pdfdta)) { 
//					if( /match/.test(pdfdta)) { 
					if( regex.test(pdfdta)) {
//						htmout += "BUGS_28462 MATCH match="+match+" regexp="+regexp+" pdfdta="+pdfdta+"<br>";
						}
					else {
//						alert( "BUGS_28463 SKIP match="+match+" regexp="+regexp+" pdfdta="+pdfdta );
//						htmout += "BUGS_28463 SKIP match="+match+" regexp="+regexp+" pdfdta="+pdfdta;
//						htmout += "<br>";
						continue; 
						}
					}

//					else {
//						alert( "BUGS_28370 SKIP")
//						alert( "BUGS_28570 SKIP match="+match+" regexp="+regexp+" pdfdta="+pdfdta );
//						}
//				alert( "BUGS_28580" );
//				alert( "BUGS_28500 MATCH="+match+" regexp="+regexp+" pdfdta="+pdfdta );

				pdfalt=pdfurl;
//				btn_pdf="/imgs/btn/btn_pdf1.png";
				if( pdfdta_len>1 ) { pdfalt=pdfdta[1]; }	
				htmout += j+' &nbsp &nbsp';
				htmout += '<img src="'+btn_pdf+'" class="class_btn_pdf" ';
				htmout += '	alt="'+pdfalt+'" ';
				htmout += '	onclick="window.open(\'/pdf/web/viewer.html?file='+pdfurl+'\'); return false;"';
				htmout += '	height=50 border=0 >';
				htmout += pdfalt;
				htmout += '&nbsp &nbsp &nbsp &nbsp<br>';
				}
			htmout += '	</div>';
			htmout += '<br>';
			htmout += '<hr color=linen>';



//			alert( "BUGS_28310 j="+j+"  htmout="+htmout );
			div_divid="div_pdfs";
			if( document.getElementById(div_divid)) {
//				alert( "BUGS_28320 j="+j+"  htmout="+htmout );
				document.getElementById(div_divid).style.display="inline";


//				alert( "BUGS_9990 getElementById div_divid="+div_divid );
//				document.getElementById(div_divid).innerHTML=htmout;
//				alert( "BUGS_9991 getElementById div_divid="+div_divid );


				document.getElementById(div_divid).insertAdjacentHTML('afterend',htmout);


//				alert( "BUGS_9992 getElementById div_divid="+div_divid );
//				document.getElementById('div_divid').insertAdjacnetHTML('afterbegin',htmout);
//				document.getElemetById('div_divid').insertAdjacentHTML('afterbegin', htmout);



				if( document.getElementById('img_btn_pdf')) {
					document.getElementById('img_btn_pdf').src="/imgs/btn/btn_pdf7.png";
					}
				}
//			alert( "BUGS_23330 pdfs pdfs_len="+pdfs_len+" pdfs="+pdfs );
//			alert( "BUGS_28500 pdfs match="+match );
			return(args);
			}
		</script>

	<script id="script_startup">
		function startup(args) {
//			pdfs_show(args);
//			blobhead_wait(args);
			var jaxurl=args;
			var href=window.location.href;
			var search=window.location.search;

// http://ka12/fb/stlc/index.html  = index_stlc.html
//			alert( "BUGS_21511 startup args="+args+" href="+href );
			href="/fb/stlc";
			var hrefdirs = href.split("/");
			hrefdirs_len=hrefdirs.length;
			dirnam = hrefdirs[hrefdirs_len-1];
//			alert( "BUGS_21512 startup hrefdirs="+hrefdirs+" href="+href );
//			alert( "BUGS_21513 startup dirnam="+dirnam+" href="+href );

//			alert( "BUGS_21512 startup dirnam="+dirnam+" href="+href );
//			alert( "BUGS_21513 startup dirnam="+dirnam+" href="+href );

			var indexname = href.replace("http://","").replace("/index.html","");
			var indexname_html = "index_"+indexname+".html";
			if( filecheck( indexname_html)) {
//				alert( "BUGS_21512 startup __FOUND indexname_html="+indexname_html+" href="+href );
//				window.open(indexname_html);
//				document.location.href=indexname_html;
				}			
//			alert( "BUGS_21512 startup NOTFOUND indexname_html="+indexname_html+" href="+href );


//			kludge('');
//			blob_sound('');
//			alert( "BUGS_19851 startup args="+args );
			if( /jax/.test(search)) {
				jaxurl = search.split("=")[1];
//				alert( "BUGS_17240 startup jaxurl="+jaxurl );
				}


//			var host=window.location.host;
//			var pathname=window.location.pathname;
//			url_default="fb.json";
//			alert( "BUGS_2591 url_default="+url_default );
//			var replaced =  pathname.replace(/(^\.+|\.+$)/mg, '');
//			if( pathname.endsWith(".htm")) {
//			url_default=pathname.replace(".html",".json" );
//			alert( "BUGS_2595 url_default="+url_default );
//			alert( "BUGS_11700 startup jaxurl="+jaxurl );
//			alert( "BUGS_11700 startup jaxurl="+jaxurl+" kolists="+kolists );
//			alert( "BUGS_11701 startup jaxurl="+jaxurl+" divids="+divids );
//			alert( "BUGS_11702 startup jaxurl="+jaxurl+" kolists_divids="+kolists['divids'] );

//			jaxurl="/av.txt";
//			if(filecheck(jaxurl)) { kolists['av'] = jax(jaxurl); }
//			alert( "BUGS_11801 startup jaxurl="+jaxurl+ " len="+kolists['jax'].split("\n").length+ " kolists_jax="+kolists['jax'] );
//			alert( "BUGS_11801 startup jaxurl="+jaxurl+ " len="+kolists['fb'].split("\n").length+ " kolists_fb="+kolists['fb'] );
//			alert( "BUGS_11801 startup jaxurl="+jaxurl+ " len="+kolists['av'].split("\n").length+ " kolists_av="+kolists['av'] );
//			alert( "BUGS_11802 startup jaxurl="+jaxurl+ " len="+kolists['fb'].split("\n").length+ " kolists_fb="+kolists['fb'] );
//			alert( "BUGS_11803 startup jaxurl="+jaxurl+ " len="+kolists['pn'].split("\n").length+ " kolists_pn="+kolists['pn'] );
//			alert( "BUGS_11804 startup jaxurl="+jaxurl+ " len="+kolists['sl'].split("\n").length+ " kolists_sl="+kolists['sl'] );
//			alert( "BUGS_11805 startup jaxurl="+jaxurl+ " len="+kolists['tl'].split("\n").length+ " kolists_tl="+kolists['tl'] );
//			alert( "BUGS_11806 startup jaxurl="+jaxurl+ " len="+kolists['yt'].split("\n").length+ " kolists_yt="+kolists['yt'] );
//			alert( "BUGS_11807 startup jaxurl="+jaxurl+ " len="+kolists['zm'].split("\n").length+ " kolists_zm="+kolists['zm'] );

			blob_imgs("args");
			kogrids("");

			load_kolists(args);
			show_kolists(args);

//			jtfdc_stalkarounds('');

//			alert( "BUGS_17455 startup_canvas args="+args );
			startup_canvas("");

			script_hideshow("alloff");
			script_hideshow("div_pdfs");
			script_hideshow("div_bb");
			script_hideshow("div_fb");
			script_hideshow("div_yt");

//			alert( "BUGS_17491 startup_blobs " );
			startup_blobs(args);
//			alert( "BUGS_17492 startup_blobs " );




//			var jaxurl_default="fb.txt";
//			var jaxurl = args;
//			if( args == "" ) { jaxurl=jaxurl_default; }
//			alert( "BUGS_6770 startup args="+args+"  jaxurl="+jaxurl );
//			if( filecheck(jaxurl)) {
//				alert( "BUGS_6991 ___FOUND jaxurl="+jaxurl );
//				}
//			else {
////				alert( "BUGS_6992 NOTFOUND jaxurl="+jaxurl );
//				}
			}
			
		</script>






	</head>



<!-- <body bgcolor="darkslategray" onload=";startup('fb.txt');return false;" > -->
<!-- <body bgcolor="wheat" onload="startup('fb.txt');return false;" > -->
<!-- <body bgcolor="#FFFDDA" onload="startup('fb.txt');return false;" > -->



<hr color=white>
<hr color=black>
<h2>div_fbs</h2>
<img src="/imgs/btn/kop1234.png" onclick="startup(''); return false;">
&nbsp &nbsp &nbsp &nbsp
<img src="/imgs/btn/kop23.png" onclick="startup('fb.txt'); return false;">
<img src="/imgs/btn/kop23.png" onclick="startup('/fb/fb.txt'); return false;">
<img src="/imgs/btn/kop23.png" onclick="startup('/fb/konet/fb.txt'); return false;">
<img src="/imgs/btn/kop23.png" onclick="startup('/fb/iperms/fb.txt'); return false;">
<img src="/imgs/btn/kop23.png" onclick="startup('/fb/ko1/fb.txt'); return false;">
<hr color=white>
<h2>div_yts<h2>
<img src="/imgs/btn/kop14.png" onclick="startup('/yt/txt/ytlist.txt'); return false;">
<img src="/imgs/btn/kop14.png" onclick="startup('/yt/txt/ytlist_20200401.txt'); return false;">
<img src="/imgs/btn/kop14.png" onclick="startup('/yt/txt/ytlist_20200402.txt'); return false;">
<img src="/imgs/btn/kop12.png" onclick="startup('/yt/txt/ytlist_20200403.txt'); return false;">
<hr color=white>
<h2>div_notes</h2>
<img src="/imgs/btn/kop14.png" onclick="startup('notfound.txt'); return false;">
<img src="/imgs/btn/kop14.png" onclick="startup('notes.txt'); return false;">
<img src="/imgs/btn/kop14.png" onclick="startup('/txt/jtfdcr_mp4.txt'); return false;">
<img src="/imgs/btn/kop1.png" onclick="startup('notfound.txt'); return false;">
<img src="/imgs/btn/kop4.png" onclick="startup('notfound.txt'); return false;">

<hr color=white>
<hr color=black>
<!--
<div id="div_fb_w" >
<div id="canvas_fb">
	<div class="zoom-icon zoom-icon-in"></div>

	<div class="magazine-viewport">
		<div class="container">
			<div class="magazine">
				<!-- Next button -->
				<div ignore="1" class="next-button"></div>
				<!-- Previous button -->
				<div ignore="1" class="previous-button"></div>
				</div>
			</div>
		</div>

<!-- Thumbnails -->
	<div id="div_tn"></div>
<!--	<div class="thumbnails" hidden> -->
	<div class="thumbnails" >
		<div>
			<ul>
			<li class="i">
				<img src="pages/tn/tn_1.png" width="76" height="100" class="page-1">
				<span>1</span>
				</li>
			<li class="d">
				<img src="pages/tn/tn_2.png" width="76" height="100" class="page-2">
				<img src="pages/tn/tn_3.png" width="76" height="100" class="page-3">
				<span>2-3</span>
				</li>
			<li class="d">
				<img src="pages/tn/tn_4.png" width="76" height="100" class="page-4">
				<img src="pages/tn/tn_5.png" width="76" height="100" class="page-5">
				<span>4-5</span>
				</li>
			<li class="d">
				<img src="pages/tn/tn_6.png" width="76" height="100" class="page-6">
				<img src="pages/tn/tn_7.png" width="76" height="100" class="page-7">
				<span>6-7</span>
				</li>
			<li class="d">
				<img src="pages/tn/tn_8.png" width="76" height="100" class="page-8">
				<img src="pages/tn/tn_9.png" width="76" height="100" class="page-9">
				<span>8-9</span>
				</li>
			<li class="d">
				<img src="pages/tn/tn_10.png" width="76" height="100" class="page-10">
				<img src="pages/tn/tn_11.png" width="76" height="100" class="page-11">
				<span>10-11</span>
				</li>
			<li class="d">
				<img src="pages/tn/tn_12.png" width="76" height="100" class="page-12">
				<img src="pages/tn/tn_13.png" width="76" height="100" class="page-13">
				<span>12-13</span>
				</li>
			<li class="d">
				<img src="pages/tn/tn_14.png" width="76" height="100" class="page-14">
				<img src="pages/tn/tn_15.png" width="76" height="100" class="page-15">
				<span>14-15</span>
				</li>
			<li class="d">
				<img src="pages/tn/tn_16.png" width="76" height="100" class="page-14">
				<img src="pages/tn/tn_17.png" width="76" height="100" class="page-15">
				<span>16-17</span>
				</li>
			<li class="i">
				<img src="pages/tn/tn_18.png" width="76" height="100" class="page-16">
				<span>18</span>
				</li>
			<ul>
			<div>	</div>
		</div id="div_fb_b_tail">


	<script id="script_fbload" type="text/javascript">
//		function loadApp() {
		function fbload() {
// 			$('#canvas').fadeIn(1000);
 			$('#canvas_fb').fadeIn(1000);
 			var flipbook = $('.magazine');

// Check if the CSS was already loaded
	
	if (flipbook.width()==0 || flipbook.height()==0) {
//		setTimeout(loadApp, 10);
		setTimeout(fbload, 10);
		return;
	}
	
// Create the flipbook
	flipbook.turn({
// Magazine width
// Magazine height
// Duration in millisecond
// Hardware acceleration
// Enables gradients
// Auto center this flipbook
// Elevation from the edge of the flipbook when turning a page
			width: 922,
			height: 600,
			duration: 1000,
			acceleration: !isChrome(),
			gradients: true,
			autoCenter: true,
			elevation: 50,

// The number of pages
// pagelimit pages_len lastpage
//			pages: 12,
//			pages: 16,
//			pages: 758,
			pages: 5368,

// Events

			
			when: {
				turning: function(event, page, view) {
					
					var book = $(this),
					currentPage = book.turn('page'),
					pages = book.turn('pages');
			
					// Update the current URI

					Hash.go('page/' + page).update();

					// Show and hide navigation buttons

					disableControls(page);
					

					$('.thumbnails .page-'+currentPage).
						parent().
						removeClass('current');

					$('.thumbnails .page-'+page).
						parent().
						addClass('current');



				},

				turned: function(event, page, view) {

					disableControls(page);

					$(this).turn('center');

					if (page==1) { 
						$(this).turn('peel', 'br');
					}

				},

				missing: function (event, pages) {

					// Add pages that aren't in the magazine

					for (var i = 0; i < pages.length; i++)
						addPage(pages[i], $(this));

				}
			}

	});

	// Zoom.js

	$('.magazine-viewport').zoom({
		flipbook: $('.magazine'),

		max: function() { 
			
			return largeMagazineWidth()/$('.magazine').width();

		}, 

		when: {

			swipeLeft: function() {

				$(this).zoom('flipbook').turn('next');

			},

			swipeRight: function() {
				
				$(this).zoom('flipbook').turn('previous');

			},

			resize: function(event, scale, page, pageElement) {

				if (scale==1)
					loadSmallPage(page, pageElement);
				else
					loadLargePage(page, pageElement);

			},

			zoomIn: function () {

				$('.thumbnails').hide();
				$('.made').hide();
				$('.magazine').removeClass('animated').addClass('zoom-in');
				$('.zoom-icon').removeClass('zoom-icon-in').addClass('zoom-icon-out');
				
				if (!window.escTip && !$.isTouch) {
					escTip = true;

					$('<div />', {'class': 'exit-message'}).
						html('<div>Press ESC to exit</div>').
							appendTo($('body')).
							delay(2000).
							animate({opacity:0}, 500, function() {
								$(this).remove();
							});
				}
			},

			zoomOut: function () {

				$('.exit-message').hide();
				$('.thumbnails').fadeIn();
				$('.made').fadeIn();
				$('.zoom-icon').removeClass('zoom-icon-out').addClass('zoom-icon-in');

				setTimeout(function(){
					$('.magazine').addClass('animated').removeClass('zoom-in');
					resizeViewport();
				}, 0);

			}
		}
	});

	// Zoom event

	if ($.isTouch)
		$('.magazine-viewport').bind('zoom.doubleTap', zoomTo);
	else
		$('.magazine-viewport').bind('zoom.tap', zoomTo);


	// Using arrow keys to turn the page

	$(document).keydown(function(e){

		var previous = 37, next = 39, esc = 27;

		switch (e.keyCode) {
			case previous:

				// left arrow
				$('.magazine').turn('previous');
				e.preventDefault();

			break;
			case next:

				//right arrow
				$('.magazine').turn('next');
				e.preventDefault();

			break;
			case esc:
				
				$('.magazine-viewport').zoom('zoomOut');	
				e.preventDefault();

			break;
		}
	});

	// URIs - Format #/page/1 

	Hash.on('^page\/([0-9]*)$', {
		yep: function(path, parts) {
			var page = parts[1];

			if (page!==undefined) {
				if ($('.magazine').turn('is'))
					$('.magazine').turn('page', page);
			}

		},
		nop: function(path) {

			if ($('.magazine').turn('is'))
				$('.magazine').turn('page', 1);
		}
	});


	$(window).resize(function() {
		resizeViewport();
	}).bind('orientationchange', function() {
		resizeViewport();
	});

	// Events for thumbnails

	$('.thumbnails').click(function(event) {
		
		var page;

		if (event.target && (page=/page-([0-9]+)/.exec($(event.target).attr('class'))) ) {
		
			$('.magazine').turn('page', page[1]);
		}
	});

	$('.thumbnails li').
		bind($.mouseEvents.over, function() {
			
			$(this).addClass('thumb-hover');

		}).bind($.mouseEvents.out, function() {
			
			$(this).removeClass('thumb-hover');

		});

	if ($.isTouch) {
	
		$('.thumbnails').
			addClass('thumbanils-touch').
			bind($.mouseEvents.move, function(event) {
				event.preventDefault();
			});

	} else {

		$('.thumbnails ul').mouseover(function() {

			$('.thumbnails').addClass('thumbnails-hover');

		}).mousedown(function() {

			return false;

		}).mouseout(function() {

			$('.thumbnails').removeClass('thumbnails-hover');

		});

	}


	// Regions

	if ($.isTouch) {
		$('.magazine').bind('touchstart', regionClick);
	} else {
		$('.magazine').click(regionClick);
	}

	// Events for the next button

	$('.next-button').bind($.mouseEvents.over, function() {
		
		$(this).addClass('next-button-hover');

	}).bind($.mouseEvents.out, function() {
		
		$(this).removeClass('next-button-hover');

	}).bind($.mouseEvents.down, function() {
		
		$(this).addClass('next-button-down');

	}).bind($.mouseEvents.up, function() {
		
		$(this).removeClass('next-button-down');

	}).click(function() {
		
		$('.magazine').turn('next');

	});

	// Events for the next button
	
	$('.previous-button').bind($.mouseEvents.over, function() {
		
		$(this).addClass('previous-button-hover');

	}).bind($.mouseEvents.out, function() {
		
		$(this).removeClass('previous-button-hover');

	}).bind($.mouseEvents.down, function() {
		
		$(this).addClass('previous-button-down');

	}).bind($.mouseEvents.up, function() {
		
		$(this).removeClass('previous-button-down');

	}).click(function() {
		
		$('.magazine').turn('previous');

	});


	resizeViewport();

	$('.magazine').addClass('animated');

}

// Zoom icon

 $('.zoom-icon').bind('mouseover', function() { 
 	
 	if ($(this).hasClass('zoom-icon-in'))
 		$(this).addClass('zoom-icon-in-hover');

 	if ($(this).hasClass('zoom-icon-out'))
 		$(this).addClass('zoom-icon-out-hover');
 
 }).bind('mouseout', function() { 
 	
 	 if ($(this).hasClass('zoom-icon-in'))
 		$(this).removeClass('zoom-icon-in-hover');
 	
 	if ($(this).hasClass('zoom-icon-out'))
 		$(this).removeClass('zoom-icon-out-hover');

 }).bind('click', function() {

 	if ($(this).hasClass('zoom-icon-in'))
 		$('.magazine-viewport').zoom('zoomIn');
 	else if ($(this).hasClass('zoom-icon-out'))	
		$('.magazine-viewport').zoom('zoomOut');

 });

//  $('#canvas').hide();
 $('#canvas_fb').hide();


// Load the HTML4 version if there's not CSS transform

 yepnope({
//	test : Modernizr.csstransforms,
//	yep: ['../../lib/turn.js'],
//	yep: ['data:/text/plain;base64,LyoqCiAqIHR1cm4uanMgNHRoIHJlbGVhc2UKICogdHVybmpzLmNvbQogKiB0dXJuanMuY29tL2xpY2Vuc2UudHh0CiAqCiAqIENvcHlyaWdodCAoQykgMjAxMiBFbW1hbnVlbCBHYXJjaWEKICogQWxsIHJpZ2h0cyByZXNlcnZlZAogKiovCgooZnVuY3Rpb24oJCkgewoKJ3VzZSBzdHJpY3QnOwoKdmFyIGhhczNkLAogIAogIGhhc1JvdCwKCiAgdmVuZG9yID0gJycsCiAgCiAgdmVyc2lvbiA9ICc0LjEuMCcsCgogIFBJID0gTWF0aC5QSSwKCiAgQTkwID0gUEkvMiwKCiAgaXNUb3VjaCA9ICdvbnRvdWNoc3RhcnQnIGluIHdpbmRvdywKCiAgbW91c2VFdmVudHMgPSAoaXNUb3VjaCkgPwogICAgewogICAgICBkb3duOiAndG91Y2hzdGFydCcsCiAgICAgIG1vdmU6ICd0b3VjaG1vdmUnLAogICAgICB1cDogJ3RvdWNoZW5kJywKICAgICAgb3ZlcjogJ3RvdWNoc3RhcnQnLAogICAgICBvdXQ6ICd0b3VjaGVuZCcKICAgIH0KICAgIDoKICAgIHsKICAgICAgZG93bjogJ21vdXNlZG93bicsCiAgICAgIG1vdmU6ICdtb3VzZW1vdmUnLAogICAgICB1cDogJ21vdXNldXAnLAogICAgICBvdmVyOiAnbW91c2VvdmVyJywKICAgICAgb3V0OiAnbW91c2VvdXQnCiAgICB9LAoKICAvLyBDb250YW5zdHMgdXNlZCBmb3IgZWFjaCBjb3JuZXIKICAvLyAgIHwgdGwgKiB0ciB8CiAgLy8gbCB8ICogICAgICogfCByCiAgLy8gICB8IGJsICogYnIgfAoKICBjb3JuZXJzID0gewogICAgYmFja3dhcmQ6IFsnYmwnLCAndGwnXSwKICAgIGZvcndhcmQ6IFsnYnInLCAndHInXSwKICAgIGFsbDogWyd0bCcsICdibCcsICd0cicsICdicicsICdsJywgJ3InXQogIH0sCgogIC8vIERpc3BsYXkgdmFsdWVzCgogIGRpc3BsYXlzID0gWydzaW5nbGUnLCAnZG91YmxlJ10sCgogIC8vIERpcmVjdGlvbiB2YWx1ZXMKCiAgZGlyZWN0aW9ucyA9IFsnbHRyJywgJ3J0bCddLAoKICAvLyBEZWZhdWx0IG9wdGlvbnMKCiAgdHVybk9wdGlvbnMgPSB7CgogICAgLy8gRW5hYmxlcyBoYXJkd2FyZSBhY2NlbGVyYXRpb24KCiAgICBhY2NlbGVyYXRpb246IHRydWUsCgogICAgLy8gRGlzcGxheQoKICAgIGRpc3BsYXk6ICdkb3VibGUnLAoKICAgIC8vIER1cmF0aW9uIG9mIHRyYW5zaXRpb24gaW4gbWlsbGlzZWNvbmRzCgogICAgZHVyYXRpb246IDYwMCwKCiAgICAvLyBGaXJzdCBwYWdlCgogICAgcGFnZTogMSwKICAgIAogICAgLy8gRW5hYmxlcyBncmFkaWVudHMKCiAgICBncmFkaWVudHM6IHRydWUsCgogICAgLy8gQ29ybmVycyB1c2VkIHdoZW4gdHVybmluZyB0aGUgcGFnZQoKICAgIHR1cm5Db3JuZXJzOiAnYmwsYnInLAoKICAgIC8vIEV2ZW50cwoKICAgIHdoZW46IG51bGwKICB9LAoKICBmbGlwT3B0aW9ucyA9IHsKCiAgICAvLyBTaXplIG9mIHRoZSBhY3RpdmUgem9uZSBvZiBlYWNoIGNvcm5lcgoKICAgIGNvcm5lclNpemU6IDEwMAoKICB9LAoKICAvLyBOdW1iZXIgb2YgcGFnZXMgaW4gdGhlIERPTSwgbWluaW11bSB2YWx1ZTogNgoKICBwYWdlc0luRE9NID0gNiwKICAKCnR1cm5NZXRob2RzID0gewoKICAvLyBTaW5nbGV0b24gY29uc3RydWN0b3IKICAvLyAkKCcjc2VsZWN0b3InKS50dXJuKFtvcHRpb25zXSk7CgogIGluaXQ6IGZ1bmN0aW9uKG9wdGlvbnMpIHsKCiAgICAvLyBEZWZpbmUgY29uc3RhbnRzCiAgICAKICAgIGhhczNkID0gJ1dlYktpdENTU01hdHJpeCcgaW4gd2luZG93IHx8ICdNb3pQZXJzcGVjdGl2ZScgaW4gZG9jdW1lbnQuYm9keS5zdHlsZTsKICAgIGhhc1JvdCA9IHJvdGF0aW9uQXZhaWxhYmxlKCk7CiAgICB2ZW5kb3IgPSBnZXRQcmVmaXgoKTsKCiAgICB2YXIgaSwgdGhhdCA9IHRoaXMsIHBhZ2VOdW0gPSAwLCBkYXRhID0gdGhpcy5kYXRhKCksIGNoID0gdGhpcy5jaGlsZHJlbigpOwoKICAgIC8vIFNldCBpbml0aWFsIGNvbmZpZ3VyYXRpb24KCiAgICBvcHRpb25zID0gJC5leHRlbmQoewogICAgICB3aWR0aDogdGhpcy53aWR0aCgpLAogICAgICBoZWlnaHQ6IHRoaXMuaGVpZ2h0KCksCiAgICAgIGRpcmVjdGlvbjogdGhpcy5hdHRyKCdkaXInKSB8fCB0aGlzLmNzcygnZGlyZWN0aW9uJykgfHwgJ2x0cicKICAgIH0sIHR1cm5PcHRpb25zLCBvcHRpb25zKTsKCiAgICBkYXRhLm9wdHMgPSBvcHRpb25zOwogICAgZGF0YS5wYWdlT2JqcyA9IHt9OwogICAgZGF0YS5wYWdlcyA9IHt9OwogICAgZGF0YS5wYWdlV3JhcCA9IHt9OwogICAgZGF0YS5wYWdlWm9vbSA9IHt9OwogICAgZGF0YS5wYWdlUGxhY2UgPSB7fTsKICAgIGRhdGEucGFnZU12ID0gW107CiAgICBkYXRhLnpvb20gPSAxOwogICAgZGF0YS50b3RhbFBhZ2VzID0gb3B0aW9ucy5wYWdlcyB8fCAwOwogICAgZGF0YS5ldmVudEhhbmRsZXJzID0gewogICAgICB0b3VjaFN0YXJ0OiAkLnByb3h5KHR1cm5NZXRob2RzLl90b3VjaFN0YXJ0LCB0aGlzKSwKICAgICAgdG91Y2hNb3ZlOiAkLnByb3h5KHR1cm5NZXRob2RzLl90b3VjaE1vdmUsIHRoaXMpLAogICAgICB0b3VjaEVuZDogJC5wcm94eSh0dXJuTWV0aG9kcy5fdG91Y2hFbmQsIHRoaXMpLAogICAgICBzdGFydDogJC5wcm94eSh0dXJuTWV0aG9kcy5fZXZlbnRTdGFydCwgdGhpcykKICAgIH07CgoKCiAgICAvLyBBZGQgZXZlbnQgbGlzdGVuZXJzCgogICAgaWYgKG9wdGlvbnMud2hlbikKICAgICAgZm9yIChpIGluIG9wdGlvbnMud2hlbikKICAgICAgICBpZiAoaGFzKGksIG9wdGlvbnMud2hlbikpCiAgICAgICAgICB0aGlzLmJpbmQoaSwgb3B0aW9ucy53aGVuW2ldKTsKCiAgICAvLyBTZXQgdGhlIGNzcwoKICAgIHRoaXMuY3NzKHtwb3NpdGlvbjogJ3JlbGF0aXZlJywgd2lkdGg6IG9wdGlvbnMud2lkdGgsIGhlaWdodDogb3B0aW9ucy5oZWlnaHR9KTsKCiAgICAvLyBTZXQgdGhlIGluaXRpYWwgZGlzcGxheQoKICAgIHRoaXMudHVybignZGlzcGxheScsIG9wdGlvbnMuZGlzcGxheSk7CgogICAgLy8gU2V0IHRoZSBkaXJlY3Rpb24KCiAgICBpZiAob3B0aW9ucy5kaXJlY3Rpb24hPT0nJykKICAgICAgdGhpcy50dXJuKCdkaXJlY3Rpb24nLCBvcHRpb25zLmRpcmVjdGlvbik7CiAgICAKICAgIC8vIFByZXZlbnQgYmx1ZSBzY3JlZW4gcHJvYmxlbXMgb2Ygc3dpdGNoaW5nIHRvIGhhcmR3YXJlIGFjY2VsZXJhdGlvbiBtb2RlCiAgICAvLyBCeSBmb3JjaW5nIGhhcmR3YXJlIGFjY2VsZXJhdGlvbiBmb3IgZXZlcgoKICAgIGlmIChoYXMzZCAmJiAhaXNUb3VjaCAmJiBvcHRpb25zLmFjY2VsZXJhdGlvbikKICAgICAgdGhpcy50cmFuc2Zvcm0odHJhbnNsYXRlKDAsIDAsIHRydWUpKTsKCiAgICAvLyBBZGQgcGFnZXMgZnJvbSB0aGUgRE9NCgogICAgZm9yIChpID0gMDsgaTxjaC5sZW5ndGg7IGkrKykgewogICAgICBpZiAoJChjaFtpXSkuYXR0cignaWdub3JlJykhPScxJykgewogICAgICAgIHRoaXMudHVybignYWRkUGFnZScsIGNoW2ldLCArK3BhZ2VOdW0pOwogICAgICB9CiAgICB9CgogICAgLy8gRXZlbnQgbGlzdGVuZXJzCgogICAgJCh0aGlzKS5iaW5kKG1vdXNlRXZlbnRzLmRvd24sIGRhdGEuZXZlbnRIYW5kbGVycy50b3VjaFN0YXJ0KS4KICAgICAgYmluZCgnZW5kJywgdHVybk1ldGhvZHMuX2V2ZW50RW5kKS4KICAgICAgYmluZCgncHJlc3NlZCcsIHR1cm5NZXRob2RzLl9ldmVudFByZXNzZWQpLgogICAgICBiaW5kKCdyZWxlYXNlZCcsIHR1cm5NZXRob2RzLl9ldmVudFJlbGVhc2VkKS4KICAgICAgYmluZCgnZmxpcCcsIHR1cm5NZXRob2RzLl9mbGlwKTsKCiAgICAkKHRoaXMpLnBhcmVudCgpLmJpbmQoJ3N0YXJ0JywgZGF0YS5ldmVudEhhbmRsZXJzLnN0YXJ0KTsKCiAgICAkKGRvY3VtZW50KS5iaW5kKG1vdXNlRXZlbnRzLm1vdmUsIGRhdGEuZXZlbnRIYW5kbGVycy50b3VjaE1vdmUpLgogICAgICBiaW5kKG1vdXNlRXZlbnRzLnVwLCBkYXRhLmV2ZW50SGFuZGxlcnMudG91Y2hFbmQpOwoKICAgIC8vIFNldCB0aGUgaW5pdGlhbCBwYWdlCgogICAgdGhpcy50dXJuKCdwYWdlJywgb3B0aW9ucy5wYWdlKTsKCiAgICAvLyBUaGlzIGZsaXBib29rIGlzIHJlYWR5CgogICAgZGF0YS5kb25lID0gdHJ1ZTsKCiAgICByZXR1cm4gdGhpczsKICB9LAoKICAvLyBBZGRzIGEgcGFnZSBmcm9tIGV4dGVybmFsIGRhdGEKCiAgYWRkUGFnZTogZnVuY3Rpb24oZWxlbWVudCwgcGFnZSkgewoKICAgIHZhciBjdXJyZW50UGFnZSwKICAgICAgY2xhc3NOYW1lLAogICAgICBpbmNQYWdlcyA9IGZhbHNlLAogICAgICBkYXRhID0gdGhpcy5kYXRhKCksCiAgICAgIGxhc3RQYWdlID0gZGF0YS50b3RhbFBhZ2VzKzE7CgogICAgaWYgKGRhdGEuZGVzdHJveWluZykKICAgICAgcmV0dXJuIGZhbHNlOwoKICAgIC8vIFJlYWQgdGhlIHBhZ2UgbnVtYmVyIGZyb20gdGhlIGNsYXNzTmFtZSBvZiBgZWxlbWVudGAgLSBmb3JtYXQ6IHBbMC05XSsKCiAgICBpZiAoKGN1cnJlbnRQYWdlID0gL1xicChbMC05XSspXGIvLmV4ZWMoJChlbGVtZW50KS5hdHRyKCdjbGFzcycpKSkpCiAgICAgIHBhZ2UgPSBwYXJzZUludChjdXJyZW50UGFnZVsxXSwgMTApOwoKICAgIGlmIChwYWdlKSB7CiAgICAgIAogICAgICBpZiAocGFnZT09bGFzdFBhZ2UpCiAgICAgICAgaW5jUGFnZXMgPSB0cnVlOwogICAgICBlbHNlIGlmIChwYWdlPmxhc3RQYWdlKQogICAgICAgIHRocm93IHR1cm5FcnJvcignUGFnZSAiJytwYWdlKyciIGNhbm5vdCBiZSBpbnNlcnRlZCcpOwoKICAgIH0gZWxzZSB7CiAgICAgIAogICAgICBwYWdlID0gbGFzdFBhZ2U7CiAgICAgIGluY1BhZ2VzID0gdHJ1ZTsKCiAgICB9CgogICAgaWYgKHBhZ2U+PTEgJiYgcGFnZTw9bGFzdFBhZ2UpIHsKCiAgICAgIGlmIChkYXRhLmRpc3BsYXk9PSdkb3VibGUnKQogICAgICAgIGNsYXNzTmFtZSA9IChwYWdlJTIpID8gJyBvZGQnIDogJyBldmVuJzsKICAgICAgZWxzZQogICAgICAgIGNsYXNzTmFtZSA9ICcnOwoKICAgICAgLy8gU3RvcCBhbmltYXRpb25zCiAgICAgIGlmIChkYXRhLmRvbmUpCiAgICAgICAgdGhpcy50dXJuKCdzdG9wJyk7CgogICAgICAvLyBNb3ZlIHBhZ2VzIGlmIGl0J3MgbmVjZXNzYXJ5CiAgICAgIGlmIChwYWdlIGluIGRhdGEucGFnZU9ianMpCiAgICAgICAgdHVybk1ldGhvZHMuX21vdmVQYWdlcy5jYWxsKHRoaXMsIHBhZ2UsIDEpOwoKICAgICAgLy8gSW5jcmVhc2UgdGhlIG51bWJlciBvZiBwYWdlcwogICAgICBpZiAoaW5jUGFnZXMpCiAgICAgICAgZGF0YS50b3RhbFBhZ2VzID0gbGFzdFBhZ2U7CgogICAgICAvLyBBZGQgZWxlbWVudAogICAgICBkYXRhLnBhZ2VPYmpzW3BhZ2VdID0gJChlbGVtZW50KS4KICAgICAgICBjc3MoeydmbG9hdCc6ICdsZWZ0J30pLgogICAgICAgIGFkZENsYXNzKCdwYWdlIHAnICsgcGFnZSArIGNsYXNzTmFtZSk7CgogICAgICBpZiAoIWhhc0hhcmRQYWdlKCkgJiYgIGRhdGEucGFnZU9ianNbcGFnZV0uaGFzQ2xhc3MoJ2hhcmQnKSkgewogICAgICAgIGRhdGEucGFnZU9ianNbcGFnZV0ucmVtb3ZlQ2xhc3MoJ2hhcmQnKTsKICAgICAgfQoKICAgICAgLy8gQWRkIHBhZ2UKICAgICAgdHVybk1ldGhvZHMuX2FkZFBhZ2UuY2FsbCh0aGlzLCBwYWdlKTsKCiAgICAgIC8vIFJlbW92ZSBwYWdlcyBvdXQgb2YgcmFuZ2UKICAgICAgdHVybk1ldGhvZHMuX3JlbW92ZUZyb21ET00uY2FsbCh0aGlzKTsKICAgIH0KCiAgICByZXR1cm4gdGhpczsKICB9LAoKICAvLyBBZGRzIGEgcGFnZQoKICBfYWRkUGFnZTogZnVuY3Rpb24ocGFnZSkgewogICAgCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLAogICAgICBlbGVtZW50ID0gZGF0YS5wYWdlT2Jqc1twYWdlXTsKCiAgICBpZiAoZWxlbWVudCkKICAgICAgaWYgKHR1cm5NZXRob2RzLl9uZWNlc3NQYWdlLmNhbGwodGhpcywgcGFnZSkpIHsKCiAgICAgICAgaWYgKCFkYXRhLnBhZ2VXcmFwW3BhZ2VdKSB7CgogICAgICAgICAgLy8gV3JhcHBlcgogICAgICAgICAgZGF0YS5wYWdlV3JhcFtwYWdlXSA9ICQoJzxkaXYvPicsCiAgICAgICAgICAgIHsnY2xhc3MnOiAncGFnZS13cmFwcGVyJywKICAgICAgICAgICAgICBwYWdlOiBwYWdlLAogICAgICAgICAgICAgIGNzczoge3Bvc2l0aW9uOiAnYWJzb2x1dGUnLAogICAgICAgICAgICAgIG92ZXJmbG93OiAnaGlkZGVuJ319KTsKCiAgICAgICAgICAvLyBBcHBlbmQgdG8gdGhpcyBmbGlwYm9vawogICAgICAgICAgdGhpcy5hcHBlbmQoZGF0YS5wYWdlV3JhcFtwYWdlXSk7CgogICAgICAgICAgaWYgKCFkYXRhLnBhZ2VQbGFjZVtwYWdlXSkgewogICAgICAgICAgICAKICAgICAgICAgICAgZGF0YS5wYWdlUGxhY2VbcGFnZV0gPSBwYWdlOwogICAgICAgICAgICAvLyBNb3ZlIGBwYWdlT2Jqc1twYWdlXWAgdG8gd3JhcHBlcgogICAgICAgICAgICBkYXRhLnBhZ2VPYmpzW3BhZ2VdLmFwcGVuZFRvKGRhdGEucGFnZVdyYXBbcGFnZV0pOwogICAgICAgICAgCiAgICAgICAgIH0KCiAgICAgICAgICAvLyBTZXQgdGhlIHNpemUgb2YgdGhlIHBhZ2UKICAgICAgICAgIHZhciBwcm9wID0gdHVybk1ldGhvZHMuX3BhZ2VTaXplLmNhbGwodGhpcywgcGFnZSwgdHJ1ZSk7CiAgICAgICAgICBlbGVtZW50LmNzcyh7d2lkdGg6IHByb3Aud2lkdGgsIGhlaWdodDogcHJvcC5oZWlnaHR9KTsKICAgICAgICAgIGRhdGEucGFnZVdyYXBbcGFnZV0uY3NzKHByb3ApOwoKICAgICAgICB9CgogICAgICAgIGlmIChkYXRhLnBhZ2VQbGFjZVtwYWdlXSA9PSBwYWdlKSB7CgogICAgICAgICAvLyBJZiB0aGUgcGFnZSBpc24ndCBpbiBhbm90aGVyIHBsYWNlLCBjcmVhdGUgdGhlIGZsaXAgZWZmZWN0CiAgICAgICAgICB0dXJuTWV0aG9kcy5fbWFrZUZsaXAuY2FsbCh0aGlzLCBwYWdlKTsKCiAgICAgIH0KICAgICAgICAKICAgICAgfSBlbHNlIHsKCiAgICAgICAgLy8gUGxhY2UKICAgICAgICBkYXRhLnBhZ2VQbGFjZVtwYWdlXSA9IDA7CgogICAgICAgIC8vIFJlbW92ZSBlbGVtZW50IGZyb20gdGhlIERPTQogICAgICAgIGlmIChkYXRhLnBhZ2VPYmpzW3BhZ2VdKQogICAgICAgICAgZGF0YS5wYWdlT2Jqc1twYWdlXS5yZW1vdmUoKTsKCiAgICAgIH0KCiAgfSwKCiAgLy8gQ2hlY2tzIGlmIGEgcGFnZSBpcyBpbiBtZW1vcnkKICAKICBoYXNQYWdlOiBmdW5jdGlvbihwYWdlKSB7CgogICAgcmV0dXJuIGhhcyhwYWdlLCB0aGlzLmRhdGEoKS5wYWdlT2Jqcyk7CiAgCiAgfSwKCiAgLy8gQ2VudGVycyB0aGUgZmxpcGJvb2sKCiAgY2VudGVyOiBmdW5jdGlvbihwYWdlKSB7CiAgICAKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCksCiAgICAgIHNpemUgPSAkKHRoaXMpLnR1cm4oJ3NpemUnKSwKICAgICAgbGVmdCA9IDA7CgogICAgaWYgKCFkYXRhLm5vQ2VudGVyKSB7CiAgICAgIGlmIChkYXRhLmRpc3BsYXk9PSdkb3VibGUnKSB7CiAgICAgICAgdmFyIHZpZXcgPSB0aGlzLnR1cm4oJ3ZpZXcnLCBwYWdlIHx8IGRhdGEudHBhZ2UgfHwgZGF0YS5wYWdlKTsKCiAgICAgICAgaWYgKGRhdGEuZGlyZWN0aW9uPT0nbHRyJykgewogICAgICAgICAgaWYgKCF2aWV3WzBdKQogICAgICAgICAgICBsZWZ0IC09IHNpemUud2lkdGgvNDsKICAgICAgICAgIGVsc2UgaWYgKCF2aWV3WzFdKQogICAgICAgICAgICBsZWZ0ICs9IHNpemUud2lkdGgvNDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgaWYgKCF2aWV3WzBdKQogICAgICAgICAgICBsZWZ0ICs9IHNpemUud2lkdGgvNDsKICAgICAgICAgIGVsc2UgaWYgKCF2aWV3WzFdKQogICAgICAgICAgICBsZWZ0IC09IHNpemUud2lkdGgvNDsKICAgICAgICB9CiAgICAgIAogICAgICB9CgogICAgICAkKHRoaXMpLmNzcyh7bWFyZ2luTGVmdDogbGVmdH0pOwogICAgfQoKICAgIHJldHVybiB0aGlzOwoKICB9LAoKICAvLyBEZXN0cm95cyB0aGUgZmxpcGJvb2sKCiAgZGVzdHJveTogZnVuY3Rpb24gKCkgewoKICAgIHZhciBwYWdlLAogICAgICBmbGlwYm9vayA9IHRoaXMsCiAgICAgIGRhdGEgPSB0aGlzLmRhdGEoKSwKICAgICAgZXZlbnRzID0gWwogICAgICAgICdlbmQnLCAnZmlyc3QnLCAnZmxpcCcsICdsYXN0JywgJ3ByZXNzZWQnLAogICAgICAgICdyZWxlYXNlZCcsICdzdGFydCcsICd0dXJuaW5nJywgJ3R1cm5lZCcsCiAgICAgICAgJ3pvb21pbmcnLCAnbWlzc2luZyddOwoKICAgIGlmICh0cmlnZ2VyKCdkZXN0cm95aW5nJywgdGhpcyk9PSdwcmV2ZW50ZWQnKQogICAgICByZXR1cm47CgogICAgZGF0YS5kZXN0cm95aW5nID0gdHJ1ZTsKCiAgICAkLmVhY2goZXZlbnRzLCBmdW5jdGlvbihpbmRleCwgZXZlbnROYW1lKSB7CiAgICAgIGZsaXBib29rLnVuYmluZChldmVudE5hbWUpOwogICAgfSk7CgogICAgdGhpcy5wYXJlbnQoKS51bmJpbmQoJ3N0YXJ0JywgZGF0YS5ldmVudEhhbmRsZXJzLnN0YXJ0KTsKCiAgICAkKGRvY3VtZW50KS51bmJpbmQobW91c2VFdmVudHMubW92ZSwgZGF0YS5ldmVudEhhbmRsZXJzLnRvdWNoTW92ZSkuCiAgICAgIHVuYmluZChtb3VzZUV2ZW50cy51cCwgZGF0YS5ldmVudEhhbmRsZXJzLnRvdWNoRW5kKTsKICAgIAogICAgd2hpbGUgKGRhdGEudG90YWxQYWdlcyE9PTApIHsKICAgICAgdGhpcy50dXJuKCdyZW1vdmVQYWdlJywgZGF0YS50b3RhbFBhZ2VzKTsKICAgIH0KCiAgICBpZiAoZGF0YS5mcGFyZW50KQogICAgICBkYXRhLmZwYXJlbnQucmVtb3ZlKCk7CgogICAgaWYgKGRhdGEuc2hhZG93KQogICAgICBkYXRhLnNoYWRvdy5yZW1vdmUoKTsKCiAgICB0aGlzLnJlbW92ZURhdGEoKTsKICAgIGRhdGEgPSBudWxsOwoKICAgIHJldHVybiB0aGlzOwoKICB9LAoKICAvLyBDaGVja3MgaWYgdGhpcyBlbGVtZW50IGlzIGEgZmxpcGJvb2sKCiAgaXM6IGZ1bmN0aW9uKCkgewoKICAgIHJldHVybiB0eXBlb2YodGhpcy5kYXRhKCkucGFnZXMpPT0nb2JqZWN0JzsKCiAgfSwKCiAgLy8gU2V0cyBhbmQgZ2V0cyB0aGUgem9vbSB2YWx1ZQoKICB6b29tOiBmdW5jdGlvbihuZXdab29tKSB7CiAgICAKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCk7CgogICAgaWYgKHR5cGVvZihuZXdab29tKT09J251bWJlcicpIHsKCiAgICAgIGlmIChuZXdab29tPDAuMDAxIHx8IG5ld1pvb20+MTAwKQogICAgICAgIHRocm93IHR1cm5FcnJvcihuZXdab29tKyAnIGlzIG5vdCBhIHZhbHVlIGZvciB6b29tJyk7CiAgICAgIAogICAgICBpZiAodHJpZ2dlcignem9vbWluZycsIHRoaXMsIFtuZXdab29tLCBkYXRhLnpvb21dKT09J3ByZXZlbnRlZCcpCiAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgIAogICAgICB2YXIgc2l6ZSA9IHRoaXMudHVybignc2l6ZScpLAogICAgICAgIGN1cnJlbnRWaWV3ID0gdGhpcy50dXJuKCd2aWV3JyksCiAgICAgICAgaXogPSAxL2RhdGEuem9vbSwKICAgICAgICBuZXdXaWR0aCA9IE1hdGgucm91bmQoc2l6ZS53aWR0aCAqIGl6ICogbmV3Wm9vbSksCiAgICAgICAgbmV3SGVpZ2h0ID0gTWF0aC5yb3VuZChzaXplLmhlaWdodCAqIGl6ICogbmV3Wm9vbSk7CiAgICAKICAgICAgZGF0YS56b29tID0gbmV3Wm9vbTsKCiAgICAgICQodGhpcykudHVybignc3RvcCcpLgogICAgICAgIHR1cm4oJ3NpemUnLCBuZXdXaWR0aCwgbmV3SGVpZ2h0KTsKICAgICAgICAvKi4KICAgICAgICBjc3Moe21hcmdpblRvcDogc2l6ZS5oZWlnaHQgKiBpeiAvIDIgLSBuZXdIZWlnaHQgLyAyfSk7Ki8KCiAgICAgIGlmIChkYXRhLm9wdHMuYXV0b0NlbnRlcikKICAgICAgICB0aGlzLnR1cm4oJ2NlbnRlcicpOwogICAgICAvKmVsc2UKICAgICAgICAkKHRoaXMpLmNzcyh7bWFyZ2luTGVmdDogc2l6ZS53aWR0aCAqIGl6IC8gMiAtIG5ld1dpZHRoIC8gMn0pOyovCgogICAgICB0dXJuTWV0aG9kcy5fdXBkYXRlU2hhZG93LmNhbGwodGhpcyk7CgogICAgICBmb3IgKHZhciBpID0gMDsgaTxjdXJyZW50Vmlldy5sZW5ndGg7IGkrKykgewogICAgICAgIGlmIChjdXJyZW50Vmlld1tpXSAmJiBkYXRhLnBhZ2Vab29tW2N1cnJlbnRWaWV3W2ldXSE9ZGF0YS56b29tKSB7CiAgCiAgICAgICAgICB0aGlzLnRyaWdnZXIoJ3pvb21lZCcsWwogICAgICAgICAgICBjdXJyZW50Vmlld1tpXSwKICAgICAgICAgICAgY3VycmVudFZpZXcsCiAgICAgICAgICAgIGRhdGEucGFnZVpvb21bY3VycmVudFZpZXdbaV1dLAogICAgICAgICAgICBkYXRhLnpvb21dKTsKCiAgICAgICAgICBkYXRhLnBhZ2Vab29tW2N1cnJlbnRWaWV3W2ldXSA9IGRhdGEuem9vbTsKICAgICAgfQogICAgfQoKICAgICAgcmV0dXJuIHRoaXM7CgogICAgfSBlbHNlCiAgICAgIHJldHVybiBkYXRhLnpvb207CgogIH0sCgogIC8vIEdldHMgdGhlIHNpemUgb2YgYSBwYWdlCgogIF9wYWdlU2l6ZTogZnVuY3Rpb24ocGFnZSwgcG9zaXRpb24pIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLAogICAgICBwcm9wID0ge307CgogICAgaWYgKGRhdGEuZGlzcGxheT09J3NpbmdsZScpIHsKCiAgICAgIHByb3Aud2lkdGggPSB0aGlzLndpZHRoKCk7CiAgICAgIHByb3AuaGVpZ2h0ID0gdGhpcy5oZWlnaHQoKTsKCiAgICAgIGlmIChwb3NpdGlvbikgewogICAgICAgIHByb3AudG9wID0gMDsKICAgICAgICBwcm9wLmxlZnQgPSAwOwogICAgICAgIHByb3AucmlnaHQgPSAnYXV0byc7CiAgICAgIH0KCiAgICB9IGVsc2UgewoKICAgICAgdmFyIHBhZ2VXaWR0aCA9IHRoaXMud2lkdGgoKS8yLAogICAgICAgIHBhZ2VIZWlnaHQgPSB0aGlzLmhlaWdodCgpOwoKICAgICAgaWYgKGRhdGEucGFnZU9ianNbcGFnZV0uaGFzQ2xhc3MoJ293bi1zaXplJykpIHsKICAgICAgICBwcm9wLndpZHRoID0gZGF0YS5wYWdlT2Jqc1twYWdlXS53aWR0aCgpOwogICAgICAgIHByb3AuaGVpZ2h0ID0gZGF0YS5wYWdlT2Jqc1twYWdlXS5oZWlnaHQoKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBwcm9wLndpZHRoID0gcGFnZVdpZHRoOwogICAgICAgIHByb3AuaGVpZ2h0ID0gcGFnZUhlaWdodDsKICAgICAgfQogICAgICAKICAgICAgaWYgKHBvc2l0aW9uKSB7CiAgICAgICAgdmFyIG9kZCA9IHBhZ2UlMjsKICAgICAgICBwcm9wLnRvcCA9IChwYWdlSGVpZ2h0LXByb3AuaGVpZ2h0KS8yOwoKICAgICAgICBpZiAoZGF0YS5kaXJlY3Rpb249PSdsdHInKSB7CiAgICAgICAgICAKICAgICAgICAgIHByb3BbKG9kZCkgPyAncmlnaHQnIDogJ2xlZnQnXSA9IHBhZ2VXaWR0aC1wcm9wLndpZHRoOwogICAgICAgICAgcHJvcFsob2RkKSA/ICdsZWZ0JyA6ICdyaWdodCddID0gJ2F1dG8nOwoKICAgICAgICB9IGVsc2UgewogICAgICAgICAgCiAgICAgICAgICBwcm9wWyhvZGQpID8gJ2xlZnQnIDogJ3JpZ2h0J10gPSBwYWdlV2lkdGgtcHJvcC53aWR0aDsKICAgICAgICAgIHByb3BbKG9kZCkgPyAncmlnaHQnIDogJ2xlZnQnXSA9ICdhdXRvJzsKCiAgICAgICAgfQogICAgICAKICAgICAgfQogICAgfQoKICAgIHJldHVybiBwcm9wOwoKICB9LAoKICAvLyBQcmVwYXJlcyB0aGUgZmxpcCBlZmZlY3QgZm9yIGEgcGFnZQoKICBfbWFrZUZsaXA6IGZ1bmN0aW9uKHBhZ2UpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpOwoKICAgIGlmICghZGF0YS5wYWdlc1twYWdlXSAmJiBkYXRhLnBhZ2VQbGFjZVtwYWdlXT09cGFnZSkgewogICAgICAKICAgICAgdmFyIHNpbmdsZSA9IGRhdGEuZGlzcGxheT09J3NpbmdsZScsCiAgICAgICAgb2RkID0gcGFnZSUyOwoKICAgICAgZGF0YS5wYWdlc1twYWdlXSA9IGRhdGEucGFnZU9ianNbcGFnZV0uCiAgICAgICAgY3NzKHR1cm5NZXRob2RzLl9wYWdlU2l6ZS5jYWxsKHRoaXMsIHBhZ2UpKS4KICAgICAgICBmbGlwKHsKICAgICAgICAgIHBhZ2U6IHBhZ2UsCiAgICAgICAgICBuZXh0OiAob2RkIHx8IHNpbmdsZSkgPyBwYWdlKzEgOiBwYWdlLTEsCiAgICAgICAgICB0dXJuOiB0aGlzCiAgICAgICAgfSkuCiAgICAgICAgZmxpcCgnZGlzYWJsZScsIGRhdGEuZGlzYWJsZWQpOwoKICAgICAgICAvLyBJc3N1ZSBhYm91dCB6LWluZGV4CiAgICAgICAgdHVybk1ldGhvZHMuX3NldFBhZ2VMb2MuY2FsbCh0aGlzLCBwYWdlKTsKCiAgICAgICAgZGF0YS5wYWdlWm9vbVtwYWdlXSA9IGRhdGEuem9vbTsKICAgICAgICAKICAgIH0KCiAgICByZXR1cm4gZGF0YS5wYWdlc1twYWdlXTsKICB9LAoKICAvLyBNYWtlcyBwYWdlcyB3aXRoaW4gYSByYW5nZQoKICBfbWFrZVJhbmdlOiBmdW5jdGlvbigpIHsKCiAgICB2YXIgcGFnZSwgcmFuZ2UsCiAgICAgIGRhdGEgPSB0aGlzLmRhdGEoKTsKCiAgICBpZiAoZGF0YS50b3RhbFBhZ2VzPDEpCiAgICAgIHJldHVybjsKCiAgICByYW5nZSA9IHRoaXMudHVybigncmFuZ2UnKTsKCiAgICBmb3IgKHBhZ2UgPSByYW5nZVswXTsgcGFnZTw9cmFuZ2VbMV07IHBhZ2UrKykKICAgICAgdHVybk1ldGhvZHMuX2FkZFBhZ2UuY2FsbCh0aGlzLCBwYWdlKTsKCiAgfSwKCiAgLy8gUmV0dXJucyBhIHJhbmdlIG9mIHBhZ2VzIHRoYXQgc2hvdWxkIGJlIGluIHRoZSBET00KICAvLyBFeGFtcGxlOgogIC8vIC0gcGFnZSBpbiB0aGUgY3VycmVudCB2aWV3LCByZXR1cm4gdHJ1ZQogIC8vICogcGFnZSBpcyBpbiB0aGUgcmFuZ2UsIHJldHVybiB0cnVlCiAgLy8gT3RoZXJ3aXNlLCByZXR1cm4gZmFsc2UKICAvLwogIC8vIDEgMi0zIDQtNSA2LTcgOC05IDEwLTExIDEyLTEzCiAgLy8gICAqKiAgKiogIC0tICAgKiogICoqCgogIHJhbmdlOiBmdW5jdGlvbihwYWdlKSB7CgogICAgdmFyIHJlbWFpbmluZ1BhZ2VzLCBsZWZ0LCByaWdodCwgdmlldywKICAgICAgZGF0YSA9IHRoaXMuZGF0YSgpOwoKICAgICAgcGFnZSA9IHBhZ2UgfHwgZGF0YS50cGFnZSB8fCBkYXRhLnBhZ2UgfHwgMTsKICAgICAgdmlldyA9IHR1cm5NZXRob2RzLl92aWV3LmNhbGwodGhpcywgcGFnZSk7CgogICAgICBpZiAocGFnZTwxIHx8IHBhZ2U+ZGF0YS50b3RhbFBhZ2VzKQogICAgICAgIHRocm93IHR1cm5FcnJvcignIicrcGFnZSsnIiBpcyBub3QgYSB2YWxpZCBwYWdlJyk7CgogICAgCiAgICAgIHZpZXdbMV0gPSB2aWV3WzFdIHx8IHZpZXdbMF07CiAgICAgIAogICAgICBpZiAodmlld1swXT49MSAmJiB2aWV3WzFdPD1kYXRhLnRvdGFsUGFnZXMpIHsKCiAgICAgICAgcmVtYWluaW5nUGFnZXMgPSBNYXRoLmZsb29yKChwYWdlc0luRE9NLTIpLzIpOwoKICAgICAgICBpZiAoZGF0YS50b3RhbFBhZ2VzLXZpZXdbMV0gPiB2aWV3WzBdKSB7CiAgICAgICAgICBsZWZ0ID0gTWF0aC5taW4odmlld1swXS0xLCByZW1haW5pbmdQYWdlcyk7CiAgICAgICAgICByaWdodCA9IDIqcmVtYWluaW5nUGFnZXMtbGVmdDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcmlnaHQgPSBNYXRoLm1pbihkYXRhLnRvdGFsUGFnZXMtdmlld1sxXSwgcmVtYWluaW5nUGFnZXMpOwogICAgICAgICAgbGVmdCA9IDIqcmVtYWluaW5nUGFnZXMtcmlnaHQ7CiAgICAgICAgfQoKICAgICAgfSBlbHNlIHsKICAgICAgICBsZWZ0ID0gcGFnZXNJbkRPTS0xOwogICAgICAgIHJpZ2h0ID0gcGFnZXNJbkRPTS0xOwogICAgICB9CgogICAgICByZXR1cm4gW01hdGgubWF4KDEsIHZpZXdbMF0tbGVmdCksCiAgICAgICAgICBNYXRoLm1pbihkYXRhLnRvdGFsUGFnZXMsIHZpZXdbMV0rcmlnaHQpXTsKCiAgfSwKCiAgLy8gRGV0ZWN0cyBpZiBhIHBhZ2UgaXMgd2l0aGluIHRoZSByYW5nZSBvZiBgcGFnZXNJbkRPTWAgZnJvbSB0aGUgY3VycmVudCB2aWV3CgogIF9uZWNlc3NQYWdlOiBmdW5jdGlvbihwYWdlKSB7CiAgICAKICAgIGlmIChwYWdlPT09MCkKICAgICAgcmV0dXJuIHRydWU7CgogICAgdmFyIHJhbmdlID0gdGhpcy50dXJuKCdyYW5nZScpOwoKICAgIHJldHVybiB0aGlzLmRhdGEoKS5wYWdlT2Jqc1twYWdlXS5oYXNDbGFzcygnZml4ZWQnKSB8fAogICAgICAocGFnZT49cmFuZ2VbMF0gJiYgcGFnZTw9cmFuZ2VbMV0pOwogICAgCiAgfSwKCiAgLy8gUmVsZWFzZXMgbWVtb3J5IGJ5IHJlbW92aW5nIHBhZ2VzIGZyb20gdGhlIERPTQoKICBfcmVtb3ZlRnJvbURPTTogZnVuY3Rpb24oKSB7CgogICAgdmFyIHBhZ2UsIGRhdGEgPSB0aGlzLmRhdGEoKTsKCiAgICBmb3IgKHBhZ2UgaW4gZGF0YS5wYWdlV3JhcCkKICAgICAgaWYgKGhhcyhwYWdlLCBkYXRhLnBhZ2VXcmFwKSAmJgogICAgICAgICF0dXJuTWV0aG9kcy5fbmVjZXNzUGFnZS5jYWxsKHRoaXMsIHBhZ2UpKQogICAgICB0dXJuTWV0aG9kcy5fcmVtb3ZlUGFnZUZyb21ET00uY2FsbCh0aGlzLCBwYWdlKTsKICAgIAogIH0sCgogIC8vIFJlbW92ZXMgYSBwYWdlIGZyb20gRE9NIGFuZCBpdHMgaW50ZXJuYWwgcmVmZXJlbmNlcwoKICBfcmVtb3ZlUGFnZUZyb21ET006IGZ1bmN0aW9uKHBhZ2UpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpOwoKICAgIGlmIChkYXRhLnBhZ2VzW3BhZ2VdKSB7CiAgICAgIHZhciBkZCA9IGRhdGEucGFnZXNbcGFnZV0uZGF0YSgpOwoKICAgICAgZmxpcE1ldGhvZHMuX21vdmVGb2xkaW5nUGFnZS5jYWxsKGRhdGEucGFnZXNbcGFnZV0sIGZhbHNlKTsKCiAgICAgIGlmIChkZC5mICYmIGRkLmYuZndyYXBwZXIpCiAgICAgICAgZGQuZi5md3JhcHBlci5yZW1vdmUoKTsKCiAgICAgIGRhdGEucGFnZXNbcGFnZV0ucmVtb3ZlRGF0YSgpOwogICAgICBkYXRhLnBhZ2VzW3BhZ2VdLnJlbW92ZSgpOwogICAgICBkZWxldGUgZGF0YS5wYWdlc1twYWdlXTsKICAgIH0KCiAgICBpZiAoZGF0YS5wYWdlT2Jqc1twYWdlXSkKICAgICAgZGF0YS5wYWdlT2Jqc1twYWdlXS5yZW1vdmUoKTsKCiAgICBpZiAoZGF0YS5wYWdlV3JhcFtwYWdlXSkgewogICAgICBkYXRhLnBhZ2VXcmFwW3BhZ2VdLnJlbW92ZSgpOwogICAgICBkZWxldGUgZGF0YS5wYWdlV3JhcFtwYWdlXTsKICAgIH0KCiAgICB0dXJuTWV0aG9kcy5fcmVtb3ZlTXYuY2FsbCh0aGlzLCBwYWdlKTsKCiAgICBkZWxldGUgZGF0YS5wYWdlUGxhY2VbcGFnZV07CiAgICBkZWxldGUgZGF0YS5wYWdlWm9vbVtwYWdlXTsKCiAgfSwKCiAgLy8gUmVtb3ZlcyBhIHBhZ2UKCiAgcmVtb3ZlUGFnZTogZnVuY3Rpb24ocGFnZSkgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCk7CgogICAgLy8gRGVsZXRlIGFsbCB0aGUgcGFnZXMKICAgIGlmIChwYWdlPT0nKicpIHsKICAgICAgCiAgICAgIHdoaWxlIChkYXRhLnRvdGFsUGFnZXMhPT0wKSB7CiAgICAgICAgdGhpcy50dXJuKCdyZW1vdmVQYWdlJywgZGF0YS50b3RhbFBhZ2VzKTsKICAgICAgfQoKICAgIH0gZWxzZSB7CgogICAgICBpZiAocGFnZTwxIHx8IHBhZ2U+ZGF0YS50b3RhbFBhZ2VzKQogICAgICAgIHRocm93IHR1cm5FcnJvcignVGhlIHBhZ2UgJysgcGFnZSArICcgZG9lc25cJ3QgZXhpc3QnKTsKICAgICAgICAKICAgICAgaWYgKGRhdGEucGFnZU9ianNbcGFnZV0pIHsKCiAgICAgICAgLy8gU3RvcCBhbmltYXRpb25zCiAgICAgICAgdGhpcy50dXJuKCdzdG9wJyk7CgogICAgICAgIC8vIFJlbW92ZSBgcGFnZWAKICAgICAgICB0dXJuTWV0aG9kcy5fcmVtb3ZlUGFnZUZyb21ET00uY2FsbCh0aGlzLCBwYWdlKTsKCiAgICAgICAgZGVsZXRlIGRhdGEucGFnZU9ianNbcGFnZV07CgogICAgICB9CgogICAgICAvLyBNb3ZlIHRoZSBwYWdlcwogICAgICB0dXJuTWV0aG9kcy5fbW92ZVBhZ2VzLmNhbGwodGhpcywgcGFnZSwgLTEpOwoKICAgICAgLy8gUmVzaXplIHRoZSBzaXplIG9mIHRoaXMgZmxpcGJvb2sKICAgICAgZGF0YS50b3RhbFBhZ2VzID0gZGF0YS50b3RhbFBhZ2VzLTE7CgogICAgICAvLyBDaGVjayB0aGUgY3VycmVudCB2aWV3CgogICAgICBpZiAoZGF0YS5wYWdlPmRhdGEudG90YWxQYWdlcykgewoKICAgICAgIGRhdGEucGFnZSA9IG51bGw7CiAgICAgICB0dXJuTWV0aG9kcy5fZml0UGFnZS5jYWxsKHRoaXMsIGRhdGEudG90YWxQYWdlcyk7CgogICAgICB9IGVsc2UgewoKICAgICAgICB0dXJuTWV0aG9kcy5fbWFrZVJhbmdlLmNhbGwodGhpcyk7CiAgICAgICAgdGhpcy50dXJuKCd1cGRhdGUnKTsKCiAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gdGhpczsKICAKICB9LAoKICAvLyBNb3ZlcyBwYWdlcwoKICBfbW92ZVBhZ2VzOiBmdW5jdGlvbihmcm9tLCBjaGFuZ2UpIHsKCiAgICB2YXIgcGFnZSwKICAgICAgdGhhdCA9IHRoaXMsCiAgICAgIGRhdGEgPSB0aGlzLmRhdGEoKSwKICAgICAgc2luZ2xlID0gZGF0YS5kaXNwbGF5PT0nc2luZ2xlJywKICAgICAgbW92ZSA9IGZ1bmN0aW9uKHBhZ2UpIHsKCiAgICAgICAgdmFyIG5leHQgPSBwYWdlICsgY2hhbmdlLAogICAgICAgICAgb2RkID0gbmV4dCUyLAogICAgICAgICAgY2xhc3NOYW1lID0gKG9kZCkgPyAnIG9kZCAnIDogJyBldmVuICc7CgogICAgICAgIGlmIChkYXRhLnBhZ2VPYmpzW3BhZ2VdKQogICAgICAgICAgZGF0YS5wYWdlT2Jqc1tuZXh0XSA9IGRhdGEucGFnZU9ianNbcGFnZV0uCiAgICAgICAgICAgIHJlbW92ZUNsYXNzKCdwJyArIHBhZ2UgKyAnIG9kZCBldmVuJykuCiAgICAgICAgICAgIGFkZENsYXNzKCdwJyArIG5leHQgKyBjbGFzc05hbWUpOwoKICAgICAgICBpZiAoZGF0YS5wYWdlUGxhY2VbcGFnZV0gJiYgZGF0YS5wYWdlV3JhcFtwYWdlXSkgewoKICAgICAgICAgIGRhdGEucGFnZVBsYWNlW25leHRdID0gbmV4dDsKICAgICAgICAKICAgICAgICAgIGlmIChkYXRhLnBhZ2VPYmpzW25leHRdLmhhc0NsYXNzKCdmaXhlZCcpKQogICAgICAgICAgICBkYXRhLnBhZ2VXcmFwW25leHRdID0gZGF0YS5wYWdlV3JhcFtwYWdlXS4KICAgICAgICAgICAgICBhdHRyKCdwYWdlJywgbmV4dCk7CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgIGRhdGEucGFnZVdyYXBbbmV4dF0gPSBkYXRhLnBhZ2VXcmFwW3BhZ2VdLgogICAgICAgICAgICAgIGNzcyh0dXJuTWV0aG9kcy5fcGFnZVNpemUuY2FsbCh0aGF0LCBuZXh0LCB0cnVlKSkuCiAgICAgICAgICAgICAgYXR0cigncGFnZScsIG5leHQpOwogICAgICAKICAgICAgICAgICAgaWYgKGRhdGEucGFnZXNbcGFnZV0pCiAgICAgICAgICAgICAgZGF0YS5wYWdlc1tuZXh0XSA9IGRhdGEucGFnZXNbcGFnZV0uCiAgICAgICAgICAgICAgICBmbGlwKCdvcHRpb25zJywgewogICAgICAgICAgICAgICAgICBwYWdlOiBuZXh0LAogICAgICAgICAgICAgICAgICBuZXh0OiAoc2luZ2xlIHx8IG9kZCkgPyBuZXh0KzEgOiBuZXh0LTEKICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgaWYgKGNoYW5nZSkgewogICAgICAgICAgICAgIGRlbGV0ZSBkYXRhLnBhZ2VzW3BhZ2VdOwogICAgICAgICAgICAgIGRlbGV0ZSBkYXRhLnBhZ2VQbGFjZVtwYWdlXTsKICAgICAgICAgICAgICBkZWxldGUgZGF0YS5wYWdlWm9vbVtwYWdlXTsKICAgICAgICAgICAgICBkZWxldGUgZGF0YS5wYWdlT2Jqc1twYWdlXTsKICAgICAgICAgICAgICBkZWxldGUgZGF0YS5wYWdlV3JhcFtwYWdlXTsKICAgICAgICAgICAgfQoKICAgICAgICB9CgogICAgfTsKCiAgICBpZiAoY2hhbmdlPjApCiAgICAgIGZvciAocGFnZT1kYXRhLnRvdGFsUGFnZXM7IHBhZ2U+PWZyb207IHBhZ2UtLSkKICAgICAgICBtb3ZlKHBhZ2UpOwogICAgZWxzZQogICAgICBmb3IgKHBhZ2U9ZnJvbTsgcGFnZTw9ZGF0YS50b3RhbFBhZ2VzOyBwYWdlKyspCiAgICAgICAgbW92ZShwYWdlKTsKCiAgfSwKCiAgLy8gU2V0cyBvciBHZXRzIHRoZSBkaXNwbGF5IG1vZGUKCiAgZGlzcGxheTogZnVuY3Rpb24oZGlzcGxheSkgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCksCiAgICAgIGN1cnJlbnREaXNwbGF5ID0gZGF0YS5kaXNwbGF5OwoKICAgIGlmIChkaXNwbGF5PT09dW5kZWZpbmVkKSB7CiAgICAgIAogICAgICByZXR1cm4gY3VycmVudERpc3BsYXk7CgogICAgfSBlbHNlIHsKCiAgICAgIGlmICgkLmluQXJyYXkoZGlzcGxheSwgZGlzcGxheXMpPT0tMSkKICAgICAgICB0aHJvdyB0dXJuRXJyb3IoJyInK2Rpc3BsYXkgKyAnIiBpcyBub3QgYSB2YWx1ZSBmb3IgZGlzcGxheScpOwogICAgICAKICAgICAgc3dpdGNoKGRpc3BsYXkpIHsKICAgICAgICBjYXNlICdzaW5nbGUnOgoKICAgICAgICAgIC8vIENyZWF0ZSBhIHRlbXBvcmFsIHBhZ2UgdG8gdXNlIGFzIGZvbGRlZCBwYWdlCgogICAgICAgICAgaWYgKCFkYXRhLnBhZ2VPYmpzWzBdKSB7CiAgICAgICAgICAgIHRoaXMudHVybignc3RvcCcpLgogICAgICAgICAgICAgIGNzcyh7J292ZXJmbG93JzogJ2hpZGRlbid9KTsKCiAgICAgICAgICAgIGRhdGEucGFnZU9ianNbMF0gPSAkKCc8ZGl2IC8+JywKICAgICAgICAgICAgICAgIHsnY2xhc3MnOiAncGFnZSBwLXRlbXBvcmFsJ30pLgogICAgICAgICAgICAgIGNzcyh7d2lkdGg6IHRoaXMud2lkdGgoKSwgaGVpZ2h0OiB0aGlzLmhlaWdodCgpfSkuCiAgICAgICAgICAgICAgYXBwZW5kVG8odGhpcyk7CiAgICAgICAgICB9CgogICAgICAgICAgdGhpcy5hZGRDbGFzcygnc2hhZG93Jyk7CgogICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ2RvdWJsZSc6CgogICAgICAgICAgLy8gUmVtb3ZlIHRoZSB0ZW1wb3JhbCBwYWdlCgogICAgICAgICAgaWYgKGRhdGEucGFnZU9ianNbMF0pIHsKICAgICAgICAgICAgdGhpcy50dXJuKCdzdG9wJykuY3NzKHsnb3ZlcmZsb3cnOiAnJ30pOwogICAgICAgICAgICBkYXRhLnBhZ2VPYmpzWzBdLnJlbW92ZSgpOwogICAgICAgICAgICBkZWxldGUgZGF0YS5wYWdlT2Jqc1swXTsKICAgICAgICAgIH0KCiAgICAgICAgICB0aGlzLnJlbW92ZUNsYXNzKCdzaGFkb3cnKTsKCiAgICAgICAgYnJlYWs7CiAgICAgIH0KICAgICAgCgogICAgICBkYXRhLmRpc3BsYXkgPSBkaXNwbGF5OwoKICAgICAgaWYgKGN1cnJlbnREaXNwbGF5KSB7CiAgICAgICAgdmFyIHNpemUgPSB0aGlzLnR1cm4oJ3NpemUnKTsKICAgICAgICB0dXJuTWV0aG9kcy5fbW92ZVBhZ2VzLmNhbGwodGhpcywgMSwgMCk7CiAgICAgICAgdGhpcy50dXJuKCdzaXplJywgc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQpLgogICAgICAgICAgdHVybigndXBkYXRlJyk7CiAgICAgIH0KCiAgICAgIHJldHVybiB0aGlzOwoKICAgIH0KICAKICB9LAogIAogIC8vIEdldHMgYW5kIHNldHMgdGhlIGRpcmVjdGlvbiBvZiB0aGUgZmxpcGJvb2sKCiAgZGlyZWN0aW9uOiBmdW5jdGlvbihkaXIpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpOwoKICAgIGlmIChkaXI9PT11bmRlZmluZWQpIHsKCiAgICAgIHJldHVybiBkYXRhLmRpcmVjdGlvbjsKCiAgICB9IGVsc2UgewoKICAgICAgZGlyID0gZGlyLnRvTG93ZXJDYXNlKCk7CgogICAgICBpZiAoJC5pbkFycmF5KGRpciwgZGlyZWN0aW9ucyk9PS0xKQogICAgICAgIHRocm93IHR1cm5FcnJvcignIicgKyBkaXIgKyAnIiBpcyBub3QgYSB2YWx1ZSBmb3IgZGlyZWN0aW9uJyk7CgogICAgICBpZiAoZGlyPT0ncnRsJykgewogICAgICAgICQodGhpcykuYXR0cignZGlyJywgJ2x0cicpLgogICAgICAgICAgY3NzKHtkaXJlY3Rpb246ICdsdHInfSk7CiAgICAgIH0KCiAgICAgIGRhdGEuZGlyZWN0aW9uID0gZGlyOwoKICAgICAgaWYgKGRhdGEuZG9uZSkKICAgICAgICB0aGlzLnR1cm4oJ3NpemUnLCAkKHRoaXMpLndpZHRoKCksICQodGhpcykuaGVpZ2h0KCkpOwoKICAgICAgcmV0dXJuIHRoaXM7CiAgICB9CgogIH0sCgogIC8vIERldGVjdHMgYW5pbWF0aW9uCgogIGFuaW1hdGluZzogZnVuY3Rpb24oKSB7CgogICAgcmV0dXJuIHRoaXMuZGF0YSgpLnBhZ2VNdi5sZW5ndGg+MDsKCiAgfSwKCiAgLy8gR2V0cyB0aGUgY3VycmVudCBhY3RpdmF0ZWQgY29ybmVyCgogIGNvcm5lcjogZnVuY3Rpb24oKSB7CiAgICAKICAgIHZhciBjb3JuZXIsCiAgICAgIHBhZ2UsCiAgICAgIGRhdGEgPSB0aGlzLmRhdGEoKTsKCiAgICBmb3IgKHBhZ2UgaW4gZGF0YS5wYWdlcykgewogICAgICBpZiAoaGFzKHBhZ2UsIGRhdGEucGFnZXMpKQogICAgICAgIGlmICgoY29ybmVyID0gZGF0YS5wYWdlc1twYWdlXS5mbGlwKCdjb3JuZXInKSkpIHsKICAgICAgICAgIHJldHVybiBjb3JuZXI7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBmYWxzZTsKICB9LAoKICAvLyBHZXRzIHRoZSBkYXRhIHN0b3JlZCBpbiB0aGUgZmxpcGJvb2sKCiAgZGF0YTogZnVuY3Rpb24oKSB7CiAgICAKICAgIHJldHVybiB0aGlzLmRhdGEoKTsKCiAgfSwKCiAgLy8gRGlzYWJsZXMgYW5kIGVuYWJsZXMgdGhlIGVmZmVjdAoKICBkaXNhYmxlOiBmdW5jdGlvbihkaXNhYmxlKSB7CgogICAgdmFyIHBhZ2UsCiAgICAgIGRhdGEgPSB0aGlzLmRhdGEoKSwKICAgICAgdmlldyA9IHRoaXMudHVybigndmlldycpOwoKICAgIGRhdGEuZGlzYWJsZWQgPSBkaXNhYmxlPT09dW5kZWZpbmVkIHx8IGRpc2FibGU9PT10cnVlOwoKICAgIGZvciAocGFnZSBpbiBkYXRhLnBhZ2VzKSB7CiAgICAgIGlmIChoYXMocGFnZSwgZGF0YS5wYWdlcykpCiAgICAgICAgZGF0YS5wYWdlc1twYWdlXS5mbGlwKCdkaXNhYmxlJywKICAgICAgICAgIChkYXRhLmRpc2FibGVkKSA/IHRydWUgOiAkLmluQXJyYXkocGFyc2VJbnQocGFnZSwgMTApLCB2aWV3KT09LTEpOwogICAgfQoKICAgIHJldHVybiB0aGlzOwoKICB9LAoKICAvLyBEaXNhYmxlcyBhbmQgZW5hYmxlcyB0aGUgZWZmZWN0CgogIGRpc2FibGVkOiBmdW5jdGlvbihkaXNhYmxlKSB7CgogICAgaWYgKGRpc2FibGU9PT11bmRlZmluZWQpIHsKICAgICAgcmV0dXJuIHRoaXMuZGF0YSgpLmRpc2FibGVkPT09dHJ1ZTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiB0aGlzLnR1cm4oJ2Rpc2FibGUnLCBkaXNhYmxlKTsKICAgIH0KCiAgfSwKCiAgLy8gR2V0cyBhbmQgc2V0cyB0aGUgc2l6ZQoKICBzaXplOiBmdW5jdGlvbih3aWR0aCwgaGVpZ2h0KSB7CgogICAgaWYgKHdpZHRoPT09dW5kZWZpbmVkIHx8IGhlaWdodD09PXVuZGVmaW5lZCkgewogICAgICAKICAgICAgcmV0dXJuIHt3aWR0aDogdGhpcy53aWR0aCgpLCBoZWlnaHQ6IHRoaXMuaGVpZ2h0KCl9OwoKICAgIH0gZWxzZSB7CgogICAgICB0aGlzLnR1cm4oJ3N0b3AnKTsKCiAgICAgIHZhciBwYWdlLCBwcm9wLAogICAgICAgIGRhdGEgPSB0aGlzLmRhdGEoKSwKICAgICAgICBwYWdlV2lkdGggPSAoZGF0YS5kaXNwbGF5PT0nZG91YmxlJykgPyB3aWR0aC8yIDogd2lkdGg7CgogICAgICB0aGlzLmNzcyh7d2lkdGg6IHdpZHRoLCBoZWlnaHQ6IGhlaWdodH0pOwoKICAgICAgaWYgKGRhdGEucGFnZU9ianNbMF0pCiAgICAgICAgZGF0YS5wYWdlT2Jqc1swXS5jc3Moe3dpZHRoOiBwYWdlV2lkdGgsIGhlaWdodDogaGVpZ2h0fSk7CiAgICAgIAogICAgICBmb3IgKHBhZ2UgaW4gZGF0YS5wYWdlV3JhcCkgewogICAgICAgIGlmICghaGFzKHBhZ2UsIGRhdGEucGFnZVdyYXApKSBjb250aW51ZTsKCiAgICAgICAgcHJvcCA9IHR1cm5NZXRob2RzLl9wYWdlU2l6ZS5jYWxsKHRoaXMsIHBhZ2UsIHRydWUpOwoKICAgICAgICBkYXRhLnBhZ2VPYmpzW3BhZ2VdLmNzcyh7d2lkdGg6IHByb3Aud2lkdGgsIGhlaWdodDogcHJvcC5oZWlnaHR9KTsKICAgICAgICBkYXRhLnBhZ2VXcmFwW3BhZ2VdLmNzcyhwcm9wKTsKICAgICAgICAKICAgICAgICBpZiAoZGF0YS5wYWdlc1twYWdlXSkKICAgICAgICAgIGRhdGEucGFnZXNbcGFnZV0uY3NzKHt3aWR0aDogcHJvcC53aWR0aCwgaGVpZ2h0OiBwcm9wLmhlaWdodH0pOwogICAgICB9CgogICAgICB0aGlzLnR1cm4oJ3Jlc2l6ZScpOwoKICAgICAgcmV0dXJuIHRoaXM7CgogICAgfQogIH0sCgogIC8vIFJlc2l6ZXMgZWFjaCBwYWdlCgogIHJlc2l6ZTogZnVuY3Rpb24oKSB7CgogICAgdmFyIHBhZ2UsIGRhdGEgPSB0aGlzLmRhdGEoKTsKCiAgICBpZiAoZGF0YS5wYWdlc1swXSkgewogICAgICBkYXRhLnBhZ2VXcmFwWzBdLmNzcyh7bGVmdDogLXRoaXMud2lkdGgoKX0pOwogICAgICBkYXRhLnBhZ2VzWzBdLmZsaXAoJ3Jlc2l6ZScsIHRydWUpOwogICAgfQoKICAgIGZvciAocGFnZSA9IDE7IHBhZ2UgPD0gZGF0YS50b3RhbFBhZ2VzOyBwYWdlKyspCiAgICAgIGlmIChkYXRhLnBhZ2VzW3BhZ2VdKQogICAgICAgIGRhdGEucGFnZXNbcGFnZV0uZmxpcCgncmVzaXplJywgdHJ1ZSk7CgogICAgdHVybk1ldGhvZHMuX3VwZGF0ZVNoYWRvdy5jYWxsKHRoaXMpOwoKICAgIGlmIChkYXRhLm9wdHMuYXV0b0NlbnRlcikKICAgICAgdGhpcy50dXJuKCdjZW50ZXInKTsKCiAgfSwKCiAgLy8gUmVtb3ZlcyBhbiBhbmltYXRpb24gZnJvbSB0aGUgY2FjaGUKCiAgX3JlbW92ZU12OiBmdW5jdGlvbihwYWdlKSB7CgogICAgdmFyIGksIGRhdGEgPSB0aGlzLmRhdGEoKTsKICAgICAgCiAgICBmb3IgKGk9MDsgaTxkYXRhLnBhZ2VNdi5sZW5ndGg7IGkrKykKICAgICAgaWYgKGRhdGEucGFnZU12W2ldPT1wYWdlKSB7CiAgICAgICAgZGF0YS5wYWdlTXYuc3BsaWNlKGksIDEpOwogICAgICAgIHJldHVybiB0cnVlOwogICAgICB9CgogICAgcmV0dXJuIGZhbHNlOwoKICB9LAoKICAvLyBBZGRzIGFuIGFuaW1hdGlvbiB0byB0aGUgY2FjaGUKICAKICBfYWRkTXY6IGZ1bmN0aW9uKHBhZ2UpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpOwoKICAgIHR1cm5NZXRob2RzLl9yZW1vdmVNdi5jYWxsKHRoaXMsIHBhZ2UpOwogICAgZGF0YS5wYWdlTXYucHVzaChwYWdlKTsKCiAgfSwKCiAgLy8gR2V0cyBpbmRleGVzIGZvciBhIHZpZXcKCiAgX3ZpZXc6IGZ1bmN0aW9uKHBhZ2UpIHsKICAKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCk7CiAgICAKICAgIHBhZ2UgPSBwYWdlIHx8IGRhdGEucGFnZTsKCiAgICBpZiAoZGF0YS5kaXNwbGF5PT0nZG91YmxlJykKICAgICAgcmV0dXJuIChwYWdlJTIpID8gW3BhZ2UtMSwgcGFnZV0gOiBbcGFnZSwgcGFnZSsxXTsKICAgIGVsc2UKICAgICAgcmV0dXJuIFtwYWdlXTsKCiAgfSwKCiAgLy8gR2V0cyBhIHZpZXcKCiAgdmlldzogZnVuY3Rpb24ocGFnZSkgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCksCiAgICAgIHZpZXcgPSB0dXJuTWV0aG9kcy5fdmlldy5jYWxsKHRoaXMsIHBhZ2UpOwoKICAgIGlmIChkYXRhLmRpc3BsYXk9PSdkb3VibGUnKQogICAgICByZXR1cm4gWyh2aWV3WzBdPjApID8gdmlld1swXSA6IDAsCiAgICAgICAgKHZpZXdbMV08PWRhdGEudG90YWxQYWdlcykgPyB2aWV3WzFdIDogMF07CiAgICBlbHNlCiAgICAgIHJldHVybiBbKHZpZXdbMF0+MCAmJiB2aWV3WzBdPD1kYXRhLnRvdGFsUGFnZXMpID8gdmlld1swXSA6IDBdOwoKICB9LAoKICAvLyBTdG9wcyBhbmltYXRpb25zCgogIHN0b3A6IGZ1bmN0aW9uKGlnbm9yZSwgYW5pbWF0ZSkgewoKICAgIGlmICh0aGlzLnR1cm4oJ2FuaW1hdGluZycpKSB7CiAgCiAgICAgIHZhciBpLCBvcHRzLCBwYWdlLAogICAgICAgIGRhdGEgPSB0aGlzLmRhdGEoKTsKCiAgICAgIGlmIChkYXRhLnRwYWdlKSB7CiAgICAgICAgZGF0YS5wYWdlID0gZGF0YS50cGFnZTsKICAgICAgICBkZWxldGUgZGF0YVsndHBhZ2UnXTsKICAgICAgfQoKICAgICAgZm9yIChpID0gMDsgaTxkYXRhLnBhZ2VNdi5sZW5ndGg7IGkrKykgewoKICAgICAgICBpZiAoIWRhdGEucGFnZU12W2ldIHx8IGRhdGEucGFnZU12W2ldPT09aWdub3JlKQogICAgICAgICAgY29udGludWU7CgogICAgICAgIHBhZ2UgPSBkYXRhLnBhZ2VzW2RhdGEucGFnZU12W2ldXTsKICAgICAgICBvcHRzID0gcGFnZS5kYXRhKCkuZi5vcHRzOwoKICAgICAgICBwYWdlLmZsaXAoJ2hpZGVGb2xkZWRQYWdlJywgYW5pbWF0ZSk7CgogICAgICAgIGlmICghYW5pbWF0ZSkKICAgICAgICAgIGZsaXBNZXRob2RzLl9tb3ZlRm9sZGluZ1BhZ2UuY2FsbChwYWdlLCBmYWxzZSk7CgogICAgICAgIGlmIChvcHRzLmZvcmNlKSB7CiAgICAgICAgICBvcHRzLm5leHQgPSAob3B0cy5wYWdlJTI9PT0wKSA/IG9wdHMucGFnZS0xIDogb3B0cy5wYWdlKzE7CiAgICAgICAgICBkZWxldGUgb3B0c1snZm9yY2UnXTsKICAgICAgICB9CgogICAgICB9CiAgICB9CiAgICAKICAgIHRoaXMudHVybigndXBkYXRlJyk7CgogICAgcmV0dXJuIHRoaXM7CiAgfSwKCiAgLy8gR2V0cyBhbmQgc2V0cyB0aGUgbnVtYmVyIG9mIHBhZ2VzCgogIHBhZ2VzOiBmdW5jdGlvbihwYWdlcykgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCk7CgogICAgaWYgKHBhZ2VzKSB7CgogICAgICBpZiAocGFnZXM8ZGF0YS50b3RhbFBhZ2VzKSB7CgogICAgICAgIGZvciAodmFyIHBhZ2UgPSBkYXRhLnRvdGFsUGFnZXM7IHBhZ2U+cGFnZXM7IHBhZ2UtLSkKICAgICAgICAgIHRoaXMudHVybigncmVtb3ZlUGFnZScsIHBhZ2UpOwoKICAgICAgfQoKICAgICAgICBkYXRhLnRvdGFsUGFnZXMgPSBwYWdlczsKICAgICAgICB0dXJuTWV0aG9kcy5fZml0UGFnZS5jYWxsKHRoaXMsIGRhdGEucGFnZSk7CgogICAgICByZXR1cm4gdGhpczsKCiAgICB9IGVsc2UKICAgICAgcmV0dXJuIGRhdGEudG90YWxQYWdlczsKCiAgfSwKCiAgLy8gQ2hlY2tzIG1pc3NpbmcgcGFnZXMKCiAgX21pc3NpbmcgOiBmdW5jdGlvbihwYWdlKSB7CiAgICAKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCk7CgogICAgaWYgKGRhdGEudG90YWxQYWdlczwxKQogICAgICByZXR1cm47CgogICAgdmFyIHAsCiAgICAgICAgcmFuZ2UgPSB0aGlzLnR1cm4oJ3JhbmdlJywgcGFnZSksCiAgICAgICAgbWlzc2luZyA9IFtdOwoKICAgIGZvciAocCA9IHJhbmdlWzBdOyBwPD1yYW5nZVsxXTsgcCsrKSB7CiAgICAgIGlmICghZGF0YS5wYWdlT2Jqc1twXSkKICAgICAgICBtaXNzaW5nLnB1c2gocCk7CiAgICB9CgogICAgaWYgKG1pc3NpbmcubGVuZ3RoPjApCiAgICAgIHRoaXMudHJpZ2dlcignbWlzc2luZycsIFttaXNzaW5nXSk7CgogIH0sCgogIC8vIFNldHMgYSBwYWdlIHdpdGhvdXQgZWZmZWN0CgogIF9maXRQYWdlOiBmdW5jdGlvbihwYWdlKSB7CgogICAgdmFyIGRhdGEgPSB0aGlzLmRhdGEoKSwKICAgICAgbmV3VmlldyA9IHRoaXMudHVybigndmlldycsIHBhZ2UpOwoKICAgIHR1cm5NZXRob2RzLl9taXNzaW5nLmNhbGwodGhpcywgcGFnZSk7CiAgICAKICAgIGlmICghZGF0YS5wYWdlT2Jqc1twYWdlXSkKICAgICAgcmV0dXJuOwoKICAgIGRhdGEucGFnZSA9IHBhZ2U7CiAgCiAgICB0aGlzLnR1cm4oJ3N0b3AnKTsKCiAgICBmb3IgKHZhciBpID0gMDsgaTxuZXdWaWV3Lmxlbmd0aDsgaSsrKSB7CgogICAgICBpZiAobmV3Vmlld1tpXSAmJiBkYXRhLnBhZ2Vab29tW25ld1ZpZXdbaV1dIT1kYXRhLnpvb20pIHsKICAKICAgICAgICB0aGlzLnRyaWdnZXIoJ3pvb21lZCcsWwogICAgICAgICAgbmV3Vmlld1tpXSwKICAgICAgICAgIG5ld1ZpZXcsCiAgICAgICAgICBkYXRhLnBhZ2Vab29tW25ld1ZpZXdbaV1dLAogICAgICAgICAgZGF0YS56b29tXSk7CgogICAgICAgIGRhdGEucGFnZVpvb21bbmV3Vmlld1tpXV0gPSBkYXRhLnpvb207CgogICAgICB9CiAgICB9CgogICAgdHVybk1ldGhvZHMuX3JlbW92ZUZyb21ET00uY2FsbCh0aGlzKTsKICAgIHR1cm5NZXRob2RzLl9tYWtlUmFuZ2UuY2FsbCh0aGlzKTsKICAgIHR1cm5NZXRob2RzLl91cGRhdGVTaGFkb3cuY2FsbCh0aGlzKTsKICAgIHRoaXMudHJpZ2dlcigndHVybmVkJywgW3BhZ2UsIG5ld1ZpZXddKTsKICAgIHRoaXMudHVybigndXBkYXRlJyk7CgogICAgaWYgKGRhdGEub3B0cy5hdXRvQ2VudGVyKQogICAgICB0aGlzLnR1cm4oJ2NlbnRlcicpOwoKICB9LAogIAogIC8vIFR1cm5zIHRoZSBwYWdlCgogIF90dXJuUGFnZTogZnVuY3Rpb24ocGFnZSkgewoKICAgIHZhciBjdXJyZW50LAogICAgICBuZXh0LAogICAgICBkYXRhID0gdGhpcy5kYXRhKCksCiAgICAgIHBsYWNlID0gZGF0YS5wYWdlUGxhY2VbcGFnZV0sCiAgICAgIHZpZXcgPSB0aGlzLnR1cm4oJ3ZpZXcnKSwKICAgICAgbmV3VmlldyA9IHRoaXMudHVybigndmlldycsIHBhZ2UpOwoKCiAgICBpZiAoZGF0YS5wYWdlIT1wYWdlKSB7CgogICAgICB2YXIgY3VycmVudFBhZ2UgPSBkYXRhLnBhZ2U7CgogICAgICBpZiAodHJpZ2dlcigndHVybmluZycsIHRoaXMsIFtwYWdlLCBuZXdWaWV3XSk9PSdwcmV2ZW50ZWQnKSB7CgogICAgICAgIGlmIChjdXJyZW50UGFnZT09ZGF0YS5wYWdlICYmICQuaW5BcnJheShwbGFjZSwgZGF0YS5wYWdlTXYpIT0tMSkKICAgICAgICAgIGRhdGEucGFnZXNbcGxhY2VdLmZsaXAoJ2hpZGVGb2xkZWRQYWdlJywgdHJ1ZSk7CiAgICAgICAgCiAgICAgICAgcmV0dXJuOwoKICAgICAgfQoKICAgICAgaWYgKCQuaW5BcnJheSgxLCBuZXdWaWV3KSE9LTEpCiAgICAgICAgdGhpcy50cmlnZ2VyKCdmaXJzdCcpOwogICAgICBpZiAoJC5pbkFycmF5KGRhdGEudG90YWxQYWdlcywgbmV3VmlldykhPS0xKQogICAgICAgIHRoaXMudHJpZ2dlcignbGFzdCcpOwoKICAgIH0KCiAgICBpZiAoZGF0YS5kaXNwbGF5PT0nc2luZ2xlJykgewogICAgICBjdXJyZW50ID0gdmlld1swXTsKICAgICAgbmV4dCA9IG5ld1ZpZXdbMF07CiAgICB9IGVsc2UgaWYgKHZpZXdbMV0gJiYgcGFnZT52aWV3WzFdKSB7CiAgICAgIGN1cnJlbnQgPSB2aWV3WzFdOwogICAgICBuZXh0ID0gbmV3Vmlld1swXTsKICAgIH0gZWxzZSBpZiAodmlld1swXSAmJiBwYWdlPHZpZXdbMF0pIHsKICAgICAgY3VycmVudCA9IHZpZXdbMF07CiAgICAgIG5leHQgPSBuZXdWaWV3WzFdOwogICAgfQoKICAgIHZhciBvcHRzQ29ybmVycyA9IGRhdGEub3B0cy50dXJuQ29ybmVycy5zcGxpdCgnLCcpLAogICAgICBmbGlwRGF0YSA9IGRhdGEucGFnZXNbY3VycmVudF0uZGF0YSgpLmYsCiAgICAgIG9wdHMgPSBmbGlwRGF0YS5vcHRzLAogICAgICBhY3R1YWxQb2ludCA9IGZsaXBEYXRhLnBvaW50OwoKICAgIHR1cm5NZXRob2RzLl9taXNzaW5nLmNhbGwodGhpcywgcGFnZSk7CiAgICAKICAgIGlmICghZGF0YS5wYWdlT2Jqc1twYWdlXSkKICAgICAgcmV0dXJuOwoKICAgIHRoaXMudHVybignc3RvcCcpOwoKICAgIGRhdGEucGFnZSA9IHBhZ2U7CgogICAgdHVybk1ldGhvZHMuX21ha2VSYW5nZS5jYWxsKHRoaXMpOwoKICAgIGRhdGEudHBhZ2UgPSBuZXh0OwoKICAgIGlmIChvcHRzLm5leHQhPW5leHQpIHsKICAgICAgb3B0cy5uZXh0ID0gbmV4dDsKICAgICAgb3B0cy5mb3JjZSA9IHRydWU7CiAgICB9CgogICAgdGhpcy50dXJuKCd1cGRhdGUnKTsKCiAgICBmbGlwRGF0YS5wb2ludCA9IGFjdHVhbFBvaW50OwogICAgCiAgICBpZiAoZmxpcERhdGEuZWZmZWN0PT0naGFyZCcpCiAgICAgIGlmIChkYXRhLmRpcmVjdGlvbj09J2x0cicpCiAgICAgICAgZGF0YS5wYWdlc1tjdXJyZW50XS5mbGlwKCd0dXJuUGFnZScsCiAgICAgICAgICAocGFnZT5jdXJyZW50KSA/ICdyJyA6ICdsJyk7CiAgICAgIGVsc2UKICAgICAgICBkYXRhLnBhZ2VzW2N1cnJlbnRdLmZsaXAoJ3R1cm5QYWdlJywKICAgICAgICAgIChwYWdlPmN1cnJlbnQpID8gJ2wnIDogJ3InKTsKICAgIGVsc2UgewogICAgICBpZiAoZGF0YS5kaXJlY3Rpb249PSdsdHInKQogICAgICAgIGRhdGEucGFnZXNbY3VycmVudF0uZmxpcCgndHVyblBhZ2UnLAogICAgICAgICAgb3B0c0Nvcm5lcnNbKHBhZ2U+Y3VycmVudCkgPyAxIDogMF0pOwogICAgICBlbHNlCiAgICAgICAgZGF0YS5wYWdlc1tjdXJyZW50XS5mbGlwKCd0dXJuUGFnZScsCiAgICAgICAgICBvcHRzQ29ybmVyc1socGFnZT5jdXJyZW50KSA/IDAgOiAxXSk7CiAgICB9CgogIH0sCgogIC8vIEdldHMgYW5kIHNldHMgYSBwYWdlCgogIHBhZ2U6IGZ1bmN0aW9uKHBhZ2UpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpOwoKICAgIGlmIChwYWdlPT09dW5kZWZpbmVkKSB7CiAgICAgIAogICAgICByZXR1cm4gZGF0YS5wYWdlOwoKICAgIH0gZWxzZSB7CgogICAgICBpZiAoIWRhdGEuZGlzYWJsZWQgJiYgIWRhdGEuZGVzdHJveWluZykgewoKICAgICAgICBwYWdlID0gcGFyc2VJbnQocGFnZSwgMTApOwoKICAgICAgICBpZiAocGFnZT4wICYmIHBhZ2U8PWRhdGEudG90YWxQYWdlcykgewoKICAgICAgICAgIGlmIChwYWdlIT1kYXRhLnBhZ2UpIHsKICAgICAgICAgICAgaWYgKCFkYXRhLmRvbmUgfHwgJC5pbkFycmF5KHBhZ2UsIHRoaXMudHVybigndmlldycpKSE9LTEpCiAgICAgICAgICAgICAgdHVybk1ldGhvZHMuX2ZpdFBhZ2UuY2FsbCh0aGlzLCBwYWdlKTsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgIHR1cm5NZXRob2RzLl90dXJuUGFnZS5jYWxsKHRoaXMsIHBhZ2UpOwogICAgICAgICAgfQogICAgICAKICAgICAgICAgIHJldHVybiB0aGlzOwoKICAgICAgICB9IGVsc2UgewogICAgICAgIAogICAgICAgICAgdGhyb3cgdHVybkVycm9yKCdUaGUgcGFnZSAnICsgcGFnZSArICcgZG9lcyBub3QgZXhpc3QnKTsKCiAgICAgICAgfQoKICAgICAgfQoKICAgIH0KCiAgfSwKCiAgLy8gVHVybnMgdG8gdGhlIG5leHQgdmlldwoKICBuZXh0OiBmdW5jdGlvbigpIHsKCiAgICByZXR1cm4gdGhpcy50dXJuKCdwYWdlJywgTWF0aC5taW4odGhpcy5kYXRhKCkudG90YWxQYWdlcywKICAgICAgdHVybk1ldGhvZHMuX3ZpZXcuY2FsbCh0aGlzLCB0aGlzLmRhdGEoKS5wYWdlKS5wb3AoKSArIDEpKTsKICAKICB9LAoKICAvLyBUdXJucyB0byB0aGUgcHJldmlvdXMgdmlldwoKICBwcmV2aW91czogZnVuY3Rpb24oKSB7CgogICAgcmV0dXJuIHRoaXMudHVybigncGFnZScsIE1hdGgubWF4KDEsCiAgICAgIHR1cm5NZXRob2RzLl92aWV3LmNhbGwodGhpcywgdGhpcy5kYXRhKCkucGFnZSkuc2hpZnQoKSAtIDEpKTsKCiAgfSwKCiAgLy8gU2hvd3MgYSBwZWVsaW5nIGNvcm5lcgoKICBwZWVsOiBmdW5jdGlvbihjb3JuZXIsIGFuaW1hdGUpIHsKICAgIAogICAgdmFyIGRhdGEgPSB0aGlzLmRhdGEoKSwKICAgICAgdmlldyA9IHRoaXMudHVybigndmlldycpOwoKICAgIGFuaW1hdGUgPSAoYW5pbWF0ZT09PXVuZGVmaW5lZCkgPyB0cnVlIDogYW5pbWF0ZT09PXRydWU7CgogICAgaWYgKGNvcm5lcj09PWZhbHNlKSB7CiAgICAgIAogICAgICB0aGlzLnR1cm4oJ3N0b3AnLCBudWxsLCBhbmltYXRlKTsKCiAgICB9IGVsc2UgewogICAgCiAgICAgIGlmIChkYXRhLmRpc3BsYXk9PSdzaW5nbGUnKSB7CgogICAgICAgIGRhdGEucGFnZXNbZGF0YS5wYWdlXS5mbGlwKCdwZWVsJywgY29ybmVyLCBhbmltYXRlKTsKCiAgICAgIH0gZWxzZSB7CgogICAgICAgIHZhciBwYWdlOwoKICAgICAgICBpZiAoZGF0YS5kaXJlY3Rpb249PSdsdHInKSB7CiAgICAgICAgICAKICAgICAgICAgIHBhZ2UgPSAoY29ybmVyLmluZGV4T2YoJ2wnKSE9LTEpID8gdmlld1swXSA6IHZpZXdbMV07CgogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAKICAgICAgICAgIHBhZ2UgPSAoY29ybmVyLmluZGV4T2YoJ2wnKSE9LTEpID8gdmlld1sxXSA6IHZpZXdbMF07CgogICAgICAgIH0KICAgICAgICAKICAgICAgICBpZiAoZGF0YS5wYWdlc1twYWdlXSkKICAgICAgICAgIGRhdGEucGFnZXNbcGFnZV0uZmxpcCgncGVlbCcsIGNvcm5lciwgYW5pbWF0ZSk7CgogICAgICB9CiAgICB9CgogICAgcmV0dXJuIHRoaXM7CgogIH0sCgogIC8vIEFkZHMgYSBtb3Rpb24gdG8gdGhlIGludGVybmFsIGxpc3QKICAvLyBUaGlzIGV2ZW50IGlzIGNhbGxlZCBpbiBjb250ZXh0IG9mIGZsaXAKCiAgX2FkZE1vdGlvblBhZ2U6IGZ1bmN0aW9uKCkgewoKICAgIHZhciBvcHRzID0gJCh0aGlzKS5kYXRhKCkuZi5vcHRzLAogICAgICB0dXJuID0gb3B0cy50dXJuLAogICAgICBkZCA9IHR1cm4uZGF0YSgpOwoKICAgIHR1cm5NZXRob2RzLl9hZGRNdi5jYWxsKHR1cm4sIG9wdHMucGFnZSk7CgogIH0sCgogIC8vIFRoaXMgZXZlbnQgaXMgY2FsbGVkIGluIGNvbnRleHQgb2YgZmxpcAoKICBfZXZlbnRTdGFydDogZnVuY3Rpb24oZSwgb3B0cywgY29ybmVyKSB7CgogICAgdmFyIGRhdGEgPSBvcHRzLnR1cm4uZGF0YSgpLAogICAgICBhY3R1YWxab29tID0gZGF0YS5wYWdlWm9vbVtvcHRzLnBhZ2VdOwoKICAgIGlmIChlLmlzRGVmYXVsdFByZXZlbnRlZCgpKSB7CiAgICAgIHR1cm5NZXRob2RzLl91cGRhdGVTaGFkb3cuY2FsbChvcHRzLnR1cm4pOwogICAgICByZXR1cm47CiAgICB9CgogICAgaWYgKGFjdHVhbFpvb20gJiYgYWN0dWFsWm9vbSE9ZGF0YS56b29tKSB7CiAgICAgIAogICAgICBvcHRzLnR1cm4udHJpZ2dlcignem9vbWVkJyxbCiAgICAgICAgb3B0cy5wYWdlLAogICAgICAgIG9wdHMudHVybi50dXJuKCd2aWV3Jywgb3B0cy5wYWdlKSwKICAgICAgICBhY3R1YWxab29tLAogICAgICAgIGRhdGEuem9vbV0pOwoKICAgICAgZGF0YS5wYWdlWm9vbVtvcHRzLnBhZ2VdID0gZGF0YS56b29tOwoKICAgIH0KCiAgICBpZiAoZGF0YS5kaXNwbGF5PT0nc2luZ2xlJyAmJiBjb3JuZXIpIHsKCiAgICAgIGlmICgoY29ybmVyLmNoYXJBdCgxKT09J2wnICYmIGRhdGEuZGlyZWN0aW9uPT0nbHRyJykgfHwKICAgICAgICAoY29ybmVyLmNoYXJBdCgxKT09J3InICYmIGRhdGEuZGlyZWN0aW9uPT0ncnRsJykpCiAgICAgIHsKICAgICAgICAKICAgICAgICBvcHRzLm5leHQgPSAob3B0cy5uZXh0PG9wdHMucGFnZSkgPyBvcHRzLm5leHQgOiBvcHRzLnBhZ2UtMTsKICAgICAgICBvcHRzLmZvcmNlID0gdHJ1ZTsKCiAgICAgIH0gZWxzZSB7CiAgICAgICAgCiAgICAgICAgb3B0cy5uZXh0ID0gKG9wdHMubmV4dD5vcHRzLnBhZ2UpID8gb3B0cy5uZXh0IDogb3B0cy5wYWdlKzE7CgogICAgICB9CgogICAgfQoKICAgIHR1cm5NZXRob2RzLl9hZGRNb3Rpb25QYWdlLmNhbGwoZS50YXJnZXQpOwogICAgdHVybk1ldGhvZHMuX3VwZGF0ZVNoYWRvdy5jYWxsKG9wdHMudHVybik7CiAgfSwKCiAgLy8gVGhpcyBldmVudCBpcyBjYWxsZWQgaW4gY29udGV4dCBvZiBmbGlwCgogIF9ldmVudEVuZDogZnVuY3Rpb24oZSwgb3B0cywgdHVybmVkKSB7CiAgCiAgICB2YXIgdGhhdCA9ICQoZS50YXJnZXQpLAogICAgICBkYXRhID0gdGhhdC5kYXRhKCkuZiwKICAgICAgdHVybiA9IG9wdHMudHVybiwKICAgICAgZGQgPSB0dXJuLmRhdGEoKTsKCiAgICBpZiAodHVybmVkKSB7CgogICAgICB2YXIgdHBhZ2UgPSBkZC50cGFnZSB8fCBkZC5wYWdlOwogICAgCiAgICAgIGlmICh0cGFnZT09b3B0cy5uZXh0IHx8IHRwYWdlPT1vcHRzLnBhZ2UpIHsKICAgICAgICBkZWxldGUgZGQudHBhZ2U7CgogICAgICAgIHR1cm5NZXRob2RzLl9maXRQYWdlLmNhbGwodHVybiwgdHBhZ2UgfHwgb3B0cy5uZXh0LCB0cnVlKTsKICAgICAgfQoKICAgIH0gZWxzZSB7CiAgICAgIAogICAgICB0dXJuTWV0aG9kcy5fcmVtb3ZlTXYuY2FsbCh0dXJuLCBvcHRzLnBhZ2UpOwogICAgICB0dXJuTWV0aG9kcy5fdXBkYXRlU2hhZG93LmNhbGwodHVybik7CiAgICAgIHR1cm4udHVybigndXBkYXRlJyk7CgogICAgfQogICAgCiAgfSwKICAKICAvLyBUaGlzIGV2ZW50IGlzIGNhbGxlZCBpbiBjb250ZXh0IG9mIGZsaXAKCiAgX2V2ZW50UHJlc3NlZDogZnVuY3Rpb24oZSkgewoKICAgIHZhciBwYWdlLAogICAgICBkYXRhID0gJChlLnRhcmdldCkuZGF0YSgpLmYsCiAgICAgIHR1cm4gPSBkYXRhLm9wdHMudHVybiwKICAgICAgdHVybkRhdGEgPSB0dXJuLmRhdGEoKSwKICAgICAgcGFnZXMgPSB0dXJuRGF0YS5wYWdlczsKICAgIAogICAgdHVybkRhdGEubW91c2VBY3Rpb24gPSB0cnVlOwoKICAgIHR1cm4udHVybigndXBkYXRlJyk7CgogICAgcmV0dXJuIGRhdGEudGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpOwoKICB9LAoKICAvLyBUaGlzIGV2ZW50IGlzIGNhbGxlZCBpbiBjb250ZXh0IG9mIGZsaXAKCiAgX2V2ZW50UmVsZWFzZWQ6IGZ1bmN0aW9uKGUsIHBvaW50KSB7CgogICAgdmFyIG91dEFyZWEsCiAgICAgIHBhZ2UgPSAkKGUudGFyZ2V0KSwKICAgICAgZGF0YSA9IHBhZ2UuZGF0YSgpLmYsCiAgICAgIHR1cm4gPSBkYXRhLm9wdHMudHVybiwKICAgICAgdHVybkRhdGEgPSB0dXJuLmRhdGEoKTsKICAgIAogICAgaWYgKHR1cm5EYXRhLmRpc3BsYXk9PSdzaW5nbGUnKSB7CiAgICAgIG91dEFyZWEgPSAocG9pbnQuY29ybmVyPT0nYnInIHx8IHBvaW50LmNvcm5lcj09J3RyJykgPwogICAgICAgIHBvaW50Lng8cGFnZS53aWR0aCgpLzI6CiAgICAgICAgcG9pbnQueD5wYWdlLndpZHRoKCkvMjsKICAgIH0gZWxzZSB7CiAgICAgIG91dEFyZWEgPSBwb2ludC54PDAgfHwgcG9pbnQueD5wYWdlLndpZHRoKCk7CiAgICB9CgogICAgaWYgKChuZXcgRGF0ZSgpKS5nZXRUaW1lKCktZGF0YS50aW1lPDIwMCB8fCBvdXRBcmVhKSB7CgogICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgIHR1cm5NZXRob2RzLl90dXJuUGFnZS5jYWxsKHR1cm4sIGRhdGEub3B0cy5uZXh0KTsKCiAgICB9CgogICAgdHVybkRhdGEubW91c2VBY3Rpb24gPSBmYWxzZTsKCiAgfSwKCiAgLy8gVGhpcyBldmVudCBpcyBjYWxsZWQgaW4gY29udGV4dCBvZiBmbGlwCiAgCiAgX2ZsaXA6IGZ1bmN0aW9uKGUpIHsKCiAgICBlLnN0b3BQcm9wYWdhdGlvbigpOwoKICAgIHZhciBvcHRzID0gJChlLnRhcmdldCkuZGF0YSgpLmYub3B0czsKCiAgICBvcHRzLnR1cm4udHJpZ2dlcigndHVybicsIFtvcHRzLm5leHRdKTsKCiAgICBpZiAob3B0cy50dXJuLmRhdGEoKS5vcHRzLmF1dG9DZW50ZXIpIHsKICAgICAgb3B0cy50dXJuLnR1cm4oJ2NlbnRlcicsIG9wdHMubmV4dCk7CiAgICB9CgogIH0sCgogLy8KICBfdG91Y2hTdGFydDogZnVuY3Rpb24oKSB7CiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpOwogICAgZm9yICh2YXIgcGFnZSBpbiBkYXRhLnBhZ2VzKSB7CiAgICAgIGlmIChoYXMocGFnZSwgZGF0YS5wYWdlcykgJiYKICAgICAgICBmbGlwTWV0aG9kcy5fZXZlbnRTdGFydC5hcHBseShkYXRhLnBhZ2VzW3BhZ2VdLCBhcmd1bWVudHMpPT09ZmFsc2UpIHsKICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQogICAgfQogIH0sCiAgCiAgLy8KICBfdG91Y2hNb3ZlOiBmdW5jdGlvbigpIHsKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCk7CiAgICBmb3IgKHZhciBwYWdlIGluIGRhdGEucGFnZXMpIHsKICAgICAgaWYgKGhhcyhwYWdlLCBkYXRhLnBhZ2VzKSkgewogICAgICAgIGZsaXBNZXRob2RzLl9ldmVudE1vdmUuYXBwbHkoZGF0YS5wYWdlc1twYWdlXSwgYXJndW1lbnRzKTsKICAgICAgfQogICAgfQogIH0sCgogIC8vCiAgX3RvdWNoRW5kOiBmdW5jdGlvbigpIHsKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCk7CiAgICBmb3IgKHZhciBwYWdlIGluIGRhdGEucGFnZXMpIHsKICAgICAgaWYgKGhhcyhwYWdlLCBkYXRhLnBhZ2VzKSkgewogICAgICAgIGZsaXBNZXRob2RzLl9ldmVudEVuZC5hcHBseShkYXRhLnBhZ2VzW3BhZ2VdLCBhcmd1bWVudHMpOwogICAgICB9CiAgICB9CiAgfSwKCiAgLy8gQ2FsY3VsYXRlIHRoZSB6LWluZGV4IHZhbHVlIGZvciBwYWdlcyBkdXJpbmcgdGhlIGFuaW1hdGlvbgoKICBjYWxjdWxhdGVaOiBmdW5jdGlvbihtdikgewoKICAgIHZhciBpLCBwYWdlLCBuZXh0UGFnZSwgcGxhY2VQYWdlLCBkcGFnZSwKICAgICAgdGhhdCA9IHRoaXMsCiAgICAgIGRhdGEgPSB0aGlzLmRhdGEoKSwKICAgICAgdmlldyA9IHRoaXMudHVybigndmlldycpLAogICAgICBjdXJyZW50UGFnZSA9IHZpZXdbMF0gfHwgdmlld1sxXSwKICAgICAgdG90YWwgPSBtdi5sZW5ndGgtMSwKICAgICAgciA9IHtwYWdlWjoge30sIHBhcnRaOiB7fSwgcGFnZVY6IHt9fSwKCiAgICAgIGFkZFZpZXcgPSBmdW5jdGlvbihwYWdlKSB7CiAgICAgICAgdmFyIHZpZXcgPSB0aGF0LnR1cm4oJ3ZpZXcnLCBwYWdlKTsKICAgICAgICBpZiAodmlld1swXSkgci5wYWdlVlt2aWV3WzBdXSA9IHRydWU7CiAgICAgICAgaWYgKHZpZXdbMV0pIHIucGFnZVZbdmlld1sxXV0gPSB0cnVlOwogICAgICB9OwogICAgCiAgICBmb3IgKGkgPSAwOyBpPD10b3RhbDsgaSsrKSB7CiAgICAgIHBhZ2UgPSBtdltpXTsKICAgICAgbmV4dFBhZ2UgPSBkYXRhLnBhZ2VzW3BhZ2VdLmRhdGEoKS5mLm9wdHMubmV4dDsKICAgICAgcGxhY2VQYWdlID0gZGF0YS5wYWdlUGxhY2VbcGFnZV07CiAgICAgIGFkZFZpZXcocGFnZSk7CiAgICAgIGFkZFZpZXcobmV4dFBhZ2UpOwogICAgICBkcGFnZSA9IChkYXRhLnBhZ2VQbGFjZVtuZXh0UGFnZV09PW5leHRQYWdlKSA/IG5leHRQYWdlIDogcGFnZTsKICAgICAgci5wYWdlWltkcGFnZV0gPSBkYXRhLnRvdGFsUGFnZXMgLSBNYXRoLmFicyhjdXJyZW50UGFnZS1kcGFnZSk7CiAgICAgIHIucGFydFpbcGxhY2VQYWdlXSA9IGRhdGEudG90YWxQYWdlcyoyIC0gIHRvdGFsICsgaTsKICAgIH0KCiAgICByZXR1cm4gcjsKICB9LAoKICAvLyBVcGRhdGVzIHRoZSB6LWluZGV4IGFuZCBkaXNwbGF5IHByb3BlcnR5IG9mIGV2ZXJ5IHBhZ2UKCiAgdXBkYXRlOiBmdW5jdGlvbigpIHsKCiAgICB2YXIgcGFnZSwKICAgICAgZGF0YSA9IHRoaXMuZGF0YSgpOwoKICAgIGlmICh0aGlzLnR1cm4oJ2FuaW1hdGluZycpICYmIGRhdGEucGFnZU12WzBdIT09MCkgewoKICAgICAgLy8gVXBkYXRlIG1vdGlvbgoKICAgICAgdmFyIHAsIGFwYWdlLCBmaXhlZCwKICAgICAgICBwb3MgPSB0aGlzLnR1cm4oJ2NhbGN1bGF0ZVonLCBkYXRhLnBhZ2VNdiksCiAgICAgICAgY29ybmVyID0gdGhpcy50dXJuKCdjb3JuZXInKSwKICAgICAgICBhY3R1YWxWaWV3ID0gdGhpcy50dXJuKCd2aWV3JyksCiAgICAgICAgbmV3VmlldyA9IHRoaXMudHVybigndmlldycsIGRhdGEudHBhZ2UpOwogIAogICAgICBmb3IgKHBhZ2UgaW4gZGF0YS5wYWdlV3JhcCkgewoKICAgICAgICBpZiAoIWhhcyhwYWdlLCBkYXRhLnBhZ2VXcmFwKSkKICAgICAgICAgIGNvbnRpbnVlOwoKICAgICAgICBmaXhlZCA9IGRhdGEucGFnZU9ianNbcGFnZV0uaGFzQ2xhc3MoJ2ZpeGVkJyk7CgogICAgICAgIGRhdGEucGFnZVdyYXBbcGFnZV0uY3NzKHsKICAgICAgICAgIGRpc3BsYXk6IChwb3MucGFnZVZbcGFnZV0gfHwgZml4ZWQpID8gJycgOiAnbm9uZScsCiAgICAgICAgICB6SW5kZXg6CiAgICAgICAgICAgIChkYXRhLnBhZ2VPYmpzW3BhZ2VdLmhhc0NsYXNzKCdoYXJkJykgPwogICAgICAgICAgICAgIHBvcy5wYXJ0WltwYWdlXQogICAgICAgICAgICAgIDoKICAgICAgICAgICAgICBwb3MucGFnZVpbcGFnZV0KICAgICAgICAgICAgKSB8fCAoZml4ZWQgPyAtMSA6IDApCiAgICAgICAgfSk7CgogICAgICAgIGlmICgocCA9IGRhdGEucGFnZXNbcGFnZV0pKSB7CgogICAgICAgICAgcC5mbGlwKCd6JywgcG9zLnBhcnRaW3BhZ2VdIHx8IG51bGwpOwoKICAgICAgICAgIGlmIChwb3MucGFnZVZbcGFnZV0pCiAgICAgICAgICAgIHAuZmxpcCgncmVzaXplJyk7CiAgICAgICAgICAKICAgICAgICAgIGlmIChkYXRhLnRwYWdlKSB7IC8vIElzIGl0IHR1cm5pbmcgdGhlIHBhZ2UgdG8gYHRwYWdlYD8KCiAgICAgICAgICAgIHAuZmxpcCgnaG92ZXInLCBmYWxzZSkuCiAgICAgICAgICAgICAgZmxpcCgnZGlzYWJsZScsCiAgICAgICAgICAgICAgICAkLmluQXJyYXkocGFyc2VJbnQocGFnZSwgMTApLCBkYXRhLnBhZ2VNdik9PS0xICYmCiAgICAgICAgICAgICAgICBwYWdlIT1uZXdWaWV3WzBdICYmCiAgICAgICAgICAgICAgICBwYWdlIT1uZXdWaWV3WzFdKTsKCiAgICAgICAgICB9IGVsc2UgewoKICAgICAgICAgICAgcC5mbGlwKCdob3ZlcicsIGNvcm5lcj09PWZhbHNlKS4KICAgICAgICAgICAgICBmbGlwKCdkaXNhYmxlJywgcGFnZSE9YWN0dWFsVmlld1swXSAmJiBwYWdlIT1hY3R1YWxWaWV3WzFdKTsKCiAgICAgICAgICB9CgogICAgICAgIH0KCiAgICAgIH0KCiAgICB9IGVsc2UgewoKICAgICAgLy8gVXBkYXRlIHN0YXRpYyBwYWdlcwoKICAgICAgZm9yIChwYWdlIGluIGRhdGEucGFnZVdyYXApIHsKCiAgICAgICAgaWYgKCFoYXMocGFnZSwgZGF0YS5wYWdlV3JhcCkpCiAgICAgICAgICBjb250aW51ZTsKCiAgICAgICAgdmFyIHBhZ2VMb2NhdGlvbiA9IHR1cm5NZXRob2RzLl9zZXRQYWdlTG9jLmNhbGwodGhpcywgcGFnZSk7CgogICAgICAgIGlmIChkYXRhLnBhZ2VzW3BhZ2VdKSB7CiAgICAgICAgICBkYXRhLnBhZ2VzW3BhZ2VdLgogICAgICAgICAgICBmbGlwKCdkaXNhYmxlJywgZGF0YS5kaXNhYmxlZCB8fCBwYWdlTG9jYXRpb24hPTEpLgogICAgICAgICAgICBmbGlwKCdob3ZlcicsIHRydWUpLgogICAgICAgICAgICBmbGlwKCd6JywgbnVsbCk7CiAgICAgICAgfQogICAgICB9CiAgICB9CgogICAgcmV0dXJuIHRoaXM7CiAgfSwKCiAgLy8gVXBkYXRlcyB0aGUgcG9zaXRpb24gYW5kIHNpemUgb2YgdGhlIGZsaXBib29rJ3Mgc2hhZG93CgogIF91cGRhdGVTaGFkb3c6IGZ1bmN0aW9uKCkgewogICAgCiAgICB2YXIgdmlldywgdmlldzIsIHNoYWRvdywKICAgICAgZGF0YSA9IHRoaXMuZGF0YSgpLAogICAgICB3aWR0aCA9IHRoaXMud2lkdGgoKSwKICAgICAgaGVpZ2h0ID0gdGhpcy5oZWlnaHQoKSwKICAgICAgcGFnZVdpZHRoID0gKGRhdGEuZGlzcGxheT09J3NpbmdsZScpID8gd2lkdGggOiB3aWR0aC8yOwoKICAgIHZpZXcgPSB0aGlzLnR1cm4oJ3ZpZXcnKTsKCiAgICBpZiAoIWRhdGEuc2hhZG93KSB7CiAgICAgIGRhdGEuc2hhZG93ID0gJCgnPGRpdiAvPicsIHsKICAgICAgICAgICdjbGFzcyc6ICdzaGFkb3cnLAogICAgICAgICAgJ2Nzcyc6IGRpdkF0dCgwLCAwLCAwKS5jc3MKICAgICAgICB9KS4KICAgICAgICBhcHBlbmRUbyh0aGlzKTsKICAgIH0KCiAgICBmb3IgKHZhciBpID0gMDsgaTxkYXRhLnBhZ2VNdi5sZW5ndGg7IGkrKykgewogICAgICBpZiAoIXZpZXdbMF0gfHwgIXZpZXdbMV0pCiAgICAgICAgYnJlYWs7CiAgICAKICAgICAgdmlldyA9IHRoaXMudHVybigndmlldycsIGRhdGEucGFnZXNbZGF0YS5wYWdlTXZbaV1dLmRhdGEoKS5mLm9wdHMubmV4dCk7CiAgICAgIHZpZXcyID0gdGhpcy50dXJuKCd2aWV3JywgZGF0YS5wYWdlTXZbaV0pOwoKICAgICAgdmlld1swXSA9IHZpZXdbMF0gJiYgdmlldzJbMF07CiAgICAgIHZpZXdbMV0gPSB2aWV3WzFdICYmIHZpZXcyWzFdOwogICAgfQoKICAgIGlmICghdmlld1swXSkgc2hhZG93ID0gKGRhdGEuZGlyZWN0aW9uPT0nbHRyJykgPyAxIDogMjsKICAgIGVsc2UgaWYgKCF2aWV3WzFdKSBzaGFkb3cgPSAoZGF0YS5kaXJlY3Rpb249PSdsdHInKSA/IDIgOiAxOwogICAgZWxzZSBzaGFkb3cgPSAzOwoKICAgIHN3aXRjaCAoc2hhZG93KSB7CiAgICAgIGNhc2UgMToKICAgICAgICBkYXRhLnNoYWRvdy5jc3MoewogICAgICAgICAgd2lkdGg6IHBhZ2VXaWR0aCwKICAgICAgICAgIGhlaWdodDogaGVpZ2h0LAogICAgICAgICAgdG9wOiAwLAogICAgICAgICAgbGVmdDogcGFnZVdpZHRoCiAgICAgICAgfSk7CiAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgMjoKICAgICAgICBkYXRhLnNoYWRvdy5jc3MoewogICAgICAgICAgd2lkdGg6IHBhZ2VXaWR0aCwKICAgICAgICAgIGhlaWdodDogaGVpZ2h0LAogICAgICAgICAgdG9wOiAwLAogICAgICAgICAgbGVmdDogMAogICAgICAgIH0pOwogICAgICAgIGJyZWFrOwogICAgICBjYXNlIDM6CiAgICAgICAgZGF0YS5zaGFkb3cuY3NzKHsKICAgICAgICAgIHdpZHRoOiB3aWR0aCwKICAgICAgICAgIGhlaWdodDogaGVpZ2h0LAogICAgICAgICAgdG9wOiAwLAogICAgICAgICAgbGVmdDogMAogICAgICAgIH0pOwogICAgICAgIGJyZWFrOwogICAgfQoKICB9LAoKICAvLyBTZXRzIHRoZSB6LWluZGV4IGFuZCBkaXNwbGF5IHByb3BlcnR5IG9mIGEgcGFnZQogIC8vIEl0IGRlcGVuZHMgb24gdGhlIGN1cnJlbnQgdmlldwoKICBfc2V0UGFnZUxvYzogZnVuY3Rpb24ocGFnZSkgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCksCiAgICAgIHZpZXcgPSB0aGlzLnR1cm4oJ3ZpZXcnKSwKICAgICAgbG9jID0gMDsKCiAgICAKICAgIGlmIChwYWdlPT12aWV3WzBdIHx8IHBhZ2U9PXZpZXdbMV0pCiAgICAgIGxvYyA9IDE7CiAgICBlbHNlIGlmICgKICAgICAgKGRhdGEuZGlzcGxheT09J3NpbmdsZScgJiYgcGFnZT09dmlld1swXSsxKSB8fAogICAgICAoZGF0YS5kaXNwbGF5PT0nZG91YmxlJyAmJiBwYWdlPT12aWV3WzBdLTIgfHwgcGFnZT09dmlld1sxXSsyKQogICAgKQogICAgICBsb2MgPSAyOwoKICAgIGlmICghdGhpcy50dXJuKCdhbmltYXRpbmcnKSkKICAgICAgc3dpdGNoIChsb2MpIHsKICAgICAgICBjYXNlIDE6CiAgICAgICAgICBkYXRhLnBhZ2VXcmFwW3BhZ2VdLmNzcygKICAgICAgICAgIHsKICAgICAgICAgICAgekluZGV4OiBkYXRhLnRvdGFsUGFnZXMsCiAgICAgICAgICAgIGRpc3BsYXk6ICcnCiAgICAgICAgICB9KTsKICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDI6CiAgICAgICAgICBkYXRhLnBhZ2VXcmFwW3BhZ2VdLmNzcygKICAgICAgICAgIHsKICAgICAgICAgICAgekluZGV4OiBkYXRhLnRvdGFsUGFnZXMtMSwKICAgICAgICAgICAgZGlzcGxheTogJycKICAgICAgICAgIH0pOwogICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgMDoKICAgICAgICAgIGRhdGEucGFnZVdyYXBbcGFnZV0uY3NzKAogICAgICAgICAgewogICAgICAgICAgICB6SW5kZXg6IDAsCiAgICAgICAgICAgIGRpc3BsYXk6IChkYXRhLnBhZ2VPYmpzW3BhZ2VdLmhhc0NsYXNzKCdmaXhlZCcpKSA/ICcnIDogJ25vbmUnfQogICAgICAgICAgKTsKICAgICAgICBicmVhazsKICAgICAgfQogICAgCiAgICByZXR1cm4gbG9jOwogIH0sCgogIC8vIEdldHMgYW5kIHNldHMgdGhlIG9wdGlvbnMKCiAgb3B0aW9uczogZnVuY3Rpb24ob3B0aW9ucykgewogICAgCiAgICBpZiAob3B0aW9ucz09PXVuZGVmaW5lZCkgewogICAgICAKICAgICAgcmV0dXJuIHRoaXMuZGF0YSgpLm9wdHM7CgogICAgfSBlbHNlIHsKCiAgICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCk7CgogICAgICAvLyBTZXQgbmV3IHZhbHVlcwoKICAgICAgJC5leHRlbmQoZGF0YS5vcHRzLCBvcHRpb25zKTsKICAgICAgCiAgICAgIC8vIFNldCBwYWdlcwoKICAgICAgaWYgKG9wdGlvbnMucGFnZXMpCiAgICAgICAgdGhpcy50dXJuKCdwYWdlcycsIG9wdGlvbnMucGFnZXMpOwoKICAgICAgLy8gU2V0IHBhZ2UKCiAgICAgIGlmIChvcHRpb25zLnBhZ2UpCiAgICAgICAgdGhpcy50dXJuKCdwYWdlJywgb3B0aW9ucy5wYWdlKTsKCiAgICAgIC8vIFNldCBkaXNwbGF5CgogICAgICBpZiAob3B0aW9ucy5kaXNwbGF5KQogICAgICAgIHRoaXMudHVybignZGlzcGxheScsIG9wdGlvbnMuZGlzcGxheSk7CiAgICAgIAogICAgICAvLyBTZXQgZGlyZWN0aW9uCgogICAgICBpZiAob3B0aW9ucy5kaXJlY3Rpb24pCiAgICAgICAgdGhpcy50dXJuKCdkaXJlY3Rpb24nLCBvcHRpb25zLmRpcmVjdGlvbik7CgogICAgICAvLyBTZXQgc2l6ZQoKICAgICAgaWYgKG9wdGlvbnMud2lkdGggJiYgb3B0aW9ucy5oZWlnaHQpCiAgICAgICAgdGhpcy50dXJuKCdzaXplJywgb3B0aW9ucy53aWR0aCwgb3B0aW9ucy5oZWlnaHQpOwogICAgICAKICAgICAgLy8gQWRkIGV2ZW50IGxpc3RlbmVycwoKICAgICAgaWYgKG9wdGlvbnMud2hlbikKICAgICAgICBmb3IgKHZhciBldmVudE5hbWUgaW4gb3B0aW9ucy53aGVuKQogICAgICAgICAgaWYgKGhhcyhldmVudE5hbWUsIG9wdGlvbnMud2hlbikpIHsKICAgICAgICAgICAgdGhpcy51bmJpbmQoZXZlbnROYW1lKS4KICAgICAgICAgICAgICBiaW5kKGV2ZW50TmFtZSwgb3B0aW9ucy53aGVuW2V2ZW50TmFtZV0pOwogICAgICAgICAgfQoKICAgICAgcmV0dXJuIHRoaXM7CiAgICB9CgogIH0sCgogIC8vIEdldHMgdGhlIGN1cnJlbnQgdmVyc2lvbgoKICB2ZXJzaW9uOiBmdW5jdGlvbigpIHsKCiAgICByZXR1cm4gdmVyc2lvbjsKCiAgfQp9LAoKLy8gTWV0aG9kcyBhbmQgcHJvcGVydGllcyBmb3IgdGhlIGZsaXAgcGFnZSBlZmZlY3QKCmZsaXBNZXRob2RzID0gewoKICAvLyBDb25zdHJ1Y3RvcgoKICBpbml0OiBmdW5jdGlvbihvcHRzKSB7CgogICAgdGhpcy5kYXRhKHtmOiB7CiAgICAgIGRpc2FibGVkOiBmYWxzZSwKICAgICAgaG92ZXI6IGZhbHNlLAogICAgICBlZmZlY3Q6ICh0aGlzLmhhc0NsYXNzKCdoYXJkJykpID8gJ2hhcmQnIDogJ3NoZWV0JwogICAgfX0pOwogIAogICAgdGhpcy5mbGlwKCdvcHRpb25zJywgb3B0cyk7CgogICAgZmxpcE1ldGhvZHMuX2FkZFBhZ2VXcmFwcGVyLmNhbGwodGhpcyk7CgogICAgcmV0dXJuIHRoaXM7CiAgfSwKCiAgc2V0RGF0YTogZnVuY3Rpb24oZCkgewogICAgCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpOwoKICAgIGRhdGEuZiA9ICQuZXh0ZW5kKGRhdGEuZiwgZCk7CgogICAgcmV0dXJuIHRoaXM7CiAgfSwKCiAgb3B0aW9uczogZnVuY3Rpb24ob3B0cykgewogICAgCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLmY7CgogICAgaWYgKG9wdHMpIHsKICAgICAgZmxpcE1ldGhvZHMuc2V0RGF0YS5jYWxsKHRoaXMsCiAgICAgICAge29wdHM6ICQuZXh0ZW5kKHt9LCBkYXRhLm9wdHMgfHwgZmxpcE9wdGlvbnMsIG9wdHMpfSk7CiAgICAgIHJldHVybiB0aGlzOwogICAgfSBlbHNlCiAgICAgIHJldHVybiBkYXRhLm9wdHM7CgogIH0sCgogIHo6IGZ1bmN0aW9uKHopIHsKICAgIAogICAgdmFyIGRhdGEgPSB0aGlzLmRhdGEoKS5mOwoKICAgIGRhdGEub3B0c1snei1pbmRleCddID0gejsKCiAgICBpZiAoZGF0YS5md3JhcHBlcikKICAgICAgZGF0YS5md3JhcHBlci5jc3MoewogICAgICAgIHpJbmRleDogeiB8fCBwYXJzZUludChkYXRhLnBhcmVudC5jc3MoJ3otaW5kZXgnKSwgMTApIHx8IDAKICAgICAgfSk7CgogICAgcmV0dXJuIHRoaXM7CiAgfSwKCiAgX2NBbGxvd2VkOiBmdW5jdGlvbigpIHsKICAgIAogICAgdmFyIGRhdGEgPSB0aGlzLmRhdGEoKS5mLAogICAgICBwYWdlID0gZGF0YS5vcHRzLnBhZ2UsCiAgICAgIHR1cm5EYXRhID0gZGF0YS5vcHRzLnR1cm4uZGF0YSgpLAogICAgICBvZGQgPSBwYWdlJTI7CiAgICAKICAgIGlmIChkYXRhLmVmZmVjdD09J2hhcmQnKSB7CiAgICAKICAgICAgcmV0dXJuICh0dXJuRGF0YS5kaXJlY3Rpb249PSdsdHInKSA/CiAgICAgICAgWyhvZGQpID8gJ3InIDogJ2wnXSA6CiAgICAgICAgWyhvZGQpID8gJ2wnIDogJ3InXTsKCiAgICB9IGVsc2UgewoKICAgICAgaWYgKHR1cm5EYXRhLmRpc3BsYXk9PSdzaW5nbGUnKSB7CgogICAgICAgIGlmIChwYWdlPT0xKQogICAgICAgICAgcmV0dXJuICh0dXJuRGF0YS5kaXJlY3Rpb249PSdsdHInKSA/CiAgICAgICAgICAgIGNvcm5lcnNbJ2ZvcndhcmQnXSA6IGNvcm5lcnNbJ2JhY2t3YXJkJ107CiAgICAgICAgZWxzZSBpZiAocGFnZT09dHVybkRhdGEudG90YWxQYWdlcykKICAgICAgICAgIHJldHVybiAodHVybkRhdGEuZGlyZWN0aW9uPT0nbHRyJykgPwogICAgICAgICAgICBjb3JuZXJzWydiYWNrd2FyZCddIDogY29ybmVyc1snZm9yd2FyZCddOwogICAgICAgIGVsc2UKICAgICAgICAgIHJldHVybiBjb3JuZXJzWydhbGwnXTsKCiAgICAgIH0gZWxzZSB7CgogICAgICAgIHJldHVybiAodHVybkRhdGEuZGlyZWN0aW9uPT0nbHRyJykgPwogICAgICAgICAgY29ybmVyc1sob2RkKSA/ICdmb3J3YXJkJyA6ICdiYWNrd2FyZCddCiAgICAgICAgICA6CiAgICAgICAgICBjb3JuZXJzWyhvZGQpID8gJ2JhY2t3YXJkJyA6ICdmb3J3YXJkJ107CgogICAgICB9CgogICAgfQoKICB9LAoKICBfY29ybmVyQWN0aXZhdGVkOiBmdW5jdGlvbihwKSB7CgogICAgdmFyIGRhdGEgPSB0aGlzLmRhdGEoKS5mLAogICAgICB3aWR0aCA9IHRoaXMud2lkdGgoKSwKICAgICAgaGVpZ2h0ID0gdGhpcy5oZWlnaHQoKSwKICAgICAgcG9pbnQgPSB7eDogcC54LCB5OiBwLnksIGNvcm5lcjogJyd9LAogICAgICBjc3ogPSBkYXRhLm9wdHMuY29ybmVyU2l6ZTsKCiAgICBpZiAocG9pbnQueDw9MCB8fCBwb2ludC55PD0wIHx8IHBvaW50Lng+PXdpZHRoIHx8IHBvaW50Lnk+PWhlaWdodCkKICAgICAgcmV0dXJuIGZhbHNlOwoKICAgIHZhciBhbGxvd2VkQ29ybmVycyA9IGZsaXBNZXRob2RzLl9jQWxsb3dlZC5jYWxsKHRoaXMpOwoKICAgIHN3aXRjaCAoZGF0YS5lZmZlY3QpIHsKICAgICAgY2FzZSAnaGFyZCc6CiAgICAgICAgCiAgICAgICAgaWYgKHBvaW50Lng+d2lkdGgtY3N6KQogICAgICAgICAgcG9pbnQuY29ybmVyID0gJ3InOwogICAgICAgIGVsc2UgaWYgKHBvaW50Lng8Y3N6KQogICAgICAgICAgcG9pbnQuY29ybmVyID0gJ2wnOwogICAgICAgIGVsc2UKICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgCiAgICAgICAgYnJlYWs7CgogICAgICBjYXNlICdzaGVldCc6CiAgICAgICAgCiAgICAgICAgaWYgKHBvaW50Lnk8Y3N6KQogICAgICAgICAgcG9pbnQuY29ybmVyKz0gJ3QnOwogICAgICAgIGVsc2UgaWYgKHBvaW50Lnk+PWhlaWdodC1jc3opCiAgICAgICAgICBwb2ludC5jb3JuZXIrPSAnYic7CiAgICAgICAgZWxzZQogICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgCiAgICAgICAgaWYgKHBvaW50Lng8PWNzeikKICAgICAgICAgIHBvaW50LmNvcm5lcis9ICdsJzsKICAgICAgICBlbHNlIGlmIChwb2ludC54Pj13aWR0aC1jc3opCiAgICAgICAgICBwb2ludC5jb3JuZXIrPSAncic7CiAgICAgICAgZWxzZQogICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgICAgIGJyZWFrOwogICAgICB9CgogICAgcmV0dXJuICghcG9pbnQuY29ybmVyIHx8ICQuaW5BcnJheShwb2ludC5jb3JuZXIsIGFsbG93ZWRDb3JuZXJzKT09LTEpID8KICAgICAgZmFsc2UgOiBwb2ludDsKCiAgfSwKCiAgX2lzSUFyZWE6IGZ1bmN0aW9uKGUpIHsKCiAgICB2YXIgcG9zID0gdGhpcy5kYXRhKCkuZi5wYXJlbnQub2Zmc2V0KCk7CgogICAgZSA9IChpc1RvdWNoICYmIGUub3JpZ2luYWxFdmVudCkgPyBlLm9yaWdpbmFsRXZlbnQudG91Y2hlc1swXSA6IGU7CgogICAgcmV0dXJuIGZsaXBNZXRob2RzLl9jb3JuZXJBY3RpdmF0ZWQuY2FsbCh0aGlzLAogICAgICB7CiAgICAgICAgeDogZS5wYWdlWC1wb3MubGVmdCwKICAgICAgICB5OiBlLnBhZ2VZLXBvcy50b3AKICAgICAgfSk7CgogIH0sCgogIF9jOiBmdW5jdGlvbihjb3JuZXIsIG9wdHMpIHsKCiAgICBvcHRzID0gb3B0cyB8fCAwOwoKICAgIHN3aXRjaCAoY29ybmVyKSB7CiAgICAgIGNhc2UgJ3RsJzoKICAgICAgICByZXR1cm4gcG9pbnQyRChvcHRzLCBvcHRzKTsKICAgICAgY2FzZSAndHInOgogICAgICAgIHJldHVybiBwb2ludDJEKHRoaXMud2lkdGgoKS1vcHRzLCBvcHRzKTsKICAgICAgY2FzZSAnYmwnOgogICAgICAgIHJldHVybiBwb2ludDJEKG9wdHMsIHRoaXMuaGVpZ2h0KCktb3B0cyk7CiAgICAgIGNhc2UgJ2JyJzoKICAgICAgICByZXR1cm4gcG9pbnQyRCh0aGlzLndpZHRoKCktb3B0cywgdGhpcy5oZWlnaHQoKS1vcHRzKTsKICAgICAgY2FzZSAnbCc6CiAgICAgICAgcmV0dXJuIHBvaW50MkQob3B0cywgMCk7CiAgICAgIGNhc2UgJ3InOgogICAgICAgIHJldHVybiBwb2ludDJEKHRoaXMud2lkdGgoKS1vcHRzLCAwKTsKICAgIH0KCiAgfSwKCiAgX2MyOiBmdW5jdGlvbihjb3JuZXIpIHsKCiAgICBzd2l0Y2ggKGNvcm5lcikgewogICAgICBjYXNlICd0bCc6CiAgICAgICAgcmV0dXJuIHBvaW50MkQodGhpcy53aWR0aCgpKjIsIDApOwogICAgICBjYXNlICd0cic6CiAgICAgICAgcmV0dXJuIHBvaW50MkQoLXRoaXMud2lkdGgoKSwgMCk7CiAgICAgIGNhc2UgJ2JsJzoKICAgICAgICByZXR1cm4gcG9pbnQyRCh0aGlzLndpZHRoKCkqMiwgdGhpcy5oZWlnaHQoKSk7CiAgICAgIGNhc2UgJ2JyJzoKICAgICAgICByZXR1cm4gcG9pbnQyRCgtdGhpcy53aWR0aCgpLCB0aGlzLmhlaWdodCgpKTsKICAgICAgY2FzZSAnbCc6CiAgICAgICAgcmV0dXJuIHBvaW50MkQodGhpcy53aWR0aCgpKjIsIDApOwogICAgICBjYXNlICdyJzoKICAgICAgICByZXR1cm4gcG9pbnQyRCgtdGhpcy53aWR0aCgpLCAwKTsKICAgIH0KCiAgfSwKCiAgX2ZvbGRpbmdQYWdlOiBmdW5jdGlvbigpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLmY7CgogICAgaWYgKCFkYXRhKQogICAgICByZXR1cm47CgogICAgdmFyIG9wdHMgPSBkYXRhLm9wdHM7CgogICAgaWYgKG9wdHMudHVybikgewogICAgICBkYXRhID0gb3B0cy50dXJuLmRhdGEoKTsKICAgICAgaWYgKGRhdGEuZGlzcGxheSA9PSAnc2luZ2xlJykKICAgICAgICByZXR1cm4gKG9wdHMubmV4dD4xIHx8IG9wdHMucGFnZT4xKSA/IGRhdGEucGFnZU9ianNbMF0gOiBudWxsOwogICAgICBlbHNlCiAgICAgICAgcmV0dXJuIGRhdGEucGFnZU9ianNbb3B0cy5uZXh0XTsKICAgIH0KCiAgfSwKCiAgX2JhY2tHcmFkaWVudDogZnVuY3Rpb24oKSB7CgogICAgdmFyIGRhdGEgPSB0aGlzLmRhdGEoKS5mLAogICAgICB0dXJuRGF0YSA9IGRhdGEub3B0cy50dXJuLmRhdGEoKSwKICAgICAgZ3JhZGllbnQgPSAgdHVybkRhdGEub3B0cy5ncmFkaWVudHMgJiYgKHR1cm5EYXRhLmRpc3BsYXk9PSdzaW5nbGUnIHx8CiAgICAgICAgIChkYXRhLm9wdHMucGFnZSE9MiAmJiBkYXRhLm9wdHMucGFnZSE9dHVybkRhdGEudG90YWxQYWdlcy0xKSk7CgogICAgaWYgKGdyYWRpZW50ICYmICFkYXRhLmJzaGFkb3cpCiAgICAgIGRhdGEuYnNoYWRvdyA9ICQoJzxkaXYvPicsIGRpdkF0dCgwLCAwLCAxKSkuCiAgICAgICAgY3NzKHsncG9zaXRpb24nOiAnJywgd2lkdGg6IHRoaXMud2lkdGgoKSwgaGVpZ2h0OiB0aGlzLmhlaWdodCgpfSkuCiAgICAgICAgYXBwZW5kVG8oZGF0YS5wYXJlbnQpOwoKICAgIHJldHVybiBncmFkaWVudDsKCiAgfSwKCiAgdHlwZTogZnVuY3Rpb24gKCkgewogICAgCiAgICByZXR1cm4gdGhpcy5kYXRhKCkuZi5lZmZlY3Q7CgogIH0sCgogIHJlc2l6ZTogZnVuY3Rpb24oZnVsbCkgewogICAgCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLmYsCiAgICAgIHR1cm5EYXRhID0gZGF0YS5vcHRzLnR1cm4uZGF0YSgpLAogICAgICB3aWR0aCA9IHRoaXMud2lkdGgoKSwKICAgICAgaGVpZ2h0ID0gdGhpcy5oZWlnaHQoKTsKCiAgICBzd2l0Y2ggKGRhdGEuZWZmZWN0KSB7CiAgICAgIGNhc2UgJ2hhcmQnOgogICAgICAgIAogICAgICBpZiAoZnVsbCkgewogICAgICAgIGRhdGEud3JhcHBlci5jc3Moe3dpZHRoOiB3aWR0aCwgaGVpZ2h0OiBoZWlnaHR9KTsKICAgICAgICBkYXRhLmZwYWdlLmNzcyh7d2lkdGg6IHdpZHRoLCBoZWlnaHQ6IGhlaWdodH0pOwogICAgICAgIGlmICh0dXJuRGF0YS5vcHRzLmdyYWRpZW50cykgewogICAgICAgICAgZGF0YS5hc2hhZG93LmNzcyh7d2lkdGg6IHdpZHRoLCBoZWlnaHQ6IGhlaWdodH0pOwogICAgICAgICAgZGF0YS5ic2hhZG93LmNzcyh7d2lkdGg6IHdpZHRoLCBoZWlnaHQ6IGhlaWdodH0pOwogICAgICAgIH0KICAgICAgfQoKICAgICAgYnJlYWs7CiAgICAgIGNhc2UgJ3NoZWV0JzoKCiAgICAgIGlmIChmdWxsKSB7CiAgICAgICAgdmFyIHNpemUgPSBNYXRoLnJvdW5kKE1hdGguc3FydChNYXRoLnBvdyh3aWR0aCwgMikrTWF0aC5wb3coaGVpZ2h0LCAyKSkpOwoKICAgICAgICBkYXRhLndyYXBwZXIuY3NzKHt3aWR0aDogc2l6ZSwgaGVpZ2h0OiBzaXplfSk7CiAgICAgICAgZGF0YS5md3JhcHBlci5jc3Moe3dpZHRoOiBzaXplLCBoZWlnaHQ6IHNpemV9KS4KICAgICAgICAgIGNoaWxkcmVuKCc6Zmlyc3QtY2hpbGQnKS4KICAgICAgICAgIGNzcyh7d2lkdGg6IHdpZHRoLCBoZWlnaHQ6IGhlaWdodH0pOwoKICAgICAgICBkYXRhLmZwYWdlLmNzcyh7d2lkdGg6IHdpZHRoLCBoZWlnaHQ6IGhlaWdodH0pOwoKICAgICAgICBpZiAodHVybkRhdGEub3B0cy5ncmFkaWVudHMpCiAgICAgICAgICBkYXRhLmFzaGFkb3cuY3NzKHt3aWR0aDogd2lkdGgsIGhlaWdodDogaGVpZ2h0fSk7CgogICAgICAgIGlmIChmbGlwTWV0aG9kcy5fYmFja0dyYWRpZW50LmNhbGwodGhpcykpCiAgICAgICAgICBkYXRhLmJzaGFkb3cuY3NzKHt3aWR0aDogd2lkdGgsIGhlaWdodDogaGVpZ2h0fSk7CiAgICAgIH0KCiAgICAgIGlmIChkYXRhLnBhcmVudC5pcygnOnZpc2libGUnKSkgewogICAgICAgIHZhciBvZmZzZXQgPSBmaW5kUG9zKGRhdGEucGFyZW50WzBdKTsKCiAgICAgICAgZGF0YS5md3JhcHBlci5jc3Moe3RvcDogb2Zmc2V0LnRvcCwKICAgICAgICAgIGxlZnQ6IG9mZnNldC5sZWZ0fSk7CgogICAgICAgIC8vaWYgKGRhdGEub3B0cy50dXJuKSB7CiAgICAgICAgIG9mZnNldCA9IGZpbmRQb3MoZGF0YS5vcHRzLnR1cm5bMF0pOwogICAgICAgICBkYXRhLmZwYXJlbnQuY3NzKHt0b3A6IC1vZmZzZXQudG9wLCBsZWZ0OiAtb2Zmc2V0LmxlZnR9KTsKICAgICAgICAvL30KICAgICAgfQoKICAgICAgdGhpcy5mbGlwKCd6JywgZGF0YS5vcHRzWyd6LWluZGV4J10pOwoKICAgICAgYnJlYWs7CiAgICB9CgogIH0sCgogIC8vIFByZXBhcmVzIHRoZSBwYWdlIGJ5IGFkZGluZyBhIGdlbmVyYWwgd3JhcHBlciBhbmQgYW5vdGhlciBvYmplY3RzCgogIF9hZGRQYWdlV3JhcHBlcjogZnVuY3Rpb24oKSB7CgogICAgdmFyIGF0dCwKICAgICAgZGF0YSA9IHRoaXMuZGF0YSgpLmYsCiAgICAgIHR1cm5EYXRhID0gZGF0YS5vcHRzLnR1cm4uZGF0YSgpLAogICAgICBwYXJlbnQgPSB0aGlzLnBhcmVudCgpOwoKICAgIGRhdGEucGFyZW50ID0gcGFyZW50OwoKICBpZiAoIWRhdGEud3JhcHBlcikKICAgIHN3aXRjaCAoZGF0YS5lZmZlY3QpIHsKICAgICAgY2FzZSAnaGFyZCc6CiAgICAgICAgCiAgICAgICAgdmFyIGNzc1Byb3BlcnRpZXMgPSB7fTsKICAgICAgICBjc3NQcm9wZXJ0aWVzW3ZlbmRvciArICd0cmFuc2Zvcm0tc3R5bGUnXSA9ICdwcmVzZXJ2ZS0zZCc7CiAgICAgICAgY3NzUHJvcGVydGllc1t2ZW5kb3IgKyAnYmFja2ZhY2UtdmlzaWJpbGl0eSddID0gJ2hpZGRlbic7CgogICAgICAgIGRhdGEud3JhcHBlciA9ICQoJzxkaXYvPicsIGRpdkF0dCgwLCAwLCAyKSkuCiAgICAgICAgICBjc3MoY3NzUHJvcGVydGllcykuCiAgICAgICAgICBhcHBlbmRUbyhwYXJlbnQpLgogICAgICAgICAgcHJlcGVuZCh0aGlzKTsKCiAgICAgICAgZGF0YS5mcGFnZSA9ICQoJzxkaXYvPicsIGRpdkF0dCgwLCAwLCAxKSkuCiAgICAgICAgICBjc3MoY3NzUHJvcGVydGllcykuCiAgICAgICAgICBhcHBlbmRUbyhwYXJlbnQpOwogICAgICAgIAogICAgICAgIGlmICh0dXJuRGF0YS5vcHRzLmdyYWRpZW50cykgewogICAgICAgICAgZGF0YS5hc2hhZG93ID0gJCgnPGRpdi8+JywgZGl2QXR0KDAsIDAsICAwKSkuCiAgICAgICAgICAgIGhpZGUoKS4KICAgICAgICAgICAgYXBwZW5kVG8ocGFyZW50KTsKCiAgICAgICAgICBkYXRhLmJzaGFkb3cgPSAkKCc8ZGl2Lz4nLCBkaXZBdHQoMCwgMCwgIDApKTsKICAgICAgICB9CgogICAgICBicmVhazsKICAgICAgY2FzZSAnc2hlZXQnOgogICAgICAgIAogICAgICAgIHZhciB3aWR0aCA9IHRoaXMud2lkdGgoKSwKICAgICAgICAgIGhlaWdodCA9IHRoaXMuaGVpZ2h0KCksCiAgICAgICAgICBzaXplID0gTWF0aC5yb3VuZChNYXRoLnNxcnQoTWF0aC5wb3cod2lkdGgsIDIpK01hdGgucG93KGhlaWdodCwgMikpKTsKICAgICAgICAKICAgICAgICBkYXRhLmZwYXJlbnQgPSBkYXRhLm9wdHMudHVybi5kYXRhKCkuZnBhcmVudDsKCiAgICAgICAgaWYgKCFkYXRhLmZwYXJlbnQpIHsKICAgICAgICAgIHZhciBmcGFyZW50ID0gJCgnPGRpdi8+Jywge2Nzczogeydwb2ludGVyLWV2ZW50cyc6ICdub25lJ319KS5oaWRlKCk7CiAgICAgICAgICAgIGZwYXJlbnQuZGF0YSgpLmZsaXBzID0gMDsKICAgICAgICAgICAgZnBhcmVudC5jc3MoZGl2QXR0KDAsIDAsICdhdXRvJywgJ3Zpc2libGUnKS5jc3MpLgogICAgICAgICAgICBhcHBlbmRUbyhkYXRhLm9wdHMudHVybik7CiAgICAgICAgICAgIAogICAgICAgICAgICBkYXRhLm9wdHMudHVybi5kYXRhKCkuZnBhcmVudCA9IGZwYXJlbnQ7CiAgICAgICAgICAgIGRhdGEuZnBhcmVudCA9IGZwYXJlbnQ7CiAgICAgICAgfQoKICAgICAgICB0aGlzLmNzcyh7cG9zaXRpb246ICdhYnNvbHV0ZScsIHRvcDogMCwgbGVmdDogMCwgYm90dG9tOiAnYXV0bycsIHJpZ2h0OiAnYXV0byd9KTsKCiAgICAgICAgZGF0YS53cmFwcGVyID0gJCgnPGRpdi8+JywgZGl2QXR0KDAsIDAsIHRoaXMuY3NzKCd6LWluZGV4JykpKS4KICAgICAgICAgIGFwcGVuZFRvKHBhcmVudCkuCiAgICAgICAgICBwcmVwZW5kKHRoaXMpOwoKICAgICAgICBkYXRhLmZ3cmFwcGVyID0gJCgnPGRpdi8+JywgZGl2QXR0KHBhcmVudC5vZmZzZXQoKS50b3AsIHBhcmVudC5vZmZzZXQoKS5sZWZ0KSkuCiAgICAgICAgICBoaWRlKCkuCiAgICAgICAgICBhcHBlbmRUbyhkYXRhLmZwYXJlbnQpOwoKICAgICAgICBkYXRhLmZwYWdlID0gJCgnPGRpdi8+JywgZGl2QXR0KDAsIDAsIDAsICd2aXNpYmxlJykpLgogICAgICAgICAgY3NzKHtjdXJzb3I6ICdkZWZhdWx0J30pLgogICAgICAgICAgYXBwZW5kVG8oZGF0YS5md3JhcHBlcik7CgogICAgICAgIGlmICh0dXJuRGF0YS5vcHRzLmdyYWRpZW50cykKICAgICAgICAgIGRhdGEuYXNoYWRvdyA9ICQoJzxkaXYvPicsIGRpdkF0dCgwLCAwLCAgMSkpLgogICAgICAgICAgYXBwZW5kVG8oZGF0YS5mcGFnZSk7CgogICAgICAgIGZsaXBNZXRob2RzLnNldERhdGEuY2FsbCh0aGlzLCBkYXRhKTsKCiAgICAgIGJyZWFrOwogICAgfQoKICAgIC8vIFNldCBzaXplCiAgICBmbGlwTWV0aG9kcy5yZXNpemUuY2FsbCh0aGlzLCB0cnVlKTsKCiAgfSwKCiAgLy8gVGFrZXMgYSAyUCBwb2ludCBmcm9tIHRoZSBzY3JlZW4gYW5kIGFwcGxpZXMgdGhlIHRyYW5zZm9ybWF0aW9uCgogIF9mb2xkOiBmdW5jdGlvbihwb2ludCkgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCkuZiwKICAgICAgdHVybkRhdGEgPSBkYXRhLm9wdHMudHVybi5kYXRhKCksCiAgICAgIG8gPSBmbGlwTWV0aG9kcy5fYy5jYWxsKHRoaXMsIHBvaW50LmNvcm5lciksCiAgICAgIHdpZHRoID0gdGhpcy53aWR0aCgpLAogICAgICBoZWlnaHQgPSB0aGlzLmhlaWdodCgpOwoKICAgIHN3aXRjaCAoZGF0YS5lZmZlY3QpIHsKCiAgICAgIGNhc2UgJ2hhcmQnOgoKICAgICAgICBpZiAocG9pbnQuY29ybmVyPT0nbCcpCiAgICAgICAgICBwb2ludC54ID0gTWF0aC5taW4oTWF0aC5tYXgocG9pbnQueCwgMCksIHdpZHRoKjIpOwogICAgICAgIGVsc2UKICAgICAgICAgIHBvaW50LnggPSBNYXRoLm1heChNYXRoLm1pbihwb2ludC54LCB3aWR0aCksIC13aWR0aCk7CgogICAgICAgIHZhciBsZWZ0UG9zLAogICAgICAgICAgc2hhZG93LAogICAgICAgICAgZ3JhZGllbnRYLAogICAgICAgICAgZnBhZ2VPcmlnaW4sCiAgICAgICAgICBwYXJlbnRPcmlnaW4sCiAgICAgICAgICB0b3RhbFBhZ2VzID0gdHVybkRhdGEudG90YWxQYWdlcywKICAgICAgICAgIHpJbmRleCA9IGRhdGEub3B0c1snei1pbmRleCddIHx8IHRvdGFsUGFnZXMsCiAgICAgICAgICBwYXJlbnRDc3MgPSB7J292ZXJmbG93JzogJ3Zpc2libGUnfSwKICAgICAgICAgIHJlbFggPSAoby54KSA/IChvLnggLSBwb2ludC54KS93aWR0aCA6IHBvaW50Lngvd2lkdGgsCiAgICAgICAgICBhbmdsZSA9IHJlbFggKiA5MCwKICAgICAgICAgIGhhbGYgPSBhbmdsZTw5MDsKCiAgICAgICAgc3dpdGNoIChwb2ludC5jb3JuZXIpIHsKICAgICAgICAgIGNhc2UgJ2wnOgoKICAgICAgICAgICAgZnBhZ2VPcmlnaW4gPSAgJzAlIDUwJSc7CiAgICAgICAgICAgIHBhcmVudE9yaWdpbiA9ICAnMTAwJSA1MCUnOwoKICAgICAgICAgICAgaWYgKGhhbGYpIHsKICAgICAgICAgICAgICBsZWZ0UG9zID0gMDsKICAgICAgICAgICAgICBzaGFkb3cgPSBkYXRhLm9wdHMubmV4dC0xPjA7CiAgICAgICAgICAgICAgZ3JhZGllbnRYID0gMTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICBsZWZ0UG9zID0gJzEwMCUnOwogICAgICAgICAgICAgIHNoYWRvdyA9IGRhdGEub3B0cy5wYWdlKzE8dG90YWxQYWdlczsKICAgICAgICAgICAgICBncmFkaWVudFggPSAwOwogICAgICAgICAgICB9CgogICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlICdyJzoKCiAgICAgICAgICAgIGZwYWdlT3JpZ2luID0gICcxMDAlIDUwJSc7CiAgICAgICAgICAgIHBhcmVudE9yaWdpbiA9ICAnMCUgNTAlJzsKICAgICAgICAgICAgYW5nbGUgPSAtYW5nbGU7CiAgICAgICAgICAgIHdpZHRoID0gLXdpZHRoOwoKICAgICAgICAgICAgaWYgKGhhbGYpIHsKICAgICAgICAgICAgICBsZWZ0UG9zID0gMDsKICAgICAgICAgICAgICBzaGFkb3cgPSBkYXRhLm9wdHMubmV4dCsxPHRvdGFsUGFnZXM7CiAgICAgICAgICAgICAgZ3JhZGllbnRYID0gMDsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICBsZWZ0UG9zID0gJy0xMDAlJzsKICAgICAgICAgICAgICBzaGFkb3cgPSBkYXRhLm9wdHMucGFnZSE9MTsKICAgICAgICAgICAgICBncmFkaWVudFggPSAxOwogICAgICAgICAgICB9CgogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgICBwYXJlbnRDc3NbdmVuZG9yKydwZXJzcGVjdGl2ZS1vcmlnaW4nXSA9IHBhcmVudE9yaWdpbjsKCiAgICAgICAgZGF0YS53cmFwcGVyLnRyYW5zZm9ybSgncm90YXRlWSgnK2FuZ2xlKydkZWcpJyArCiAgICAgICAgICAndHJhbnNsYXRlM2QoMHB4LCAwcHgsICcrKHRoaXMuYXR0cignZGVwdGgnKXx8MCkrJ3B4KScsIHBhcmVudE9yaWdpbik7CgogICAgICAgIGRhdGEuZnBhZ2UudHJhbnNmb3JtKCd0cmFuc2xhdGVYKCcrd2lkdGgrJ3B4KSByb3RhdGVZKCcrKDE4MCthbmdsZSkrJ2RlZyknLCBmcGFnZU9yaWdpbik7CgogICAgICAgIGRhdGEucGFyZW50LmNzcyhwYXJlbnRDc3MpOwoKICAgICAgICBpZiAoaGFsZikgewogICAgICAgICAgcmVsWCA9IC1yZWxYKzE7CiAgICAgICAgICBkYXRhLndyYXBwZXIuY3NzKHt6SW5kZXg6IHpJbmRleCsxfSk7CiAgICAgICAgICBkYXRhLmZwYWdlLmNzcyh7ekluZGV4OiB6SW5kZXh9KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcmVsWCA9IHJlbFgtMTsKICAgICAgICAgIGRhdGEud3JhcHBlci5jc3Moe3pJbmRleDogekluZGV4fSk7CiAgICAgICAgICBkYXRhLmZwYWdlLmNzcyh7ekluZGV4OiB6SW5kZXgrMX0pOwogICAgICAgIH0KCiAgICAgICAgaWYgKHR1cm5EYXRhLm9wdHMuZ3JhZGllbnRzKSB7CiAgICAgICAgICBpZiAoc2hhZG93KQogICAgICAgICAgICBkYXRhLmFzaGFkb3cuY3NzKHsKICAgICAgICAgICAgICBkaXNwbGF5OiAnJywKICAgICAgICAgICAgICBsZWZ0OiBsZWZ0UG9zLAogICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3JnYmEoMCwwLDAsJysoMC41KnJlbFgpKycpJwogICAgICAgICAgICB9KS4KICAgICAgICAgICAgdHJhbnNmb3JtKCdyb3RhdGVZKDBkZWcpJyk7CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgIGRhdGEuYXNoYWRvdy5oaWRlKCk7CgogICAgICAgICAgZGF0YS5ic2hhZG93LmNzcyh7b3BhY2l0eTotcmVsWCArIDF9KTsKCiAgICAgICAgICBpZiAoaGFsZikgewogICAgICAgICAgICBpZiAoZGF0YS5ic2hhZG93LnBhcmVudCgpWzBdIT1kYXRhLndyYXBwZXJbMF0pIHsKICAgICAgICAgICAgICBkYXRhLmJzaGFkb3cuYXBwZW5kVG8oZGF0YS53cmFwcGVyKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKGRhdGEuYnNoYWRvdy5wYXJlbnQoKVswXSE9ZGF0YS5mcGFnZVswXSkgewogICAgICAgICAgICAgIGRhdGEuYnNoYWRvdy5hcHBlbmRUbyhkYXRhLmZwYWdlKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgLypkYXRhLmJzaGFkb3cuY3NzKHsKICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAncmdiYSgwLDAsMCwnKygwLjEpKycpJwogICAgICAgICAgfSkqLwogICAgICAgICAgZ3JhZGllbnQoZGF0YS5ic2hhZG93LCBwb2ludDJEKGdyYWRpZW50WCAqIDEwMCwgMCksIHBvaW50MkQoKC1ncmFkaWVudFggKyAxKSoxMDAsIDApLAogICAgICAgICAgICBbWzAsICdyZ2JhKDAsMCwwLDAuMyknXSxbMSwgJ3JnYmEoMCwwLDAsMCknXV0sMik7CiAgICAgICAgICAKICAgICAgICB9CgogICAgICAgIGJyZWFrOwogICAgICBjYXNlICdzaGVldCc6CgogICAgICAgIHZhciB0aGF0ID0gdGhpcywKICAgICAgICAgIGEgPSAwLAogICAgICAgICAgYWxwaGEgPSAwLAogICAgICAgICAgYmV0YSwKICAgICAgICAgIHB4LAogICAgICAgICAgZ3JhZGllbnRFbmRQb2ludEEsCiAgICAgICAgICBncmFkaWVudEVuZFBvaW50QiwKICAgICAgICAgIGdyYWRpZW50U3RhcnRWYWwsCiAgICAgICAgICBncmFkaWVudFNpemUsCiAgICAgICAgICBncmFkaWVudE9wYWNpdHksCiAgICAgICAgICBzaGFkb3dWYWwsCiAgICAgICAgICBtdiA9IHBvaW50MkQoMCwgMCksCiAgICAgICAgICBkZiA9IHBvaW50MkQoMCwgMCksCiAgICAgICAgICB0ciA9IHBvaW50MkQoMCwgMCksCiAgICAgICAgICBmb2xkaW5nID0gZmxpcE1ldGhvZHMuX2ZvbGRpbmdQYWdlLmNhbGwodGhpcyksCiAgICAgICAgICB0YW4gPSBNYXRoLnRhbihhbHBoYSksCiAgICAgICAgICBhYyA9IHR1cm5EYXRhLm9wdHMuYWNjZWxlcmF0aW9uLAogICAgICAgICAgaCA9IGRhdGEud3JhcHBlci5oZWlnaHQoKSwKICAgICAgICAgIHRvcCA9IHBvaW50LmNvcm5lci5zdWJzdHIoMCwgMSkgPT0gJ3QnLAogICAgICAgICAgbGVmdCA9IHBvaW50LmNvcm5lci5zdWJzdHIoMSwgMSkgPT0gJ2wnLAoKICAgICAgY29tcHV0ZSA9IGZ1bmN0aW9uKCkgewoKICAgICAgICB2YXIgcmVsID0gcG9pbnQyRCgwLCAwKTsKICAgICAgICB2YXIgbWlkZGxlID0gcG9pbnQyRCgwLCAwKTsKCiAgICAgICAgcmVsLnggPSAoby54KSA/IG8ueCAtIHBvaW50LnggOiBwb2ludC54OwoKICAgICAgICBpZiAoIWhhc1JvdCkgewogICAgICAgICAgcmVsLnkgPSAwOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICByZWwueSA9IChvLnkpID8gby55IC0gcG9pbnQueSA6IHBvaW50Lnk7CiAgICAgICAgfQoKICAgICAgICBtaWRkbGUueCA9IChsZWZ0KT8gd2lkdGggLSByZWwueC8yIDogcG9pbnQueCArIHJlbC54LzI7CiAgICAgICAgbWlkZGxlLnkgPSByZWwueS8yOwogICAgICAgIAogICAgICAgIHZhciBhbHBoYSA9ICBBOTAtTWF0aC5hdGFuMihyZWwueSwgcmVsLngpLAogICAgICAgICAgZ2FtbWEgPSBhbHBoYSAtIE1hdGguYXRhbjIobWlkZGxlLnksIG1pZGRsZS54KSwKICAgICAgICAgIGRpc3RhbmNlID0gIE1hdGgubWF4KDAsIE1hdGguc2luKGdhbW1hKSAqIE1hdGguc3FydChNYXRoLnBvdyhtaWRkbGUueCwgMikgKyBNYXRoLnBvdyhtaWRkbGUueSwgMikpKTsKICAgICAgICAgIAogICAgICAgICAgYSA9IGRlZyhhbHBoYSk7CgogICAgICAgICAgdHIgPSBwb2ludDJEKGRpc3RhbmNlICogTWF0aC5zaW4oYWxwaGEpLCBkaXN0YW5jZSAqIE1hdGguY29zKGFscGhhKSk7CgogICAgICAgICAgaWYgKGFscGhhID4gQTkwKSB7CiAgICAgICAgICAgIHRyLnggPSB0ci54ICsgTWF0aC5hYnModHIueSAqIHJlbC55L3JlbC54KTsKICAgICAgICAgICAgdHIueSA9IDA7CiAgICAgICAgICAgIGlmIChNYXRoLnJvdW5kKHRyLngqTWF0aC50YW4oUEktYWxwaGEpKSA8IGhlaWdodCkgewogICAgICAgICAgICAgIHBvaW50LnkgPSBNYXRoLnNxcnQoTWF0aC5wb3coaGVpZ2h0LCAyKSsyICogbWlkZGxlLnggKiByZWwueCk7CiAgICAgICAgICAgICAgaWYgKHRvcCkgcG9pbnQueSA9ICBoZWlnaHQgLSBwb2ludC55OwogICAgICAgICAgICAgIHJldHVybiBjb21wdXRlKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgCiAgICAgICAgICBpZiAoYWxwaGE+QTkwKSB7CiAgICAgICAgICAgIHZhciBiZXRhID0gUEktYWxwaGEsIGRkID0gaCAtIGhlaWdodC9NYXRoLnNpbihiZXRhKTsKICAgICAgICAgICAgbXYgPSBwb2ludDJEKE1hdGgucm91bmQoZGQqTWF0aC5jb3MoYmV0YSkpLCBNYXRoLnJvdW5kKGRkKk1hdGguc2luKGJldGEpKSk7CiAgICAgICAgICAgIGlmIChsZWZ0KSBtdi54ID0gLSBtdi54OwogICAgICAgICAgICBpZiAodG9wKSBtdi55ID0gLSBtdi55OwogICAgICAgICAgfQoKICAgICAgICAgIHB4ID0gTWF0aC5yb3VuZCh0ci55L01hdGgudGFuKGFscGhhKSArIHRyLngpOwogICAgICAKICAgICAgICAgIHZhciBzaWRlID0gd2lkdGggLSBweCwKICAgICAgICAgICAgc2lkZVggPSBzaWRlKk1hdGguY29zKGFscGhhKjIpLAogICAgICAgICAgICBzaWRlWSA9IHNpZGUqTWF0aC5zaW4oYWxwaGEqMik7CiAgICAgICAgICAgIGRmID0gcG9pbnQyRCgKICAgICAgICAgICAgICBNYXRoLnJvdW5kKChsZWZ0ID8gc2lkZSAtc2lkZVggOiBweCtzaWRlWCkpLAogICAgICAgICAgICAgIE1hdGgucm91bmQoKHRvcCkgPyBzaWRlWSA6IGhlaWdodCAtIHNpZGVZKSk7CiAgICAgICAgICAKICAgICAgICAvLyBHcmFkaWVudHMKICAgICAgICAgIGlmICh0dXJuRGF0YS5vcHRzLmdyYWRpZW50cykgewoKICAgICAgICAgICAgZ3JhZGllbnRTaXplID0gc2lkZSpNYXRoLnNpbihhbHBoYSk7CgogICAgICAgICAgICB2YXIgZW5kaW5nUG9pbnQgPSBmbGlwTWV0aG9kcy5fYzIuY2FsbCh0aGF0LCBwb2ludC5jb3JuZXIpLAogICAgICAgICAgICAgZmFyID0gTWF0aC5zcXJ0KE1hdGgucG93KGVuZGluZ1BvaW50LngtcG9pbnQueCwgMikrTWF0aC5wb3coZW5kaW5nUG9pbnQueS1wb2ludC55LCAyKSkvd2lkdGg7CgogICAgICAgICAgICBzaGFkb3dWYWwgPSBNYXRoLnNpbihBOTAqKChmYXI+MSkgPyAyIC0gZmFyIDogZmFyKSk7CgogICAgICAgICAgICBncmFkaWVudE9wYWNpdHkgPSBNYXRoLm1pbihmYXIsIDEpOwoKICAgICAgICAgICAKICAgICAgICAgICAgICBncmFkaWVudFN0YXJ0VmFsID0gZ3JhZGllbnRTaXplPjEwMCA/IChncmFkaWVudFNpemUtMTAwKS9ncmFkaWVudFNpemUgOiAwOwoKICAgICAgICAgICAgICBncmFkaWVudEVuZFBvaW50QSA9IHBvaW50MkQoCiAgICAgICAgICAgICAgICBncmFkaWVudFNpemUqTWF0aC5zaW4oYWxwaGEpL3dpZHRoKjEwMCwKICAgICAgICAgICAgICAgIGdyYWRpZW50U2l6ZSpNYXRoLmNvcyhhbHBoYSkvaGVpZ2h0KjEwMCk7CiAgICAgICAgICAgCgogICAgICAgICAgICAgIGlmIChmbGlwTWV0aG9kcy5fYmFja0dyYWRpZW50LmNhbGwodGhhdCkpIHsKCiAgICAgICAgICAgICAgICBncmFkaWVudEVuZFBvaW50QiA9IHBvaW50MkQoCiAgICAgICAgICAgICAgICAgIGdyYWRpZW50U2l6ZSoxLjIqTWF0aC5zaW4oYWxwaGEpL3dpZHRoKjEwMCwKICAgICAgICAgICAgICAgICAgZ3JhZGllbnRTaXplKjEuMipNYXRoLmNvcyhhbHBoYSkvaGVpZ2h0KjEwMCk7CgogICAgICAgICAgICAgICAgaWYgKCFsZWZ0KSBncmFkaWVudEVuZFBvaW50Qi54ID0gMTAwLWdyYWRpZW50RW5kUG9pbnRCLng7CiAgICAgICAgICAgICAgICBpZiAoIXRvcCkgZ3JhZGllbnRFbmRQb2ludEIueSA9IDEwMC1ncmFkaWVudEVuZFBvaW50Qi55OwoKICAgICAgICAgICAgICB9CgogICAgICAgICAgfQoKICAgICAgICAgIHRyLnggPSBNYXRoLnJvdW5kKHRyLngpOwogICAgICAgICAgdHIueSA9IE1hdGgucm91bmQodHIueSk7CgogICAgICAgIHJldHVybiB0cnVlOwogICAgICB9LAoKICAgICAgdHJhbnNmb3JtID0gZnVuY3Rpb24odHIsIGMsIHgsIGEpIHsKICAgICAgCiAgICAgICAgdmFyIGYgPSBbJzAnLCAnYXV0byddLCBtdlcgPSAod2lkdGgtaCkqeFswXS8xMDAsIG12SCA9IChoZWlnaHQtaCkqeFsxXS8xMDAsCiAgICAgICAgICBjc3NBID0ge2xlZnQ6IGZbY1swXV0sIHRvcDogZltjWzFdXSwgcmlnaHQ6IGZbY1syXV0sIGJvdHRvbTogZltjWzNdXX0sCiAgICAgICAgICBjc3NCID0ge30sCiAgICAgICAgICBhbGlhc2luZ0ZrID0gKGEhPTkwICYmIGEhPS05MCkgPyAobGVmdCA/IC0xIDogMSkgOiAwLAogICAgICAgICAgb3JpZ2luID0geFswXSArICclICcgKyB4WzFdICsgJyUnOwoKICAgICAgICB0aGF0LmNzcyhjc3NBKS4KICAgICAgICAgIHRyYW5zZm9ybShyb3RhdGUoYSkgKyB0cmFuc2xhdGUodHIueCArIGFsaWFzaW5nRmssIHRyLnksIGFjKSwgb3JpZ2luKTsKCiAgICAgICAgZGF0YS5mcGFnZS5jc3MoY3NzQSkudHJhbnNmb3JtKAogICAgICAgICAgcm90YXRlKGEpICsKICAgICAgICAgIHRyYW5zbGF0ZSh0ci54ICsgZGYueCAtIG12LnggLSB3aWR0aCp4WzBdLzEwMCwgdHIueSArIGRmLnkgLSBtdi55IC0gaGVpZ2h0KnhbMV0vMTAwLCBhYykgKwogICAgICAgICAgcm90YXRlKCgxODAvYSAtIDIpKmEpLAogICAgICAgICAgb3JpZ2luKTsKCiAgICAgICAgZGF0YS53cmFwcGVyLnRyYW5zZm9ybSh0cmFuc2xhdGUoLXRyLnggKyBtdlctYWxpYXNpbmdGaywgLXRyLnkgKyBtdkgsIGFjKSArIHJvdGF0ZSgtYSksIG9yaWdpbik7CgogICAgICAgIGRhdGEuZndyYXBwZXIudHJhbnNmb3JtKHRyYW5zbGF0ZSgtdHIueCArIG12LnggKyBtdlcsIC10ci55ICsgbXYueSArIG12SCwgYWMpICsgcm90YXRlKC1hKSwgb3JpZ2luKTsKICAgICAgCiAgICAgICAgaWYgKHR1cm5EYXRhLm9wdHMuZ3JhZGllbnRzKSB7CgogICAgICAgICAgaWYgKHhbMF0pCiAgICAgICAgICAgIGdyYWRpZW50RW5kUG9pbnRBLnggPSAxMDAtZ3JhZGllbnRFbmRQb2ludEEueDsKCiAgICAgICAgICBpZiAoeFsxXSkKICAgICAgICAgICAgZ3JhZGllbnRFbmRQb2ludEEueSA9ICgxMDAtZ3JhZGllbnRFbmRQb2ludEEueSk7CgogICAgICAgICAgY3NzQlsnYm94LXNoYWRvdyddID0gJzAgMCAyMHB4IHJnYmEoMCwwLDAsJysoMC41KnNoYWRvd1ZhbCkrJyknOwogICAgICAgICAgZm9sZGluZy5jc3MoY3NzQik7CgogICAgICAgICAgZ3JhZGllbnQoZGF0YS5hc2hhZG93LAogICAgICAgICAgICAgIHBvaW50MkQobGVmdD8xMDA6MCwgdG9wPzA6MTAwKSwKICAgICAgICAgICAgICBwb2ludDJEKGdyYWRpZW50RW5kUG9pbnRBLngsIGdyYWRpZW50RW5kUG9pbnRBLnkpLAogICAgICAgICAgICAgIFtbZ3JhZGllbnRTdGFydFZhbCwgJ3JnYmEoMCwwLDAsMCknXSwKICAgICAgICAgICAgICBbKCgxLWdyYWRpZW50U3RhcnRWYWwpKjAuOCkrZ3JhZGllbnRTdGFydFZhbCwgJ3JnYmEoMCwwLDAsJysoMC4yKmdyYWRpZW50T3BhY2l0eSkrJyknXSwKICAgICAgICAgICAgICBbMSwgJ3JnYmEoMjU1LDI1NSwyNTUsJysoMC4yKmdyYWRpZW50T3BhY2l0eSkrJyknXV0sCiAgICAgICAgICAgICAgMywKICAgICAgICAgICAgICBhbHBoYSk7CgogICAgICAgICAgaWYgKGZsaXBNZXRob2RzLl9iYWNrR3JhZGllbnQuY2FsbCh0aGF0KSkKICAgICAgICAgICAgZ3JhZGllbnQoZGF0YS5ic2hhZG93LAogICAgICAgICAgICAgICAgcG9pbnQyRChsZWZ0PzA6MTAwLCB0b3A/MDoxMDApLAogICAgICAgICAgICAgICAgcG9pbnQyRChncmFkaWVudEVuZFBvaW50Qi54LCBncmFkaWVudEVuZFBvaW50Qi55KSwKICAgICAgICAgICAgICAgIFtbMC42LCAncmdiYSgwLDAsMCwwKSddLAogICAgICAgICAgICAgICAgWzAuOCwgJ3JnYmEoMCwwLDAsJysoMC4zKmdyYWRpZW50T3BhY2l0eSkrJyknXSwKICAgICAgICAgICAgICAgIFsxLCAncmdiYSgwLDAsMCwwKSddCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgMyk7CiAgICAgICAgfQoKICAgICAgfTsKCiAgICAgIHN3aXRjaCAocG9pbnQuY29ybmVyKSB7CiAgICAgICAgY2FzZSAnbCcgOgoKCiAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAncicgOgoKCiAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAndGwnIDoKICAgICAgICAgIHBvaW50LnggPSBNYXRoLm1heChwb2ludC54LCAxKTsKICAgICAgICAgIGNvbXB1dGUoKTsKICAgICAgICAgIHRyYW5zZm9ybSh0ciwgWzEsMCwwLDFdLCBbMTAwLCAwXSwgYSk7CiAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAndHInIDoKICAgICAgICAgIHBvaW50LnggPSBNYXRoLm1pbihwb2ludC54LCB3aWR0aC0xKTsKICAgICAgICAgIGNvbXB1dGUoKTsKICAgICAgICAgIHRyYW5zZm9ybShwb2ludDJEKC10ci54LCB0ci55KSwgWzAsMCwwLDFdLCBbMCwgMF0sIC1hKTsKICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdibCcgOgogICAgICAgICAgcG9pbnQueCA9IE1hdGgubWF4KHBvaW50LngsIDEpOwogICAgICAgICAgY29tcHV0ZSgpOwogICAgICAgICAgdHJhbnNmb3JtKHBvaW50MkQodHIueCwgLXRyLnkpLCBbMSwxLDAsMF0sIFsxMDAsIDEwMF0sIC1hKTsKICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdicicgOgogICAgICAgICAgcG9pbnQueCA9IE1hdGgubWluKHBvaW50LngsIHdpZHRoLTEpOwogICAgICAgICAgY29tcHV0ZSgpOwogICAgICAgICAgdHJhbnNmb3JtKHBvaW50MkQoLXRyLngsIC10ci55KSwgWzAsMSwxLDBdLCBbMCwgMTAwXSwgYSk7CiAgICAgICAgYnJlYWs7CiAgICAgIH0KCiAgICBicmVhazsKICB9CgogICAgZGF0YS5wb2ludCA9IHBvaW50OwogIAogIH0sCgogIF9tb3ZlRm9sZGluZ1BhZ2U6IGZ1bmN0aW9uKG1vdmUpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLmY7CgogICAgaWYgKCFkYXRhKQogICAgICByZXR1cm47CgogICAgdmFyIHR1cm4gPSBkYXRhLm9wdHMudHVybiwKICAgICAgdHVybkRhdGEgPSB0dXJuLmRhdGEoKSwKICAgICAgcGxhY2UgPSB0dXJuRGF0YS5wYWdlUGxhY2U7CiAgICAgIAogICAgaWYgKG1vdmUpIHsKCiAgICAgIHZhciBuZXh0UGFnZSA9IGRhdGEub3B0cy5uZXh0OwogIAogICAgICBpZiAocGxhY2VbbmV4dFBhZ2VdIT1kYXRhLm9wdHMucGFnZSkgewoKICAgICAgICBpZiAoZGF0YS5mb2xkaW5nKQogICAgICAgICAgZmxpcE1ldGhvZHMuX21vdmVGb2xkaW5nUGFnZS5jYWxsKHRoaXMsIGZhbHNlKTsKCiAgICAgICAgdmFyIGZvbGRpbmcgPSBmbGlwTWV0aG9kcy5fZm9sZGluZ1BhZ2UuY2FsbCh0aGlzKTsKICAgICAgICAKICAgICAgICBmb2xkaW5nLmFwcGVuZFRvKGRhdGEuZnBhZ2UpOwogICAgICAgIHBsYWNlW25leHRQYWdlXSA9IGRhdGEub3B0cy5wYWdlOwogICAgICAgIGRhdGEuZm9sZGluZyA9IG5leHRQYWdlOwogICAgICB9CgogICAgICB0dXJuLnR1cm4oJ3VwZGF0ZScpOwoKICAgIH0gZWxzZSB7CgogICAgICBpZiAoZGF0YS5mb2xkaW5nKSB7CgogICAgICAgIGlmICh0dXJuRGF0YS5wYWdlc1tkYXRhLmZvbGRpbmddKSB7CiAgICAgICAgIAogICAgICAgICAgLy8gSWYgd2UgaGF2ZSBmbGlwIGF2YWlsYWJsZQoKICAgICAgICAgIHZhciBmbGlwRGF0YSA9IHR1cm5EYXRhLnBhZ2VzW2RhdGEuZm9sZGluZ10uZGF0YSgpLmY7CiAgICAgICAgICAKICAgICAgICAgIHR1cm5EYXRhLnBhZ2VPYmpzW2RhdGEuZm9sZGluZ10uCiAgICAgICAgICAgIGFwcGVuZFRvKGZsaXBEYXRhLndyYXBwZXIpOwoKICAgICAgICB9IGVsc2UgaWYgKHR1cm5EYXRhLnBhZ2VXcmFwW2RhdGEuZm9sZGluZ10pIHsKICAgICAgICAgIAogICAgICAgICAgLy8gSWYgd2UgaGF2ZSB0aGUgcGFnZVdyYXBwZXIKCiAgICAgICAgICB0dXJuRGF0YS5wYWdlT2Jqc1tkYXRhLmZvbGRpbmddLgogICAgICAgICAgICBhcHBlbmRUbyh0dXJuRGF0YS5wYWdlV3JhcFtkYXRhLmZvbGRpbmddKTsKCiAgICAgICAgfQoKICAgICAgICBpZiAoZGF0YS5mb2xkaW5nIGluIHBsYWNlKSB7CiAgICAgICAgICBwbGFjZVtkYXRhLmZvbGRpbmddID0gZGF0YS5mb2xkaW5nOwogICAgICAgIH0KCiAgICAgICAgZGVsZXRlIGRhdGEuZm9sZGluZzsKCiAgICAgIH0KICAgIH0KICB9LAoKICBfc2hvd0ZvbGRlZFBhZ2U6IGZ1bmN0aW9uKGMsIGFuaW1hdGUpIHsKCiAgICB2YXIgZm9sZGluZyA9IGZsaXBNZXRob2RzLl9mb2xkaW5nUGFnZS5jYWxsKHRoaXMpLAogICAgICBkZCA9IHRoaXMuZGF0YSgpLAogICAgICBkYXRhID0gZGQuZiwKICAgICAgdmlzaWJsZSA9IGRhdGEudmlzaWJsZTsKCiAgICBpZiAoZm9sZGluZykgewoKICAgICAgaWYgKCF2aXNpYmxlIHx8ICFkYXRhLnBvaW50IHx8IGRhdGEucG9pbnQuY29ybmVyIT1jLmNvcm5lcikgewoKICAgICAgICB2YXIgY29ybmVyID0gKAogICAgICAgICAgZGF0YS5zdGF0dXM9PSdob3ZlcicgfHwKICAgICAgICAgIGRhdGEuc3RhdHVzPT0ncGVlbCcgfHwKICAgICAgICAgIGRhdGEub3B0cy50dXJuLmRhdGEoKS5tb3VzZUFjdGlvbikgPwogICAgICAgIGMuY29ybmVyIDogbnVsbDsKCiAgICAgICAgdmlzaWJsZSA9IGZhbHNlOwoKICAgICAgICBpZiAodHJpZ2dlcignc3RhcnQnLCB0aGlzLCBbZGF0YS5vcHRzLCBjb3JuZXJdKT09J3ByZXZlbnRlZCcpCiAgICAgICAgICByZXR1cm4gZmFsc2U7CgogICAgICB9CgogICAgICBpZiAoYW5pbWF0ZSkgewogICAgICAgIAogICAgICAgIHZhciB0aGF0ID0gdGhpcywKICAgICAgICAgIHBvaW50ID0gKGRhdGEucG9pbnQgJiYgZGF0YS5wb2ludC5jb3JuZXI9PWMuY29ybmVyKSA/CiAgICAgICAgICBkYXRhLnBvaW50IDogZmxpcE1ldGhvZHMuX2MuY2FsbCh0aGlzLCBjLmNvcm5lciwgMSk7CiAgICAgIAogICAgICAgIHRoaXMuYW5pbWF0ZWYoewogICAgICAgICAgZnJvbTogW3BvaW50LngsIHBvaW50LnldLAogICAgICAgICAgdG86IFtjLngsIGMueV0sCiAgICAgICAgICBkdXJhdGlvbjogNTAwLAogICAgICAgICAgZnJhbWU6IGZ1bmN0aW9uKHYpIHsKICAgICAgICAgICAgYy54ID0gTWF0aC5yb3VuZCh2WzBdKTsKICAgICAgICAgICAgYy55ID0gTWF0aC5yb3VuZCh2WzFdKTsKICAgICAgICAgICAgZmxpcE1ldGhvZHMuX2ZvbGQuY2FsbCh0aGF0LCBjKTsKICAgICAgICAgIH0KICAgICAgICB9KTsKCiAgICAgIH0gZWxzZSAgewoKICAgICAgICBmbGlwTWV0aG9kcy5fZm9sZC5jYWxsKHRoaXMsIGMpOwoKICAgICAgICBpZiAoZGQuZWZmZWN0ICYmICFkZC5lZmZlY3QudHVybmluZykKICAgICAgICAgIHRoaXMuYW5pbWF0ZWYoZmFsc2UpOwoKICAgICAgfQoKICAgICAgaWYgKCF2aXNpYmxlKSB7CgogICAgICAgIHN3aXRjaChkYXRhLmVmZmVjdCkgewogICAgICAgICAgY2FzZSAnaGFyZCc6CgogICAgICAgICAgICBkYXRhLnZpc2libGUgPSB0cnVlOwogICAgICAgICAgICBmbGlwTWV0aG9kcy5fbW92ZUZvbGRpbmdQYWdlLmNhbGwodGhpcywgdHJ1ZSk7CiAgICAgICAgICAgIGRhdGEuZnBhZ2Uuc2hvdygpOwogICAgICAgICAgICBpZiAoZGF0YS5vcHRzLnNoYWRvd3MpCiAgICAgICAgICAgICAgZGF0YS5ic2hhZG93LnNob3coKTsKCiAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgJ3NoZWV0JzoKCiAgICAgICAgICAgIGRhdGEudmlzaWJsZSA9IHRydWU7CiAgICAgICAgICAgIGRhdGEuZnBhcmVudC5zaG93KCkuZGF0YSgpLmZsaXBzKys7CiAgICAgICAgICAgIGZsaXBNZXRob2RzLl9tb3ZlRm9sZGluZ1BhZ2UuY2FsbCh0aGlzLCB0cnVlKTsKICAgICAgICAgICAgZGF0YS5md3JhcHBlci5zaG93KCk7CiAgICAgICAgICAgIGlmIChkYXRhLmJzaGFkb3cpCiAgICAgICAgICAgICAgZGF0YS5ic2hhZG93LnNob3coKTsKCiAgICAgICAgICBicmVhazsKICAgICAgICB9CgogICAgICB9CgogICAgICByZXR1cm4gdHJ1ZTsKCiAgICB9CgogICAgcmV0dXJuIGZhbHNlOwogIH0sCgogIGhpZGU6IGZ1bmN0aW9uKCkgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCkuZiwKICAgICAgdHVybkRhdGEgPSBkYXRhLm9wdHMudHVybi5kYXRhKCksCiAgICAgIGZvbGRpbmcgPSBmbGlwTWV0aG9kcy5fZm9sZGluZ1BhZ2UuY2FsbCh0aGlzKTsKCiAgICBzd2l0Y2ggKGRhdGEuZWZmZWN0KSB7CiAgICAgIGNhc2UgJ2hhcmQnOgogICAgICAgIAogICAgICAgIGlmICh0dXJuRGF0YS5vcHRzLmdyYWRpZW50cykgewogICAgICAgICAgZGF0YS5ic2hhZG93TG9jID0gMDsKICAgICAgICAgIGRhdGEuYnNoYWRvdy5yZW1vdmUoKTsKICAgICAgICAgIGRhdGEuYXNoYWRvdy5oaWRlKCk7CiAgICAgICAgfQoKICAgICAgICBkYXRhLndyYXBwZXIudHJhbnNmb3JtKCcnKTsKICAgICAgICBkYXRhLmZwYWdlLmhpZGUoKTsKCiAgICAgIGJyZWFrOwogICAgICBjYXNlICdzaGVldCc6CgogICAgICAgIGlmICgoLS1kYXRhLmZwYXJlbnQuZGF0YSgpLmZsaXBzKT09PTApCiAgICAgICAgICBkYXRhLmZwYXJlbnQuaGlkZSgpOwoKICAgICAgICB0aGlzLmNzcyh7bGVmdDogMCwgdG9wOiAwLCByaWdodDogJ2F1dG8nLCBib3R0b206ICdhdXRvJ30pLgogICAgICAgICAgdHJhbnNmb3JtKCcnKTsKCiAgICAgICAgZGF0YS53cmFwcGVyLnRyYW5zZm9ybSgnJyk7CgogICAgICAgIGRhdGEuZndyYXBwZXIuaGlkZSgpOwoKICAgICAgICBpZiAoZGF0YS5ic2hhZG93KQogICAgICAgICAgZGF0YS5ic2hhZG93LmhpZGUoKTsKCiAgICAgICAgZm9sZGluZy50cmFuc2Zvcm0oJycpOwoKICAgICAgYnJlYWs7CiAgICB9CgogICAgICBkYXRhLnZpc2libGUgPSBmYWxzZTsKCiAgICByZXR1cm4gdGhpczsKICB9LAoKICBoaWRlRm9sZGVkUGFnZTogZnVuY3Rpb24oYW5pbWF0ZSkgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCkuZjsKCiAgICBpZiAoIWRhdGEucG9pbnQpIHJldHVybjsKCiAgICB2YXIgdGhhdCA9IHRoaXMsCiAgICAgIHAxID0gZGF0YS5wb2ludCwKICAgICAgaGlkZSA9IGZ1bmN0aW9uKCkgewogICAgICAgIGRhdGEucG9pbnQgPSBudWxsOwogICAgICAgIGRhdGEuc3RhdHVzID0gJyc7CiAgICAgICAgdGhhdC5mbGlwKCdoaWRlJyk7CiAgICAgICAgdGhhdC50cmlnZ2VyKCdlbmQnLCBbZGF0YS5vcHRzLCBmYWxzZV0pOwogICAgICB9OwoKICAgIGlmIChhbmltYXRlKSB7CgogICAgICB2YXIgcDQgPSBmbGlwTWV0aG9kcy5fYy5jYWxsKHRoaXMsIHAxLmNvcm5lciksCiAgICAgICAgdG9wID0gKHAxLmNvcm5lci5zdWJzdHIoMCwxKT09J3QnKSwKICAgICAgICBkZWx0YSA9ICh0b3ApID8gTWF0aC5taW4oMCwgcDEueS1wNC55KS8yIDogTWF0aC5tYXgoMCwgcDEueS1wNC55KS8yLAogICAgICAgIHAyID0gcG9pbnQyRChwMS54LCBwMS55K2RlbHRhKSwKICAgICAgICBwMyA9IHBvaW50MkQocDQueCwgcDQueS1kZWx0YSk7CiAgICAKICAgICAgdGhpcy5hbmltYXRlZih7CiAgICAgICAgZnJvbTogMCwKICAgICAgICB0bzogMSwKICAgICAgICBmcmFtZTogZnVuY3Rpb24odikgewogICAgICAgICAgdmFyIG5wID0gYmV6aWVyKHAxLCBwMiwgcDMsIHA0LCB2KTsKICAgICAgICAgIHAxLnggPSBucC54OwogICAgICAgICAgcDEueSA9IG5wLnk7CiAgICAgICAgICBmbGlwTWV0aG9kcy5fZm9sZC5jYWxsKHRoYXQsIHAxKTsKICAgICAgICB9LAogICAgICAgIGNvbXBsZXRlOiBoaWRlLAogICAgICAgIGR1cmF0aW9uOiA4MDAsCiAgICAgICAgaGlkaW5nOiB0cnVlCiAgICAgIH0pOwoKICAgIH0gZWxzZSB7CgogICAgICB0aGlzLmFuaW1hdGVmKGZhbHNlKTsKICAgICAgaGlkZSgpOwoKICAgIH0KICB9LAoKICB0dXJuUGFnZTogZnVuY3Rpb24oY29ybmVyKSB7CgogICAgdmFyIHRoYXQgPSB0aGlzLAogICAgICBkYXRhID0gdGhpcy5kYXRhKCkuZiwKICAgICAgdHVybkRhdGEgPSBkYXRhLm9wdHMudHVybi5kYXRhKCk7CgogICAgY29ybmVyID0ge2Nvcm5lcjogKGRhdGEuY29ybmVyKSA/CiAgICAgIGRhdGEuY29ybmVyLmNvcm5lciA6CiAgICAgIGNvcm5lciB8fCBmbGlwTWV0aG9kcy5fY0FsbG93ZWQuY2FsbCh0aGlzKVswXX07CgogICAgdmFyIHAxID0gZGF0YS5wb2ludCB8fAogICAgICBmbGlwTWV0aG9kcy5fYy5jYWxsKHRoaXMsCiAgICAgICAgY29ybmVyLmNvcm5lciwKICAgICAgICAoZGF0YS5vcHRzLnR1cm4pID8gdHVybkRhdGEub3B0cy5lbGV2YXRpb24gOiAwKSwKICAgICAgcDQgPSBmbGlwTWV0aG9kcy5fYzIuY2FsbCh0aGlzLCBjb3JuZXIuY29ybmVyKTsKCiAgICAgIHRoaXMudHJpZ2dlcignZmxpcCcpLgogICAgICAgIGFuaW1hdGVmKHsKICAgICAgICAgIGZyb206IDAsCiAgICAgICAgICB0bzogMSwKICAgICAgICAgIGZyYW1lOiBmdW5jdGlvbih2KSB7CgogICAgICAgICAgICB2YXIgbnAgPSBiZXppZXIocDEsIHAxLCBwNCwgcDQsIHYpOwogICAgICAgICAgICBjb3JuZXIueCA9IG5wLng7CiAgICAgICAgICAgIGNvcm5lci55ID0gbnAueTsKICAgICAgICAgICAgZmxpcE1ldGhvZHMuX3Nob3dGb2xkZWRQYWdlLmNhbGwodGhhdCwgY29ybmVyKTsKCiAgICAgICAgICB9LAogICAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAKICAgICAgICAgICAgdGhhdC50cmlnZ2VyKCdlbmQnLCBbZGF0YS5vcHRzLCB0cnVlXSk7CgogICAgICAgICAgfSwKICAgICAgICAgIGR1cmF0aW9uOiB0dXJuRGF0YS5vcHRzLmR1cmF0aW9uLAogICAgICAgICAgdHVybmluZzogdHJ1ZQogICAgICAgIH0pOwoKICAgICAgZGF0YS5jb3JuZXIgPSBudWxsOwogIH0sCgogIG1vdmluZzogZnVuY3Rpb24oKSB7CgogICAgcmV0dXJuICdlZmZlY3QnIGluIHRoaXMuZGF0YSgpOwogIAogIH0sCgogIGlzVHVybmluZzogZnVuY3Rpb24oKSB7CgogICAgcmV0dXJuIHRoaXMuZmxpcCgnbW92aW5nJykgJiYgdGhpcy5kYXRhKCkuZWZmZWN0LnR1cm5pbmc7CiAgCiAgfSwKCiAgY29ybmVyOiBmdW5jdGlvbigpIHsKICAgIAogICAgcmV0dXJuIHRoaXMuZGF0YSgpLmYuY29ybmVyOwogICAgICAKICB9LAoKICBfZXZlbnRTdGFydDogZnVuY3Rpb24oZSkgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCkuZiwKICAgICAgdHVybiA9IGRhdGEub3B0cy50dXJuOwoKICAgIGlmICghZGF0YS5jb3JuZXIgJiYgIWRhdGEuZGlzYWJsZWQgJiYgIXRoaXMuZmxpcCgnaXNUdXJuaW5nJykgJiYKICAgICAgZGF0YS5vcHRzLnBhZ2U9PXR1cm4uZGF0YSgpLnBhZ2VQbGFjZVtkYXRhLm9wdHMucGFnZV0pCiAgICB7CgogICAgICBkYXRhLmNvcm5lciA9IGZsaXBNZXRob2RzLl9pc0lBcmVhLmNhbGwodGhpcywgZSk7CgogICAgICBpZiAoZGF0YS5jb3JuZXIgJiYgZmxpcE1ldGhvZHMuX2ZvbGRpbmdQYWdlLmNhbGwodGhpcykpIHsKCiAgICAgICAgdGhpcy50cmlnZ2VyKCdwcmVzc2VkJywgW2RhdGEucG9pbnRdKTsKICAgICAgICBmbGlwTWV0aG9kcy5fc2hvd0ZvbGRlZFBhZ2UuY2FsbCh0aGlzLCBkYXRhLmNvcm5lcik7CgogICAgICAgIHJldHVybiBmYWxzZTsKCiAgICAgIH0gZWxzZQogICAgICAgIGRhdGEuY29ybmVyID0gbnVsbDsKCiAgICB9CgogIH0sCgogIF9ldmVudE1vdmU6IGZ1bmN0aW9uKGUpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLmY7CgogICAgaWYgKCFkYXRhLmRpc2FibGVkKSB7CgogICAgICBlID0gKGlzVG91Y2gpID8gZS5vcmlnaW5hbEV2ZW50LnRvdWNoZXMgOiBbZV07CgogICAgICBpZiAoZGF0YS5jb3JuZXIpIHsKCiAgICAgICAgdmFyIHBvcyA9IGRhdGEucGFyZW50Lm9mZnNldCgpOwogICAgICAgIGRhdGEuY29ybmVyLnggPSBlWzBdLnBhZ2VYLXBvcy5sZWZ0OwogICAgICAgIGRhdGEuY29ybmVyLnkgPSBlWzBdLnBhZ2VZLXBvcy50b3A7CiAgICAgICAgZmxpcE1ldGhvZHMuX3Nob3dGb2xkZWRQYWdlLmNhbGwodGhpcywgZGF0YS5jb3JuZXIpOwoKICAgICAgfSBlbHNlIGlmIChkYXRhLmhvdmVyICYmICF0aGlzLmRhdGEoKS5lZmZlY3QgJiYgdGhpcy5pcygnOnZpc2libGUnKSkgewoKICAgICAgICB2YXIgcG9pbnQgPSBmbGlwTWV0aG9kcy5faXNJQXJlYS5jYWxsKHRoaXMsIGVbMF0pOwoKICAgICAgICBpZiAocG9pbnQpIHsKCiAgICAgICAgICBpZiAoKGRhdGEuZWZmZWN0PT0nc2hlZXQnICYmIHBvaW50LmNvcm5lci5sZW5ndGg9PTIpICB8fCBkYXRhLmVmZmVjdD09J2hhcmQnKSB7CiAgICAgICAgICAgIGRhdGEuc3RhdHVzID0gJ2hvdmVyJzsKICAgICAgICAgICAgdmFyIG9yaWdpbiA9IGZsaXBNZXRob2RzLl9jLmNhbGwodGhpcywgcG9pbnQuY29ybmVyLCBkYXRhLm9wdHMuY29ybmVyU2l6ZS8yKTsKICAgICAgICAgICAgcG9pbnQueCA9IG9yaWdpbi54OwogICAgICAgICAgICBwb2ludC55ID0gb3JpZ2luLnk7CiAgICAgICAgICAgIGZsaXBNZXRob2RzLl9zaG93Rm9sZGVkUGFnZS5jYWxsKHRoaXMsIHBvaW50LCB0cnVlKTsKICAgICAgICAgIH0KICAgICAgICAKICAgICAgICB9IGVsc2UgewogICAgICAgICAgCiAgICAgICAgICBpZiAoZGF0YS5zdGF0dXM9PSdob3ZlcicpIHsKICAgICAgICAgICAgZGF0YS5zdGF0dXMgPSAnJzsKICAgICAgICAgICAgZmxpcE1ldGhvZHMuaGlkZUZvbGRlZFBhZ2UuY2FsbCh0aGlzLCB0cnVlKTsKICAgICAgICAgIH0KCiAgICAgICAgfQoKICAgICAgfQoKICAgIH0KCiAgfSwKCiAgX2V2ZW50RW5kOiBmdW5jdGlvbigpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLmYsCiAgICAgIGNvcm5lciA9IGRhdGEuY29ybmVyOwoKICAgIGlmICghZGF0YS5kaXNhYmxlZCAmJiBjb3JuZXIpIHsKICAgICAgaWYgKHRyaWdnZXIoJ3JlbGVhc2VkJywgdGhpcywgW2RhdGEucG9pbnQgfHwgY29ybmVyXSkhPSdwcmV2ZW50ZWQnKSB7CiAgICAgICAgZmxpcE1ldGhvZHMuaGlkZUZvbGRlZFBhZ2UuY2FsbCh0aGlzLCB0cnVlKTsKICAgICAgfQogICAgfQoKICAgIGRhdGEuY29ybmVyID0gbnVsbDsKCiAgfSwKCiAgZGlzYWJsZTogZnVuY3Rpb24oZGlzYWJsZSkgewoKICAgIGZsaXBNZXRob2RzLnNldERhdGEuY2FsbCh0aGlzLCB7J2Rpc2FibGVkJzogZGlzYWJsZX0pOwogICAgcmV0dXJuIHRoaXM7CgogIH0sCgogIGhvdmVyOiBmdW5jdGlvbihob3ZlcikgewogICAgCiAgICBmbGlwTWV0aG9kcy5zZXREYXRhLmNhbGwodGhpcywgeydob3Zlcic6IGhvdmVyfSk7CiAgICByZXR1cm4gdGhpczsKCiAgfSwKCiAgcGVlbDogZnVuY3Rpb24gKGNvcm5lciwgYW5pbWF0ZSkgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCkuZjsKCiAgICBpZiAoY29ybmVyKSB7CgogICAgICBpZiAoJC5pbkFycmF5KGNvcm5lciwgY29ybmVycy5hbGwpPT0tMSkKICAgICAgICB0aHJvdyB0dXJuRXJyb3IoJ0Nvcm5lciAnK2Nvcm5lcisnIGlzIG5vdCBwZXJtaXR0ZWQnKTsKCiAgICAgIGlmICgkLmluQXJyYXkoY29ybmVyLCBmbGlwTWV0aG9kcy5fY0FsbG93ZWQuY2FsbCh0aGlzKSkhPS0xKSB7CgogICAgICAgIHZhciBwb2ludCA9IGZsaXBNZXRob2RzLl9jLmNhbGwodGhpcywgY29ybmVyLCBkYXRhLm9wdHMuY29ybmVyU2l6ZS8yKTsKICAgICAgICAKICAgICAgICBkYXRhLnN0YXR1cyA9ICdwZWVsJzsKCiAgICAgICAgZmxpcE1ldGhvZHMuX3Nob3dGb2xkZWRQYWdlLmNhbGwodGhpcywKICAgICAgICB7CiAgICAgICAgICBjb3JuZXI6IGNvcm5lciwKICAgICAgICAgIHg6IHBvaW50LngsCiAgICAgICAgICB5OiBwb2ludC55CiAgICAgICAgfSwgYW5pbWF0ZSk7CgogICAgICB9CgoKICAgIH0gZWxzZSB7CgogICAgICBkYXRhLnN0YXR1cyA9ICcnOwoKICAgICAgZmxpcE1ldGhvZHMuaGlkZUZvbGRlZFBhZ2UuY2FsbCh0aGlzLCBhbmltYXRlKTsKICAgICAgCiAgICB9CgogICAgcmV0dXJuIHRoaXM7CiAgfQp9OwoKCi8vIFByb2Nlc3NlcyBjbGFzc2VzCgpmdW5jdGlvbiBkZWModGhhdCwgbWV0aG9kcywgYXJncykgewoKICBpZiAoIWFyZ3NbMF0gfHwgdHlwZW9mKGFyZ3NbMF0pPT0nb2JqZWN0JykKICAgIHJldHVybiBtZXRob2RzLmluaXQuYXBwbHkodGhhdCwgYXJncyk7CgogIGVsc2UgaWYgKG1ldGhvZHNbYXJnc1swXV0pCiAgICByZXR1cm4gbWV0aG9kc1thcmdzWzBdXS5hcHBseSh0aGF0LCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmdzLCAxKSk7CgogIGVsc2UKICAgIHRocm93IHR1cm5FcnJvcihhcmdzWzBdICsgJyBpcyBub3QgYSBtZXRob2Qgb3IgcHJvcGVydHknKTsKCn0KCgovLyBBdHRyaWJ1dGVzIGZvciBhIGxheWVyCgpmdW5jdGlvbiBkaXZBdHQodG9wLCBsZWZ0LCB6SW5kZXgsIG92ZXJmKSB7CiAgICAKICByZXR1cm4geydjc3MnOiB7CiAgICBwb3NpdGlvbjogJ2Fic29sdXRlJywKICAgIHRvcDogdG9wLAogICAgbGVmdDogbGVmdCwKICAgICdvdmVyZmxvdyc6IG92ZXJmIHx8ICdoaWRkZW4nLAogICAgekluZGV4OiB6SW5kZXggfHwgJ2F1dG8nCiAgfQp9OwogICAgICAKfQoKLy8gR2V0cyBhIDJEIHBvaW50IGZyb20gYSBiZXppZXIgY3VydmUgb2YgZm91ciBwb2ludHMKCmZ1bmN0aW9uIGJlemllcihwMSwgcDIsIHAzLCBwNCwgdCkgewoKICB2YXIgYSA9IDEgLSB0LAogICAgYiA9IGEgKiBhICogYSwKICAgIGMgPSB0ICogdCAqIHQ7CiAgICAKICByZXR1cm4gcG9pbnQyRChNYXRoLnJvdW5kKGIqcDEueCArIDMqdCphKmEqcDIueCArIDMqdCp0KmEqcDMueCArIGMqcDQueCksCiAgICBNYXRoLnJvdW5kKGIqcDEueSArIDMqdCphKmEqcDIueSArIDMqdCp0KmEqcDMueSArIGMqcDQueSkpOwoKfQogIAovLyBDb252ZXJ0cyBhbiBhbmdsZSBmcm9tIGRlZ3JlZXMgdG8gcmFkaWFucwoKZnVuY3Rpb24gcmFkKGRlZ3JlZXMpIHsKICAKICByZXR1cm4gZGVncmVlcy8xODAqUEk7Cgp9CgovLyBDb252ZXJ0cyBhbiBhbmdsZSBmcm9tIHJhZGlhbnMgdG8gZGVncmVlcwoKZnVuY3Rpb24gZGVnKHJhZGlhbnMpIHsKICAKICByZXR1cm4gcmFkaWFucy9QSSoxODA7Cgp9CgovLyBHZXRzIGEgMkQgcG9pbnQKCmZ1bmN0aW9uIHBvaW50MkQoeCwgeSkgewogIAogIHJldHVybiB7eDogeCwgeTogeX07Cgp9CgovLyBXZWJraXQgNTM0LjMgb24gQW5kcm9pZCB3cm9uZ2x5IHJlcGFpbnRzIGVsZW1lbnRzIHRoYXQgdXNlIG92ZXJmbG93OmhpZGRlbiArIHJvdGF0aW9uCgpmdW5jdGlvbiByb3RhdGlvbkF2YWlsYWJsZSgpIHsKICB2YXIgcGFydHM7CgogIGlmICgocGFydHMgPSAvQXBwbGVXZWJraXRcLyhbMC05XC5dKykvaS5leGVjKG5hdmlnYXRvci51c2VyQWdlbnQpKSkgewogICAgdmFyIHdlYmtpdFZlcnNpb24gPSBwYXJzZUZsb2F0KHBhcnRzWzFdKTsKICAgIHJldHVybiAod2Via2l0VmVyc2lvbj41MzQuMyk7CiAgfSBlbHNlIHsKICAgIHJldHVybiB0cnVlOwogIH0KfQoKLy8gUmV0dXJucyB0aGUgdHJhc2xhdGUgdmFsdWUKCmZ1bmN0aW9uIHRyYW5zbGF0ZSh4LCB5LCB1c2UzZCkgewogIAogIHJldHVybiAoaGFzM2QgJiYgdXNlM2QpID8gJyB0cmFuc2xhdGUzZCgnICsgeCArICdweCwnICsgeSArICdweCwgMHB4KSAnCiAgOiAnIHRyYW5zbGF0ZSgnICsgeCArICdweCwgJyArIHkgKyAncHgpICc7Cgp9CgovLyBSZXR1cm5zIHRoZSByb3RhdGlvbiB2YWx1ZQoKZnVuY3Rpb24gcm90YXRlKGRlZ3JlZXMpIHsKICAKICByZXR1cm4gJyByb3RhdGUoJyArIGRlZ3JlZXMgKyAnZGVnKSAnOwoKfQoKLy8gQ2hlY2tzIGlmIGEgcHJvcGVydHkgYmVsb25ncyB0byBhbiBvYmplY3QKCmZ1bmN0aW9uIGhhcyhwcm9wZXJ0eSwgb2JqZWN0KSB7CiAgCiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsKCn0KCi8vIEdldHMgdGhlIENTUzMgdmVuZG9yIHByZWZpeAoKZnVuY3Rpb24gZ2V0UHJlZml4KCkgewoKICB2YXIgdmVuZG9yUHJlZml4ZXMgPSBbJ01veicsJ1dlYmtpdCcsJ0todG1sJywnTycsJ21zJ10sCiAgbGVuID0gdmVuZG9yUHJlZml4ZXMubGVuZ3RoLAogIHZlbmRvciA9ICcnOwoKICB3aGlsZSAobGVuLS0pCiAgICBpZiAoKHZlbmRvclByZWZpeGVzW2xlbl0gKyAnVHJhbnNmb3JtJykgaW4gZG9jdW1lbnQuYm9keS5zdHlsZSkKICAgICAgdmVuZG9yPSctJyt2ZW5kb3JQcmVmaXhlc1tsZW5dLnRvTG93ZXJDYXNlKCkrJy0nOwoKICByZXR1cm4gdmVuZG9yOwoKfQoKLy8gRGV0ZWN0cyB0aGUgdHJhbnNpdGlvbkVuZCBFdmVudAoKZnVuY3Rpb24gZ2V0VHJhbnNpdGlvbkVuZCgpIHsKCiAgdmFyIHQsCiAgICBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Zha2VlbGVtZW50JyksCiAgICB0cmFuc2l0aW9ucyA9IHsKICAgICAgJ3RyYW5zaXRpb24nOid0cmFuc2l0aW9uZW5kJywKICAgICAgJ09UcmFuc2l0aW9uJzonb1RyYW5zaXRpb25FbmQnLAogICAgICAnTVNUcmFuc2l0aW9uJzondHJhbnNpdGlvbmVuZCcsCiAgICAgICdNb3pUcmFuc2l0aW9uJzondHJhbnNpdGlvbmVuZCcsCiAgICAgICdXZWJraXRUcmFuc2l0aW9uJzond2Via2l0VHJhbnNpdGlvbkVuZCcKICAgIH07CgogIGZvciAodCBpbiB0cmFuc2l0aW9ucykgewogICAgaWYgKGVsLnN0eWxlW3RdICE9PSB1bmRlZmluZWQpIHsKICAgICAgcmV0dXJuIHRyYW5zaXRpb25zW3RdOwogICAgfQogIH0KfQoKLy8gR3JhZGllbnRzCgpmdW5jdGlvbiBncmFkaWVudChvYmosIHAwLCBwMSwgY29sb3JzLCBudW1Db2xvcnMpIHsKCiAgdmFyIGosIGNvbHMgPSBbXTsKCiAgaWYgKHZlbmRvcj09Jy13ZWJraXQtJykgewoKICAgIGZvciAoaiA9IDA7IGo8bnVtQ29sb3JzOyBqKyspCiAgICAgIGNvbHMucHVzaCgnY29sb3Itc3RvcCgnK2NvbG9yc1tqXVswXSsnLCAnK2NvbG9yc1tqXVsxXSsnKScpOwogICAgCiAgICBvYmouY3NzKHsnYmFja2dyb3VuZC1pbWFnZSc6CiAgICAgICAgJy13ZWJraXQtZ3JhZGllbnQobGluZWFyLCAnKwogICAgICAgIHAwLngrJyUgJysKICAgICAgICBwMC55KyclLCcrCiAgICAgICAgcDEueCsnJSAnKwogICAgICAgIHAxLnkrJyUsICcrCiAgICAgICAgY29scy5qb2luKCcsJykgKyAnICknfSk7CiAgfSBlbHNlIHsKICAgIAogICAgcDAgPSB7eDpwMC54LzEwMCAqIG9iai53aWR0aCgpLCB5OnAwLnkvMTAwICogb2JqLmhlaWdodCgpfTsKICAgIHAxID0ge3g6cDEueC8xMDAgKiBvYmoud2lkdGgoKSwgeTpwMS55LzEwMCAqIG9iai5oZWlnaHQoKX07CgogICAgdmFyIGR4ID0gcDEueC1wMC54LAogICAgICBkeSA9IHAxLnktcDAueSwKICAgICAgYW5nbGUgPSBNYXRoLmF0YW4yKGR5LCBkeCksCiAgICAgIGFuZ2xlMiA9IGFuZ2xlIC0gTWF0aC5QSS8yLAogICAgICBkaWFnb25hbCA9IE1hdGguYWJzKG9iai53aWR0aCgpKk1hdGguc2luKGFuZ2xlMikpK01hdGguYWJzKG9iai5oZWlnaHQoKSpNYXRoLmNvcyhhbmdsZTIpKSwKICAgICAgZ3JhZGllbnREaWFnb25hbCA9IE1hdGguc3FydChkeSpkeSArIGR4KmR4KSwKICAgICAgY29ybmVyID0gcG9pbnQyRCgocDEueDxwMC54KSA/IG9iai53aWR0aCgpIDogMCwgKHAxLnk8cDAueSkgPyBvYmouaGVpZ2h0KCkgOiAwKSwKICAgICAgc2xvcGUgPSBNYXRoLnRhbihhbmdsZSksCiAgICAgIGludmVyc2UgPSAtMS9zbG9wZSwKICAgICAgeCA9IChpbnZlcnNlKmNvcm5lci54IC0gY29ybmVyLnkgLSBzbG9wZSpwMC54ICsgcDAueSkvKGludmVyc2Utc2xvcGUpLAogICAgICBjID0ge3g6IHgsIHk6IGludmVyc2UqeCAtIGludmVyc2UqY29ybmVyLnggKyBjb3JuZXIueX0sCiAgICAgIHNlZ0EgPSAoTWF0aC5zcXJ0KCBNYXRoLnBvdyhjLngtcDAueCwyKSArIE1hdGgucG93KGMueS1wMC55LDIpKSk7CgogICAgICBmb3IgKGogPSAwOyBqPG51bUNvbG9yczsgaisrKQogICAgICAgIGNvbHMucHVzaCgnICcrY29sb3JzW2pdWzFdKycgJysoKHNlZ0EgKyBncmFkaWVudERpYWdvbmFsKmNvbG9yc1tqXVswXSkqMTAwL2RpYWdvbmFsKSsnJScpOwoKICAgICAgb2JqLmNzcyh7J2JhY2tncm91bmQtaW1hZ2UnOiB2ZW5kb3IrJ2xpbmVhci1ncmFkaWVudCgnICsgKC1hbmdsZSkgKyAncmFkLCcgKyBjb2xzLmpvaW4oJywnKSArICcpJ30pOwogIH0KfQoKCi8vIFRyaWdnZXJzIGFuIGV2ZW50CgpmdW5jdGlvbiB0cmlnZ2VyKGV2ZW50TmFtZSwgY29udGV4dCwgYXJncykgewoKICB2YXIgZXZlbnQgPSAkLkV2ZW50KGV2ZW50TmFtZSk7CiAgY29udGV4dC50cmlnZ2VyKGV2ZW50LCBhcmdzKTsKICBpZiAoZXZlbnQuaXNEZWZhdWx0UHJldmVudGVkKCkpCiAgICByZXR1cm4gJ3ByZXZlbnRlZCc7CiAgZWxzZSBpZiAoZXZlbnQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSkKICAgIHJldHVybiAnc3RvcHBlZCc7CiAgZWxzZQogICAgcmV0dXJuICcnOwp9CgovLyBKUyBFcnJvcnMKCmZ1bmN0aW9uIHR1cm5FcnJvcihtZXNzYWdlKSB7CgogIGZ1bmN0aW9uIFR1cm5Kc0Vycm9yKG1lc3NhZ2UpIHsKICAgIHRoaXMubmFtZSA9ICJUdXJuSnNFcnJvciI7CiAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlOwogIH0KCiAgVHVybkpzRXJyb3IucHJvdG90eXBlID0gbmV3IEVycm9yKCk7CiAgVHVybkpzRXJyb3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gVHVybkpzRXJyb3I7CiAgcmV0dXJuIG5ldyBUdXJuSnNFcnJvcihtZXNzYWdlKTsKCn0KCi8vIEZpbmQgdGhlIG9mZnNldCBvZiBhbiBlbGVtZW50IGlnbm9yaW5nIGl0cyB0cmFuc2Zvcm1hdGlvbgoKZnVuY3Rpb24gZmluZFBvcyhvYmopIHsKCiAgdmFyIG9mZnNldCA9IHt0b3A6IDAsIGxlZnQ6IDB9OwoKICBkb3sKICAgIG9mZnNldC5sZWZ0ICs9IG9iai5vZmZzZXRMZWZ0OwogICAgb2Zmc2V0LnRvcCArPSBvYmoub2Zmc2V0VG9wOwogIH0gd2hpbGUgKChvYmogPSBvYmoub2Zmc2V0UGFyZW50KSk7CgogIHJldHVybiBvZmZzZXQ7Cgp9CgovLyBDaGVja3MgaWYgdGhlcmUncyBoYXJkIHBhZ2UgY29tcGF0aWJpbGl0eQovLyBJRTkgaXMgdGhlIG9ubHkgYnJvd3NlciB0aGF0IGRvZXMgbm90IHN1cHBvcnQgaGFyZCBwYWdlcwoKZnVuY3Rpb24gaGFzSGFyZFBhZ2UoKSB7CiAgcmV0dXJuIChuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ01TSUUgOS4wJyk9PS0xKTsKfQoKLy8gUmVxdWVzdCBhbiBhbmltYXRpb24KCndpbmRvdy5yZXF1ZXN0QW5pbSA9IChmdW5jdGlvbigpIHsKICByZXR1cm4gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSB8fAogICAgd2luZG93LndlYmtpdFJlcXVlc3RBbmltYXRpb25GcmFtZSB8fAogICAgd2luZG93Lm1velJlcXVlc3RBbmltYXRpb25GcmFtZSB8fAogICAgd2luZG93Lm9SZXF1ZXN0QW5pbWF0aW9uRnJhbWUgfHwKICAgIHdpbmRvdy5tc1JlcXVlc3RBbmltYXRpb25GcmFtZSB8fAogICAgZnVuY3Rpb24oY2FsbGJhY2spIHsKICAgICAgd2luZG93LnNldFRpbWVvdXQoY2FsbGJhY2ssIDEwMDAgLyA2MCk7CiAgICB9OwoKfSkoKTsKCi8vIEV4dGVuZCAkLmZuCgokLmV4dGVuZCgkLmZuLCB7CgogIGZsaXA6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIGRlYygkKHRoaXNbMF0pLCBmbGlwTWV0aG9kcywgYXJndW1lbnRzKTsKICB9LAoKICB0dXJuOiBmdW5jdGlvbigpIHsKICAgIHJldHVybiBkZWMoJCh0aGlzWzBdKSwgdHVybk1ldGhvZHMsIGFyZ3VtZW50cyk7CiAgfSwKCiAgdHJhbnNmb3JtOiBmdW5jdGlvbih0cmFuc2Zvcm0sIG9yaWdpbikgewoKICAgIHZhciBwcm9wZXJ0aWVzID0ge307CiAgICAKICAgIGlmIChvcmlnaW4pCiAgICAgIHByb3BlcnRpZXNbdmVuZG9yKyd0cmFuc2Zvcm0tb3JpZ2luJ10gPSBvcmlnaW47CiAgICAKICAgIHByb3BlcnRpZXNbdmVuZG9yKyd0cmFuc2Zvcm0nXSA9IHRyYW5zZm9ybTsKICAKICAgIHJldHVybiB0aGlzLmNzcyhwcm9wZXJ0aWVzKTsKCiAgfSwKCiAgYW5pbWF0ZWY6IGZ1bmN0aW9uKHBvaW50KSB7CgogICAgdmFyIGRhdGEgPSB0aGlzLmRhdGEoKTsKCiAgICBpZiAoZGF0YS5lZmZlY3QpCiAgICAgIGRhdGEuZWZmZWN0LnN0b3AoKTsKCiAgICBpZiAocG9pbnQpIHsKCiAgICAgIGlmICghcG9pbnQudG8ubGVuZ3RoKSBwb2ludC50byA9IFtwb2ludC50b107CiAgICAgIGlmICghcG9pbnQuZnJvbS5sZW5ndGgpIHBvaW50LmZyb20gPSBbcG9pbnQuZnJvbV07CgogICAgICB2YXIgZGlmZiA9IFtdLAogICAgICAgIGxlbiA9IHBvaW50LnRvLmxlbmd0aCwKICAgICAgICBhbmltYXRpbmcgPSB0cnVlLAogICAgICAgIHRoYXQgPSB0aGlzLAogICAgICAgIHRpbWUgPSAobmV3IERhdGUoKSkuZ2V0VGltZSgpLAogICAgICAgIGZyYW1lID0gZnVuY3Rpb24oKSB7CgogICAgICAgICAgaWYgKCFkYXRhLmVmZmVjdCB8fCAhYW5pbWF0aW5nKQogICAgICAgICAgICByZXR1cm47CgogICAgICAgICAgdmFyIHYgPSBbXSwKICAgICAgICAgICAgdGltZURpZmYgPSBNYXRoLm1pbihwb2ludC5kdXJhdGlvbiwgKG5ldyBEYXRlKCkpLmdldFRpbWUoKSAtIHRpbWUpOwoKICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspCiAgICAgICAgICAgIHYucHVzaChkYXRhLmVmZmVjdC5lYXNpbmcoMSwgdGltZURpZmYsIHBvaW50LmZyb21baV0sIGRpZmZbaV0sIHBvaW50LmR1cmF0aW9uKSk7CgogICAgICAgICAgcG9pbnQuZnJhbWUoKGxlbj09MSkgPyB2WzBdIDogdik7CgogICAgICAgICAgaWYgKHRpbWVEaWZmPT1wb2ludC5kdXJhdGlvbikgewogICAgICAgICAgICBkZWxldGUgZGF0YVsnZWZmZWN0J107CiAgICAgICAgICAgIHRoYXQuZGF0YShkYXRhKTsKICAgICAgICAgICAgaWYgKHBvaW50LmNvbXBsZXRlKQogICAgICAgICAgICAgIHBvaW50LmNvbXBsZXRlKCk7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB3aW5kb3cucmVxdWVzdEFuaW0oZnJhbWUpOwogICAgICAgICAgfQogICAgICAgIH07CgogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKQogICAgICAgIGRpZmYucHVzaChwb2ludC50b1tpXSAtIHBvaW50LmZyb21baV0pOwoKICAgICAgZGF0YS5lZmZlY3QgPSAkLmV4dGVuZCh7CiAgICAgICAgc3RvcDogZnVuY3Rpb24oKSB7CiAgICAgICAgICBhbmltYXRpbmcgPSBmYWxzZTsKICAgICAgICB9LAogICAgICAgIGVhc2luZzogZnVuY3Rpb24gKHgsIHQsIGIsIGMsIGRhdGEpIHsKICAgICAgICAgIHJldHVybiBjICogTWF0aC5zcXJ0KDEgLSAodD10L2RhdGEtMSkqdCkgKyBiOwogICAgICAgIH0KICAgICAgfSwgcG9pbnQpOwoKICAgICAgdGhpcy5kYXRhKGRhdGEpOwoKICAgICAgZnJhbWUoKTsKCiAgICB9IGVsc2UgewogICAgICAKICAgICAgZGVsZXRlIGRhdGFbJ2VmZmVjdCddOwoKICAgIH0KICB9Cn0pOwoKLy8gRXhwb3J0IHNvbWUgZ2xvYmFscwoKJC5pc1RvdWNoID0gaXNUb3VjaDsKJC5tb3VzZUV2ZW50cyA9IG1vdXNlRXZlbnRzOwokLmNzc1ByZWZpeCA9IGdldFByZWZpeDsKJC5jc3NUcmFuc2l0aW9uRW5kID0gZ2V0VHJhbnNpdGlvbkVuZDsKJC5maW5kUG9zID0gZmluZFBvczsKCn0pKGpRdWVyeSk7Cg=='],
//	nope: ['../../lib/turn.html4.min.js'],
//	both: ['../../lib/zoom.min.js', 'js/magazine.js', 'css/magazine.css'],
//	both: ['../../lib/zoom.min.js', 'css/magazine.css'],
//	both: ['css/magazine.css'],
//	both: [''],
	both: ['data:/text/plain;base64,LyoqCiAqIHR1cm4uanMgNHRoIHJlbGVhc2UKICogdHVybmpzLmNvbQogKiB0dXJuanMuY29tL2xpY2Vuc2UudHh0CiAqCiAqIENvcHlyaWdodCAoQykgMjAxMiBFbW1hbnVlbCBHYXJjaWEKICogQWxsIHJpZ2h0cyByZXNlcnZlZAogKiovCgooZnVuY3Rpb24oJCkgewoKJ3VzZSBzdHJpY3QnOwoKdmFyIGhhczNkLAogIAogIGhhc1JvdCwKCiAgdmVuZG9yID0gJycsCiAgCiAgdmVyc2lvbiA9ICc0LjEuMCcsCgogIFBJID0gTWF0aC5QSSwKCiAgQTkwID0gUEkvMiwKCiAgaXNUb3VjaCA9ICdvbnRvdWNoc3RhcnQnIGluIHdpbmRvdywKCiAgbW91c2VFdmVudHMgPSAoaXNUb3VjaCkgPwogICAgewogICAgICBkb3duOiAndG91Y2hzdGFydCcsCiAgICAgIG1vdmU6ICd0b3VjaG1vdmUnLAogICAgICB1cDogJ3RvdWNoZW5kJywKICAgICAgb3ZlcjogJ3RvdWNoc3RhcnQnLAogICAgICBvdXQ6ICd0b3VjaGVuZCcKICAgIH0KICAgIDoKICAgIHsKICAgICAgZG93bjogJ21vdXNlZG93bicsCiAgICAgIG1vdmU6ICdtb3VzZW1vdmUnLAogICAgICB1cDogJ21vdXNldXAnLAogICAgICBvdmVyOiAnbW91c2VvdmVyJywKICAgICAgb3V0OiAnbW91c2VvdXQnCiAgICB9LAoKICAvLyBDb250YW5zdHMgdXNlZCBmb3IgZWFjaCBjb3JuZXIKICAvLyAgIHwgdGwgKiB0ciB8CiAgLy8gbCB8ICogICAgICogfCByCiAgLy8gICB8IGJsICogYnIgfAoKICBjb3JuZXJzID0gewogICAgYmFja3dhcmQ6IFsnYmwnLCAndGwnXSwKICAgIGZvcndhcmQ6IFsnYnInLCAndHInXSwKICAgIGFsbDogWyd0bCcsICdibCcsICd0cicsICdicicsICdsJywgJ3InXQogIH0sCgogIC8vIERpc3BsYXkgdmFsdWVzCgogIGRpc3BsYXlzID0gWydzaW5nbGUnLCAnZG91YmxlJ10sCgogIC8vIERpcmVjdGlvbiB2YWx1ZXMKCiAgZGlyZWN0aW9ucyA9IFsnbHRyJywgJ3J0bCddLAoKICAvLyBEZWZhdWx0IG9wdGlvbnMKCiAgdHVybk9wdGlvbnMgPSB7CgogICAgLy8gRW5hYmxlcyBoYXJkd2FyZSBhY2NlbGVyYXRpb24KCiAgICBhY2NlbGVyYXRpb246IHRydWUsCgogICAgLy8gRGlzcGxheQoKICAgIGRpc3BsYXk6ICdkb3VibGUnLAoKICAgIC8vIER1cmF0aW9uIG9mIHRyYW5zaXRpb24gaW4gbWlsbGlzZWNvbmRzCgogICAgZHVyYXRpb246IDYwMCwKCiAgICAvLyBGaXJzdCBwYWdlCgogICAgcGFnZTogMSwKICAgIAogICAgLy8gRW5hYmxlcyBncmFkaWVudHMKCiAgICBncmFkaWVudHM6IHRydWUsCgogICAgLy8gQ29ybmVycyB1c2VkIHdoZW4gdHVybmluZyB0aGUgcGFnZQoKICAgIHR1cm5Db3JuZXJzOiAnYmwsYnInLAoKICAgIC8vIEV2ZW50cwoKICAgIHdoZW46IG51bGwKICB9LAoKICBmbGlwT3B0aW9ucyA9IHsKCiAgICAvLyBTaXplIG9mIHRoZSBhY3RpdmUgem9uZSBvZiBlYWNoIGNvcm5lcgoKICAgIGNvcm5lclNpemU6IDEwMAoKICB9LAoKICAvLyBOdW1iZXIgb2YgcGFnZXMgaW4gdGhlIERPTSwgbWluaW11bSB2YWx1ZTogNgoKICBwYWdlc0luRE9NID0gNiwKICAKCnR1cm5NZXRob2RzID0gewoKICAvLyBTaW5nbGV0b24gY29uc3RydWN0b3IKICAvLyAkKCcjc2VsZWN0b3InKS50dXJuKFtvcHRpb25zXSk7CgogIGluaXQ6IGZ1bmN0aW9uKG9wdGlvbnMpIHsKCiAgICAvLyBEZWZpbmUgY29uc3RhbnRzCiAgICAKICAgIGhhczNkID0gJ1dlYktpdENTU01hdHJpeCcgaW4gd2luZG93IHx8ICdNb3pQZXJzcGVjdGl2ZScgaW4gZG9jdW1lbnQuYm9keS5zdHlsZTsKICAgIGhhc1JvdCA9IHJvdGF0aW9uQXZhaWxhYmxlKCk7CiAgICB2ZW5kb3IgPSBnZXRQcmVmaXgoKTsKCiAgICB2YXIgaSwgdGhhdCA9IHRoaXMsIHBhZ2VOdW0gPSAwLCBkYXRhID0gdGhpcy5kYXRhKCksIGNoID0gdGhpcy5jaGlsZHJlbigpOwoKICAgIC8vIFNldCBpbml0aWFsIGNvbmZpZ3VyYXRpb24KCiAgICBvcHRpb25zID0gJC5leHRlbmQoewogICAgICB3aWR0aDogdGhpcy53aWR0aCgpLAogICAgICBoZWlnaHQ6IHRoaXMuaGVpZ2h0KCksCiAgICAgIGRpcmVjdGlvbjogdGhpcy5hdHRyKCdkaXInKSB8fCB0aGlzLmNzcygnZGlyZWN0aW9uJykgfHwgJ2x0cicKICAgIH0sIHR1cm5PcHRpb25zLCBvcHRpb25zKTsKCiAgICBkYXRhLm9wdHMgPSBvcHRpb25zOwogICAgZGF0YS5wYWdlT2JqcyA9IHt9OwogICAgZGF0YS5wYWdlcyA9IHt9OwogICAgZGF0YS5wYWdlV3JhcCA9IHt9OwogICAgZGF0YS5wYWdlWm9vbSA9IHt9OwogICAgZGF0YS5wYWdlUGxhY2UgPSB7fTsKICAgIGRhdGEucGFnZU12ID0gW107CiAgICBkYXRhLnpvb20gPSAxOwogICAgZGF0YS50b3RhbFBhZ2VzID0gb3B0aW9ucy5wYWdlcyB8fCAwOwogICAgZGF0YS5ldmVudEhhbmRsZXJzID0gewogICAgICB0b3VjaFN0YXJ0OiAkLnByb3h5KHR1cm5NZXRob2RzLl90b3VjaFN0YXJ0LCB0aGlzKSwKICAgICAgdG91Y2hNb3ZlOiAkLnByb3h5KHR1cm5NZXRob2RzLl90b3VjaE1vdmUsIHRoaXMpLAogICAgICB0b3VjaEVuZDogJC5wcm94eSh0dXJuTWV0aG9kcy5fdG91Y2hFbmQsIHRoaXMpLAogICAgICBzdGFydDogJC5wcm94eSh0dXJuTWV0aG9kcy5fZXZlbnRTdGFydCwgdGhpcykKICAgIH07CgoKCiAgICAvLyBBZGQgZXZlbnQgbGlzdGVuZXJzCgogICAgaWYgKG9wdGlvbnMud2hlbikKICAgICAgZm9yIChpIGluIG9wdGlvbnMud2hlbikKICAgICAgICBpZiAoaGFzKGksIG9wdGlvbnMud2hlbikpCiAgICAgICAgICB0aGlzLmJpbmQoaSwgb3B0aW9ucy53aGVuW2ldKTsKCiAgICAvLyBTZXQgdGhlIGNzcwoKICAgIHRoaXMuY3NzKHtwb3NpdGlvbjogJ3JlbGF0aXZlJywgd2lkdGg6IG9wdGlvbnMud2lkdGgsIGhlaWdodDogb3B0aW9ucy5oZWlnaHR9KTsKCiAgICAvLyBTZXQgdGhlIGluaXRpYWwgZGlzcGxheQoKICAgIHRoaXMudHVybignZGlzcGxheScsIG9wdGlvbnMuZGlzcGxheSk7CgogICAgLy8gU2V0IHRoZSBkaXJlY3Rpb24KCiAgICBpZiAob3B0aW9ucy5kaXJlY3Rpb24hPT0nJykKICAgICAgdGhpcy50dXJuKCdkaXJlY3Rpb24nLCBvcHRpb25zLmRpcmVjdGlvbik7CiAgICAKICAgIC8vIFByZXZlbnQgYmx1ZSBzY3JlZW4gcHJvYmxlbXMgb2Ygc3dpdGNoaW5nIHRvIGhhcmR3YXJlIGFjY2VsZXJhdGlvbiBtb2RlCiAgICAvLyBCeSBmb3JjaW5nIGhhcmR3YXJlIGFjY2VsZXJhdGlvbiBmb3IgZXZlcgoKICAgIGlmIChoYXMzZCAmJiAhaXNUb3VjaCAmJiBvcHRpb25zLmFjY2VsZXJhdGlvbikKICAgICAgdGhpcy50cmFuc2Zvcm0odHJhbnNsYXRlKDAsIDAsIHRydWUpKTsKCiAgICAvLyBBZGQgcGFnZXMgZnJvbSB0aGUgRE9NCgogICAgZm9yIChpID0gMDsgaTxjaC5sZW5ndGg7IGkrKykgewogICAgICBpZiAoJChjaFtpXSkuYXR0cignaWdub3JlJykhPScxJykgewogICAgICAgIHRoaXMudHVybignYWRkUGFnZScsIGNoW2ldLCArK3BhZ2VOdW0pOwogICAgICB9CiAgICB9CgogICAgLy8gRXZlbnQgbGlzdGVuZXJzCgogICAgJCh0aGlzKS5iaW5kKG1vdXNlRXZlbnRzLmRvd24sIGRhdGEuZXZlbnRIYW5kbGVycy50b3VjaFN0YXJ0KS4KICAgICAgYmluZCgnZW5kJywgdHVybk1ldGhvZHMuX2V2ZW50RW5kKS4KICAgICAgYmluZCgncHJlc3NlZCcsIHR1cm5NZXRob2RzLl9ldmVudFByZXNzZWQpLgogICAgICBiaW5kKCdyZWxlYXNlZCcsIHR1cm5NZXRob2RzLl9ldmVudFJlbGVhc2VkKS4KICAgICAgYmluZCgnZmxpcCcsIHR1cm5NZXRob2RzLl9mbGlwKTsKCiAgICAkKHRoaXMpLnBhcmVudCgpLmJpbmQoJ3N0YXJ0JywgZGF0YS5ldmVudEhhbmRsZXJzLnN0YXJ0KTsKCiAgICAkKGRvY3VtZW50KS5iaW5kKG1vdXNlRXZlbnRzLm1vdmUsIGRhdGEuZXZlbnRIYW5kbGVycy50b3VjaE1vdmUpLgogICAgICBiaW5kKG1vdXNlRXZlbnRzLnVwLCBkYXRhLmV2ZW50SGFuZGxlcnMudG91Y2hFbmQpOwoKICAgIC8vIFNldCB0aGUgaW5pdGlhbCBwYWdlCgogICAgdGhpcy50dXJuKCdwYWdlJywgb3B0aW9ucy5wYWdlKTsKCiAgICAvLyBUaGlzIGZsaXBib29rIGlzIHJlYWR5CgogICAgZGF0YS5kb25lID0gdHJ1ZTsKCiAgICByZXR1cm4gdGhpczsKICB9LAoKICAvLyBBZGRzIGEgcGFnZSBmcm9tIGV4dGVybmFsIGRhdGEKCiAgYWRkUGFnZTogZnVuY3Rpb24oZWxlbWVudCwgcGFnZSkgewoKICAgIHZhciBjdXJyZW50UGFnZSwKICAgICAgY2xhc3NOYW1lLAogICAgICBpbmNQYWdlcyA9IGZhbHNlLAogICAgICBkYXRhID0gdGhpcy5kYXRhKCksCiAgICAgIGxhc3RQYWdlID0gZGF0YS50b3RhbFBhZ2VzKzE7CgogICAgaWYgKGRhdGEuZGVzdHJveWluZykKICAgICAgcmV0dXJuIGZhbHNlOwoKICAgIC8vIFJlYWQgdGhlIHBhZ2UgbnVtYmVyIGZyb20gdGhlIGNsYXNzTmFtZSBvZiBgZWxlbWVudGAgLSBmb3JtYXQ6IHBbMC05XSsKCiAgICBpZiAoKGN1cnJlbnRQYWdlID0gL1xicChbMC05XSspXGIvLmV4ZWMoJChlbGVtZW50KS5hdHRyKCdjbGFzcycpKSkpCiAgICAgIHBhZ2UgPSBwYXJzZUludChjdXJyZW50UGFnZVsxXSwgMTApOwoKICAgIGlmIChwYWdlKSB7CiAgICAgIAogICAgICBpZiAocGFnZT09bGFzdFBhZ2UpCiAgICAgICAgaW5jUGFnZXMgPSB0cnVlOwogICAgICBlbHNlIGlmIChwYWdlPmxhc3RQYWdlKQogICAgICAgIHRocm93IHR1cm5FcnJvcignUGFnZSAiJytwYWdlKyciIGNhbm5vdCBiZSBpbnNlcnRlZCcpOwoKICAgIH0gZWxzZSB7CiAgICAgIAogICAgICBwYWdlID0gbGFzdFBhZ2U7CiAgICAgIGluY1BhZ2VzID0gdHJ1ZTsKCiAgICB9CgogICAgaWYgKHBhZ2U+PTEgJiYgcGFnZTw9bGFzdFBhZ2UpIHsKCiAgICAgIGlmIChkYXRhLmRpc3BsYXk9PSdkb3VibGUnKQogICAgICAgIGNsYXNzTmFtZSA9IChwYWdlJTIpID8gJyBvZGQnIDogJyBldmVuJzsKICAgICAgZWxzZQogICAgICAgIGNsYXNzTmFtZSA9ICcnOwoKICAgICAgLy8gU3RvcCBhbmltYXRpb25zCiAgICAgIGlmIChkYXRhLmRvbmUpCiAgICAgICAgdGhpcy50dXJuKCdzdG9wJyk7CgogICAgICAvLyBNb3ZlIHBhZ2VzIGlmIGl0J3MgbmVjZXNzYXJ5CiAgICAgIGlmIChwYWdlIGluIGRhdGEucGFnZU9ianMpCiAgICAgICAgdHVybk1ldGhvZHMuX21vdmVQYWdlcy5jYWxsKHRoaXMsIHBhZ2UsIDEpOwoKICAgICAgLy8gSW5jcmVhc2UgdGhlIG51bWJlciBvZiBwYWdlcwogICAgICBpZiAoaW5jUGFnZXMpCiAgICAgICAgZGF0YS50b3RhbFBhZ2VzID0gbGFzdFBhZ2U7CgogICAgICAvLyBBZGQgZWxlbWVudAogICAgICBkYXRhLnBhZ2VPYmpzW3BhZ2VdID0gJChlbGVtZW50KS4KICAgICAgICBjc3MoeydmbG9hdCc6ICdsZWZ0J30pLgogICAgICAgIGFkZENsYXNzKCdwYWdlIHAnICsgcGFnZSArIGNsYXNzTmFtZSk7CgogICAgICBpZiAoIWhhc0hhcmRQYWdlKCkgJiYgIGRhdGEucGFnZU9ianNbcGFnZV0uaGFzQ2xhc3MoJ2hhcmQnKSkgewogICAgICAgIGRhdGEucGFnZU9ianNbcGFnZV0ucmVtb3ZlQ2xhc3MoJ2hhcmQnKTsKICAgICAgfQoKICAgICAgLy8gQWRkIHBhZ2UKICAgICAgdHVybk1ldGhvZHMuX2FkZFBhZ2UuY2FsbCh0aGlzLCBwYWdlKTsKCiAgICAgIC8vIFJlbW92ZSBwYWdlcyBvdXQgb2YgcmFuZ2UKICAgICAgdHVybk1ldGhvZHMuX3JlbW92ZUZyb21ET00uY2FsbCh0aGlzKTsKICAgIH0KCiAgICByZXR1cm4gdGhpczsKICB9LAoKICAvLyBBZGRzIGEgcGFnZQoKICBfYWRkUGFnZTogZnVuY3Rpb24ocGFnZSkgewogICAgCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLAogICAgICBlbGVtZW50ID0gZGF0YS5wYWdlT2Jqc1twYWdlXTsKCiAgICBpZiAoZWxlbWVudCkKICAgICAgaWYgKHR1cm5NZXRob2RzLl9uZWNlc3NQYWdlLmNhbGwodGhpcywgcGFnZSkpIHsKCiAgICAgICAgaWYgKCFkYXRhLnBhZ2VXcmFwW3BhZ2VdKSB7CgogICAgICAgICAgLy8gV3JhcHBlcgogICAgICAgICAgZGF0YS5wYWdlV3JhcFtwYWdlXSA9ICQoJzxkaXYvPicsCiAgICAgICAgICAgIHsnY2xhc3MnOiAncGFnZS13cmFwcGVyJywKICAgICAgICAgICAgICBwYWdlOiBwYWdlLAogICAgICAgICAgICAgIGNzczoge3Bvc2l0aW9uOiAnYWJzb2x1dGUnLAogICAgICAgICAgICAgIG92ZXJmbG93OiAnaGlkZGVuJ319KTsKCiAgICAgICAgICAvLyBBcHBlbmQgdG8gdGhpcyBmbGlwYm9vawogICAgICAgICAgdGhpcy5hcHBlbmQoZGF0YS5wYWdlV3JhcFtwYWdlXSk7CgogICAgICAgICAgaWYgKCFkYXRhLnBhZ2VQbGFjZVtwYWdlXSkgewogICAgICAgICAgICAKICAgICAgICAgICAgZGF0YS5wYWdlUGxhY2VbcGFnZV0gPSBwYWdlOwogICAgICAgICAgICAvLyBNb3ZlIGBwYWdlT2Jqc1twYWdlXWAgdG8gd3JhcHBlcgogICAgICAgICAgICBkYXRhLnBhZ2VPYmpzW3BhZ2VdLmFwcGVuZFRvKGRhdGEucGFnZVdyYXBbcGFnZV0pOwogICAgICAgICAgCiAgICAgICAgIH0KCiAgICAgICAgICAvLyBTZXQgdGhlIHNpemUgb2YgdGhlIHBhZ2UKICAgICAgICAgIHZhciBwcm9wID0gdHVybk1ldGhvZHMuX3BhZ2VTaXplLmNhbGwodGhpcywgcGFnZSwgdHJ1ZSk7CiAgICAgICAgICBlbGVtZW50LmNzcyh7d2lkdGg6IHByb3Aud2lkdGgsIGhlaWdodDogcHJvcC5oZWlnaHR9KTsKICAgICAgICAgIGRhdGEucGFnZVdyYXBbcGFnZV0uY3NzKHByb3ApOwoKICAgICAgICB9CgogICAgICAgIGlmIChkYXRhLnBhZ2VQbGFjZVtwYWdlXSA9PSBwYWdlKSB7CgogICAgICAgICAvLyBJZiB0aGUgcGFnZSBpc24ndCBpbiBhbm90aGVyIHBsYWNlLCBjcmVhdGUgdGhlIGZsaXAgZWZmZWN0CiAgICAgICAgICB0dXJuTWV0aG9kcy5fbWFrZUZsaXAuY2FsbCh0aGlzLCBwYWdlKTsKCiAgICAgIH0KICAgICAgICAKICAgICAgfSBlbHNlIHsKCiAgICAgICAgLy8gUGxhY2UKICAgICAgICBkYXRhLnBhZ2VQbGFjZVtwYWdlXSA9IDA7CgogICAgICAgIC8vIFJlbW92ZSBlbGVtZW50IGZyb20gdGhlIERPTQogICAgICAgIGlmIChkYXRhLnBhZ2VPYmpzW3BhZ2VdKQogICAgICAgICAgZGF0YS5wYWdlT2Jqc1twYWdlXS5yZW1vdmUoKTsKCiAgICAgIH0KCiAgfSwKCiAgLy8gQ2hlY2tzIGlmIGEgcGFnZSBpcyBpbiBtZW1vcnkKICAKICBoYXNQYWdlOiBmdW5jdGlvbihwYWdlKSB7CgogICAgcmV0dXJuIGhhcyhwYWdlLCB0aGlzLmRhdGEoKS5wYWdlT2Jqcyk7CiAgCiAgfSwKCiAgLy8gQ2VudGVycyB0aGUgZmxpcGJvb2sKCiAgY2VudGVyOiBmdW5jdGlvbihwYWdlKSB7CiAgICAKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCksCiAgICAgIHNpemUgPSAkKHRoaXMpLnR1cm4oJ3NpemUnKSwKICAgICAgbGVmdCA9IDA7CgogICAgaWYgKCFkYXRhLm5vQ2VudGVyKSB7CiAgICAgIGlmIChkYXRhLmRpc3BsYXk9PSdkb3VibGUnKSB7CiAgICAgICAgdmFyIHZpZXcgPSB0aGlzLnR1cm4oJ3ZpZXcnLCBwYWdlIHx8IGRhdGEudHBhZ2UgfHwgZGF0YS5wYWdlKTsKCiAgICAgICAgaWYgKGRhdGEuZGlyZWN0aW9uPT0nbHRyJykgewogICAgICAgICAgaWYgKCF2aWV3WzBdKQogICAgICAgICAgICBsZWZ0IC09IHNpemUud2lkdGgvNDsKICAgICAgICAgIGVsc2UgaWYgKCF2aWV3WzFdKQogICAgICAgICAgICBsZWZ0ICs9IHNpemUud2lkdGgvNDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgaWYgKCF2aWV3WzBdKQogICAgICAgICAgICBsZWZ0ICs9IHNpemUud2lkdGgvNDsKICAgICAgICAgIGVsc2UgaWYgKCF2aWV3WzFdKQogICAgICAgICAgICBsZWZ0IC09IHNpemUud2lkdGgvNDsKICAgICAgICB9CiAgICAgIAogICAgICB9CgogICAgICAkKHRoaXMpLmNzcyh7bWFyZ2luTGVmdDogbGVmdH0pOwogICAgfQoKICAgIHJldHVybiB0aGlzOwoKICB9LAoKICAvLyBEZXN0cm95cyB0aGUgZmxpcGJvb2sKCiAgZGVzdHJveTogZnVuY3Rpb24gKCkgewoKICAgIHZhciBwYWdlLAogICAgICBmbGlwYm9vayA9IHRoaXMsCiAgICAgIGRhdGEgPSB0aGlzLmRhdGEoKSwKICAgICAgZXZlbnRzID0gWwogICAgICAgICdlbmQnLCAnZmlyc3QnLCAnZmxpcCcsICdsYXN0JywgJ3ByZXNzZWQnLAogICAgICAgICdyZWxlYXNlZCcsICdzdGFydCcsICd0dXJuaW5nJywgJ3R1cm5lZCcsCiAgICAgICAgJ3pvb21pbmcnLCAnbWlzc2luZyddOwoKICAgIGlmICh0cmlnZ2VyKCdkZXN0cm95aW5nJywgdGhpcyk9PSdwcmV2ZW50ZWQnKQogICAgICByZXR1cm47CgogICAgZGF0YS5kZXN0cm95aW5nID0gdHJ1ZTsKCiAgICAkLmVhY2goZXZlbnRzLCBmdW5jdGlvbihpbmRleCwgZXZlbnROYW1lKSB7CiAgICAgIGZsaXBib29rLnVuYmluZChldmVudE5hbWUpOwogICAgfSk7CgogICAgdGhpcy5wYXJlbnQoKS51bmJpbmQoJ3N0YXJ0JywgZGF0YS5ldmVudEhhbmRsZXJzLnN0YXJ0KTsKCiAgICAkKGRvY3VtZW50KS51bmJpbmQobW91c2VFdmVudHMubW92ZSwgZGF0YS5ldmVudEhhbmRsZXJzLnRvdWNoTW92ZSkuCiAgICAgIHVuYmluZChtb3VzZUV2ZW50cy51cCwgZGF0YS5ldmVudEhhbmRsZXJzLnRvdWNoRW5kKTsKICAgIAogICAgd2hpbGUgKGRhdGEudG90YWxQYWdlcyE9PTApIHsKICAgICAgdGhpcy50dXJuKCdyZW1vdmVQYWdlJywgZGF0YS50b3RhbFBhZ2VzKTsKICAgIH0KCiAgICBpZiAoZGF0YS5mcGFyZW50KQogICAgICBkYXRhLmZwYXJlbnQucmVtb3ZlKCk7CgogICAgaWYgKGRhdGEuc2hhZG93KQogICAgICBkYXRhLnNoYWRvdy5yZW1vdmUoKTsKCiAgICB0aGlzLnJlbW92ZURhdGEoKTsKICAgIGRhdGEgPSBudWxsOwoKICAgIHJldHVybiB0aGlzOwoKICB9LAoKICAvLyBDaGVja3MgaWYgdGhpcyBlbGVtZW50IGlzIGEgZmxpcGJvb2sKCiAgaXM6IGZ1bmN0aW9uKCkgewoKICAgIHJldHVybiB0eXBlb2YodGhpcy5kYXRhKCkucGFnZXMpPT0nb2JqZWN0JzsKCiAgfSwKCiAgLy8gU2V0cyBhbmQgZ2V0cyB0aGUgem9vbSB2YWx1ZQoKICB6b29tOiBmdW5jdGlvbihuZXdab29tKSB7CiAgICAKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCk7CgogICAgaWYgKHR5cGVvZihuZXdab29tKT09J251bWJlcicpIHsKCiAgICAgIGlmIChuZXdab29tPDAuMDAxIHx8IG5ld1pvb20+MTAwKQogICAgICAgIHRocm93IHR1cm5FcnJvcihuZXdab29tKyAnIGlzIG5vdCBhIHZhbHVlIGZvciB6b29tJyk7CiAgICAgIAogICAgICBpZiAodHJpZ2dlcignem9vbWluZycsIHRoaXMsIFtuZXdab29tLCBkYXRhLnpvb21dKT09J3ByZXZlbnRlZCcpCiAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgIAogICAgICB2YXIgc2l6ZSA9IHRoaXMudHVybignc2l6ZScpLAogICAgICAgIGN1cnJlbnRWaWV3ID0gdGhpcy50dXJuKCd2aWV3JyksCiAgICAgICAgaXogPSAxL2RhdGEuem9vbSwKICAgICAgICBuZXdXaWR0aCA9IE1hdGgucm91bmQoc2l6ZS53aWR0aCAqIGl6ICogbmV3Wm9vbSksCiAgICAgICAgbmV3SGVpZ2h0ID0gTWF0aC5yb3VuZChzaXplLmhlaWdodCAqIGl6ICogbmV3Wm9vbSk7CiAgICAKICAgICAgZGF0YS56b29tID0gbmV3Wm9vbTsKCiAgICAgICQodGhpcykudHVybignc3RvcCcpLgogICAgICAgIHR1cm4oJ3NpemUnLCBuZXdXaWR0aCwgbmV3SGVpZ2h0KTsKICAgICAgICAvKi4KICAgICAgICBjc3Moe21hcmdpblRvcDogc2l6ZS5oZWlnaHQgKiBpeiAvIDIgLSBuZXdIZWlnaHQgLyAyfSk7Ki8KCiAgICAgIGlmIChkYXRhLm9wdHMuYXV0b0NlbnRlcikKICAgICAgICB0aGlzLnR1cm4oJ2NlbnRlcicpOwogICAgICAvKmVsc2UKICAgICAgICAkKHRoaXMpLmNzcyh7bWFyZ2luTGVmdDogc2l6ZS53aWR0aCAqIGl6IC8gMiAtIG5ld1dpZHRoIC8gMn0pOyovCgogICAgICB0dXJuTWV0aG9kcy5fdXBkYXRlU2hhZG93LmNhbGwodGhpcyk7CgogICAgICBmb3IgKHZhciBpID0gMDsgaTxjdXJyZW50Vmlldy5sZW5ndGg7IGkrKykgewogICAgICAgIGlmIChjdXJyZW50Vmlld1tpXSAmJiBkYXRhLnBhZ2Vab29tW2N1cnJlbnRWaWV3W2ldXSE9ZGF0YS56b29tKSB7CiAgCiAgICAgICAgICB0aGlzLnRyaWdnZXIoJ3pvb21lZCcsWwogICAgICAgICAgICBjdXJyZW50Vmlld1tpXSwKICAgICAgICAgICAgY3VycmVudFZpZXcsCiAgICAgICAgICAgIGRhdGEucGFnZVpvb21bY3VycmVudFZpZXdbaV1dLAogICAgICAgICAgICBkYXRhLnpvb21dKTsKCiAgICAgICAgICBkYXRhLnBhZ2Vab29tW2N1cnJlbnRWaWV3W2ldXSA9IGRhdGEuem9vbTsKICAgICAgfQogICAgfQoKICAgICAgcmV0dXJuIHRoaXM7CgogICAgfSBlbHNlCiAgICAgIHJldHVybiBkYXRhLnpvb207CgogIH0sCgogIC8vIEdldHMgdGhlIHNpemUgb2YgYSBwYWdlCgogIF9wYWdlU2l6ZTogZnVuY3Rpb24ocGFnZSwgcG9zaXRpb24pIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLAogICAgICBwcm9wID0ge307CgogICAgaWYgKGRhdGEuZGlzcGxheT09J3NpbmdsZScpIHsKCiAgICAgIHByb3Aud2lkdGggPSB0aGlzLndpZHRoKCk7CiAgICAgIHByb3AuaGVpZ2h0ID0gdGhpcy5oZWlnaHQoKTsKCiAgICAgIGlmIChwb3NpdGlvbikgewogICAgICAgIHByb3AudG9wID0gMDsKICAgICAgICBwcm9wLmxlZnQgPSAwOwogICAgICAgIHByb3AucmlnaHQgPSAnYXV0byc7CiAgICAgIH0KCiAgICB9IGVsc2UgewoKICAgICAgdmFyIHBhZ2VXaWR0aCA9IHRoaXMud2lkdGgoKS8yLAogICAgICAgIHBhZ2VIZWlnaHQgPSB0aGlzLmhlaWdodCgpOwoKICAgICAgaWYgKGRhdGEucGFnZU9ianNbcGFnZV0uaGFzQ2xhc3MoJ293bi1zaXplJykpIHsKICAgICAgICBwcm9wLndpZHRoID0gZGF0YS5wYWdlT2Jqc1twYWdlXS53aWR0aCgpOwogICAgICAgIHByb3AuaGVpZ2h0ID0gZGF0YS5wYWdlT2Jqc1twYWdlXS5oZWlnaHQoKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBwcm9wLndpZHRoID0gcGFnZVdpZHRoOwogICAgICAgIHByb3AuaGVpZ2h0ID0gcGFnZUhlaWdodDsKICAgICAgfQogICAgICAKICAgICAgaWYgKHBvc2l0aW9uKSB7CiAgICAgICAgdmFyIG9kZCA9IHBhZ2UlMjsKICAgICAgICBwcm9wLnRvcCA9IChwYWdlSGVpZ2h0LXByb3AuaGVpZ2h0KS8yOwoKICAgICAgICBpZiAoZGF0YS5kaXJlY3Rpb249PSdsdHInKSB7CiAgICAgICAgICAKICAgICAgICAgIHByb3BbKG9kZCkgPyAncmlnaHQnIDogJ2xlZnQnXSA9IHBhZ2VXaWR0aC1wcm9wLndpZHRoOwogICAgICAgICAgcHJvcFsob2RkKSA/ICdsZWZ0JyA6ICdyaWdodCddID0gJ2F1dG8nOwoKICAgICAgICB9IGVsc2UgewogICAgICAgICAgCiAgICAgICAgICBwcm9wWyhvZGQpID8gJ2xlZnQnIDogJ3JpZ2h0J10gPSBwYWdlV2lkdGgtcHJvcC53aWR0aDsKICAgICAgICAgIHByb3BbKG9kZCkgPyAncmlnaHQnIDogJ2xlZnQnXSA9ICdhdXRvJzsKCiAgICAgICAgfQogICAgICAKICAgICAgfQogICAgfQoKICAgIHJldHVybiBwcm9wOwoKICB9LAoKICAvLyBQcmVwYXJlcyB0aGUgZmxpcCBlZmZlY3QgZm9yIGEgcGFnZQoKICBfbWFrZUZsaXA6IGZ1bmN0aW9uKHBhZ2UpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpOwoKICAgIGlmICghZGF0YS5wYWdlc1twYWdlXSAmJiBkYXRhLnBhZ2VQbGFjZVtwYWdlXT09cGFnZSkgewogICAgICAKICAgICAgdmFyIHNpbmdsZSA9IGRhdGEuZGlzcGxheT09J3NpbmdsZScsCiAgICAgICAgb2RkID0gcGFnZSUyOwoKICAgICAgZGF0YS5wYWdlc1twYWdlXSA9IGRhdGEucGFnZU9ianNbcGFnZV0uCiAgICAgICAgY3NzKHR1cm5NZXRob2RzLl9wYWdlU2l6ZS5jYWxsKHRoaXMsIHBhZ2UpKS4KICAgICAgICBmbGlwKHsKICAgICAgICAgIHBhZ2U6IHBhZ2UsCiAgICAgICAgICBuZXh0OiAob2RkIHx8IHNpbmdsZSkgPyBwYWdlKzEgOiBwYWdlLTEsCiAgICAgICAgICB0dXJuOiB0aGlzCiAgICAgICAgfSkuCiAgICAgICAgZmxpcCgnZGlzYWJsZScsIGRhdGEuZGlzYWJsZWQpOwoKICAgICAgICAvLyBJc3N1ZSBhYm91dCB6LWluZGV4CiAgICAgICAgdHVybk1ldGhvZHMuX3NldFBhZ2VMb2MuY2FsbCh0aGlzLCBwYWdlKTsKCiAgICAgICAgZGF0YS5wYWdlWm9vbVtwYWdlXSA9IGRhdGEuem9vbTsKICAgICAgICAKICAgIH0KCiAgICByZXR1cm4gZGF0YS5wYWdlc1twYWdlXTsKICB9LAoKICAvLyBNYWtlcyBwYWdlcyB3aXRoaW4gYSByYW5nZQoKICBfbWFrZVJhbmdlOiBmdW5jdGlvbigpIHsKCiAgICB2YXIgcGFnZSwgcmFuZ2UsCiAgICAgIGRhdGEgPSB0aGlzLmRhdGEoKTsKCiAgICBpZiAoZGF0YS50b3RhbFBhZ2VzPDEpCiAgICAgIHJldHVybjsKCiAgICByYW5nZSA9IHRoaXMudHVybigncmFuZ2UnKTsKCiAgICBmb3IgKHBhZ2UgPSByYW5nZVswXTsgcGFnZTw9cmFuZ2VbMV07IHBhZ2UrKykKICAgICAgdHVybk1ldGhvZHMuX2FkZFBhZ2UuY2FsbCh0aGlzLCBwYWdlKTsKCiAgfSwKCiAgLy8gUmV0dXJucyBhIHJhbmdlIG9mIHBhZ2VzIHRoYXQgc2hvdWxkIGJlIGluIHRoZSBET00KICAvLyBFeGFtcGxlOgogIC8vIC0gcGFnZSBpbiB0aGUgY3VycmVudCB2aWV3LCByZXR1cm4gdHJ1ZQogIC8vICogcGFnZSBpcyBpbiB0aGUgcmFuZ2UsIHJldHVybiB0cnVlCiAgLy8gT3RoZXJ3aXNlLCByZXR1cm4gZmFsc2UKICAvLwogIC8vIDEgMi0zIDQtNSA2LTcgOC05IDEwLTExIDEyLTEzCiAgLy8gICAqKiAgKiogIC0tICAgKiogICoqCgogIHJhbmdlOiBmdW5jdGlvbihwYWdlKSB7CgogICAgdmFyIHJlbWFpbmluZ1BhZ2VzLCBsZWZ0LCByaWdodCwgdmlldywKICAgICAgZGF0YSA9IHRoaXMuZGF0YSgpOwoKICAgICAgcGFnZSA9IHBhZ2UgfHwgZGF0YS50cGFnZSB8fCBkYXRhLnBhZ2UgfHwgMTsKICAgICAgdmlldyA9IHR1cm5NZXRob2RzLl92aWV3LmNhbGwodGhpcywgcGFnZSk7CgogICAgICBpZiAocGFnZTwxIHx8IHBhZ2U+ZGF0YS50b3RhbFBhZ2VzKQogICAgICAgIHRocm93IHR1cm5FcnJvcignIicrcGFnZSsnIiBpcyBub3QgYSB2YWxpZCBwYWdlJyk7CgogICAgCiAgICAgIHZpZXdbMV0gPSB2aWV3WzFdIHx8IHZpZXdbMF07CiAgICAgIAogICAgICBpZiAodmlld1swXT49MSAmJiB2aWV3WzFdPD1kYXRhLnRvdGFsUGFnZXMpIHsKCiAgICAgICAgcmVtYWluaW5nUGFnZXMgPSBNYXRoLmZsb29yKChwYWdlc0luRE9NLTIpLzIpOwoKICAgICAgICBpZiAoZGF0YS50b3RhbFBhZ2VzLXZpZXdbMV0gPiB2aWV3WzBdKSB7CiAgICAgICAgICBsZWZ0ID0gTWF0aC5taW4odmlld1swXS0xLCByZW1haW5pbmdQYWdlcyk7CiAgICAgICAgICByaWdodCA9IDIqcmVtYWluaW5nUGFnZXMtbGVmdDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcmlnaHQgPSBNYXRoLm1pbihkYXRhLnRvdGFsUGFnZXMtdmlld1sxXSwgcmVtYWluaW5nUGFnZXMpOwogICAgICAgICAgbGVmdCA9IDIqcmVtYWluaW5nUGFnZXMtcmlnaHQ7CiAgICAgICAgfQoKICAgICAgfSBlbHNlIHsKICAgICAgICBsZWZ0ID0gcGFnZXNJbkRPTS0xOwogICAgICAgIHJpZ2h0ID0gcGFnZXNJbkRPTS0xOwogICAgICB9CgogICAgICByZXR1cm4gW01hdGgubWF4KDEsIHZpZXdbMF0tbGVmdCksCiAgICAgICAgICBNYXRoLm1pbihkYXRhLnRvdGFsUGFnZXMsIHZpZXdbMV0rcmlnaHQpXTsKCiAgfSwKCiAgLy8gRGV0ZWN0cyBpZiBhIHBhZ2UgaXMgd2l0aGluIHRoZSByYW5nZSBvZiBgcGFnZXNJbkRPTWAgZnJvbSB0aGUgY3VycmVudCB2aWV3CgogIF9uZWNlc3NQYWdlOiBmdW5jdGlvbihwYWdlKSB7CiAgICAKICAgIGlmIChwYWdlPT09MCkKICAgICAgcmV0dXJuIHRydWU7CgogICAgdmFyIHJhbmdlID0gdGhpcy50dXJuKCdyYW5nZScpOwoKICAgIHJldHVybiB0aGlzLmRhdGEoKS5wYWdlT2Jqc1twYWdlXS5oYXNDbGFzcygnZml4ZWQnKSB8fAogICAgICAocGFnZT49cmFuZ2VbMF0gJiYgcGFnZTw9cmFuZ2VbMV0pOwogICAgCiAgfSwKCiAgLy8gUmVsZWFzZXMgbWVtb3J5IGJ5IHJlbW92aW5nIHBhZ2VzIGZyb20gdGhlIERPTQoKICBfcmVtb3ZlRnJvbURPTTogZnVuY3Rpb24oKSB7CgogICAgdmFyIHBhZ2UsIGRhdGEgPSB0aGlzLmRhdGEoKTsKCiAgICBmb3IgKHBhZ2UgaW4gZGF0YS5wYWdlV3JhcCkKICAgICAgaWYgKGhhcyhwYWdlLCBkYXRhLnBhZ2VXcmFwKSAmJgogICAgICAgICF0dXJuTWV0aG9kcy5fbmVjZXNzUGFnZS5jYWxsKHRoaXMsIHBhZ2UpKQogICAgICB0dXJuTWV0aG9kcy5fcmVtb3ZlUGFnZUZyb21ET00uY2FsbCh0aGlzLCBwYWdlKTsKICAgIAogIH0sCgogIC8vIFJlbW92ZXMgYSBwYWdlIGZyb20gRE9NIGFuZCBpdHMgaW50ZXJuYWwgcmVmZXJlbmNlcwoKICBfcmVtb3ZlUGFnZUZyb21ET006IGZ1bmN0aW9uKHBhZ2UpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpOwoKICAgIGlmIChkYXRhLnBhZ2VzW3BhZ2VdKSB7CiAgICAgIHZhciBkZCA9IGRhdGEucGFnZXNbcGFnZV0uZGF0YSgpOwoKICAgICAgZmxpcE1ldGhvZHMuX21vdmVGb2xkaW5nUGFnZS5jYWxsKGRhdGEucGFnZXNbcGFnZV0sIGZhbHNlKTsKCiAgICAgIGlmIChkZC5mICYmIGRkLmYuZndyYXBwZXIpCiAgICAgICAgZGQuZi5md3JhcHBlci5yZW1vdmUoKTsKCiAgICAgIGRhdGEucGFnZXNbcGFnZV0ucmVtb3ZlRGF0YSgpOwogICAgICBkYXRhLnBhZ2VzW3BhZ2VdLnJlbW92ZSgpOwogICAgICBkZWxldGUgZGF0YS5wYWdlc1twYWdlXTsKICAgIH0KCiAgICBpZiAoZGF0YS5wYWdlT2Jqc1twYWdlXSkKICAgICAgZGF0YS5wYWdlT2Jqc1twYWdlXS5yZW1vdmUoKTsKCiAgICBpZiAoZGF0YS5wYWdlV3JhcFtwYWdlXSkgewogICAgICBkYXRhLnBhZ2VXcmFwW3BhZ2VdLnJlbW92ZSgpOwogICAgICBkZWxldGUgZGF0YS5wYWdlV3JhcFtwYWdlXTsKICAgIH0KCiAgICB0dXJuTWV0aG9kcy5fcmVtb3ZlTXYuY2FsbCh0aGlzLCBwYWdlKTsKCiAgICBkZWxldGUgZGF0YS5wYWdlUGxhY2VbcGFnZV07CiAgICBkZWxldGUgZGF0YS5wYWdlWm9vbVtwYWdlXTsKCiAgfSwKCiAgLy8gUmVtb3ZlcyBhIHBhZ2UKCiAgcmVtb3ZlUGFnZTogZnVuY3Rpb24ocGFnZSkgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCk7CgogICAgLy8gRGVsZXRlIGFsbCB0aGUgcGFnZXMKICAgIGlmIChwYWdlPT0nKicpIHsKICAgICAgCiAgICAgIHdoaWxlIChkYXRhLnRvdGFsUGFnZXMhPT0wKSB7CiAgICAgICAgdGhpcy50dXJuKCdyZW1vdmVQYWdlJywgZGF0YS50b3RhbFBhZ2VzKTsKICAgICAgfQoKICAgIH0gZWxzZSB7CgogICAgICBpZiAocGFnZTwxIHx8IHBhZ2U+ZGF0YS50b3RhbFBhZ2VzKQogICAgICAgIHRocm93IHR1cm5FcnJvcignVGhlIHBhZ2UgJysgcGFnZSArICcgZG9lc25cJ3QgZXhpc3QnKTsKICAgICAgICAKICAgICAgaWYgKGRhdGEucGFnZU9ianNbcGFnZV0pIHsKCiAgICAgICAgLy8gU3RvcCBhbmltYXRpb25zCiAgICAgICAgdGhpcy50dXJuKCdzdG9wJyk7CgogICAgICAgIC8vIFJlbW92ZSBgcGFnZWAKICAgICAgICB0dXJuTWV0aG9kcy5fcmVtb3ZlUGFnZUZyb21ET00uY2FsbCh0aGlzLCBwYWdlKTsKCiAgICAgICAgZGVsZXRlIGRhdGEucGFnZU9ianNbcGFnZV07CgogICAgICB9CgogICAgICAvLyBNb3ZlIHRoZSBwYWdlcwogICAgICB0dXJuTWV0aG9kcy5fbW92ZVBhZ2VzLmNhbGwodGhpcywgcGFnZSwgLTEpOwoKICAgICAgLy8gUmVzaXplIHRoZSBzaXplIG9mIHRoaXMgZmxpcGJvb2sKICAgICAgZGF0YS50b3RhbFBhZ2VzID0gZGF0YS50b3RhbFBhZ2VzLTE7CgogICAgICAvLyBDaGVjayB0aGUgY3VycmVudCB2aWV3CgogICAgICBpZiAoZGF0YS5wYWdlPmRhdGEudG90YWxQYWdlcykgewoKICAgICAgIGRhdGEucGFnZSA9IG51bGw7CiAgICAgICB0dXJuTWV0aG9kcy5fZml0UGFnZS5jYWxsKHRoaXMsIGRhdGEudG90YWxQYWdlcyk7CgogICAgICB9IGVsc2UgewoKICAgICAgICB0dXJuTWV0aG9kcy5fbWFrZVJhbmdlLmNhbGwodGhpcyk7CiAgICAgICAgdGhpcy50dXJuKCd1cGRhdGUnKTsKCiAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gdGhpczsKICAKICB9LAoKICAvLyBNb3ZlcyBwYWdlcwoKICBfbW92ZVBhZ2VzOiBmdW5jdGlvbihmcm9tLCBjaGFuZ2UpIHsKCiAgICB2YXIgcGFnZSwKICAgICAgdGhhdCA9IHRoaXMsCiAgICAgIGRhdGEgPSB0aGlzLmRhdGEoKSwKICAgICAgc2luZ2xlID0gZGF0YS5kaXNwbGF5PT0nc2luZ2xlJywKICAgICAgbW92ZSA9IGZ1bmN0aW9uKHBhZ2UpIHsKCiAgICAgICAgdmFyIG5leHQgPSBwYWdlICsgY2hhbmdlLAogICAgICAgICAgb2RkID0gbmV4dCUyLAogICAgICAgICAgY2xhc3NOYW1lID0gKG9kZCkgPyAnIG9kZCAnIDogJyBldmVuICc7CgogICAgICAgIGlmIChkYXRhLnBhZ2VPYmpzW3BhZ2VdKQogICAgICAgICAgZGF0YS5wYWdlT2Jqc1tuZXh0XSA9IGRhdGEucGFnZU9ianNbcGFnZV0uCiAgICAgICAgICAgIHJlbW92ZUNsYXNzKCdwJyArIHBhZ2UgKyAnIG9kZCBldmVuJykuCiAgICAgICAgICAgIGFkZENsYXNzKCdwJyArIG5leHQgKyBjbGFzc05hbWUpOwoKICAgICAgICBpZiAoZGF0YS5wYWdlUGxhY2VbcGFnZV0gJiYgZGF0YS5wYWdlV3JhcFtwYWdlXSkgewoKICAgICAgICAgIGRhdGEucGFnZVBsYWNlW25leHRdID0gbmV4dDsKICAgICAgICAKICAgICAgICAgIGlmIChkYXRhLnBhZ2VPYmpzW25leHRdLmhhc0NsYXNzKCdmaXhlZCcpKQogICAgICAgICAgICBkYXRhLnBhZ2VXcmFwW25leHRdID0gZGF0YS5wYWdlV3JhcFtwYWdlXS4KICAgICAgICAgICAgICBhdHRyKCdwYWdlJywgbmV4dCk7CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgIGRhdGEucGFnZVdyYXBbbmV4dF0gPSBkYXRhLnBhZ2VXcmFwW3BhZ2VdLgogICAgICAgICAgICAgIGNzcyh0dXJuTWV0aG9kcy5fcGFnZVNpemUuY2FsbCh0aGF0LCBuZXh0LCB0cnVlKSkuCiAgICAgICAgICAgICAgYXR0cigncGFnZScsIG5leHQpOwogICAgICAKICAgICAgICAgICAgaWYgKGRhdGEucGFnZXNbcGFnZV0pCiAgICAgICAgICAgICAgZGF0YS5wYWdlc1tuZXh0XSA9IGRhdGEucGFnZXNbcGFnZV0uCiAgICAgICAgICAgICAgICBmbGlwKCdvcHRpb25zJywgewogICAgICAgICAgICAgICAgICBwYWdlOiBuZXh0LAogICAgICAgICAgICAgICAgICBuZXh0OiAoc2luZ2xlIHx8IG9kZCkgPyBuZXh0KzEgOiBuZXh0LTEKICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgaWYgKGNoYW5nZSkgewogICAgICAgICAgICAgIGRlbGV0ZSBkYXRhLnBhZ2VzW3BhZ2VdOwogICAgICAgICAgICAgIGRlbGV0ZSBkYXRhLnBhZ2VQbGFjZVtwYWdlXTsKICAgICAgICAgICAgICBkZWxldGUgZGF0YS5wYWdlWm9vbVtwYWdlXTsKICAgICAgICAgICAgICBkZWxldGUgZGF0YS5wYWdlT2Jqc1twYWdlXTsKICAgICAgICAgICAgICBkZWxldGUgZGF0YS5wYWdlV3JhcFtwYWdlXTsKICAgICAgICAgICAgfQoKICAgICAgICB9CgogICAgfTsKCiAgICBpZiAoY2hhbmdlPjApCiAgICAgIGZvciAocGFnZT1kYXRhLnRvdGFsUGFnZXM7IHBhZ2U+PWZyb207IHBhZ2UtLSkKICAgICAgICBtb3ZlKHBhZ2UpOwogICAgZWxzZQogICAgICBmb3IgKHBhZ2U9ZnJvbTsgcGFnZTw9ZGF0YS50b3RhbFBhZ2VzOyBwYWdlKyspCiAgICAgICAgbW92ZShwYWdlKTsKCiAgfSwKCiAgLy8gU2V0cyBvciBHZXRzIHRoZSBkaXNwbGF5IG1vZGUKCiAgZGlzcGxheTogZnVuY3Rpb24oZGlzcGxheSkgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCksCiAgICAgIGN1cnJlbnREaXNwbGF5ID0gZGF0YS5kaXNwbGF5OwoKICAgIGlmIChkaXNwbGF5PT09dW5kZWZpbmVkKSB7CiAgICAgIAogICAgICByZXR1cm4gY3VycmVudERpc3BsYXk7CgogICAgfSBlbHNlIHsKCiAgICAgIGlmICgkLmluQXJyYXkoZGlzcGxheSwgZGlzcGxheXMpPT0tMSkKICAgICAgICB0aHJvdyB0dXJuRXJyb3IoJyInK2Rpc3BsYXkgKyAnIiBpcyBub3QgYSB2YWx1ZSBmb3IgZGlzcGxheScpOwogICAgICAKICAgICAgc3dpdGNoKGRpc3BsYXkpIHsKICAgICAgICBjYXNlICdzaW5nbGUnOgoKICAgICAgICAgIC8vIENyZWF0ZSBhIHRlbXBvcmFsIHBhZ2UgdG8gdXNlIGFzIGZvbGRlZCBwYWdlCgogICAgICAgICAgaWYgKCFkYXRhLnBhZ2VPYmpzWzBdKSB7CiAgICAgICAgICAgIHRoaXMudHVybignc3RvcCcpLgogICAgICAgICAgICAgIGNzcyh7J292ZXJmbG93JzogJ2hpZGRlbid9KTsKCiAgICAgICAgICAgIGRhdGEucGFnZU9ianNbMF0gPSAkKCc8ZGl2IC8+JywKICAgICAgICAgICAgICAgIHsnY2xhc3MnOiAncGFnZSBwLXRlbXBvcmFsJ30pLgogICAgICAgICAgICAgIGNzcyh7d2lkdGg6IHRoaXMud2lkdGgoKSwgaGVpZ2h0OiB0aGlzLmhlaWdodCgpfSkuCiAgICAgICAgICAgICAgYXBwZW5kVG8odGhpcyk7CiAgICAgICAgICB9CgogICAgICAgICAgdGhpcy5hZGRDbGFzcygnc2hhZG93Jyk7CgogICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ2RvdWJsZSc6CgogICAgICAgICAgLy8gUmVtb3ZlIHRoZSB0ZW1wb3JhbCBwYWdlCgogICAgICAgICAgaWYgKGRhdGEucGFnZU9ianNbMF0pIHsKICAgICAgICAgICAgdGhpcy50dXJuKCdzdG9wJykuY3NzKHsnb3ZlcmZsb3cnOiAnJ30pOwogICAgICAgICAgICBkYXRhLnBhZ2VPYmpzWzBdLnJlbW92ZSgpOwogICAgICAgICAgICBkZWxldGUgZGF0YS5wYWdlT2Jqc1swXTsKICAgICAgICAgIH0KCiAgICAgICAgICB0aGlzLnJlbW92ZUNsYXNzKCdzaGFkb3cnKTsKCiAgICAgICAgYnJlYWs7CiAgICAgIH0KICAgICAgCgogICAgICBkYXRhLmRpc3BsYXkgPSBkaXNwbGF5OwoKICAgICAgaWYgKGN1cnJlbnREaXNwbGF5KSB7CiAgICAgICAgdmFyIHNpemUgPSB0aGlzLnR1cm4oJ3NpemUnKTsKICAgICAgICB0dXJuTWV0aG9kcy5fbW92ZVBhZ2VzLmNhbGwodGhpcywgMSwgMCk7CiAgICAgICAgdGhpcy50dXJuKCdzaXplJywgc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQpLgogICAgICAgICAgdHVybigndXBkYXRlJyk7CiAgICAgIH0KCiAgICAgIHJldHVybiB0aGlzOwoKICAgIH0KICAKICB9LAogIAogIC8vIEdldHMgYW5kIHNldHMgdGhlIGRpcmVjdGlvbiBvZiB0aGUgZmxpcGJvb2sKCiAgZGlyZWN0aW9uOiBmdW5jdGlvbihkaXIpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpOwoKICAgIGlmIChkaXI9PT11bmRlZmluZWQpIHsKCiAgICAgIHJldHVybiBkYXRhLmRpcmVjdGlvbjsKCiAgICB9IGVsc2UgewoKICAgICAgZGlyID0gZGlyLnRvTG93ZXJDYXNlKCk7CgogICAgICBpZiAoJC5pbkFycmF5KGRpciwgZGlyZWN0aW9ucyk9PS0xKQogICAgICAgIHRocm93IHR1cm5FcnJvcignIicgKyBkaXIgKyAnIiBpcyBub3QgYSB2YWx1ZSBmb3IgZGlyZWN0aW9uJyk7CgogICAgICBpZiAoZGlyPT0ncnRsJykgewogICAgICAgICQodGhpcykuYXR0cignZGlyJywgJ2x0cicpLgogICAgICAgICAgY3NzKHtkaXJlY3Rpb246ICdsdHInfSk7CiAgICAgIH0KCiAgICAgIGRhdGEuZGlyZWN0aW9uID0gZGlyOwoKICAgICAgaWYgKGRhdGEuZG9uZSkKICAgICAgICB0aGlzLnR1cm4oJ3NpemUnLCAkKHRoaXMpLndpZHRoKCksICQodGhpcykuaGVpZ2h0KCkpOwoKICAgICAgcmV0dXJuIHRoaXM7CiAgICB9CgogIH0sCgogIC8vIERldGVjdHMgYW5pbWF0aW9uCgogIGFuaW1hdGluZzogZnVuY3Rpb24oKSB7CgogICAgcmV0dXJuIHRoaXMuZGF0YSgpLnBhZ2VNdi5sZW5ndGg+MDsKCiAgfSwKCiAgLy8gR2V0cyB0aGUgY3VycmVudCBhY3RpdmF0ZWQgY29ybmVyCgogIGNvcm5lcjogZnVuY3Rpb24oKSB7CiAgICAKICAgIHZhciBjb3JuZXIsCiAgICAgIHBhZ2UsCiAgICAgIGRhdGEgPSB0aGlzLmRhdGEoKTsKCiAgICBmb3IgKHBhZ2UgaW4gZGF0YS5wYWdlcykgewogICAgICBpZiAoaGFzKHBhZ2UsIGRhdGEucGFnZXMpKQogICAgICAgIGlmICgoY29ybmVyID0gZGF0YS5wYWdlc1twYWdlXS5mbGlwKCdjb3JuZXInKSkpIHsKICAgICAgICAgIHJldHVybiBjb3JuZXI7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBmYWxzZTsKICB9LAoKICAvLyBHZXRzIHRoZSBkYXRhIHN0b3JlZCBpbiB0aGUgZmxpcGJvb2sKCiAgZGF0YTogZnVuY3Rpb24oKSB7CiAgICAKICAgIHJldHVybiB0aGlzLmRhdGEoKTsKCiAgfSwKCiAgLy8gRGlzYWJsZXMgYW5kIGVuYWJsZXMgdGhlIGVmZmVjdAoKICBkaXNhYmxlOiBmdW5jdGlvbihkaXNhYmxlKSB7CgogICAgdmFyIHBhZ2UsCiAgICAgIGRhdGEgPSB0aGlzLmRhdGEoKSwKICAgICAgdmlldyA9IHRoaXMudHVybigndmlldycpOwoKICAgIGRhdGEuZGlzYWJsZWQgPSBkaXNhYmxlPT09dW5kZWZpbmVkIHx8IGRpc2FibGU9PT10cnVlOwoKICAgIGZvciAocGFnZSBpbiBkYXRhLnBhZ2VzKSB7CiAgICAgIGlmIChoYXMocGFnZSwgZGF0YS5wYWdlcykpCiAgICAgICAgZGF0YS5wYWdlc1twYWdlXS5mbGlwKCdkaXNhYmxlJywKICAgICAgICAgIChkYXRhLmRpc2FibGVkKSA/IHRydWUgOiAkLmluQXJyYXkocGFyc2VJbnQocGFnZSwgMTApLCB2aWV3KT09LTEpOwogICAgfQoKICAgIHJldHVybiB0aGlzOwoKICB9LAoKICAvLyBEaXNhYmxlcyBhbmQgZW5hYmxlcyB0aGUgZWZmZWN0CgogIGRpc2FibGVkOiBmdW5jdGlvbihkaXNhYmxlKSB7CgogICAgaWYgKGRpc2FibGU9PT11bmRlZmluZWQpIHsKICAgICAgcmV0dXJuIHRoaXMuZGF0YSgpLmRpc2FibGVkPT09dHJ1ZTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiB0aGlzLnR1cm4oJ2Rpc2FibGUnLCBkaXNhYmxlKTsKICAgIH0KCiAgfSwKCiAgLy8gR2V0cyBhbmQgc2V0cyB0aGUgc2l6ZQoKICBzaXplOiBmdW5jdGlvbih3aWR0aCwgaGVpZ2h0KSB7CgogICAgaWYgKHdpZHRoPT09dW5kZWZpbmVkIHx8IGhlaWdodD09PXVuZGVmaW5lZCkgewogICAgICAKICAgICAgcmV0dXJuIHt3aWR0aDogdGhpcy53aWR0aCgpLCBoZWlnaHQ6IHRoaXMuaGVpZ2h0KCl9OwoKICAgIH0gZWxzZSB7CgogICAgICB0aGlzLnR1cm4oJ3N0b3AnKTsKCiAgICAgIHZhciBwYWdlLCBwcm9wLAogICAgICAgIGRhdGEgPSB0aGlzLmRhdGEoKSwKICAgICAgICBwYWdlV2lkdGggPSAoZGF0YS5kaXNwbGF5PT0nZG91YmxlJykgPyB3aWR0aC8yIDogd2lkdGg7CgogICAgICB0aGlzLmNzcyh7d2lkdGg6IHdpZHRoLCBoZWlnaHQ6IGhlaWdodH0pOwoKICAgICAgaWYgKGRhdGEucGFnZU9ianNbMF0pCiAgICAgICAgZGF0YS5wYWdlT2Jqc1swXS5jc3Moe3dpZHRoOiBwYWdlV2lkdGgsIGhlaWdodDogaGVpZ2h0fSk7CiAgICAgIAogICAgICBmb3IgKHBhZ2UgaW4gZGF0YS5wYWdlV3JhcCkgewogICAgICAgIGlmICghaGFzKHBhZ2UsIGRhdGEucGFnZVdyYXApKSBjb250aW51ZTsKCiAgICAgICAgcHJvcCA9IHR1cm5NZXRob2RzLl9wYWdlU2l6ZS5jYWxsKHRoaXMsIHBhZ2UsIHRydWUpOwoKICAgICAgICBkYXRhLnBhZ2VPYmpzW3BhZ2VdLmNzcyh7d2lkdGg6IHByb3Aud2lkdGgsIGhlaWdodDogcHJvcC5oZWlnaHR9KTsKICAgICAgICBkYXRhLnBhZ2VXcmFwW3BhZ2VdLmNzcyhwcm9wKTsKICAgICAgICAKICAgICAgICBpZiAoZGF0YS5wYWdlc1twYWdlXSkKICAgICAgICAgIGRhdGEucGFnZXNbcGFnZV0uY3NzKHt3aWR0aDogcHJvcC53aWR0aCwgaGVpZ2h0OiBwcm9wLmhlaWdodH0pOwogICAgICB9CgogICAgICB0aGlzLnR1cm4oJ3Jlc2l6ZScpOwoKICAgICAgcmV0dXJuIHRoaXM7CgogICAgfQogIH0sCgogIC8vIFJlc2l6ZXMgZWFjaCBwYWdlCgogIHJlc2l6ZTogZnVuY3Rpb24oKSB7CgogICAgdmFyIHBhZ2UsIGRhdGEgPSB0aGlzLmRhdGEoKTsKCiAgICBpZiAoZGF0YS5wYWdlc1swXSkgewogICAgICBkYXRhLnBhZ2VXcmFwWzBdLmNzcyh7bGVmdDogLXRoaXMud2lkdGgoKX0pOwogICAgICBkYXRhLnBhZ2VzWzBdLmZsaXAoJ3Jlc2l6ZScsIHRydWUpOwogICAgfQoKICAgIGZvciAocGFnZSA9IDE7IHBhZ2UgPD0gZGF0YS50b3RhbFBhZ2VzOyBwYWdlKyspCiAgICAgIGlmIChkYXRhLnBhZ2VzW3BhZ2VdKQogICAgICAgIGRhdGEucGFnZXNbcGFnZV0uZmxpcCgncmVzaXplJywgdHJ1ZSk7CgogICAgdHVybk1ldGhvZHMuX3VwZGF0ZVNoYWRvdy5jYWxsKHRoaXMpOwoKICAgIGlmIChkYXRhLm9wdHMuYXV0b0NlbnRlcikKICAgICAgdGhpcy50dXJuKCdjZW50ZXInKTsKCiAgfSwKCiAgLy8gUmVtb3ZlcyBhbiBhbmltYXRpb24gZnJvbSB0aGUgY2FjaGUKCiAgX3JlbW92ZU12OiBmdW5jdGlvbihwYWdlKSB7CgogICAgdmFyIGksIGRhdGEgPSB0aGlzLmRhdGEoKTsKICAgICAgCiAgICBmb3IgKGk9MDsgaTxkYXRhLnBhZ2VNdi5sZW5ndGg7IGkrKykKICAgICAgaWYgKGRhdGEucGFnZU12W2ldPT1wYWdlKSB7CiAgICAgICAgZGF0YS5wYWdlTXYuc3BsaWNlKGksIDEpOwogICAgICAgIHJldHVybiB0cnVlOwogICAgICB9CgogICAgcmV0dXJuIGZhbHNlOwoKICB9LAoKICAvLyBBZGRzIGFuIGFuaW1hdGlvbiB0byB0aGUgY2FjaGUKICAKICBfYWRkTXY6IGZ1bmN0aW9uKHBhZ2UpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpOwoKICAgIHR1cm5NZXRob2RzLl9yZW1vdmVNdi5jYWxsKHRoaXMsIHBhZ2UpOwogICAgZGF0YS5wYWdlTXYucHVzaChwYWdlKTsKCiAgfSwKCiAgLy8gR2V0cyBpbmRleGVzIGZvciBhIHZpZXcKCiAgX3ZpZXc6IGZ1bmN0aW9uKHBhZ2UpIHsKICAKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCk7CiAgICAKICAgIHBhZ2UgPSBwYWdlIHx8IGRhdGEucGFnZTsKCiAgICBpZiAoZGF0YS5kaXNwbGF5PT0nZG91YmxlJykKICAgICAgcmV0dXJuIChwYWdlJTIpID8gW3BhZ2UtMSwgcGFnZV0gOiBbcGFnZSwgcGFnZSsxXTsKICAgIGVsc2UKICAgICAgcmV0dXJuIFtwYWdlXTsKCiAgfSwKCiAgLy8gR2V0cyBhIHZpZXcKCiAgdmlldzogZnVuY3Rpb24ocGFnZSkgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCksCiAgICAgIHZpZXcgPSB0dXJuTWV0aG9kcy5fdmlldy5jYWxsKHRoaXMsIHBhZ2UpOwoKICAgIGlmIChkYXRhLmRpc3BsYXk9PSdkb3VibGUnKQogICAgICByZXR1cm4gWyh2aWV3WzBdPjApID8gdmlld1swXSA6IDAsCiAgICAgICAgKHZpZXdbMV08PWRhdGEudG90YWxQYWdlcykgPyB2aWV3WzFdIDogMF07CiAgICBlbHNlCiAgICAgIHJldHVybiBbKHZpZXdbMF0+MCAmJiB2aWV3WzBdPD1kYXRhLnRvdGFsUGFnZXMpID8gdmlld1swXSA6IDBdOwoKICB9LAoKICAvLyBTdG9wcyBhbmltYXRpb25zCgogIHN0b3A6IGZ1bmN0aW9uKGlnbm9yZSwgYW5pbWF0ZSkgewoKICAgIGlmICh0aGlzLnR1cm4oJ2FuaW1hdGluZycpKSB7CiAgCiAgICAgIHZhciBpLCBvcHRzLCBwYWdlLAogICAgICAgIGRhdGEgPSB0aGlzLmRhdGEoKTsKCiAgICAgIGlmIChkYXRhLnRwYWdlKSB7CiAgICAgICAgZGF0YS5wYWdlID0gZGF0YS50cGFnZTsKICAgICAgICBkZWxldGUgZGF0YVsndHBhZ2UnXTsKICAgICAgfQoKICAgICAgZm9yIChpID0gMDsgaTxkYXRhLnBhZ2VNdi5sZW5ndGg7IGkrKykgewoKICAgICAgICBpZiAoIWRhdGEucGFnZU12W2ldIHx8IGRhdGEucGFnZU12W2ldPT09aWdub3JlKQogICAgICAgICAgY29udGludWU7CgogICAgICAgIHBhZ2UgPSBkYXRhLnBhZ2VzW2RhdGEucGFnZU12W2ldXTsKICAgICAgICBvcHRzID0gcGFnZS5kYXRhKCkuZi5vcHRzOwoKICAgICAgICBwYWdlLmZsaXAoJ2hpZGVGb2xkZWRQYWdlJywgYW5pbWF0ZSk7CgogICAgICAgIGlmICghYW5pbWF0ZSkKICAgICAgICAgIGZsaXBNZXRob2RzLl9tb3ZlRm9sZGluZ1BhZ2UuY2FsbChwYWdlLCBmYWxzZSk7CgogICAgICAgIGlmIChvcHRzLmZvcmNlKSB7CiAgICAgICAgICBvcHRzLm5leHQgPSAob3B0cy5wYWdlJTI9PT0wKSA/IG9wdHMucGFnZS0xIDogb3B0cy5wYWdlKzE7CiAgICAgICAgICBkZWxldGUgb3B0c1snZm9yY2UnXTsKICAgICAgICB9CgogICAgICB9CiAgICB9CiAgICAKICAgIHRoaXMudHVybigndXBkYXRlJyk7CgogICAgcmV0dXJuIHRoaXM7CiAgfSwKCiAgLy8gR2V0cyBhbmQgc2V0cyB0aGUgbnVtYmVyIG9mIHBhZ2VzCgogIHBhZ2VzOiBmdW5jdGlvbihwYWdlcykgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCk7CgogICAgaWYgKHBhZ2VzKSB7CgogICAgICBpZiAocGFnZXM8ZGF0YS50b3RhbFBhZ2VzKSB7CgogICAgICAgIGZvciAodmFyIHBhZ2UgPSBkYXRhLnRvdGFsUGFnZXM7IHBhZ2U+cGFnZXM7IHBhZ2UtLSkKICAgICAgICAgIHRoaXMudHVybigncmVtb3ZlUGFnZScsIHBhZ2UpOwoKICAgICAgfQoKICAgICAgICBkYXRhLnRvdGFsUGFnZXMgPSBwYWdlczsKICAgICAgICB0dXJuTWV0aG9kcy5fZml0UGFnZS5jYWxsKHRoaXMsIGRhdGEucGFnZSk7CgogICAgICByZXR1cm4gdGhpczsKCiAgICB9IGVsc2UKICAgICAgcmV0dXJuIGRhdGEudG90YWxQYWdlczsKCiAgfSwKCiAgLy8gQ2hlY2tzIG1pc3NpbmcgcGFnZXMKCiAgX21pc3NpbmcgOiBmdW5jdGlvbihwYWdlKSB7CiAgICAKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCk7CgogICAgaWYgKGRhdGEudG90YWxQYWdlczwxKQogICAgICByZXR1cm47CgogICAgdmFyIHAsCiAgICAgICAgcmFuZ2UgPSB0aGlzLnR1cm4oJ3JhbmdlJywgcGFnZSksCiAgICAgICAgbWlzc2luZyA9IFtdOwoKICAgIGZvciAocCA9IHJhbmdlWzBdOyBwPD1yYW5nZVsxXTsgcCsrKSB7CiAgICAgIGlmICghZGF0YS5wYWdlT2Jqc1twXSkKICAgICAgICBtaXNzaW5nLnB1c2gocCk7CiAgICB9CgogICAgaWYgKG1pc3NpbmcubGVuZ3RoPjApCiAgICAgIHRoaXMudHJpZ2dlcignbWlzc2luZycsIFttaXNzaW5nXSk7CgogIH0sCgogIC8vIFNldHMgYSBwYWdlIHdpdGhvdXQgZWZmZWN0CgogIF9maXRQYWdlOiBmdW5jdGlvbihwYWdlKSB7CgogICAgdmFyIGRhdGEgPSB0aGlzLmRhdGEoKSwKICAgICAgbmV3VmlldyA9IHRoaXMudHVybigndmlldycsIHBhZ2UpOwoKICAgIHR1cm5NZXRob2RzLl9taXNzaW5nLmNhbGwodGhpcywgcGFnZSk7CiAgICAKICAgIGlmICghZGF0YS5wYWdlT2Jqc1twYWdlXSkKICAgICAgcmV0dXJuOwoKICAgIGRhdGEucGFnZSA9IHBhZ2U7CiAgCiAgICB0aGlzLnR1cm4oJ3N0b3AnKTsKCiAgICBmb3IgKHZhciBpID0gMDsgaTxuZXdWaWV3Lmxlbmd0aDsgaSsrKSB7CgogICAgICBpZiAobmV3Vmlld1tpXSAmJiBkYXRhLnBhZ2Vab29tW25ld1ZpZXdbaV1dIT1kYXRhLnpvb20pIHsKICAKICAgICAgICB0aGlzLnRyaWdnZXIoJ3pvb21lZCcsWwogICAgICAgICAgbmV3Vmlld1tpXSwKICAgICAgICAgIG5ld1ZpZXcsCiAgICAgICAgICBkYXRhLnBhZ2Vab29tW25ld1ZpZXdbaV1dLAogICAgICAgICAgZGF0YS56b29tXSk7CgogICAgICAgIGRhdGEucGFnZVpvb21bbmV3Vmlld1tpXV0gPSBkYXRhLnpvb207CgogICAgICB9CiAgICB9CgogICAgdHVybk1ldGhvZHMuX3JlbW92ZUZyb21ET00uY2FsbCh0aGlzKTsKICAgIHR1cm5NZXRob2RzLl9tYWtlUmFuZ2UuY2FsbCh0aGlzKTsKICAgIHR1cm5NZXRob2RzLl91cGRhdGVTaGFkb3cuY2FsbCh0aGlzKTsKICAgIHRoaXMudHJpZ2dlcigndHVybmVkJywgW3BhZ2UsIG5ld1ZpZXddKTsKICAgIHRoaXMudHVybigndXBkYXRlJyk7CgogICAgaWYgKGRhdGEub3B0cy5hdXRvQ2VudGVyKQogICAgICB0aGlzLnR1cm4oJ2NlbnRlcicpOwoKICB9LAogIAogIC8vIFR1cm5zIHRoZSBwYWdlCgogIF90dXJuUGFnZTogZnVuY3Rpb24ocGFnZSkgewoKICAgIHZhciBjdXJyZW50LAogICAgICBuZXh0LAogICAgICBkYXRhID0gdGhpcy5kYXRhKCksCiAgICAgIHBsYWNlID0gZGF0YS5wYWdlUGxhY2VbcGFnZV0sCiAgICAgIHZpZXcgPSB0aGlzLnR1cm4oJ3ZpZXcnKSwKICAgICAgbmV3VmlldyA9IHRoaXMudHVybigndmlldycsIHBhZ2UpOwoKCiAgICBpZiAoZGF0YS5wYWdlIT1wYWdlKSB7CgogICAgICB2YXIgY3VycmVudFBhZ2UgPSBkYXRhLnBhZ2U7CgogICAgICBpZiAodHJpZ2dlcigndHVybmluZycsIHRoaXMsIFtwYWdlLCBuZXdWaWV3XSk9PSdwcmV2ZW50ZWQnKSB7CgogICAgICAgIGlmIChjdXJyZW50UGFnZT09ZGF0YS5wYWdlICYmICQuaW5BcnJheShwbGFjZSwgZGF0YS5wYWdlTXYpIT0tMSkKICAgICAgICAgIGRhdGEucGFnZXNbcGxhY2VdLmZsaXAoJ2hpZGVGb2xkZWRQYWdlJywgdHJ1ZSk7CiAgICAgICAgCiAgICAgICAgcmV0dXJuOwoKICAgICAgfQoKICAgICAgaWYgKCQuaW5BcnJheSgxLCBuZXdWaWV3KSE9LTEpCiAgICAgICAgdGhpcy50cmlnZ2VyKCdmaXJzdCcpOwogICAgICBpZiAoJC5pbkFycmF5KGRhdGEudG90YWxQYWdlcywgbmV3VmlldykhPS0xKQogICAgICAgIHRoaXMudHJpZ2dlcignbGFzdCcpOwoKICAgIH0KCiAgICBpZiAoZGF0YS5kaXNwbGF5PT0nc2luZ2xlJykgewogICAgICBjdXJyZW50ID0gdmlld1swXTsKICAgICAgbmV4dCA9IG5ld1ZpZXdbMF07CiAgICB9IGVsc2UgaWYgKHZpZXdbMV0gJiYgcGFnZT52aWV3WzFdKSB7CiAgICAgIGN1cnJlbnQgPSB2aWV3WzFdOwogICAgICBuZXh0ID0gbmV3Vmlld1swXTsKICAgIH0gZWxzZSBpZiAodmlld1swXSAmJiBwYWdlPHZpZXdbMF0pIHsKICAgICAgY3VycmVudCA9IHZpZXdbMF07CiAgICAgIG5leHQgPSBuZXdWaWV3WzFdOwogICAgfQoKICAgIHZhciBvcHRzQ29ybmVycyA9IGRhdGEub3B0cy50dXJuQ29ybmVycy5zcGxpdCgnLCcpLAogICAgICBmbGlwRGF0YSA9IGRhdGEucGFnZXNbY3VycmVudF0uZGF0YSgpLmYsCiAgICAgIG9wdHMgPSBmbGlwRGF0YS5vcHRzLAogICAgICBhY3R1YWxQb2ludCA9IGZsaXBEYXRhLnBvaW50OwoKICAgIHR1cm5NZXRob2RzLl9taXNzaW5nLmNhbGwodGhpcywgcGFnZSk7CiAgICAKICAgIGlmICghZGF0YS5wYWdlT2Jqc1twYWdlXSkKICAgICAgcmV0dXJuOwoKICAgIHRoaXMudHVybignc3RvcCcpOwoKICAgIGRhdGEucGFnZSA9IHBhZ2U7CgogICAgdHVybk1ldGhvZHMuX21ha2VSYW5nZS5jYWxsKHRoaXMpOwoKICAgIGRhdGEudHBhZ2UgPSBuZXh0OwoKICAgIGlmIChvcHRzLm5leHQhPW5leHQpIHsKICAgICAgb3B0cy5uZXh0ID0gbmV4dDsKICAgICAgb3B0cy5mb3JjZSA9IHRydWU7CiAgICB9CgogICAgdGhpcy50dXJuKCd1cGRhdGUnKTsKCiAgICBmbGlwRGF0YS5wb2ludCA9IGFjdHVhbFBvaW50OwogICAgCiAgICBpZiAoZmxpcERhdGEuZWZmZWN0PT0naGFyZCcpCiAgICAgIGlmIChkYXRhLmRpcmVjdGlvbj09J2x0cicpCiAgICAgICAgZGF0YS5wYWdlc1tjdXJyZW50XS5mbGlwKCd0dXJuUGFnZScsCiAgICAgICAgICAocGFnZT5jdXJyZW50KSA/ICdyJyA6ICdsJyk7CiAgICAgIGVsc2UKICAgICAgICBkYXRhLnBhZ2VzW2N1cnJlbnRdLmZsaXAoJ3R1cm5QYWdlJywKICAgICAgICAgIChwYWdlPmN1cnJlbnQpID8gJ2wnIDogJ3InKTsKICAgIGVsc2UgewogICAgICBpZiAoZGF0YS5kaXJlY3Rpb249PSdsdHInKQogICAgICAgIGRhdGEucGFnZXNbY3VycmVudF0uZmxpcCgndHVyblBhZ2UnLAogICAgICAgICAgb3B0c0Nvcm5lcnNbKHBhZ2U+Y3VycmVudCkgPyAxIDogMF0pOwogICAgICBlbHNlCiAgICAgICAgZGF0YS5wYWdlc1tjdXJyZW50XS5mbGlwKCd0dXJuUGFnZScsCiAgICAgICAgICBvcHRzQ29ybmVyc1socGFnZT5jdXJyZW50KSA/IDAgOiAxXSk7CiAgICB9CgogIH0sCgogIC8vIEdldHMgYW5kIHNldHMgYSBwYWdlCgogIHBhZ2U6IGZ1bmN0aW9uKHBhZ2UpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpOwoKICAgIGlmIChwYWdlPT09dW5kZWZpbmVkKSB7CiAgICAgIAogICAgICByZXR1cm4gZGF0YS5wYWdlOwoKICAgIH0gZWxzZSB7CgogICAgICBpZiAoIWRhdGEuZGlzYWJsZWQgJiYgIWRhdGEuZGVzdHJveWluZykgewoKICAgICAgICBwYWdlID0gcGFyc2VJbnQocGFnZSwgMTApOwoKICAgICAgICBpZiAocGFnZT4wICYmIHBhZ2U8PWRhdGEudG90YWxQYWdlcykgewoKICAgICAgICAgIGlmIChwYWdlIT1kYXRhLnBhZ2UpIHsKICAgICAgICAgICAgaWYgKCFkYXRhLmRvbmUgfHwgJC5pbkFycmF5KHBhZ2UsIHRoaXMudHVybigndmlldycpKSE9LTEpCiAgICAgICAgICAgICAgdHVybk1ldGhvZHMuX2ZpdFBhZ2UuY2FsbCh0aGlzLCBwYWdlKTsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgIHR1cm5NZXRob2RzLl90dXJuUGFnZS5jYWxsKHRoaXMsIHBhZ2UpOwogICAgICAgICAgfQogICAgICAKICAgICAgICAgIHJldHVybiB0aGlzOwoKICAgICAgICB9IGVsc2UgewogICAgICAgIAogICAgICAgICAgdGhyb3cgdHVybkVycm9yKCdUaGUgcGFnZSAnICsgcGFnZSArICcgZG9lcyBub3QgZXhpc3QnKTsKCiAgICAgICAgfQoKICAgICAgfQoKICAgIH0KCiAgfSwKCiAgLy8gVHVybnMgdG8gdGhlIG5leHQgdmlldwoKICBuZXh0OiBmdW5jdGlvbigpIHsKCiAgICByZXR1cm4gdGhpcy50dXJuKCdwYWdlJywgTWF0aC5taW4odGhpcy5kYXRhKCkudG90YWxQYWdlcywKICAgICAgdHVybk1ldGhvZHMuX3ZpZXcuY2FsbCh0aGlzLCB0aGlzLmRhdGEoKS5wYWdlKS5wb3AoKSArIDEpKTsKICAKICB9LAoKICAvLyBUdXJucyB0byB0aGUgcHJldmlvdXMgdmlldwoKICBwcmV2aW91czogZnVuY3Rpb24oKSB7CgogICAgcmV0dXJuIHRoaXMudHVybigncGFnZScsIE1hdGgubWF4KDEsCiAgICAgIHR1cm5NZXRob2RzLl92aWV3LmNhbGwodGhpcywgdGhpcy5kYXRhKCkucGFnZSkuc2hpZnQoKSAtIDEpKTsKCiAgfSwKCiAgLy8gU2hvd3MgYSBwZWVsaW5nIGNvcm5lcgoKICBwZWVsOiBmdW5jdGlvbihjb3JuZXIsIGFuaW1hdGUpIHsKICAgIAogICAgdmFyIGRhdGEgPSB0aGlzLmRhdGEoKSwKICAgICAgdmlldyA9IHRoaXMudHVybigndmlldycpOwoKICAgIGFuaW1hdGUgPSAoYW5pbWF0ZT09PXVuZGVmaW5lZCkgPyB0cnVlIDogYW5pbWF0ZT09PXRydWU7CgogICAgaWYgKGNvcm5lcj09PWZhbHNlKSB7CiAgICAgIAogICAgICB0aGlzLnR1cm4oJ3N0b3AnLCBudWxsLCBhbmltYXRlKTsKCiAgICB9IGVsc2UgewogICAgCiAgICAgIGlmIChkYXRhLmRpc3BsYXk9PSdzaW5nbGUnKSB7CgogICAgICAgIGRhdGEucGFnZXNbZGF0YS5wYWdlXS5mbGlwKCdwZWVsJywgY29ybmVyLCBhbmltYXRlKTsKCiAgICAgIH0gZWxzZSB7CgogICAgICAgIHZhciBwYWdlOwoKICAgICAgICBpZiAoZGF0YS5kaXJlY3Rpb249PSdsdHInKSB7CiAgICAgICAgICAKICAgICAgICAgIHBhZ2UgPSAoY29ybmVyLmluZGV4T2YoJ2wnKSE9LTEpID8gdmlld1swXSA6IHZpZXdbMV07CgogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAKICAgICAgICAgIHBhZ2UgPSAoY29ybmVyLmluZGV4T2YoJ2wnKSE9LTEpID8gdmlld1sxXSA6IHZpZXdbMF07CgogICAgICAgIH0KICAgICAgICAKICAgICAgICBpZiAoZGF0YS5wYWdlc1twYWdlXSkKICAgICAgICAgIGRhdGEucGFnZXNbcGFnZV0uZmxpcCgncGVlbCcsIGNvcm5lciwgYW5pbWF0ZSk7CgogICAgICB9CiAgICB9CgogICAgcmV0dXJuIHRoaXM7CgogIH0sCgogIC8vIEFkZHMgYSBtb3Rpb24gdG8gdGhlIGludGVybmFsIGxpc3QKICAvLyBUaGlzIGV2ZW50IGlzIGNhbGxlZCBpbiBjb250ZXh0IG9mIGZsaXAKCiAgX2FkZE1vdGlvblBhZ2U6IGZ1bmN0aW9uKCkgewoKICAgIHZhciBvcHRzID0gJCh0aGlzKS5kYXRhKCkuZi5vcHRzLAogICAgICB0dXJuID0gb3B0cy50dXJuLAogICAgICBkZCA9IHR1cm4uZGF0YSgpOwoKICAgIHR1cm5NZXRob2RzLl9hZGRNdi5jYWxsKHR1cm4sIG9wdHMucGFnZSk7CgogIH0sCgogIC8vIFRoaXMgZXZlbnQgaXMgY2FsbGVkIGluIGNvbnRleHQgb2YgZmxpcAoKICBfZXZlbnRTdGFydDogZnVuY3Rpb24oZSwgb3B0cywgY29ybmVyKSB7CgogICAgdmFyIGRhdGEgPSBvcHRzLnR1cm4uZGF0YSgpLAogICAgICBhY3R1YWxab29tID0gZGF0YS5wYWdlWm9vbVtvcHRzLnBhZ2VdOwoKICAgIGlmIChlLmlzRGVmYXVsdFByZXZlbnRlZCgpKSB7CiAgICAgIHR1cm5NZXRob2RzLl91cGRhdGVTaGFkb3cuY2FsbChvcHRzLnR1cm4pOwogICAgICByZXR1cm47CiAgICB9CgogICAgaWYgKGFjdHVhbFpvb20gJiYgYWN0dWFsWm9vbSE9ZGF0YS56b29tKSB7CiAgICAgIAogICAgICBvcHRzLnR1cm4udHJpZ2dlcignem9vbWVkJyxbCiAgICAgICAgb3B0cy5wYWdlLAogICAgICAgIG9wdHMudHVybi50dXJuKCd2aWV3Jywgb3B0cy5wYWdlKSwKICAgICAgICBhY3R1YWxab29tLAogICAgICAgIGRhdGEuem9vbV0pOwoKICAgICAgZGF0YS5wYWdlWm9vbVtvcHRzLnBhZ2VdID0gZGF0YS56b29tOwoKICAgIH0KCiAgICBpZiAoZGF0YS5kaXNwbGF5PT0nc2luZ2xlJyAmJiBjb3JuZXIpIHsKCiAgICAgIGlmICgoY29ybmVyLmNoYXJBdCgxKT09J2wnICYmIGRhdGEuZGlyZWN0aW9uPT0nbHRyJykgfHwKICAgICAgICAoY29ybmVyLmNoYXJBdCgxKT09J3InICYmIGRhdGEuZGlyZWN0aW9uPT0ncnRsJykpCiAgICAgIHsKICAgICAgICAKICAgICAgICBvcHRzLm5leHQgPSAob3B0cy5uZXh0PG9wdHMucGFnZSkgPyBvcHRzLm5leHQgOiBvcHRzLnBhZ2UtMTsKICAgICAgICBvcHRzLmZvcmNlID0gdHJ1ZTsKCiAgICAgIH0gZWxzZSB7CiAgICAgICAgCiAgICAgICAgb3B0cy5uZXh0ID0gKG9wdHMubmV4dD5vcHRzLnBhZ2UpID8gb3B0cy5uZXh0IDogb3B0cy5wYWdlKzE7CgogICAgICB9CgogICAgfQoKICAgIHR1cm5NZXRob2RzLl9hZGRNb3Rpb25QYWdlLmNhbGwoZS50YXJnZXQpOwogICAgdHVybk1ldGhvZHMuX3VwZGF0ZVNoYWRvdy5jYWxsKG9wdHMudHVybik7CiAgfSwKCiAgLy8gVGhpcyBldmVudCBpcyBjYWxsZWQgaW4gY29udGV4dCBvZiBmbGlwCgogIF9ldmVudEVuZDogZnVuY3Rpb24oZSwgb3B0cywgdHVybmVkKSB7CiAgCiAgICB2YXIgdGhhdCA9ICQoZS50YXJnZXQpLAogICAgICBkYXRhID0gdGhhdC5kYXRhKCkuZiwKICAgICAgdHVybiA9IG9wdHMudHVybiwKICAgICAgZGQgPSB0dXJuLmRhdGEoKTsKCiAgICBpZiAodHVybmVkKSB7CgogICAgICB2YXIgdHBhZ2UgPSBkZC50cGFnZSB8fCBkZC5wYWdlOwogICAgCiAgICAgIGlmICh0cGFnZT09b3B0cy5uZXh0IHx8IHRwYWdlPT1vcHRzLnBhZ2UpIHsKICAgICAgICBkZWxldGUgZGQudHBhZ2U7CgogICAgICAgIHR1cm5NZXRob2RzLl9maXRQYWdlLmNhbGwodHVybiwgdHBhZ2UgfHwgb3B0cy5uZXh0LCB0cnVlKTsKICAgICAgfQoKICAgIH0gZWxzZSB7CiAgICAgIAogICAgICB0dXJuTWV0aG9kcy5fcmVtb3ZlTXYuY2FsbCh0dXJuLCBvcHRzLnBhZ2UpOwogICAgICB0dXJuTWV0aG9kcy5fdXBkYXRlU2hhZG93LmNhbGwodHVybik7CiAgICAgIHR1cm4udHVybigndXBkYXRlJyk7CgogICAgfQogICAgCiAgfSwKICAKICAvLyBUaGlzIGV2ZW50IGlzIGNhbGxlZCBpbiBjb250ZXh0IG9mIGZsaXAKCiAgX2V2ZW50UHJlc3NlZDogZnVuY3Rpb24oZSkgewoKICAgIHZhciBwYWdlLAogICAgICBkYXRhID0gJChlLnRhcmdldCkuZGF0YSgpLmYsCiAgICAgIHR1cm4gPSBkYXRhLm9wdHMudHVybiwKICAgICAgdHVybkRhdGEgPSB0dXJuLmRhdGEoKSwKICAgICAgcGFnZXMgPSB0dXJuRGF0YS5wYWdlczsKICAgIAogICAgdHVybkRhdGEubW91c2VBY3Rpb24gPSB0cnVlOwoKICAgIHR1cm4udHVybigndXBkYXRlJyk7CgogICAgcmV0dXJuIGRhdGEudGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpOwoKICB9LAoKICAvLyBUaGlzIGV2ZW50IGlzIGNhbGxlZCBpbiBjb250ZXh0IG9mIGZsaXAKCiAgX2V2ZW50UmVsZWFzZWQ6IGZ1bmN0aW9uKGUsIHBvaW50KSB7CgogICAgdmFyIG91dEFyZWEsCiAgICAgIHBhZ2UgPSAkKGUudGFyZ2V0KSwKICAgICAgZGF0YSA9IHBhZ2UuZGF0YSgpLmYsCiAgICAgIHR1cm4gPSBkYXRhLm9wdHMudHVybiwKICAgICAgdHVybkRhdGEgPSB0dXJuLmRhdGEoKTsKICAgIAogICAgaWYgKHR1cm5EYXRhLmRpc3BsYXk9PSdzaW5nbGUnKSB7CiAgICAgIG91dEFyZWEgPSAocG9pbnQuY29ybmVyPT0nYnInIHx8IHBvaW50LmNvcm5lcj09J3RyJykgPwogICAgICAgIHBvaW50Lng8cGFnZS53aWR0aCgpLzI6CiAgICAgICAgcG9pbnQueD5wYWdlLndpZHRoKCkvMjsKICAgIH0gZWxzZSB7CiAgICAgIG91dEFyZWEgPSBwb2ludC54PDAgfHwgcG9pbnQueD5wYWdlLndpZHRoKCk7CiAgICB9CgogICAgaWYgKChuZXcgRGF0ZSgpKS5nZXRUaW1lKCktZGF0YS50aW1lPDIwMCB8fCBvdXRBcmVhKSB7CgogICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgIHR1cm5NZXRob2RzLl90dXJuUGFnZS5jYWxsKHR1cm4sIGRhdGEub3B0cy5uZXh0KTsKCiAgICB9CgogICAgdHVybkRhdGEubW91c2VBY3Rpb24gPSBmYWxzZTsKCiAgfSwKCiAgLy8gVGhpcyBldmVudCBpcyBjYWxsZWQgaW4gY29udGV4dCBvZiBmbGlwCiAgCiAgX2ZsaXA6IGZ1bmN0aW9uKGUpIHsKCiAgICBlLnN0b3BQcm9wYWdhdGlvbigpOwoKICAgIHZhciBvcHRzID0gJChlLnRhcmdldCkuZGF0YSgpLmYub3B0czsKCiAgICBvcHRzLnR1cm4udHJpZ2dlcigndHVybicsIFtvcHRzLm5leHRdKTsKCiAgICBpZiAob3B0cy50dXJuLmRhdGEoKS5vcHRzLmF1dG9DZW50ZXIpIHsKICAgICAgb3B0cy50dXJuLnR1cm4oJ2NlbnRlcicsIG9wdHMubmV4dCk7CiAgICB9CgogIH0sCgogLy8KICBfdG91Y2hTdGFydDogZnVuY3Rpb24oKSB7CiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpOwogICAgZm9yICh2YXIgcGFnZSBpbiBkYXRhLnBhZ2VzKSB7CiAgICAgIGlmIChoYXMocGFnZSwgZGF0YS5wYWdlcykgJiYKICAgICAgICBmbGlwTWV0aG9kcy5fZXZlbnRTdGFydC5hcHBseShkYXRhLnBhZ2VzW3BhZ2VdLCBhcmd1bWVudHMpPT09ZmFsc2UpIHsKICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQogICAgfQogIH0sCiAgCiAgLy8KICBfdG91Y2hNb3ZlOiBmdW5jdGlvbigpIHsKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCk7CiAgICBmb3IgKHZhciBwYWdlIGluIGRhdGEucGFnZXMpIHsKICAgICAgaWYgKGhhcyhwYWdlLCBkYXRhLnBhZ2VzKSkgewogICAgICAgIGZsaXBNZXRob2RzLl9ldmVudE1vdmUuYXBwbHkoZGF0YS5wYWdlc1twYWdlXSwgYXJndW1lbnRzKTsKICAgICAgfQogICAgfQogIH0sCgogIC8vCiAgX3RvdWNoRW5kOiBmdW5jdGlvbigpIHsKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCk7CiAgICBmb3IgKHZhciBwYWdlIGluIGRhdGEucGFnZXMpIHsKICAgICAgaWYgKGhhcyhwYWdlLCBkYXRhLnBhZ2VzKSkgewogICAgICAgIGZsaXBNZXRob2RzLl9ldmVudEVuZC5hcHBseShkYXRhLnBhZ2VzW3BhZ2VdLCBhcmd1bWVudHMpOwogICAgICB9CiAgICB9CiAgfSwKCiAgLy8gQ2FsY3VsYXRlIHRoZSB6LWluZGV4IHZhbHVlIGZvciBwYWdlcyBkdXJpbmcgdGhlIGFuaW1hdGlvbgoKICBjYWxjdWxhdGVaOiBmdW5jdGlvbihtdikgewoKICAgIHZhciBpLCBwYWdlLCBuZXh0UGFnZSwgcGxhY2VQYWdlLCBkcGFnZSwKICAgICAgdGhhdCA9IHRoaXMsCiAgICAgIGRhdGEgPSB0aGlzLmRhdGEoKSwKICAgICAgdmlldyA9IHRoaXMudHVybigndmlldycpLAogICAgICBjdXJyZW50UGFnZSA9IHZpZXdbMF0gfHwgdmlld1sxXSwKICAgICAgdG90YWwgPSBtdi5sZW5ndGgtMSwKICAgICAgciA9IHtwYWdlWjoge30sIHBhcnRaOiB7fSwgcGFnZVY6IHt9fSwKCiAgICAgIGFkZFZpZXcgPSBmdW5jdGlvbihwYWdlKSB7CiAgICAgICAgdmFyIHZpZXcgPSB0aGF0LnR1cm4oJ3ZpZXcnLCBwYWdlKTsKICAgICAgICBpZiAodmlld1swXSkgci5wYWdlVlt2aWV3WzBdXSA9IHRydWU7CiAgICAgICAgaWYgKHZpZXdbMV0pIHIucGFnZVZbdmlld1sxXV0gPSB0cnVlOwogICAgICB9OwogICAgCiAgICBmb3IgKGkgPSAwOyBpPD10b3RhbDsgaSsrKSB7CiAgICAgIHBhZ2UgPSBtdltpXTsKICAgICAgbmV4dFBhZ2UgPSBkYXRhLnBhZ2VzW3BhZ2VdLmRhdGEoKS5mLm9wdHMubmV4dDsKICAgICAgcGxhY2VQYWdlID0gZGF0YS5wYWdlUGxhY2VbcGFnZV07CiAgICAgIGFkZFZpZXcocGFnZSk7CiAgICAgIGFkZFZpZXcobmV4dFBhZ2UpOwogICAgICBkcGFnZSA9IChkYXRhLnBhZ2VQbGFjZVtuZXh0UGFnZV09PW5leHRQYWdlKSA/IG5leHRQYWdlIDogcGFnZTsKICAgICAgci5wYWdlWltkcGFnZV0gPSBkYXRhLnRvdGFsUGFnZXMgLSBNYXRoLmFicyhjdXJyZW50UGFnZS1kcGFnZSk7CiAgICAgIHIucGFydFpbcGxhY2VQYWdlXSA9IGRhdGEudG90YWxQYWdlcyoyIC0gIHRvdGFsICsgaTsKICAgIH0KCiAgICByZXR1cm4gcjsKICB9LAoKICAvLyBVcGRhdGVzIHRoZSB6LWluZGV4IGFuZCBkaXNwbGF5IHByb3BlcnR5IG9mIGV2ZXJ5IHBhZ2UKCiAgdXBkYXRlOiBmdW5jdGlvbigpIHsKCiAgICB2YXIgcGFnZSwKICAgICAgZGF0YSA9IHRoaXMuZGF0YSgpOwoKICAgIGlmICh0aGlzLnR1cm4oJ2FuaW1hdGluZycpICYmIGRhdGEucGFnZU12WzBdIT09MCkgewoKICAgICAgLy8gVXBkYXRlIG1vdGlvbgoKICAgICAgdmFyIHAsIGFwYWdlLCBmaXhlZCwKICAgICAgICBwb3MgPSB0aGlzLnR1cm4oJ2NhbGN1bGF0ZVonLCBkYXRhLnBhZ2VNdiksCiAgICAgICAgY29ybmVyID0gdGhpcy50dXJuKCdjb3JuZXInKSwKICAgICAgICBhY3R1YWxWaWV3ID0gdGhpcy50dXJuKCd2aWV3JyksCiAgICAgICAgbmV3VmlldyA9IHRoaXMudHVybigndmlldycsIGRhdGEudHBhZ2UpOwogIAogICAgICBmb3IgKHBhZ2UgaW4gZGF0YS5wYWdlV3JhcCkgewoKICAgICAgICBpZiAoIWhhcyhwYWdlLCBkYXRhLnBhZ2VXcmFwKSkKICAgICAgICAgIGNvbnRpbnVlOwoKICAgICAgICBmaXhlZCA9IGRhdGEucGFnZU9ianNbcGFnZV0uaGFzQ2xhc3MoJ2ZpeGVkJyk7CgogICAgICAgIGRhdGEucGFnZVdyYXBbcGFnZV0uY3NzKHsKICAgICAgICAgIGRpc3BsYXk6IChwb3MucGFnZVZbcGFnZV0gfHwgZml4ZWQpID8gJycgOiAnbm9uZScsCiAgICAgICAgICB6SW5kZXg6CiAgICAgICAgICAgIChkYXRhLnBhZ2VPYmpzW3BhZ2VdLmhhc0NsYXNzKCdoYXJkJykgPwogICAgICAgICAgICAgIHBvcy5wYXJ0WltwYWdlXQogICAgICAgICAgICAgIDoKICAgICAgICAgICAgICBwb3MucGFnZVpbcGFnZV0KICAgICAgICAgICAgKSB8fCAoZml4ZWQgPyAtMSA6IDApCiAgICAgICAgfSk7CgogICAgICAgIGlmICgocCA9IGRhdGEucGFnZXNbcGFnZV0pKSB7CgogICAgICAgICAgcC5mbGlwKCd6JywgcG9zLnBhcnRaW3BhZ2VdIHx8IG51bGwpOwoKICAgICAgICAgIGlmIChwb3MucGFnZVZbcGFnZV0pCiAgICAgICAgICAgIHAuZmxpcCgncmVzaXplJyk7CiAgICAgICAgICAKICAgICAgICAgIGlmIChkYXRhLnRwYWdlKSB7IC8vIElzIGl0IHR1cm5pbmcgdGhlIHBhZ2UgdG8gYHRwYWdlYD8KCiAgICAgICAgICAgIHAuZmxpcCgnaG92ZXInLCBmYWxzZSkuCiAgICAgICAgICAgICAgZmxpcCgnZGlzYWJsZScsCiAgICAgICAgICAgICAgICAkLmluQXJyYXkocGFyc2VJbnQocGFnZSwgMTApLCBkYXRhLnBhZ2VNdik9PS0xICYmCiAgICAgICAgICAgICAgICBwYWdlIT1uZXdWaWV3WzBdICYmCiAgICAgICAgICAgICAgICBwYWdlIT1uZXdWaWV3WzFdKTsKCiAgICAgICAgICB9IGVsc2UgewoKICAgICAgICAgICAgcC5mbGlwKCdob3ZlcicsIGNvcm5lcj09PWZhbHNlKS4KICAgICAgICAgICAgICBmbGlwKCdkaXNhYmxlJywgcGFnZSE9YWN0dWFsVmlld1swXSAmJiBwYWdlIT1hY3R1YWxWaWV3WzFdKTsKCiAgICAgICAgICB9CgogICAgICAgIH0KCiAgICAgIH0KCiAgICB9IGVsc2UgewoKICAgICAgLy8gVXBkYXRlIHN0YXRpYyBwYWdlcwoKICAgICAgZm9yIChwYWdlIGluIGRhdGEucGFnZVdyYXApIHsKCiAgICAgICAgaWYgKCFoYXMocGFnZSwgZGF0YS5wYWdlV3JhcCkpCiAgICAgICAgICBjb250aW51ZTsKCiAgICAgICAgdmFyIHBhZ2VMb2NhdGlvbiA9IHR1cm5NZXRob2RzLl9zZXRQYWdlTG9jLmNhbGwodGhpcywgcGFnZSk7CgogICAgICAgIGlmIChkYXRhLnBhZ2VzW3BhZ2VdKSB7CiAgICAgICAgICBkYXRhLnBhZ2VzW3BhZ2VdLgogICAgICAgICAgICBmbGlwKCdkaXNhYmxlJywgZGF0YS5kaXNhYmxlZCB8fCBwYWdlTG9jYXRpb24hPTEpLgogICAgICAgICAgICBmbGlwKCdob3ZlcicsIHRydWUpLgogICAgICAgICAgICBmbGlwKCd6JywgbnVsbCk7CiAgICAgICAgfQogICAgICB9CiAgICB9CgogICAgcmV0dXJuIHRoaXM7CiAgfSwKCiAgLy8gVXBkYXRlcyB0aGUgcG9zaXRpb24gYW5kIHNpemUgb2YgdGhlIGZsaXBib29rJ3Mgc2hhZG93CgogIF91cGRhdGVTaGFkb3c6IGZ1bmN0aW9uKCkgewogICAgCiAgICB2YXIgdmlldywgdmlldzIsIHNoYWRvdywKICAgICAgZGF0YSA9IHRoaXMuZGF0YSgpLAogICAgICB3aWR0aCA9IHRoaXMud2lkdGgoKSwKICAgICAgaGVpZ2h0ID0gdGhpcy5oZWlnaHQoKSwKICAgICAgcGFnZVdpZHRoID0gKGRhdGEuZGlzcGxheT09J3NpbmdsZScpID8gd2lkdGggOiB3aWR0aC8yOwoKICAgIHZpZXcgPSB0aGlzLnR1cm4oJ3ZpZXcnKTsKCiAgICBpZiAoIWRhdGEuc2hhZG93KSB7CiAgICAgIGRhdGEuc2hhZG93ID0gJCgnPGRpdiAvPicsIHsKICAgICAgICAgICdjbGFzcyc6ICdzaGFkb3cnLAogICAgICAgICAgJ2Nzcyc6IGRpdkF0dCgwLCAwLCAwKS5jc3MKICAgICAgICB9KS4KICAgICAgICBhcHBlbmRUbyh0aGlzKTsKICAgIH0KCiAgICBmb3IgKHZhciBpID0gMDsgaTxkYXRhLnBhZ2VNdi5sZW5ndGg7IGkrKykgewogICAgICBpZiAoIXZpZXdbMF0gfHwgIXZpZXdbMV0pCiAgICAgICAgYnJlYWs7CiAgICAKICAgICAgdmlldyA9IHRoaXMudHVybigndmlldycsIGRhdGEucGFnZXNbZGF0YS5wYWdlTXZbaV1dLmRhdGEoKS5mLm9wdHMubmV4dCk7CiAgICAgIHZpZXcyID0gdGhpcy50dXJuKCd2aWV3JywgZGF0YS5wYWdlTXZbaV0pOwoKICAgICAgdmlld1swXSA9IHZpZXdbMF0gJiYgdmlldzJbMF07CiAgICAgIHZpZXdbMV0gPSB2aWV3WzFdICYmIHZpZXcyWzFdOwogICAgfQoKICAgIGlmICghdmlld1swXSkgc2hhZG93ID0gKGRhdGEuZGlyZWN0aW9uPT0nbHRyJykgPyAxIDogMjsKICAgIGVsc2UgaWYgKCF2aWV3WzFdKSBzaGFkb3cgPSAoZGF0YS5kaXJlY3Rpb249PSdsdHInKSA/IDIgOiAxOwogICAgZWxzZSBzaGFkb3cgPSAzOwoKICAgIHN3aXRjaCAoc2hhZG93KSB7CiAgICAgIGNhc2UgMToKICAgICAgICBkYXRhLnNoYWRvdy5jc3MoewogICAgICAgICAgd2lkdGg6IHBhZ2VXaWR0aCwKICAgICAgICAgIGhlaWdodDogaGVpZ2h0LAogICAgICAgICAgdG9wOiAwLAogICAgICAgICAgbGVmdDogcGFnZVdpZHRoCiAgICAgICAgfSk7CiAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgMjoKICAgICAgICBkYXRhLnNoYWRvdy5jc3MoewogICAgICAgICAgd2lkdGg6IHBhZ2VXaWR0aCwKICAgICAgICAgIGhlaWdodDogaGVpZ2h0LAogICAgICAgICAgdG9wOiAwLAogICAgICAgICAgbGVmdDogMAogICAgICAgIH0pOwogICAgICAgIGJyZWFrOwogICAgICBjYXNlIDM6CiAgICAgICAgZGF0YS5zaGFkb3cuY3NzKHsKICAgICAgICAgIHdpZHRoOiB3aWR0aCwKICAgICAgICAgIGhlaWdodDogaGVpZ2h0LAogICAgICAgICAgdG9wOiAwLAogICAgICAgICAgbGVmdDogMAogICAgICAgIH0pOwogICAgICAgIGJyZWFrOwogICAgfQoKICB9LAoKICAvLyBTZXRzIHRoZSB6LWluZGV4IGFuZCBkaXNwbGF5IHByb3BlcnR5IG9mIGEgcGFnZQogIC8vIEl0IGRlcGVuZHMgb24gdGhlIGN1cnJlbnQgdmlldwoKICBfc2V0UGFnZUxvYzogZnVuY3Rpb24ocGFnZSkgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCksCiAgICAgIHZpZXcgPSB0aGlzLnR1cm4oJ3ZpZXcnKSwKICAgICAgbG9jID0gMDsKCiAgICAKICAgIGlmIChwYWdlPT12aWV3WzBdIHx8IHBhZ2U9PXZpZXdbMV0pCiAgICAgIGxvYyA9IDE7CiAgICBlbHNlIGlmICgKICAgICAgKGRhdGEuZGlzcGxheT09J3NpbmdsZScgJiYgcGFnZT09dmlld1swXSsxKSB8fAogICAgICAoZGF0YS5kaXNwbGF5PT0nZG91YmxlJyAmJiBwYWdlPT12aWV3WzBdLTIgfHwgcGFnZT09dmlld1sxXSsyKQogICAgKQogICAgICBsb2MgPSAyOwoKICAgIGlmICghdGhpcy50dXJuKCdhbmltYXRpbmcnKSkKICAgICAgc3dpdGNoIChsb2MpIHsKICAgICAgICBjYXNlIDE6CiAgICAgICAgICBkYXRhLnBhZ2VXcmFwW3BhZ2VdLmNzcygKICAgICAgICAgIHsKICAgICAgICAgICAgekluZGV4OiBkYXRhLnRvdGFsUGFnZXMsCiAgICAgICAgICAgIGRpc3BsYXk6ICcnCiAgICAgICAgICB9KTsKICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDI6CiAgICAgICAgICBkYXRhLnBhZ2VXcmFwW3BhZ2VdLmNzcygKICAgICAgICAgIHsKICAgICAgICAgICAgekluZGV4OiBkYXRhLnRvdGFsUGFnZXMtMSwKICAgICAgICAgICAgZGlzcGxheTogJycKICAgICAgICAgIH0pOwogICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgMDoKICAgICAgICAgIGRhdGEucGFnZVdyYXBbcGFnZV0uY3NzKAogICAgICAgICAgewogICAgICAgICAgICB6SW5kZXg6IDAsCiAgICAgICAgICAgIGRpc3BsYXk6IChkYXRhLnBhZ2VPYmpzW3BhZ2VdLmhhc0NsYXNzKCdmaXhlZCcpKSA/ICcnIDogJ25vbmUnfQogICAgICAgICAgKTsKICAgICAgICBicmVhazsKICAgICAgfQogICAgCiAgICByZXR1cm4gbG9jOwogIH0sCgogIC8vIEdldHMgYW5kIHNldHMgdGhlIG9wdGlvbnMKCiAgb3B0aW9uczogZnVuY3Rpb24ob3B0aW9ucykgewogICAgCiAgICBpZiAob3B0aW9ucz09PXVuZGVmaW5lZCkgewogICAgICAKICAgICAgcmV0dXJuIHRoaXMuZGF0YSgpLm9wdHM7CgogICAgfSBlbHNlIHsKCiAgICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCk7CgogICAgICAvLyBTZXQgbmV3IHZhbHVlcwoKICAgICAgJC5leHRlbmQoZGF0YS5vcHRzLCBvcHRpb25zKTsKICAgICAgCiAgICAgIC8vIFNldCBwYWdlcwoKICAgICAgaWYgKG9wdGlvbnMucGFnZXMpCiAgICAgICAgdGhpcy50dXJuKCdwYWdlcycsIG9wdGlvbnMucGFnZXMpOwoKICAgICAgLy8gU2V0IHBhZ2UKCiAgICAgIGlmIChvcHRpb25zLnBhZ2UpCiAgICAgICAgdGhpcy50dXJuKCdwYWdlJywgb3B0aW9ucy5wYWdlKTsKCiAgICAgIC8vIFNldCBkaXNwbGF5CgogICAgICBpZiAob3B0aW9ucy5kaXNwbGF5KQogICAgICAgIHRoaXMudHVybignZGlzcGxheScsIG9wdGlvbnMuZGlzcGxheSk7CiAgICAgIAogICAgICAvLyBTZXQgZGlyZWN0aW9uCgogICAgICBpZiAob3B0aW9ucy5kaXJlY3Rpb24pCiAgICAgICAgdGhpcy50dXJuKCdkaXJlY3Rpb24nLCBvcHRpb25zLmRpcmVjdGlvbik7CgogICAgICAvLyBTZXQgc2l6ZQoKICAgICAgaWYgKG9wdGlvbnMud2lkdGggJiYgb3B0aW9ucy5oZWlnaHQpCiAgICAgICAgdGhpcy50dXJuKCdzaXplJywgb3B0aW9ucy53aWR0aCwgb3B0aW9ucy5oZWlnaHQpOwogICAgICAKICAgICAgLy8gQWRkIGV2ZW50IGxpc3RlbmVycwoKICAgICAgaWYgKG9wdGlvbnMud2hlbikKICAgICAgICBmb3IgKHZhciBldmVudE5hbWUgaW4gb3B0aW9ucy53aGVuKQogICAgICAgICAgaWYgKGhhcyhldmVudE5hbWUsIG9wdGlvbnMud2hlbikpIHsKICAgICAgICAgICAgdGhpcy51bmJpbmQoZXZlbnROYW1lKS4KICAgICAgICAgICAgICBiaW5kKGV2ZW50TmFtZSwgb3B0aW9ucy53aGVuW2V2ZW50TmFtZV0pOwogICAgICAgICAgfQoKICAgICAgcmV0dXJuIHRoaXM7CiAgICB9CgogIH0sCgogIC8vIEdldHMgdGhlIGN1cnJlbnQgdmVyc2lvbgoKICB2ZXJzaW9uOiBmdW5jdGlvbigpIHsKCiAgICByZXR1cm4gdmVyc2lvbjsKCiAgfQp9LAoKLy8gTWV0aG9kcyBhbmQgcHJvcGVydGllcyBmb3IgdGhlIGZsaXAgcGFnZSBlZmZlY3QKCmZsaXBNZXRob2RzID0gewoKICAvLyBDb25zdHJ1Y3RvcgoKICBpbml0OiBmdW5jdGlvbihvcHRzKSB7CgogICAgdGhpcy5kYXRhKHtmOiB7CiAgICAgIGRpc2FibGVkOiBmYWxzZSwKICAgICAgaG92ZXI6IGZhbHNlLAogICAgICBlZmZlY3Q6ICh0aGlzLmhhc0NsYXNzKCdoYXJkJykpID8gJ2hhcmQnIDogJ3NoZWV0JwogICAgfX0pOwogIAogICAgdGhpcy5mbGlwKCdvcHRpb25zJywgb3B0cyk7CgogICAgZmxpcE1ldGhvZHMuX2FkZFBhZ2VXcmFwcGVyLmNhbGwodGhpcyk7CgogICAgcmV0dXJuIHRoaXM7CiAgfSwKCiAgc2V0RGF0YTogZnVuY3Rpb24oZCkgewogICAgCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpOwoKICAgIGRhdGEuZiA9ICQuZXh0ZW5kKGRhdGEuZiwgZCk7CgogICAgcmV0dXJuIHRoaXM7CiAgfSwKCiAgb3B0aW9uczogZnVuY3Rpb24ob3B0cykgewogICAgCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLmY7CgogICAgaWYgKG9wdHMpIHsKICAgICAgZmxpcE1ldGhvZHMuc2V0RGF0YS5jYWxsKHRoaXMsCiAgICAgICAge29wdHM6ICQuZXh0ZW5kKHt9LCBkYXRhLm9wdHMgfHwgZmxpcE9wdGlvbnMsIG9wdHMpfSk7CiAgICAgIHJldHVybiB0aGlzOwogICAgfSBlbHNlCiAgICAgIHJldHVybiBkYXRhLm9wdHM7CgogIH0sCgogIHo6IGZ1bmN0aW9uKHopIHsKICAgIAogICAgdmFyIGRhdGEgPSB0aGlzLmRhdGEoKS5mOwoKICAgIGRhdGEub3B0c1snei1pbmRleCddID0gejsKCiAgICBpZiAoZGF0YS5md3JhcHBlcikKICAgICAgZGF0YS5md3JhcHBlci5jc3MoewogICAgICAgIHpJbmRleDogeiB8fCBwYXJzZUludChkYXRhLnBhcmVudC5jc3MoJ3otaW5kZXgnKSwgMTApIHx8IDAKICAgICAgfSk7CgogICAgcmV0dXJuIHRoaXM7CiAgfSwKCiAgX2NBbGxvd2VkOiBmdW5jdGlvbigpIHsKICAgIAogICAgdmFyIGRhdGEgPSB0aGlzLmRhdGEoKS5mLAogICAgICBwYWdlID0gZGF0YS5vcHRzLnBhZ2UsCiAgICAgIHR1cm5EYXRhID0gZGF0YS5vcHRzLnR1cm4uZGF0YSgpLAogICAgICBvZGQgPSBwYWdlJTI7CiAgICAKICAgIGlmIChkYXRhLmVmZmVjdD09J2hhcmQnKSB7CiAgICAKICAgICAgcmV0dXJuICh0dXJuRGF0YS5kaXJlY3Rpb249PSdsdHInKSA/CiAgICAgICAgWyhvZGQpID8gJ3InIDogJ2wnXSA6CiAgICAgICAgWyhvZGQpID8gJ2wnIDogJ3InXTsKCiAgICB9IGVsc2UgewoKICAgICAgaWYgKHR1cm5EYXRhLmRpc3BsYXk9PSdzaW5nbGUnKSB7CgogICAgICAgIGlmIChwYWdlPT0xKQogICAgICAgICAgcmV0dXJuICh0dXJuRGF0YS5kaXJlY3Rpb249PSdsdHInKSA/CiAgICAgICAgICAgIGNvcm5lcnNbJ2ZvcndhcmQnXSA6IGNvcm5lcnNbJ2JhY2t3YXJkJ107CiAgICAgICAgZWxzZSBpZiAocGFnZT09dHVybkRhdGEudG90YWxQYWdlcykKICAgICAgICAgIHJldHVybiAodHVybkRhdGEuZGlyZWN0aW9uPT0nbHRyJykgPwogICAgICAgICAgICBjb3JuZXJzWydiYWNrd2FyZCddIDogY29ybmVyc1snZm9yd2FyZCddOwogICAgICAgIGVsc2UKICAgICAgICAgIHJldHVybiBjb3JuZXJzWydhbGwnXTsKCiAgICAgIH0gZWxzZSB7CgogICAgICAgIHJldHVybiAodHVybkRhdGEuZGlyZWN0aW9uPT0nbHRyJykgPwogICAgICAgICAgY29ybmVyc1sob2RkKSA/ICdmb3J3YXJkJyA6ICdiYWNrd2FyZCddCiAgICAgICAgICA6CiAgICAgICAgICBjb3JuZXJzWyhvZGQpID8gJ2JhY2t3YXJkJyA6ICdmb3J3YXJkJ107CgogICAgICB9CgogICAgfQoKICB9LAoKICBfY29ybmVyQWN0aXZhdGVkOiBmdW5jdGlvbihwKSB7CgogICAgdmFyIGRhdGEgPSB0aGlzLmRhdGEoKS5mLAogICAgICB3aWR0aCA9IHRoaXMud2lkdGgoKSwKICAgICAgaGVpZ2h0ID0gdGhpcy5oZWlnaHQoKSwKICAgICAgcG9pbnQgPSB7eDogcC54LCB5OiBwLnksIGNvcm5lcjogJyd9LAogICAgICBjc3ogPSBkYXRhLm9wdHMuY29ybmVyU2l6ZTsKCiAgICBpZiAocG9pbnQueDw9MCB8fCBwb2ludC55PD0wIHx8IHBvaW50Lng+PXdpZHRoIHx8IHBvaW50Lnk+PWhlaWdodCkKICAgICAgcmV0dXJuIGZhbHNlOwoKICAgIHZhciBhbGxvd2VkQ29ybmVycyA9IGZsaXBNZXRob2RzLl9jQWxsb3dlZC5jYWxsKHRoaXMpOwoKICAgIHN3aXRjaCAoZGF0YS5lZmZlY3QpIHsKICAgICAgY2FzZSAnaGFyZCc6CiAgICAgICAgCiAgICAgICAgaWYgKHBvaW50Lng+d2lkdGgtY3N6KQogICAgICAgICAgcG9pbnQuY29ybmVyID0gJ3InOwogICAgICAgIGVsc2UgaWYgKHBvaW50Lng8Y3N6KQogICAgICAgICAgcG9pbnQuY29ybmVyID0gJ2wnOwogICAgICAgIGVsc2UKICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgCiAgICAgICAgYnJlYWs7CgogICAgICBjYXNlICdzaGVldCc6CiAgICAgICAgCiAgICAgICAgaWYgKHBvaW50Lnk8Y3N6KQogICAgICAgICAgcG9pbnQuY29ybmVyKz0gJ3QnOwogICAgICAgIGVsc2UgaWYgKHBvaW50Lnk+PWhlaWdodC1jc3opCiAgICAgICAgICBwb2ludC5jb3JuZXIrPSAnYic7CiAgICAgICAgZWxzZQogICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgCiAgICAgICAgaWYgKHBvaW50Lng8PWNzeikKICAgICAgICAgIHBvaW50LmNvcm5lcis9ICdsJzsKICAgICAgICBlbHNlIGlmIChwb2ludC54Pj13aWR0aC1jc3opCiAgICAgICAgICBwb2ludC5jb3JuZXIrPSAncic7CiAgICAgICAgZWxzZQogICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgICAgIGJyZWFrOwogICAgICB9CgogICAgcmV0dXJuICghcG9pbnQuY29ybmVyIHx8ICQuaW5BcnJheShwb2ludC5jb3JuZXIsIGFsbG93ZWRDb3JuZXJzKT09LTEpID8KICAgICAgZmFsc2UgOiBwb2ludDsKCiAgfSwKCiAgX2lzSUFyZWE6IGZ1bmN0aW9uKGUpIHsKCiAgICB2YXIgcG9zID0gdGhpcy5kYXRhKCkuZi5wYXJlbnQub2Zmc2V0KCk7CgogICAgZSA9IChpc1RvdWNoICYmIGUub3JpZ2luYWxFdmVudCkgPyBlLm9yaWdpbmFsRXZlbnQudG91Y2hlc1swXSA6IGU7CgogICAgcmV0dXJuIGZsaXBNZXRob2RzLl9jb3JuZXJBY3RpdmF0ZWQuY2FsbCh0aGlzLAogICAgICB7CiAgICAgICAgeDogZS5wYWdlWC1wb3MubGVmdCwKICAgICAgICB5OiBlLnBhZ2VZLXBvcy50b3AKICAgICAgfSk7CgogIH0sCgogIF9jOiBmdW5jdGlvbihjb3JuZXIsIG9wdHMpIHsKCiAgICBvcHRzID0gb3B0cyB8fCAwOwoKICAgIHN3aXRjaCAoY29ybmVyKSB7CiAgICAgIGNhc2UgJ3RsJzoKICAgICAgICByZXR1cm4gcG9pbnQyRChvcHRzLCBvcHRzKTsKICAgICAgY2FzZSAndHInOgogICAgICAgIHJldHVybiBwb2ludDJEKHRoaXMud2lkdGgoKS1vcHRzLCBvcHRzKTsKICAgICAgY2FzZSAnYmwnOgogICAgICAgIHJldHVybiBwb2ludDJEKG9wdHMsIHRoaXMuaGVpZ2h0KCktb3B0cyk7CiAgICAgIGNhc2UgJ2JyJzoKICAgICAgICByZXR1cm4gcG9pbnQyRCh0aGlzLndpZHRoKCktb3B0cywgdGhpcy5oZWlnaHQoKS1vcHRzKTsKICAgICAgY2FzZSAnbCc6CiAgICAgICAgcmV0dXJuIHBvaW50MkQob3B0cywgMCk7CiAgICAgIGNhc2UgJ3InOgogICAgICAgIHJldHVybiBwb2ludDJEKHRoaXMud2lkdGgoKS1vcHRzLCAwKTsKICAgIH0KCiAgfSwKCiAgX2MyOiBmdW5jdGlvbihjb3JuZXIpIHsKCiAgICBzd2l0Y2ggKGNvcm5lcikgewogICAgICBjYXNlICd0bCc6CiAgICAgICAgcmV0dXJuIHBvaW50MkQodGhpcy53aWR0aCgpKjIsIDApOwogICAgICBjYXNlICd0cic6CiAgICAgICAgcmV0dXJuIHBvaW50MkQoLXRoaXMud2lkdGgoKSwgMCk7CiAgICAgIGNhc2UgJ2JsJzoKICAgICAgICByZXR1cm4gcG9pbnQyRCh0aGlzLndpZHRoKCkqMiwgdGhpcy5oZWlnaHQoKSk7CiAgICAgIGNhc2UgJ2JyJzoKICAgICAgICByZXR1cm4gcG9pbnQyRCgtdGhpcy53aWR0aCgpLCB0aGlzLmhlaWdodCgpKTsKICAgICAgY2FzZSAnbCc6CiAgICAgICAgcmV0dXJuIHBvaW50MkQodGhpcy53aWR0aCgpKjIsIDApOwogICAgICBjYXNlICdyJzoKICAgICAgICByZXR1cm4gcG9pbnQyRCgtdGhpcy53aWR0aCgpLCAwKTsKICAgIH0KCiAgfSwKCiAgX2ZvbGRpbmdQYWdlOiBmdW5jdGlvbigpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLmY7CgogICAgaWYgKCFkYXRhKQogICAgICByZXR1cm47CgogICAgdmFyIG9wdHMgPSBkYXRhLm9wdHM7CgogICAgaWYgKG9wdHMudHVybikgewogICAgICBkYXRhID0gb3B0cy50dXJuLmRhdGEoKTsKICAgICAgaWYgKGRhdGEuZGlzcGxheSA9PSAnc2luZ2xlJykKICAgICAgICByZXR1cm4gKG9wdHMubmV4dD4xIHx8IG9wdHMucGFnZT4xKSA/IGRhdGEucGFnZU9ianNbMF0gOiBudWxsOwogICAgICBlbHNlCiAgICAgICAgcmV0dXJuIGRhdGEucGFnZU9ianNbb3B0cy5uZXh0XTsKICAgIH0KCiAgfSwKCiAgX2JhY2tHcmFkaWVudDogZnVuY3Rpb24oKSB7CgogICAgdmFyIGRhdGEgPSB0aGlzLmRhdGEoKS5mLAogICAgICB0dXJuRGF0YSA9IGRhdGEub3B0cy50dXJuLmRhdGEoKSwKICAgICAgZ3JhZGllbnQgPSAgdHVybkRhdGEub3B0cy5ncmFkaWVudHMgJiYgKHR1cm5EYXRhLmRpc3BsYXk9PSdzaW5nbGUnIHx8CiAgICAgICAgIChkYXRhLm9wdHMucGFnZSE9MiAmJiBkYXRhLm9wdHMucGFnZSE9dHVybkRhdGEudG90YWxQYWdlcy0xKSk7CgogICAgaWYgKGdyYWRpZW50ICYmICFkYXRhLmJzaGFkb3cpCiAgICAgIGRhdGEuYnNoYWRvdyA9ICQoJzxkaXYvPicsIGRpdkF0dCgwLCAwLCAxKSkuCiAgICAgICAgY3NzKHsncG9zaXRpb24nOiAnJywgd2lkdGg6IHRoaXMud2lkdGgoKSwgaGVpZ2h0OiB0aGlzLmhlaWdodCgpfSkuCiAgICAgICAgYXBwZW5kVG8oZGF0YS5wYXJlbnQpOwoKICAgIHJldHVybiBncmFkaWVudDsKCiAgfSwKCiAgdHlwZTogZnVuY3Rpb24gKCkgewogICAgCiAgICByZXR1cm4gdGhpcy5kYXRhKCkuZi5lZmZlY3Q7CgogIH0sCgogIHJlc2l6ZTogZnVuY3Rpb24oZnVsbCkgewogICAgCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLmYsCiAgICAgIHR1cm5EYXRhID0gZGF0YS5vcHRzLnR1cm4uZGF0YSgpLAogICAgICB3aWR0aCA9IHRoaXMud2lkdGgoKSwKICAgICAgaGVpZ2h0ID0gdGhpcy5oZWlnaHQoKTsKCiAgICBzd2l0Y2ggKGRhdGEuZWZmZWN0KSB7CiAgICAgIGNhc2UgJ2hhcmQnOgogICAgICAgIAogICAgICBpZiAoZnVsbCkgewogICAgICAgIGRhdGEud3JhcHBlci5jc3Moe3dpZHRoOiB3aWR0aCwgaGVpZ2h0OiBoZWlnaHR9KTsKICAgICAgICBkYXRhLmZwYWdlLmNzcyh7d2lkdGg6IHdpZHRoLCBoZWlnaHQ6IGhlaWdodH0pOwogICAgICAgIGlmICh0dXJuRGF0YS5vcHRzLmdyYWRpZW50cykgewogICAgICAgICAgZGF0YS5hc2hhZG93LmNzcyh7d2lkdGg6IHdpZHRoLCBoZWlnaHQ6IGhlaWdodH0pOwogICAgICAgICAgZGF0YS5ic2hhZG93LmNzcyh7d2lkdGg6IHdpZHRoLCBoZWlnaHQ6IGhlaWdodH0pOwogICAgICAgIH0KICAgICAgfQoKICAgICAgYnJlYWs7CiAgICAgIGNhc2UgJ3NoZWV0JzoKCiAgICAgIGlmIChmdWxsKSB7CiAgICAgICAgdmFyIHNpemUgPSBNYXRoLnJvdW5kKE1hdGguc3FydChNYXRoLnBvdyh3aWR0aCwgMikrTWF0aC5wb3coaGVpZ2h0LCAyKSkpOwoKICAgICAgICBkYXRhLndyYXBwZXIuY3NzKHt3aWR0aDogc2l6ZSwgaGVpZ2h0OiBzaXplfSk7CiAgICAgICAgZGF0YS5md3JhcHBlci5jc3Moe3dpZHRoOiBzaXplLCBoZWlnaHQ6IHNpemV9KS4KICAgICAgICAgIGNoaWxkcmVuKCc6Zmlyc3QtY2hpbGQnKS4KICAgICAgICAgIGNzcyh7d2lkdGg6IHdpZHRoLCBoZWlnaHQ6IGhlaWdodH0pOwoKICAgICAgICBkYXRhLmZwYWdlLmNzcyh7d2lkdGg6IHdpZHRoLCBoZWlnaHQ6IGhlaWdodH0pOwoKICAgICAgICBpZiAodHVybkRhdGEub3B0cy5ncmFkaWVudHMpCiAgICAgICAgICBkYXRhLmFzaGFkb3cuY3NzKHt3aWR0aDogd2lkdGgsIGhlaWdodDogaGVpZ2h0fSk7CgogICAgICAgIGlmIChmbGlwTWV0aG9kcy5fYmFja0dyYWRpZW50LmNhbGwodGhpcykpCiAgICAgICAgICBkYXRhLmJzaGFkb3cuY3NzKHt3aWR0aDogd2lkdGgsIGhlaWdodDogaGVpZ2h0fSk7CiAgICAgIH0KCiAgICAgIGlmIChkYXRhLnBhcmVudC5pcygnOnZpc2libGUnKSkgewogICAgICAgIHZhciBvZmZzZXQgPSBmaW5kUG9zKGRhdGEucGFyZW50WzBdKTsKCiAgICAgICAgZGF0YS5md3JhcHBlci5jc3Moe3RvcDogb2Zmc2V0LnRvcCwKICAgICAgICAgIGxlZnQ6IG9mZnNldC5sZWZ0fSk7CgogICAgICAgIC8vaWYgKGRhdGEub3B0cy50dXJuKSB7CiAgICAgICAgIG9mZnNldCA9IGZpbmRQb3MoZGF0YS5vcHRzLnR1cm5bMF0pOwogICAgICAgICBkYXRhLmZwYXJlbnQuY3NzKHt0b3A6IC1vZmZzZXQudG9wLCBsZWZ0OiAtb2Zmc2V0LmxlZnR9KTsKICAgICAgICAvL30KICAgICAgfQoKICAgICAgdGhpcy5mbGlwKCd6JywgZGF0YS5vcHRzWyd6LWluZGV4J10pOwoKICAgICAgYnJlYWs7CiAgICB9CgogIH0sCgogIC8vIFByZXBhcmVzIHRoZSBwYWdlIGJ5IGFkZGluZyBhIGdlbmVyYWwgd3JhcHBlciBhbmQgYW5vdGhlciBvYmplY3RzCgogIF9hZGRQYWdlV3JhcHBlcjogZnVuY3Rpb24oKSB7CgogICAgdmFyIGF0dCwKICAgICAgZGF0YSA9IHRoaXMuZGF0YSgpLmYsCiAgICAgIHR1cm5EYXRhID0gZGF0YS5vcHRzLnR1cm4uZGF0YSgpLAogICAgICBwYXJlbnQgPSB0aGlzLnBhcmVudCgpOwoKICAgIGRhdGEucGFyZW50ID0gcGFyZW50OwoKICBpZiAoIWRhdGEud3JhcHBlcikKICAgIHN3aXRjaCAoZGF0YS5lZmZlY3QpIHsKICAgICAgY2FzZSAnaGFyZCc6CiAgICAgICAgCiAgICAgICAgdmFyIGNzc1Byb3BlcnRpZXMgPSB7fTsKICAgICAgICBjc3NQcm9wZXJ0aWVzW3ZlbmRvciArICd0cmFuc2Zvcm0tc3R5bGUnXSA9ICdwcmVzZXJ2ZS0zZCc7CiAgICAgICAgY3NzUHJvcGVydGllc1t2ZW5kb3IgKyAnYmFja2ZhY2UtdmlzaWJpbGl0eSddID0gJ2hpZGRlbic7CgogICAgICAgIGRhdGEud3JhcHBlciA9ICQoJzxkaXYvPicsIGRpdkF0dCgwLCAwLCAyKSkuCiAgICAgICAgICBjc3MoY3NzUHJvcGVydGllcykuCiAgICAgICAgICBhcHBlbmRUbyhwYXJlbnQpLgogICAgICAgICAgcHJlcGVuZCh0aGlzKTsKCiAgICAgICAgZGF0YS5mcGFnZSA9ICQoJzxkaXYvPicsIGRpdkF0dCgwLCAwLCAxKSkuCiAgICAgICAgICBjc3MoY3NzUHJvcGVydGllcykuCiAgICAgICAgICBhcHBlbmRUbyhwYXJlbnQpOwogICAgICAgIAogICAgICAgIGlmICh0dXJuRGF0YS5vcHRzLmdyYWRpZW50cykgewogICAgICAgICAgZGF0YS5hc2hhZG93ID0gJCgnPGRpdi8+JywgZGl2QXR0KDAsIDAsICAwKSkuCiAgICAgICAgICAgIGhpZGUoKS4KICAgICAgICAgICAgYXBwZW5kVG8ocGFyZW50KTsKCiAgICAgICAgICBkYXRhLmJzaGFkb3cgPSAkKCc8ZGl2Lz4nLCBkaXZBdHQoMCwgMCwgIDApKTsKICAgICAgICB9CgogICAgICBicmVhazsKICAgICAgY2FzZSAnc2hlZXQnOgogICAgICAgIAogICAgICAgIHZhciB3aWR0aCA9IHRoaXMud2lkdGgoKSwKICAgICAgICAgIGhlaWdodCA9IHRoaXMuaGVpZ2h0KCksCiAgICAgICAgICBzaXplID0gTWF0aC5yb3VuZChNYXRoLnNxcnQoTWF0aC5wb3cod2lkdGgsIDIpK01hdGgucG93KGhlaWdodCwgMikpKTsKICAgICAgICAKICAgICAgICBkYXRhLmZwYXJlbnQgPSBkYXRhLm9wdHMudHVybi5kYXRhKCkuZnBhcmVudDsKCiAgICAgICAgaWYgKCFkYXRhLmZwYXJlbnQpIHsKICAgICAgICAgIHZhciBmcGFyZW50ID0gJCgnPGRpdi8+Jywge2Nzczogeydwb2ludGVyLWV2ZW50cyc6ICdub25lJ319KS5oaWRlKCk7CiAgICAgICAgICAgIGZwYXJlbnQuZGF0YSgpLmZsaXBzID0gMDsKICAgICAgICAgICAgZnBhcmVudC5jc3MoZGl2QXR0KDAsIDAsICdhdXRvJywgJ3Zpc2libGUnKS5jc3MpLgogICAgICAgICAgICBhcHBlbmRUbyhkYXRhLm9wdHMudHVybik7CiAgICAgICAgICAgIAogICAgICAgICAgICBkYXRhLm9wdHMudHVybi5kYXRhKCkuZnBhcmVudCA9IGZwYXJlbnQ7CiAgICAgICAgICAgIGRhdGEuZnBhcmVudCA9IGZwYXJlbnQ7CiAgICAgICAgfQoKICAgICAgICB0aGlzLmNzcyh7cG9zaXRpb246ICdhYnNvbHV0ZScsIHRvcDogMCwgbGVmdDogMCwgYm90dG9tOiAnYXV0bycsIHJpZ2h0OiAnYXV0byd9KTsKCiAgICAgICAgZGF0YS53cmFwcGVyID0gJCgnPGRpdi8+JywgZGl2QXR0KDAsIDAsIHRoaXMuY3NzKCd6LWluZGV4JykpKS4KICAgICAgICAgIGFwcGVuZFRvKHBhcmVudCkuCiAgICAgICAgICBwcmVwZW5kKHRoaXMpOwoKICAgICAgICBkYXRhLmZ3cmFwcGVyID0gJCgnPGRpdi8+JywgZGl2QXR0KHBhcmVudC5vZmZzZXQoKS50b3AsIHBhcmVudC5vZmZzZXQoKS5sZWZ0KSkuCiAgICAgICAgICBoaWRlKCkuCiAgICAgICAgICBhcHBlbmRUbyhkYXRhLmZwYXJlbnQpOwoKICAgICAgICBkYXRhLmZwYWdlID0gJCgnPGRpdi8+JywgZGl2QXR0KDAsIDAsIDAsICd2aXNpYmxlJykpLgogICAgICAgICAgY3NzKHtjdXJzb3I6ICdkZWZhdWx0J30pLgogICAgICAgICAgYXBwZW5kVG8oZGF0YS5md3JhcHBlcik7CgogICAgICAgIGlmICh0dXJuRGF0YS5vcHRzLmdyYWRpZW50cykKICAgICAgICAgIGRhdGEuYXNoYWRvdyA9ICQoJzxkaXYvPicsIGRpdkF0dCgwLCAwLCAgMSkpLgogICAgICAgICAgYXBwZW5kVG8oZGF0YS5mcGFnZSk7CgogICAgICAgIGZsaXBNZXRob2RzLnNldERhdGEuY2FsbCh0aGlzLCBkYXRhKTsKCiAgICAgIGJyZWFrOwogICAgfQoKICAgIC8vIFNldCBzaXplCiAgICBmbGlwTWV0aG9kcy5yZXNpemUuY2FsbCh0aGlzLCB0cnVlKTsKCiAgfSwKCiAgLy8gVGFrZXMgYSAyUCBwb2ludCBmcm9tIHRoZSBzY3JlZW4gYW5kIGFwcGxpZXMgdGhlIHRyYW5zZm9ybWF0aW9uCgogIF9mb2xkOiBmdW5jdGlvbihwb2ludCkgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCkuZiwKICAgICAgdHVybkRhdGEgPSBkYXRhLm9wdHMudHVybi5kYXRhKCksCiAgICAgIG8gPSBmbGlwTWV0aG9kcy5fYy5jYWxsKHRoaXMsIHBvaW50LmNvcm5lciksCiAgICAgIHdpZHRoID0gdGhpcy53aWR0aCgpLAogICAgICBoZWlnaHQgPSB0aGlzLmhlaWdodCgpOwoKICAgIHN3aXRjaCAoZGF0YS5lZmZlY3QpIHsKCiAgICAgIGNhc2UgJ2hhcmQnOgoKICAgICAgICBpZiAocG9pbnQuY29ybmVyPT0nbCcpCiAgICAgICAgICBwb2ludC54ID0gTWF0aC5taW4oTWF0aC5tYXgocG9pbnQueCwgMCksIHdpZHRoKjIpOwogICAgICAgIGVsc2UKICAgICAgICAgIHBvaW50LnggPSBNYXRoLm1heChNYXRoLm1pbihwb2ludC54LCB3aWR0aCksIC13aWR0aCk7CgogICAgICAgIHZhciBsZWZ0UG9zLAogICAgICAgICAgc2hhZG93LAogICAgICAgICAgZ3JhZGllbnRYLAogICAgICAgICAgZnBhZ2VPcmlnaW4sCiAgICAgICAgICBwYXJlbnRPcmlnaW4sCiAgICAgICAgICB0b3RhbFBhZ2VzID0gdHVybkRhdGEudG90YWxQYWdlcywKICAgICAgICAgIHpJbmRleCA9IGRhdGEub3B0c1snei1pbmRleCddIHx8IHRvdGFsUGFnZXMsCiAgICAgICAgICBwYXJlbnRDc3MgPSB7J292ZXJmbG93JzogJ3Zpc2libGUnfSwKICAgICAgICAgIHJlbFggPSAoby54KSA/IChvLnggLSBwb2ludC54KS93aWR0aCA6IHBvaW50Lngvd2lkdGgsCiAgICAgICAgICBhbmdsZSA9IHJlbFggKiA5MCwKICAgICAgICAgIGhhbGYgPSBhbmdsZTw5MDsKCiAgICAgICAgc3dpdGNoIChwb2ludC5jb3JuZXIpIHsKICAgICAgICAgIGNhc2UgJ2wnOgoKICAgICAgICAgICAgZnBhZ2VPcmlnaW4gPSAgJzAlIDUwJSc7CiAgICAgICAgICAgIHBhcmVudE9yaWdpbiA9ICAnMTAwJSA1MCUnOwoKICAgICAgICAgICAgaWYgKGhhbGYpIHsKICAgICAgICAgICAgICBsZWZ0UG9zID0gMDsKICAgICAgICAgICAgICBzaGFkb3cgPSBkYXRhLm9wdHMubmV4dC0xPjA7CiAgICAgICAgICAgICAgZ3JhZGllbnRYID0gMTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICBsZWZ0UG9zID0gJzEwMCUnOwogICAgICAgICAgICAgIHNoYWRvdyA9IGRhdGEub3B0cy5wYWdlKzE8dG90YWxQYWdlczsKICAgICAgICAgICAgICBncmFkaWVudFggPSAwOwogICAgICAgICAgICB9CgogICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlICdyJzoKCiAgICAgICAgICAgIGZwYWdlT3JpZ2luID0gICcxMDAlIDUwJSc7CiAgICAgICAgICAgIHBhcmVudE9yaWdpbiA9ICAnMCUgNTAlJzsKICAgICAgICAgICAgYW5nbGUgPSAtYW5nbGU7CiAgICAgICAgICAgIHdpZHRoID0gLXdpZHRoOwoKICAgICAgICAgICAgaWYgKGhhbGYpIHsKICAgICAgICAgICAgICBsZWZ0UG9zID0gMDsKICAgICAgICAgICAgICBzaGFkb3cgPSBkYXRhLm9wdHMubmV4dCsxPHRvdGFsUGFnZXM7CiAgICAgICAgICAgICAgZ3JhZGllbnRYID0gMDsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICBsZWZ0UG9zID0gJy0xMDAlJzsKICAgICAgICAgICAgICBzaGFkb3cgPSBkYXRhLm9wdHMucGFnZSE9MTsKICAgICAgICAgICAgICBncmFkaWVudFggPSAxOwogICAgICAgICAgICB9CgogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgICBwYXJlbnRDc3NbdmVuZG9yKydwZXJzcGVjdGl2ZS1vcmlnaW4nXSA9IHBhcmVudE9yaWdpbjsKCiAgICAgICAgZGF0YS53cmFwcGVyLnRyYW5zZm9ybSgncm90YXRlWSgnK2FuZ2xlKydkZWcpJyArCiAgICAgICAgICAndHJhbnNsYXRlM2QoMHB4LCAwcHgsICcrKHRoaXMuYXR0cignZGVwdGgnKXx8MCkrJ3B4KScsIHBhcmVudE9yaWdpbik7CgogICAgICAgIGRhdGEuZnBhZ2UudHJhbnNmb3JtKCd0cmFuc2xhdGVYKCcrd2lkdGgrJ3B4KSByb3RhdGVZKCcrKDE4MCthbmdsZSkrJ2RlZyknLCBmcGFnZU9yaWdpbik7CgogICAgICAgIGRhdGEucGFyZW50LmNzcyhwYXJlbnRDc3MpOwoKICAgICAgICBpZiAoaGFsZikgewogICAgICAgICAgcmVsWCA9IC1yZWxYKzE7CiAgICAgICAgICBkYXRhLndyYXBwZXIuY3NzKHt6SW5kZXg6IHpJbmRleCsxfSk7CiAgICAgICAgICBkYXRhLmZwYWdlLmNzcyh7ekluZGV4OiB6SW5kZXh9KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcmVsWCA9IHJlbFgtMTsKICAgICAgICAgIGRhdGEud3JhcHBlci5jc3Moe3pJbmRleDogekluZGV4fSk7CiAgICAgICAgICBkYXRhLmZwYWdlLmNzcyh7ekluZGV4OiB6SW5kZXgrMX0pOwogICAgICAgIH0KCiAgICAgICAgaWYgKHR1cm5EYXRhLm9wdHMuZ3JhZGllbnRzKSB7CiAgICAgICAgICBpZiAoc2hhZG93KQogICAgICAgICAgICBkYXRhLmFzaGFkb3cuY3NzKHsKICAgICAgICAgICAgICBkaXNwbGF5OiAnJywKICAgICAgICAgICAgICBsZWZ0OiBsZWZ0UG9zLAogICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3JnYmEoMCwwLDAsJysoMC41KnJlbFgpKycpJwogICAgICAgICAgICB9KS4KICAgICAgICAgICAgdHJhbnNmb3JtKCdyb3RhdGVZKDBkZWcpJyk7CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgIGRhdGEuYXNoYWRvdy5oaWRlKCk7CgogICAgICAgICAgZGF0YS5ic2hhZG93LmNzcyh7b3BhY2l0eTotcmVsWCArIDF9KTsKCiAgICAgICAgICBpZiAoaGFsZikgewogICAgICAgICAgICBpZiAoZGF0YS5ic2hhZG93LnBhcmVudCgpWzBdIT1kYXRhLndyYXBwZXJbMF0pIHsKICAgICAgICAgICAgICBkYXRhLmJzaGFkb3cuYXBwZW5kVG8oZGF0YS53cmFwcGVyKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKGRhdGEuYnNoYWRvdy5wYXJlbnQoKVswXSE9ZGF0YS5mcGFnZVswXSkgewogICAgICAgICAgICAgIGRhdGEuYnNoYWRvdy5hcHBlbmRUbyhkYXRhLmZwYWdlKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgLypkYXRhLmJzaGFkb3cuY3NzKHsKICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAncmdiYSgwLDAsMCwnKygwLjEpKycpJwogICAgICAgICAgfSkqLwogICAgICAgICAgZ3JhZGllbnQoZGF0YS5ic2hhZG93LCBwb2ludDJEKGdyYWRpZW50WCAqIDEwMCwgMCksIHBvaW50MkQoKC1ncmFkaWVudFggKyAxKSoxMDAsIDApLAogICAgICAgICAgICBbWzAsICdyZ2JhKDAsMCwwLDAuMyknXSxbMSwgJ3JnYmEoMCwwLDAsMCknXV0sMik7CiAgICAgICAgICAKICAgICAgICB9CgogICAgICAgIGJyZWFrOwogICAgICBjYXNlICdzaGVldCc6CgogICAgICAgIHZhciB0aGF0ID0gdGhpcywKICAgICAgICAgIGEgPSAwLAogICAgICAgICAgYWxwaGEgPSAwLAogICAgICAgICAgYmV0YSwKICAgICAgICAgIHB4LAogICAgICAgICAgZ3JhZGllbnRFbmRQb2ludEEsCiAgICAgICAgICBncmFkaWVudEVuZFBvaW50QiwKICAgICAgICAgIGdyYWRpZW50U3RhcnRWYWwsCiAgICAgICAgICBncmFkaWVudFNpemUsCiAgICAgICAgICBncmFkaWVudE9wYWNpdHksCiAgICAgICAgICBzaGFkb3dWYWwsCiAgICAgICAgICBtdiA9IHBvaW50MkQoMCwgMCksCiAgICAgICAgICBkZiA9IHBvaW50MkQoMCwgMCksCiAgICAgICAgICB0ciA9IHBvaW50MkQoMCwgMCksCiAgICAgICAgICBmb2xkaW5nID0gZmxpcE1ldGhvZHMuX2ZvbGRpbmdQYWdlLmNhbGwodGhpcyksCiAgICAgICAgICB0YW4gPSBNYXRoLnRhbihhbHBoYSksCiAgICAgICAgICBhYyA9IHR1cm5EYXRhLm9wdHMuYWNjZWxlcmF0aW9uLAogICAgICAgICAgaCA9IGRhdGEud3JhcHBlci5oZWlnaHQoKSwKICAgICAgICAgIHRvcCA9IHBvaW50LmNvcm5lci5zdWJzdHIoMCwgMSkgPT0gJ3QnLAogICAgICAgICAgbGVmdCA9IHBvaW50LmNvcm5lci5zdWJzdHIoMSwgMSkgPT0gJ2wnLAoKICAgICAgY29tcHV0ZSA9IGZ1bmN0aW9uKCkgewoKICAgICAgICB2YXIgcmVsID0gcG9pbnQyRCgwLCAwKTsKICAgICAgICB2YXIgbWlkZGxlID0gcG9pbnQyRCgwLCAwKTsKCiAgICAgICAgcmVsLnggPSAoby54KSA/IG8ueCAtIHBvaW50LnggOiBwb2ludC54OwoKICAgICAgICBpZiAoIWhhc1JvdCkgewogICAgICAgICAgcmVsLnkgPSAwOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICByZWwueSA9IChvLnkpID8gby55IC0gcG9pbnQueSA6IHBvaW50Lnk7CiAgICAgICAgfQoKICAgICAgICBtaWRkbGUueCA9IChsZWZ0KT8gd2lkdGggLSByZWwueC8yIDogcG9pbnQueCArIHJlbC54LzI7CiAgICAgICAgbWlkZGxlLnkgPSByZWwueS8yOwogICAgICAgIAogICAgICAgIHZhciBhbHBoYSA9ICBBOTAtTWF0aC5hdGFuMihyZWwueSwgcmVsLngpLAogICAgICAgICAgZ2FtbWEgPSBhbHBoYSAtIE1hdGguYXRhbjIobWlkZGxlLnksIG1pZGRsZS54KSwKICAgICAgICAgIGRpc3RhbmNlID0gIE1hdGgubWF4KDAsIE1hdGguc2luKGdhbW1hKSAqIE1hdGguc3FydChNYXRoLnBvdyhtaWRkbGUueCwgMikgKyBNYXRoLnBvdyhtaWRkbGUueSwgMikpKTsKICAgICAgICAgIAogICAgICAgICAgYSA9IGRlZyhhbHBoYSk7CgogICAgICAgICAgdHIgPSBwb2ludDJEKGRpc3RhbmNlICogTWF0aC5zaW4oYWxwaGEpLCBkaXN0YW5jZSAqIE1hdGguY29zKGFscGhhKSk7CgogICAgICAgICAgaWYgKGFscGhhID4gQTkwKSB7CiAgICAgICAgICAgIHRyLnggPSB0ci54ICsgTWF0aC5hYnModHIueSAqIHJlbC55L3JlbC54KTsKICAgICAgICAgICAgdHIueSA9IDA7CiAgICAgICAgICAgIGlmIChNYXRoLnJvdW5kKHRyLngqTWF0aC50YW4oUEktYWxwaGEpKSA8IGhlaWdodCkgewogICAgICAgICAgICAgIHBvaW50LnkgPSBNYXRoLnNxcnQoTWF0aC5wb3coaGVpZ2h0LCAyKSsyICogbWlkZGxlLnggKiByZWwueCk7CiAgICAgICAgICAgICAgaWYgKHRvcCkgcG9pbnQueSA9ICBoZWlnaHQgLSBwb2ludC55OwogICAgICAgICAgICAgIHJldHVybiBjb21wdXRlKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgCiAgICAgICAgICBpZiAoYWxwaGE+QTkwKSB7CiAgICAgICAgICAgIHZhciBiZXRhID0gUEktYWxwaGEsIGRkID0gaCAtIGhlaWdodC9NYXRoLnNpbihiZXRhKTsKICAgICAgICAgICAgbXYgPSBwb2ludDJEKE1hdGgucm91bmQoZGQqTWF0aC5jb3MoYmV0YSkpLCBNYXRoLnJvdW5kKGRkKk1hdGguc2luKGJldGEpKSk7CiAgICAgICAgICAgIGlmIChsZWZ0KSBtdi54ID0gLSBtdi54OwogICAgICAgICAgICBpZiAodG9wKSBtdi55ID0gLSBtdi55OwogICAgICAgICAgfQoKICAgICAgICAgIHB4ID0gTWF0aC5yb3VuZCh0ci55L01hdGgudGFuKGFscGhhKSArIHRyLngpOwogICAgICAKICAgICAgICAgIHZhciBzaWRlID0gd2lkdGggLSBweCwKICAgICAgICAgICAgc2lkZVggPSBzaWRlKk1hdGguY29zKGFscGhhKjIpLAogICAgICAgICAgICBzaWRlWSA9IHNpZGUqTWF0aC5zaW4oYWxwaGEqMik7CiAgICAgICAgICAgIGRmID0gcG9pbnQyRCgKICAgICAgICAgICAgICBNYXRoLnJvdW5kKChsZWZ0ID8gc2lkZSAtc2lkZVggOiBweCtzaWRlWCkpLAogICAgICAgICAgICAgIE1hdGgucm91bmQoKHRvcCkgPyBzaWRlWSA6IGhlaWdodCAtIHNpZGVZKSk7CiAgICAgICAgICAKICAgICAgICAvLyBHcmFkaWVudHMKICAgICAgICAgIGlmICh0dXJuRGF0YS5vcHRzLmdyYWRpZW50cykgewoKICAgICAgICAgICAgZ3JhZGllbnRTaXplID0gc2lkZSpNYXRoLnNpbihhbHBoYSk7CgogICAgICAgICAgICB2YXIgZW5kaW5nUG9pbnQgPSBmbGlwTWV0aG9kcy5fYzIuY2FsbCh0aGF0LCBwb2ludC5jb3JuZXIpLAogICAgICAgICAgICAgZmFyID0gTWF0aC5zcXJ0KE1hdGgucG93KGVuZGluZ1BvaW50LngtcG9pbnQueCwgMikrTWF0aC5wb3coZW5kaW5nUG9pbnQueS1wb2ludC55LCAyKSkvd2lkdGg7CgogICAgICAgICAgICBzaGFkb3dWYWwgPSBNYXRoLnNpbihBOTAqKChmYXI+MSkgPyAyIC0gZmFyIDogZmFyKSk7CgogICAgICAgICAgICBncmFkaWVudE9wYWNpdHkgPSBNYXRoLm1pbihmYXIsIDEpOwoKICAgICAgICAgICAKICAgICAgICAgICAgICBncmFkaWVudFN0YXJ0VmFsID0gZ3JhZGllbnRTaXplPjEwMCA/IChncmFkaWVudFNpemUtMTAwKS9ncmFkaWVudFNpemUgOiAwOwoKICAgICAgICAgICAgICBncmFkaWVudEVuZFBvaW50QSA9IHBvaW50MkQoCiAgICAgICAgICAgICAgICBncmFkaWVudFNpemUqTWF0aC5zaW4oYWxwaGEpL3dpZHRoKjEwMCwKICAgICAgICAgICAgICAgIGdyYWRpZW50U2l6ZSpNYXRoLmNvcyhhbHBoYSkvaGVpZ2h0KjEwMCk7CiAgICAgICAgICAgCgogICAgICAgICAgICAgIGlmIChmbGlwTWV0aG9kcy5fYmFja0dyYWRpZW50LmNhbGwodGhhdCkpIHsKCiAgICAgICAgICAgICAgICBncmFkaWVudEVuZFBvaW50QiA9IHBvaW50MkQoCiAgICAgICAgICAgICAgICAgIGdyYWRpZW50U2l6ZSoxLjIqTWF0aC5zaW4oYWxwaGEpL3dpZHRoKjEwMCwKICAgICAgICAgICAgICAgICAgZ3JhZGllbnRTaXplKjEuMipNYXRoLmNvcyhhbHBoYSkvaGVpZ2h0KjEwMCk7CgogICAgICAgICAgICAgICAgaWYgKCFsZWZ0KSBncmFkaWVudEVuZFBvaW50Qi54ID0gMTAwLWdyYWRpZW50RW5kUG9pbnRCLng7CiAgICAgICAgICAgICAgICBpZiAoIXRvcCkgZ3JhZGllbnRFbmRQb2ludEIueSA9IDEwMC1ncmFkaWVudEVuZFBvaW50Qi55OwoKICAgICAgICAgICAgICB9CgogICAgICAgICAgfQoKICAgICAgICAgIHRyLnggPSBNYXRoLnJvdW5kKHRyLngpOwogICAgICAgICAgdHIueSA9IE1hdGgucm91bmQodHIueSk7CgogICAgICAgIHJldHVybiB0cnVlOwogICAgICB9LAoKICAgICAgdHJhbnNmb3JtID0gZnVuY3Rpb24odHIsIGMsIHgsIGEpIHsKICAgICAgCiAgICAgICAgdmFyIGYgPSBbJzAnLCAnYXV0byddLCBtdlcgPSAod2lkdGgtaCkqeFswXS8xMDAsIG12SCA9IChoZWlnaHQtaCkqeFsxXS8xMDAsCiAgICAgICAgICBjc3NBID0ge2xlZnQ6IGZbY1swXV0sIHRvcDogZltjWzFdXSwgcmlnaHQ6IGZbY1syXV0sIGJvdHRvbTogZltjWzNdXX0sCiAgICAgICAgICBjc3NCID0ge30sCiAgICAgICAgICBhbGlhc2luZ0ZrID0gKGEhPTkwICYmIGEhPS05MCkgPyAobGVmdCA/IC0xIDogMSkgOiAwLAogICAgICAgICAgb3JpZ2luID0geFswXSArICclICcgKyB4WzFdICsgJyUnOwoKICAgICAgICB0aGF0LmNzcyhjc3NBKS4KICAgICAgICAgIHRyYW5zZm9ybShyb3RhdGUoYSkgKyB0cmFuc2xhdGUodHIueCArIGFsaWFzaW5nRmssIHRyLnksIGFjKSwgb3JpZ2luKTsKCiAgICAgICAgZGF0YS5mcGFnZS5jc3MoY3NzQSkudHJhbnNmb3JtKAogICAgICAgICAgcm90YXRlKGEpICsKICAgICAgICAgIHRyYW5zbGF0ZSh0ci54ICsgZGYueCAtIG12LnggLSB3aWR0aCp4WzBdLzEwMCwgdHIueSArIGRmLnkgLSBtdi55IC0gaGVpZ2h0KnhbMV0vMTAwLCBhYykgKwogICAgICAgICAgcm90YXRlKCgxODAvYSAtIDIpKmEpLAogICAgICAgICAgb3JpZ2luKTsKCiAgICAgICAgZGF0YS53cmFwcGVyLnRyYW5zZm9ybSh0cmFuc2xhdGUoLXRyLnggKyBtdlctYWxpYXNpbmdGaywgLXRyLnkgKyBtdkgsIGFjKSArIHJvdGF0ZSgtYSksIG9yaWdpbik7CgogICAgICAgIGRhdGEuZndyYXBwZXIudHJhbnNmb3JtKHRyYW5zbGF0ZSgtdHIueCArIG12LnggKyBtdlcsIC10ci55ICsgbXYueSArIG12SCwgYWMpICsgcm90YXRlKC1hKSwgb3JpZ2luKTsKICAgICAgCiAgICAgICAgaWYgKHR1cm5EYXRhLm9wdHMuZ3JhZGllbnRzKSB7CgogICAgICAgICAgaWYgKHhbMF0pCiAgICAgICAgICAgIGdyYWRpZW50RW5kUG9pbnRBLnggPSAxMDAtZ3JhZGllbnRFbmRQb2ludEEueDsKCiAgICAgICAgICBpZiAoeFsxXSkKICAgICAgICAgICAgZ3JhZGllbnRFbmRQb2ludEEueSA9ICgxMDAtZ3JhZGllbnRFbmRQb2ludEEueSk7CgogICAgICAgICAgY3NzQlsnYm94LXNoYWRvdyddID0gJzAgMCAyMHB4IHJnYmEoMCwwLDAsJysoMC41KnNoYWRvd1ZhbCkrJyknOwogICAgICAgICAgZm9sZGluZy5jc3MoY3NzQik7CgogICAgICAgICAgZ3JhZGllbnQoZGF0YS5hc2hhZG93LAogICAgICAgICAgICAgIHBvaW50MkQobGVmdD8xMDA6MCwgdG9wPzA6MTAwKSwKICAgICAgICAgICAgICBwb2ludDJEKGdyYWRpZW50RW5kUG9pbnRBLngsIGdyYWRpZW50RW5kUG9pbnRBLnkpLAogICAgICAgICAgICAgIFtbZ3JhZGllbnRTdGFydFZhbCwgJ3JnYmEoMCwwLDAsMCknXSwKICAgICAgICAgICAgICBbKCgxLWdyYWRpZW50U3RhcnRWYWwpKjAuOCkrZ3JhZGllbnRTdGFydFZhbCwgJ3JnYmEoMCwwLDAsJysoMC4yKmdyYWRpZW50T3BhY2l0eSkrJyknXSwKICAgICAgICAgICAgICBbMSwgJ3JnYmEoMjU1LDI1NSwyNTUsJysoMC4yKmdyYWRpZW50T3BhY2l0eSkrJyknXV0sCiAgICAgICAgICAgICAgMywKICAgICAgICAgICAgICBhbHBoYSk7CgogICAgICAgICAgaWYgKGZsaXBNZXRob2RzLl9iYWNrR3JhZGllbnQuY2FsbCh0aGF0KSkKICAgICAgICAgICAgZ3JhZGllbnQoZGF0YS5ic2hhZG93LAogICAgICAgICAgICAgICAgcG9pbnQyRChsZWZ0PzA6MTAwLCB0b3A/MDoxMDApLAogICAgICAgICAgICAgICAgcG9pbnQyRChncmFkaWVudEVuZFBvaW50Qi54LCBncmFkaWVudEVuZFBvaW50Qi55KSwKICAgICAgICAgICAgICAgIFtbMC42LCAncmdiYSgwLDAsMCwwKSddLAogICAgICAgICAgICAgICAgWzAuOCwgJ3JnYmEoMCwwLDAsJysoMC4zKmdyYWRpZW50T3BhY2l0eSkrJyknXSwKICAgICAgICAgICAgICAgIFsxLCAncmdiYSgwLDAsMCwwKSddCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgMyk7CiAgICAgICAgfQoKICAgICAgfTsKCiAgICAgIHN3aXRjaCAocG9pbnQuY29ybmVyKSB7CiAgICAgICAgY2FzZSAnbCcgOgoKCiAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAncicgOgoKCiAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAndGwnIDoKICAgICAgICAgIHBvaW50LnggPSBNYXRoLm1heChwb2ludC54LCAxKTsKICAgICAgICAgIGNvbXB1dGUoKTsKICAgICAgICAgIHRyYW5zZm9ybSh0ciwgWzEsMCwwLDFdLCBbMTAwLCAwXSwgYSk7CiAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAndHInIDoKICAgICAgICAgIHBvaW50LnggPSBNYXRoLm1pbihwb2ludC54LCB3aWR0aC0xKTsKICAgICAgICAgIGNvbXB1dGUoKTsKICAgICAgICAgIHRyYW5zZm9ybShwb2ludDJEKC10ci54LCB0ci55KSwgWzAsMCwwLDFdLCBbMCwgMF0sIC1hKTsKICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdibCcgOgogICAgICAgICAgcG9pbnQueCA9IE1hdGgubWF4KHBvaW50LngsIDEpOwogICAgICAgICAgY29tcHV0ZSgpOwogICAgICAgICAgdHJhbnNmb3JtKHBvaW50MkQodHIueCwgLXRyLnkpLCBbMSwxLDAsMF0sIFsxMDAsIDEwMF0sIC1hKTsKICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdicicgOgogICAgICAgICAgcG9pbnQueCA9IE1hdGgubWluKHBvaW50LngsIHdpZHRoLTEpOwogICAgICAgICAgY29tcHV0ZSgpOwogICAgICAgICAgdHJhbnNmb3JtKHBvaW50MkQoLXRyLngsIC10ci55KSwgWzAsMSwxLDBdLCBbMCwgMTAwXSwgYSk7CiAgICAgICAgYnJlYWs7CiAgICAgIH0KCiAgICBicmVhazsKICB9CgogICAgZGF0YS5wb2ludCA9IHBvaW50OwogIAogIH0sCgogIF9tb3ZlRm9sZGluZ1BhZ2U6IGZ1bmN0aW9uKG1vdmUpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLmY7CgogICAgaWYgKCFkYXRhKQogICAgICByZXR1cm47CgogICAgdmFyIHR1cm4gPSBkYXRhLm9wdHMudHVybiwKICAgICAgdHVybkRhdGEgPSB0dXJuLmRhdGEoKSwKICAgICAgcGxhY2UgPSB0dXJuRGF0YS5wYWdlUGxhY2U7CiAgICAgIAogICAgaWYgKG1vdmUpIHsKCiAgICAgIHZhciBuZXh0UGFnZSA9IGRhdGEub3B0cy5uZXh0OwogIAogICAgICBpZiAocGxhY2VbbmV4dFBhZ2VdIT1kYXRhLm9wdHMucGFnZSkgewoKICAgICAgICBpZiAoZGF0YS5mb2xkaW5nKQogICAgICAgICAgZmxpcE1ldGhvZHMuX21vdmVGb2xkaW5nUGFnZS5jYWxsKHRoaXMsIGZhbHNlKTsKCiAgICAgICAgdmFyIGZvbGRpbmcgPSBmbGlwTWV0aG9kcy5fZm9sZGluZ1BhZ2UuY2FsbCh0aGlzKTsKICAgICAgICAKICAgICAgICBmb2xkaW5nLmFwcGVuZFRvKGRhdGEuZnBhZ2UpOwogICAgICAgIHBsYWNlW25leHRQYWdlXSA9IGRhdGEub3B0cy5wYWdlOwogICAgICAgIGRhdGEuZm9sZGluZyA9IG5leHRQYWdlOwogICAgICB9CgogICAgICB0dXJuLnR1cm4oJ3VwZGF0ZScpOwoKICAgIH0gZWxzZSB7CgogICAgICBpZiAoZGF0YS5mb2xkaW5nKSB7CgogICAgICAgIGlmICh0dXJuRGF0YS5wYWdlc1tkYXRhLmZvbGRpbmddKSB7CiAgICAgICAgIAogICAgICAgICAgLy8gSWYgd2UgaGF2ZSBmbGlwIGF2YWlsYWJsZQoKICAgICAgICAgIHZhciBmbGlwRGF0YSA9IHR1cm5EYXRhLnBhZ2VzW2RhdGEuZm9sZGluZ10uZGF0YSgpLmY7CiAgICAgICAgICAKICAgICAgICAgIHR1cm5EYXRhLnBhZ2VPYmpzW2RhdGEuZm9sZGluZ10uCiAgICAgICAgICAgIGFwcGVuZFRvKGZsaXBEYXRhLndyYXBwZXIpOwoKICAgICAgICB9IGVsc2UgaWYgKHR1cm5EYXRhLnBhZ2VXcmFwW2RhdGEuZm9sZGluZ10pIHsKICAgICAgICAgIAogICAgICAgICAgLy8gSWYgd2UgaGF2ZSB0aGUgcGFnZVdyYXBwZXIKCiAgICAgICAgICB0dXJuRGF0YS5wYWdlT2Jqc1tkYXRhLmZvbGRpbmddLgogICAgICAgICAgICBhcHBlbmRUbyh0dXJuRGF0YS5wYWdlV3JhcFtkYXRhLmZvbGRpbmddKTsKCiAgICAgICAgfQoKICAgICAgICBpZiAoZGF0YS5mb2xkaW5nIGluIHBsYWNlKSB7CiAgICAgICAgICBwbGFjZVtkYXRhLmZvbGRpbmddID0gZGF0YS5mb2xkaW5nOwogICAgICAgIH0KCiAgICAgICAgZGVsZXRlIGRhdGEuZm9sZGluZzsKCiAgICAgIH0KICAgIH0KICB9LAoKICBfc2hvd0ZvbGRlZFBhZ2U6IGZ1bmN0aW9uKGMsIGFuaW1hdGUpIHsKCiAgICB2YXIgZm9sZGluZyA9IGZsaXBNZXRob2RzLl9mb2xkaW5nUGFnZS5jYWxsKHRoaXMpLAogICAgICBkZCA9IHRoaXMuZGF0YSgpLAogICAgICBkYXRhID0gZGQuZiwKICAgICAgdmlzaWJsZSA9IGRhdGEudmlzaWJsZTsKCiAgICBpZiAoZm9sZGluZykgewoKICAgICAgaWYgKCF2aXNpYmxlIHx8ICFkYXRhLnBvaW50IHx8IGRhdGEucG9pbnQuY29ybmVyIT1jLmNvcm5lcikgewoKICAgICAgICB2YXIgY29ybmVyID0gKAogICAgICAgICAgZGF0YS5zdGF0dXM9PSdob3ZlcicgfHwKICAgICAgICAgIGRhdGEuc3RhdHVzPT0ncGVlbCcgfHwKICAgICAgICAgIGRhdGEub3B0cy50dXJuLmRhdGEoKS5tb3VzZUFjdGlvbikgPwogICAgICAgIGMuY29ybmVyIDogbnVsbDsKCiAgICAgICAgdmlzaWJsZSA9IGZhbHNlOwoKICAgICAgICBpZiAodHJpZ2dlcignc3RhcnQnLCB0aGlzLCBbZGF0YS5vcHRzLCBjb3JuZXJdKT09J3ByZXZlbnRlZCcpCiAgICAgICAgICByZXR1cm4gZmFsc2U7CgogICAgICB9CgogICAgICBpZiAoYW5pbWF0ZSkgewogICAgICAgIAogICAgICAgIHZhciB0aGF0ID0gdGhpcywKICAgICAgICAgIHBvaW50ID0gKGRhdGEucG9pbnQgJiYgZGF0YS5wb2ludC5jb3JuZXI9PWMuY29ybmVyKSA/CiAgICAgICAgICBkYXRhLnBvaW50IDogZmxpcE1ldGhvZHMuX2MuY2FsbCh0aGlzLCBjLmNvcm5lciwgMSk7CiAgICAgIAogICAgICAgIHRoaXMuYW5pbWF0ZWYoewogICAgICAgICAgZnJvbTogW3BvaW50LngsIHBvaW50LnldLAogICAgICAgICAgdG86IFtjLngsIGMueV0sCiAgICAgICAgICBkdXJhdGlvbjogNTAwLAogICAgICAgICAgZnJhbWU6IGZ1bmN0aW9uKHYpIHsKICAgICAgICAgICAgYy54ID0gTWF0aC5yb3VuZCh2WzBdKTsKICAgICAgICAgICAgYy55ID0gTWF0aC5yb3VuZCh2WzFdKTsKICAgICAgICAgICAgZmxpcE1ldGhvZHMuX2ZvbGQuY2FsbCh0aGF0LCBjKTsKICAgICAgICAgIH0KICAgICAgICB9KTsKCiAgICAgIH0gZWxzZSAgewoKICAgICAgICBmbGlwTWV0aG9kcy5fZm9sZC5jYWxsKHRoaXMsIGMpOwoKICAgICAgICBpZiAoZGQuZWZmZWN0ICYmICFkZC5lZmZlY3QudHVybmluZykKICAgICAgICAgIHRoaXMuYW5pbWF0ZWYoZmFsc2UpOwoKICAgICAgfQoKICAgICAgaWYgKCF2aXNpYmxlKSB7CgogICAgICAgIHN3aXRjaChkYXRhLmVmZmVjdCkgewogICAgICAgICAgY2FzZSAnaGFyZCc6CgogICAgICAgICAgICBkYXRhLnZpc2libGUgPSB0cnVlOwogICAgICAgICAgICBmbGlwTWV0aG9kcy5fbW92ZUZvbGRpbmdQYWdlLmNhbGwodGhpcywgdHJ1ZSk7CiAgICAgICAgICAgIGRhdGEuZnBhZ2Uuc2hvdygpOwogICAgICAgICAgICBpZiAoZGF0YS5vcHRzLnNoYWRvd3MpCiAgICAgICAgICAgICAgZGF0YS5ic2hhZG93LnNob3coKTsKCiAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgJ3NoZWV0JzoKCiAgICAgICAgICAgIGRhdGEudmlzaWJsZSA9IHRydWU7CiAgICAgICAgICAgIGRhdGEuZnBhcmVudC5zaG93KCkuZGF0YSgpLmZsaXBzKys7CiAgICAgICAgICAgIGZsaXBNZXRob2RzLl9tb3ZlRm9sZGluZ1BhZ2UuY2FsbCh0aGlzLCB0cnVlKTsKICAgICAgICAgICAgZGF0YS5md3JhcHBlci5zaG93KCk7CiAgICAgICAgICAgIGlmIChkYXRhLmJzaGFkb3cpCiAgICAgICAgICAgICAgZGF0YS5ic2hhZG93LnNob3coKTsKCiAgICAgICAgICBicmVhazsKICAgICAgICB9CgogICAgICB9CgogICAgICByZXR1cm4gdHJ1ZTsKCiAgICB9CgogICAgcmV0dXJuIGZhbHNlOwogIH0sCgogIGhpZGU6IGZ1bmN0aW9uKCkgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCkuZiwKICAgICAgdHVybkRhdGEgPSBkYXRhLm9wdHMudHVybi5kYXRhKCksCiAgICAgIGZvbGRpbmcgPSBmbGlwTWV0aG9kcy5fZm9sZGluZ1BhZ2UuY2FsbCh0aGlzKTsKCiAgICBzd2l0Y2ggKGRhdGEuZWZmZWN0KSB7CiAgICAgIGNhc2UgJ2hhcmQnOgogICAgICAgIAogICAgICAgIGlmICh0dXJuRGF0YS5vcHRzLmdyYWRpZW50cykgewogICAgICAgICAgZGF0YS5ic2hhZG93TG9jID0gMDsKICAgICAgICAgIGRhdGEuYnNoYWRvdy5yZW1vdmUoKTsKICAgICAgICAgIGRhdGEuYXNoYWRvdy5oaWRlKCk7CiAgICAgICAgfQoKICAgICAgICBkYXRhLndyYXBwZXIudHJhbnNmb3JtKCcnKTsKICAgICAgICBkYXRhLmZwYWdlLmhpZGUoKTsKCiAgICAgIGJyZWFrOwogICAgICBjYXNlICdzaGVldCc6CgogICAgICAgIGlmICgoLS1kYXRhLmZwYXJlbnQuZGF0YSgpLmZsaXBzKT09PTApCiAgICAgICAgICBkYXRhLmZwYXJlbnQuaGlkZSgpOwoKICAgICAgICB0aGlzLmNzcyh7bGVmdDogMCwgdG9wOiAwLCByaWdodDogJ2F1dG8nLCBib3R0b206ICdhdXRvJ30pLgogICAgICAgICAgdHJhbnNmb3JtKCcnKTsKCiAgICAgICAgZGF0YS53cmFwcGVyLnRyYW5zZm9ybSgnJyk7CgogICAgICAgIGRhdGEuZndyYXBwZXIuaGlkZSgpOwoKICAgICAgICBpZiAoZGF0YS5ic2hhZG93KQogICAgICAgICAgZGF0YS5ic2hhZG93LmhpZGUoKTsKCiAgICAgICAgZm9sZGluZy50cmFuc2Zvcm0oJycpOwoKICAgICAgYnJlYWs7CiAgICB9CgogICAgICBkYXRhLnZpc2libGUgPSBmYWxzZTsKCiAgICByZXR1cm4gdGhpczsKICB9LAoKICBoaWRlRm9sZGVkUGFnZTogZnVuY3Rpb24oYW5pbWF0ZSkgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCkuZjsKCiAgICBpZiAoIWRhdGEucG9pbnQpIHJldHVybjsKCiAgICB2YXIgdGhhdCA9IHRoaXMsCiAgICAgIHAxID0gZGF0YS5wb2ludCwKICAgICAgaGlkZSA9IGZ1bmN0aW9uKCkgewogICAgICAgIGRhdGEucG9pbnQgPSBudWxsOwogICAgICAgIGRhdGEuc3RhdHVzID0gJyc7CiAgICAgICAgdGhhdC5mbGlwKCdoaWRlJyk7CiAgICAgICAgdGhhdC50cmlnZ2VyKCdlbmQnLCBbZGF0YS5vcHRzLCBmYWxzZV0pOwogICAgICB9OwoKICAgIGlmIChhbmltYXRlKSB7CgogICAgICB2YXIgcDQgPSBmbGlwTWV0aG9kcy5fYy5jYWxsKHRoaXMsIHAxLmNvcm5lciksCiAgICAgICAgdG9wID0gKHAxLmNvcm5lci5zdWJzdHIoMCwxKT09J3QnKSwKICAgICAgICBkZWx0YSA9ICh0b3ApID8gTWF0aC5taW4oMCwgcDEueS1wNC55KS8yIDogTWF0aC5tYXgoMCwgcDEueS1wNC55KS8yLAogICAgICAgIHAyID0gcG9pbnQyRChwMS54LCBwMS55K2RlbHRhKSwKICAgICAgICBwMyA9IHBvaW50MkQocDQueCwgcDQueS1kZWx0YSk7CiAgICAKICAgICAgdGhpcy5hbmltYXRlZih7CiAgICAgICAgZnJvbTogMCwKICAgICAgICB0bzogMSwKICAgICAgICBmcmFtZTogZnVuY3Rpb24odikgewogICAgICAgICAgdmFyIG5wID0gYmV6aWVyKHAxLCBwMiwgcDMsIHA0LCB2KTsKICAgICAgICAgIHAxLnggPSBucC54OwogICAgICAgICAgcDEueSA9IG5wLnk7CiAgICAgICAgICBmbGlwTWV0aG9kcy5fZm9sZC5jYWxsKHRoYXQsIHAxKTsKICAgICAgICB9LAogICAgICAgIGNvbXBsZXRlOiBoaWRlLAogICAgICAgIGR1cmF0aW9uOiA4MDAsCiAgICAgICAgaGlkaW5nOiB0cnVlCiAgICAgIH0pOwoKICAgIH0gZWxzZSB7CgogICAgICB0aGlzLmFuaW1hdGVmKGZhbHNlKTsKICAgICAgaGlkZSgpOwoKICAgIH0KICB9LAoKICB0dXJuUGFnZTogZnVuY3Rpb24oY29ybmVyKSB7CgogICAgdmFyIHRoYXQgPSB0aGlzLAogICAgICBkYXRhID0gdGhpcy5kYXRhKCkuZiwKICAgICAgdHVybkRhdGEgPSBkYXRhLm9wdHMudHVybi5kYXRhKCk7CgogICAgY29ybmVyID0ge2Nvcm5lcjogKGRhdGEuY29ybmVyKSA/CiAgICAgIGRhdGEuY29ybmVyLmNvcm5lciA6CiAgICAgIGNvcm5lciB8fCBmbGlwTWV0aG9kcy5fY0FsbG93ZWQuY2FsbCh0aGlzKVswXX07CgogICAgdmFyIHAxID0gZGF0YS5wb2ludCB8fAogICAgICBmbGlwTWV0aG9kcy5fYy5jYWxsKHRoaXMsCiAgICAgICAgY29ybmVyLmNvcm5lciwKICAgICAgICAoZGF0YS5vcHRzLnR1cm4pID8gdHVybkRhdGEub3B0cy5lbGV2YXRpb24gOiAwKSwKICAgICAgcDQgPSBmbGlwTWV0aG9kcy5fYzIuY2FsbCh0aGlzLCBjb3JuZXIuY29ybmVyKTsKCiAgICAgIHRoaXMudHJpZ2dlcignZmxpcCcpLgogICAgICAgIGFuaW1hdGVmKHsKICAgICAgICAgIGZyb206IDAsCiAgICAgICAgICB0bzogMSwKICAgICAgICAgIGZyYW1lOiBmdW5jdGlvbih2KSB7CgogICAgICAgICAgICB2YXIgbnAgPSBiZXppZXIocDEsIHAxLCBwNCwgcDQsIHYpOwogICAgICAgICAgICBjb3JuZXIueCA9IG5wLng7CiAgICAgICAgICAgIGNvcm5lci55ID0gbnAueTsKICAgICAgICAgICAgZmxpcE1ldGhvZHMuX3Nob3dGb2xkZWRQYWdlLmNhbGwodGhhdCwgY29ybmVyKTsKCiAgICAgICAgICB9LAogICAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAKICAgICAgICAgICAgdGhhdC50cmlnZ2VyKCdlbmQnLCBbZGF0YS5vcHRzLCB0cnVlXSk7CgogICAgICAgICAgfSwKICAgICAgICAgIGR1cmF0aW9uOiB0dXJuRGF0YS5vcHRzLmR1cmF0aW9uLAogICAgICAgICAgdHVybmluZzogdHJ1ZQogICAgICAgIH0pOwoKICAgICAgZGF0YS5jb3JuZXIgPSBudWxsOwogIH0sCgogIG1vdmluZzogZnVuY3Rpb24oKSB7CgogICAgcmV0dXJuICdlZmZlY3QnIGluIHRoaXMuZGF0YSgpOwogIAogIH0sCgogIGlzVHVybmluZzogZnVuY3Rpb24oKSB7CgogICAgcmV0dXJuIHRoaXMuZmxpcCgnbW92aW5nJykgJiYgdGhpcy5kYXRhKCkuZWZmZWN0LnR1cm5pbmc7CiAgCiAgfSwKCiAgY29ybmVyOiBmdW5jdGlvbigpIHsKICAgIAogICAgcmV0dXJuIHRoaXMuZGF0YSgpLmYuY29ybmVyOwogICAgICAKICB9LAoKICBfZXZlbnRTdGFydDogZnVuY3Rpb24oZSkgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCkuZiwKICAgICAgdHVybiA9IGRhdGEub3B0cy50dXJuOwoKICAgIGlmICghZGF0YS5jb3JuZXIgJiYgIWRhdGEuZGlzYWJsZWQgJiYgIXRoaXMuZmxpcCgnaXNUdXJuaW5nJykgJiYKICAgICAgZGF0YS5vcHRzLnBhZ2U9PXR1cm4uZGF0YSgpLnBhZ2VQbGFjZVtkYXRhLm9wdHMucGFnZV0pCiAgICB7CgogICAgICBkYXRhLmNvcm5lciA9IGZsaXBNZXRob2RzLl9pc0lBcmVhLmNhbGwodGhpcywgZSk7CgogICAgICBpZiAoZGF0YS5jb3JuZXIgJiYgZmxpcE1ldGhvZHMuX2ZvbGRpbmdQYWdlLmNhbGwodGhpcykpIHsKCiAgICAgICAgdGhpcy50cmlnZ2VyKCdwcmVzc2VkJywgW2RhdGEucG9pbnRdKTsKICAgICAgICBmbGlwTWV0aG9kcy5fc2hvd0ZvbGRlZFBhZ2UuY2FsbCh0aGlzLCBkYXRhLmNvcm5lcik7CgogICAgICAgIHJldHVybiBmYWxzZTsKCiAgICAgIH0gZWxzZQogICAgICAgIGRhdGEuY29ybmVyID0gbnVsbDsKCiAgICB9CgogIH0sCgogIF9ldmVudE1vdmU6IGZ1bmN0aW9uKGUpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLmY7CgogICAgaWYgKCFkYXRhLmRpc2FibGVkKSB7CgogICAgICBlID0gKGlzVG91Y2gpID8gZS5vcmlnaW5hbEV2ZW50LnRvdWNoZXMgOiBbZV07CgogICAgICBpZiAoZGF0YS5jb3JuZXIpIHsKCiAgICAgICAgdmFyIHBvcyA9IGRhdGEucGFyZW50Lm9mZnNldCgpOwogICAgICAgIGRhdGEuY29ybmVyLnggPSBlWzBdLnBhZ2VYLXBvcy5sZWZ0OwogICAgICAgIGRhdGEuY29ybmVyLnkgPSBlWzBdLnBhZ2VZLXBvcy50b3A7CiAgICAgICAgZmxpcE1ldGhvZHMuX3Nob3dGb2xkZWRQYWdlLmNhbGwodGhpcywgZGF0YS5jb3JuZXIpOwoKICAgICAgfSBlbHNlIGlmIChkYXRhLmhvdmVyICYmICF0aGlzLmRhdGEoKS5lZmZlY3QgJiYgdGhpcy5pcygnOnZpc2libGUnKSkgewoKICAgICAgICB2YXIgcG9pbnQgPSBmbGlwTWV0aG9kcy5faXNJQXJlYS5jYWxsKHRoaXMsIGVbMF0pOwoKICAgICAgICBpZiAocG9pbnQpIHsKCiAgICAgICAgICBpZiAoKGRhdGEuZWZmZWN0PT0nc2hlZXQnICYmIHBvaW50LmNvcm5lci5sZW5ndGg9PTIpICB8fCBkYXRhLmVmZmVjdD09J2hhcmQnKSB7CiAgICAgICAgICAgIGRhdGEuc3RhdHVzID0gJ2hvdmVyJzsKICAgICAgICAgICAgdmFyIG9yaWdpbiA9IGZsaXBNZXRob2RzLl9jLmNhbGwodGhpcywgcG9pbnQuY29ybmVyLCBkYXRhLm9wdHMuY29ybmVyU2l6ZS8yKTsKICAgICAgICAgICAgcG9pbnQueCA9IG9yaWdpbi54OwogICAgICAgICAgICBwb2ludC55ID0gb3JpZ2luLnk7CiAgICAgICAgICAgIGZsaXBNZXRob2RzLl9zaG93Rm9sZGVkUGFnZS5jYWxsKHRoaXMsIHBvaW50LCB0cnVlKTsKICAgICAgICAgIH0KICAgICAgICAKICAgICAgICB9IGVsc2UgewogICAgICAgICAgCiAgICAgICAgICBpZiAoZGF0YS5zdGF0dXM9PSdob3ZlcicpIHsKICAgICAgICAgICAgZGF0YS5zdGF0dXMgPSAnJzsKICAgICAgICAgICAgZmxpcE1ldGhvZHMuaGlkZUZvbGRlZFBhZ2UuY2FsbCh0aGlzLCB0cnVlKTsKICAgICAgICAgIH0KCiAgICAgICAgfQoKICAgICAgfQoKICAgIH0KCiAgfSwKCiAgX2V2ZW50RW5kOiBmdW5jdGlvbigpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLmYsCiAgICAgIGNvcm5lciA9IGRhdGEuY29ybmVyOwoKICAgIGlmICghZGF0YS5kaXNhYmxlZCAmJiBjb3JuZXIpIHsKICAgICAgaWYgKHRyaWdnZXIoJ3JlbGVhc2VkJywgdGhpcywgW2RhdGEucG9pbnQgfHwgY29ybmVyXSkhPSdwcmV2ZW50ZWQnKSB7CiAgICAgICAgZmxpcE1ldGhvZHMuaGlkZUZvbGRlZFBhZ2UuY2FsbCh0aGlzLCB0cnVlKTsKICAgICAgfQogICAgfQoKICAgIGRhdGEuY29ybmVyID0gbnVsbDsKCiAgfSwKCiAgZGlzYWJsZTogZnVuY3Rpb24oZGlzYWJsZSkgewoKICAgIGZsaXBNZXRob2RzLnNldERhdGEuY2FsbCh0aGlzLCB7J2Rpc2FibGVkJzogZGlzYWJsZX0pOwogICAgcmV0dXJuIHRoaXM7CgogIH0sCgogIGhvdmVyOiBmdW5jdGlvbihob3ZlcikgewogICAgCiAgICBmbGlwTWV0aG9kcy5zZXREYXRhLmNhbGwodGhpcywgeydob3Zlcic6IGhvdmVyfSk7CiAgICByZXR1cm4gdGhpczsKCiAgfSwKCiAgcGVlbDogZnVuY3Rpb24gKGNvcm5lciwgYW5pbWF0ZSkgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCkuZjsKCiAgICBpZiAoY29ybmVyKSB7CgogICAgICBpZiAoJC5pbkFycmF5KGNvcm5lciwgY29ybmVycy5hbGwpPT0tMSkKICAgICAgICB0aHJvdyB0dXJuRXJyb3IoJ0Nvcm5lciAnK2Nvcm5lcisnIGlzIG5vdCBwZXJtaXR0ZWQnKTsKCiAgICAgIGlmICgkLmluQXJyYXkoY29ybmVyLCBmbGlwTWV0aG9kcy5fY0FsbG93ZWQuY2FsbCh0aGlzKSkhPS0xKSB7CgogICAgICAgIHZhciBwb2ludCA9IGZsaXBNZXRob2RzLl9jLmNhbGwodGhpcywgY29ybmVyLCBkYXRhLm9wdHMuY29ybmVyU2l6ZS8yKTsKICAgICAgICAKICAgICAgICBkYXRhLnN0YXR1cyA9ICdwZWVsJzsKCiAgICAgICAgZmxpcE1ldGhvZHMuX3Nob3dGb2xkZWRQYWdlLmNhbGwodGhpcywKICAgICAgICB7CiAgICAgICAgICBjb3JuZXI6IGNvcm5lciwKICAgICAgICAgIHg6IHBvaW50LngsCiAgICAgICAgICB5OiBwb2ludC55CiAgICAgICAgfSwgYW5pbWF0ZSk7CgogICAgICB9CgoKICAgIH0gZWxzZSB7CgogICAgICBkYXRhLnN0YXR1cyA9ICcnOwoKICAgICAgZmxpcE1ldGhvZHMuaGlkZUZvbGRlZFBhZ2UuY2FsbCh0aGlzLCBhbmltYXRlKTsKICAgICAgCiAgICB9CgogICAgcmV0dXJuIHRoaXM7CiAgfQp9OwoKCi8vIFByb2Nlc3NlcyBjbGFzc2VzCgpmdW5jdGlvbiBkZWModGhhdCwgbWV0aG9kcywgYXJncykgewoKICBpZiAoIWFyZ3NbMF0gfHwgdHlwZW9mKGFyZ3NbMF0pPT0nb2JqZWN0JykKICAgIHJldHVybiBtZXRob2RzLmluaXQuYXBwbHkodGhhdCwgYXJncyk7CgogIGVsc2UgaWYgKG1ldGhvZHNbYXJnc1swXV0pCiAgICByZXR1cm4gbWV0aG9kc1thcmdzWzBdXS5hcHBseSh0aGF0LCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmdzLCAxKSk7CgogIGVsc2UKICAgIHRocm93IHR1cm5FcnJvcihhcmdzWzBdICsgJyBpcyBub3QgYSBtZXRob2Qgb3IgcHJvcGVydHknKTsKCn0KCgovLyBBdHRyaWJ1dGVzIGZvciBhIGxheWVyCgpmdW5jdGlvbiBkaXZBdHQodG9wLCBsZWZ0LCB6SW5kZXgsIG92ZXJmKSB7CiAgICAKICByZXR1cm4geydjc3MnOiB7CiAgICBwb3NpdGlvbjogJ2Fic29sdXRlJywKICAgIHRvcDogdG9wLAogICAgbGVmdDogbGVmdCwKICAgICdvdmVyZmxvdyc6IG92ZXJmIHx8ICdoaWRkZW4nLAogICAgekluZGV4OiB6SW5kZXggfHwgJ2F1dG8nCiAgfQp9OwogICAgICAKfQoKLy8gR2V0cyBhIDJEIHBvaW50IGZyb20gYSBiZXppZXIgY3VydmUgb2YgZm91ciBwb2ludHMKCmZ1bmN0aW9uIGJlemllcihwMSwgcDIsIHAzLCBwNCwgdCkgewoKICB2YXIgYSA9IDEgLSB0LAogICAgYiA9IGEgKiBhICogYSwKICAgIGMgPSB0ICogdCAqIHQ7CiAgICAKICByZXR1cm4gcG9pbnQyRChNYXRoLnJvdW5kKGIqcDEueCArIDMqdCphKmEqcDIueCArIDMqdCp0KmEqcDMueCArIGMqcDQueCksCiAgICBNYXRoLnJvdW5kKGIqcDEueSArIDMqdCphKmEqcDIueSArIDMqdCp0KmEqcDMueSArIGMqcDQueSkpOwoKfQogIAovLyBDb252ZXJ0cyBhbiBhbmdsZSBmcm9tIGRlZ3JlZXMgdG8gcmFkaWFucwoKZnVuY3Rpb24gcmFkKGRlZ3JlZXMpIHsKICAKICByZXR1cm4gZGVncmVlcy8xODAqUEk7Cgp9CgovLyBDb252ZXJ0cyBhbiBhbmdsZSBmcm9tIHJhZGlhbnMgdG8gZGVncmVlcwoKZnVuY3Rpb24gZGVnKHJhZGlhbnMpIHsKICAKICByZXR1cm4gcmFkaWFucy9QSSoxODA7Cgp9CgovLyBHZXRzIGEgMkQgcG9pbnQKCmZ1bmN0aW9uIHBvaW50MkQoeCwgeSkgewogIAogIHJldHVybiB7eDogeCwgeTogeX07Cgp9CgovLyBXZWJraXQgNTM0LjMgb24gQW5kcm9pZCB3cm9uZ2x5IHJlcGFpbnRzIGVsZW1lbnRzIHRoYXQgdXNlIG92ZXJmbG93OmhpZGRlbiArIHJvdGF0aW9uCgpmdW5jdGlvbiByb3RhdGlvbkF2YWlsYWJsZSgpIHsKICB2YXIgcGFydHM7CgogIGlmICgocGFydHMgPSAvQXBwbGVXZWJraXRcLyhbMC05XC5dKykvaS5leGVjKG5hdmlnYXRvci51c2VyQWdlbnQpKSkgewogICAgdmFyIHdlYmtpdFZlcnNpb24gPSBwYXJzZUZsb2F0KHBhcnRzWzFdKTsKICAgIHJldHVybiAod2Via2l0VmVyc2lvbj41MzQuMyk7CiAgfSBlbHNlIHsKICAgIHJldHVybiB0cnVlOwogIH0KfQoKLy8gUmV0dXJucyB0aGUgdHJhc2xhdGUgdmFsdWUKCmZ1bmN0aW9uIHRyYW5zbGF0ZSh4LCB5LCB1c2UzZCkgewogIAogIHJldHVybiAoaGFzM2QgJiYgdXNlM2QpID8gJyB0cmFuc2xhdGUzZCgnICsgeCArICdweCwnICsgeSArICdweCwgMHB4KSAnCiAgOiAnIHRyYW5zbGF0ZSgnICsgeCArICdweCwgJyArIHkgKyAncHgpICc7Cgp9CgovLyBSZXR1cm5zIHRoZSByb3RhdGlvbiB2YWx1ZQoKZnVuY3Rpb24gcm90YXRlKGRlZ3JlZXMpIHsKICAKICByZXR1cm4gJyByb3RhdGUoJyArIGRlZ3JlZXMgKyAnZGVnKSAnOwoKfQoKLy8gQ2hlY2tzIGlmIGEgcHJvcGVydHkgYmVsb25ncyB0byBhbiBvYmplY3QKCmZ1bmN0aW9uIGhhcyhwcm9wZXJ0eSwgb2JqZWN0KSB7CiAgCiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsKCn0KCi8vIEdldHMgdGhlIENTUzMgdmVuZG9yIHByZWZpeAoKZnVuY3Rpb24gZ2V0UHJlZml4KCkgewoKICB2YXIgdmVuZG9yUHJlZml4ZXMgPSBbJ01veicsJ1dlYmtpdCcsJ0todG1sJywnTycsJ21zJ10sCiAgbGVuID0gdmVuZG9yUHJlZml4ZXMubGVuZ3RoLAogIHZlbmRvciA9ICcnOwoKICB3aGlsZSAobGVuLS0pCiAgICBpZiAoKHZlbmRvclByZWZpeGVzW2xlbl0gKyAnVHJhbnNmb3JtJykgaW4gZG9jdW1lbnQuYm9keS5zdHlsZSkKICAgICAgdmVuZG9yPSctJyt2ZW5kb3JQcmVmaXhlc1tsZW5dLnRvTG93ZXJDYXNlKCkrJy0nOwoKICByZXR1cm4gdmVuZG9yOwoKfQoKLy8gRGV0ZWN0cyB0aGUgdHJhbnNpdGlvbkVuZCBFdmVudAoKZnVuY3Rpb24gZ2V0VHJhbnNpdGlvbkVuZCgpIHsKCiAgdmFyIHQsCiAgICBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Zha2VlbGVtZW50JyksCiAgICB0cmFuc2l0aW9ucyA9IHsKICAgICAgJ3RyYW5zaXRpb24nOid0cmFuc2l0aW9uZW5kJywKICAgICAgJ09UcmFuc2l0aW9uJzonb1RyYW5zaXRpb25FbmQnLAogICAgICAnTVNUcmFuc2l0aW9uJzondHJhbnNpdGlvbmVuZCcsCiAgICAgICdNb3pUcmFuc2l0aW9uJzondHJhbnNpdGlvbmVuZCcsCiAgICAgICdXZWJraXRUcmFuc2l0aW9uJzond2Via2l0VHJhbnNpdGlvbkVuZCcKICAgIH07CgogIGZvciAodCBpbiB0cmFuc2l0aW9ucykgewogICAgaWYgKGVsLnN0eWxlW3RdICE9PSB1bmRlZmluZWQpIHsKICAgICAgcmV0dXJuIHRyYW5zaXRpb25zW3RdOwogICAgfQogIH0KfQoKLy8gR3JhZGllbnRzCgpmdW5jdGlvbiBncmFkaWVudChvYmosIHAwLCBwMSwgY29sb3JzLCBudW1Db2xvcnMpIHsKCiAgdmFyIGosIGNvbHMgPSBbXTsKCiAgaWYgKHZlbmRvcj09Jy13ZWJraXQtJykgewoKICAgIGZvciAoaiA9IDA7IGo8bnVtQ29sb3JzOyBqKyspCiAgICAgIGNvbHMucHVzaCgnY29sb3Itc3RvcCgnK2NvbG9yc1tqXVswXSsnLCAnK2NvbG9yc1tqXVsxXSsnKScpOwogICAgCiAgICBvYmouY3NzKHsnYmFja2dyb3VuZC1pbWFnZSc6CiAgICAgICAgJy13ZWJraXQtZ3JhZGllbnQobGluZWFyLCAnKwogICAgICAgIHAwLngrJyUgJysKICAgICAgICBwMC55KyclLCcrCiAgICAgICAgcDEueCsnJSAnKwogICAgICAgIHAxLnkrJyUsICcrCiAgICAgICAgY29scy5qb2luKCcsJykgKyAnICknfSk7CiAgfSBlbHNlIHsKICAgIAogICAgcDAgPSB7eDpwMC54LzEwMCAqIG9iai53aWR0aCgpLCB5OnAwLnkvMTAwICogb2JqLmhlaWdodCgpfTsKICAgIHAxID0ge3g6cDEueC8xMDAgKiBvYmoud2lkdGgoKSwgeTpwMS55LzEwMCAqIG9iai5oZWlnaHQoKX07CgogICAgdmFyIGR4ID0gcDEueC1wMC54LAogICAgICBkeSA9IHAxLnktcDAueSwKICAgICAgYW5nbGUgPSBNYXRoLmF0YW4yKGR5LCBkeCksCiAgICAgIGFuZ2xlMiA9IGFuZ2xlIC0gTWF0aC5QSS8yLAogICAgICBkaWFnb25hbCA9IE1hdGguYWJzKG9iai53aWR0aCgpKk1hdGguc2luKGFuZ2xlMikpK01hdGguYWJzKG9iai5oZWlnaHQoKSpNYXRoLmNvcyhhbmdsZTIpKSwKICAgICAgZ3JhZGllbnREaWFnb25hbCA9IE1hdGguc3FydChkeSpkeSArIGR4KmR4KSwKICAgICAgY29ybmVyID0gcG9pbnQyRCgocDEueDxwMC54KSA/IG9iai53aWR0aCgpIDogMCwgKHAxLnk8cDAueSkgPyBvYmouaGVpZ2h0KCkgOiAwKSwKICAgICAgc2xvcGUgPSBNYXRoLnRhbihhbmdsZSksCiAgICAgIGludmVyc2UgPSAtMS9zbG9wZSwKICAgICAgeCA9IChpbnZlcnNlKmNvcm5lci54IC0gY29ybmVyLnkgLSBzbG9wZSpwMC54ICsgcDAueSkvKGludmVyc2Utc2xvcGUpLAogICAgICBjID0ge3g6IHgsIHk6IGludmVyc2UqeCAtIGludmVyc2UqY29ybmVyLnggKyBjb3JuZXIueX0sCiAgICAgIHNlZ0EgPSAoTWF0aC5zcXJ0KCBNYXRoLnBvdyhjLngtcDAueCwyKSArIE1hdGgucG93KGMueS1wMC55LDIpKSk7CgogICAgICBmb3IgKGogPSAwOyBqPG51bUNvbG9yczsgaisrKQogICAgICAgIGNvbHMucHVzaCgnICcrY29sb3JzW2pdWzFdKycgJysoKHNlZ0EgKyBncmFkaWVudERpYWdvbmFsKmNvbG9yc1tqXVswXSkqMTAwL2RpYWdvbmFsKSsnJScpOwoKICAgICAgb2JqLmNzcyh7J2JhY2tncm91bmQtaW1hZ2UnOiB2ZW5kb3IrJ2xpbmVhci1ncmFkaWVudCgnICsgKC1hbmdsZSkgKyAncmFkLCcgKyBjb2xzLmpvaW4oJywnKSArICcpJ30pOwogIH0KfQoKCi8vIFRyaWdnZXJzIGFuIGV2ZW50CgpmdW5jdGlvbiB0cmlnZ2VyKGV2ZW50TmFtZSwgY29udGV4dCwgYXJncykgewoKICB2YXIgZXZlbnQgPSAkLkV2ZW50KGV2ZW50TmFtZSk7CiAgY29udGV4dC50cmlnZ2VyKGV2ZW50LCBhcmdzKTsKICBpZiAoZXZlbnQuaXNEZWZhdWx0UHJldmVudGVkKCkpCiAgICByZXR1cm4gJ3ByZXZlbnRlZCc7CiAgZWxzZSBpZiAoZXZlbnQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSkKICAgIHJldHVybiAnc3RvcHBlZCc7CiAgZWxzZQogICAgcmV0dXJuICcnOwp9CgovLyBKUyBFcnJvcnMKCmZ1bmN0aW9uIHR1cm5FcnJvcihtZXNzYWdlKSB7CgogIGZ1bmN0aW9uIFR1cm5Kc0Vycm9yKG1lc3NhZ2UpIHsKICAgIHRoaXMubmFtZSA9ICJUdXJuSnNFcnJvciI7CiAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlOwogIH0KCiAgVHVybkpzRXJyb3IucHJvdG90eXBlID0gbmV3IEVycm9yKCk7CiAgVHVybkpzRXJyb3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gVHVybkpzRXJyb3I7CiAgcmV0dXJuIG5ldyBUdXJuSnNFcnJvcihtZXNzYWdlKTsKCn0KCi8vIEZpbmQgdGhlIG9mZnNldCBvZiBhbiBlbGVtZW50IGlnbm9yaW5nIGl0cyB0cmFuc2Zvcm1hdGlvbgoKZnVuY3Rpb24gZmluZFBvcyhvYmopIHsKCiAgdmFyIG9mZnNldCA9IHt0b3A6IDAsIGxlZnQ6IDB9OwoKICBkb3sKICAgIG9mZnNldC5sZWZ0ICs9IG9iai5vZmZzZXRMZWZ0OwogICAgb2Zmc2V0LnRvcCArPSBvYmoub2Zmc2V0VG9wOwogIH0gd2hpbGUgKChvYmogPSBvYmoub2Zmc2V0UGFyZW50KSk7CgogIHJldHVybiBvZmZzZXQ7Cgp9CgovLyBDaGVja3MgaWYgdGhlcmUncyBoYXJkIHBhZ2UgY29tcGF0aWJpbGl0eQovLyBJRTkgaXMgdGhlIG9ubHkgYnJvd3NlciB0aGF0IGRvZXMgbm90IHN1cHBvcnQgaGFyZCBwYWdlcwoKZnVuY3Rpb24gaGFzSGFyZFBhZ2UoKSB7CiAgcmV0dXJuIChuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ01TSUUgOS4wJyk9PS0xKTsKfQoKLy8gUmVxdWVzdCBhbiBhbmltYXRpb24KCndpbmRvdy5yZXF1ZXN0QW5pbSA9IChmdW5jdGlvbigpIHsKICByZXR1cm4gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSB8fAogICAgd2luZG93LndlYmtpdFJlcXVlc3RBbmltYXRpb25GcmFtZSB8fAogICAgd2luZG93Lm1velJlcXVlc3RBbmltYXRpb25GcmFtZSB8fAogICAgd2luZG93Lm9SZXF1ZXN0QW5pbWF0aW9uRnJhbWUgfHwKICAgIHdpbmRvdy5tc1JlcXVlc3RBbmltYXRpb25GcmFtZSB8fAogICAgZnVuY3Rpb24oY2FsbGJhY2spIHsKICAgICAgd2luZG93LnNldFRpbWVvdXQoY2FsbGJhY2ssIDEwMDAgLyA2MCk7CiAgICB9OwoKfSkoKTsKCi8vIEV4dGVuZCAkLmZuCgokLmV4dGVuZCgkLmZuLCB7CgogIGZsaXA6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIGRlYygkKHRoaXNbMF0pLCBmbGlwTWV0aG9kcywgYXJndW1lbnRzKTsKICB9LAoKICB0dXJuOiBmdW5jdGlvbigpIHsKICAgIHJldHVybiBkZWMoJCh0aGlzWzBdKSwgdHVybk1ldGhvZHMsIGFyZ3VtZW50cyk7CiAgfSwKCiAgdHJhbnNmb3JtOiBmdW5jdGlvbih0cmFuc2Zvcm0sIG9yaWdpbikgewoKICAgIHZhciBwcm9wZXJ0aWVzID0ge307CiAgICAKICAgIGlmIChvcmlnaW4pCiAgICAgIHByb3BlcnRpZXNbdmVuZG9yKyd0cmFuc2Zvcm0tb3JpZ2luJ10gPSBvcmlnaW47CiAgICAKICAgIHByb3BlcnRpZXNbdmVuZG9yKyd0cmFuc2Zvcm0nXSA9IHRyYW5zZm9ybTsKICAKICAgIHJldHVybiB0aGlzLmNzcyhwcm9wZXJ0aWVzKTsKCiAgfSwKCiAgYW5pbWF0ZWY6IGZ1bmN0aW9uKHBvaW50KSB7CgogICAgdmFyIGRhdGEgPSB0aGlzLmRhdGEoKTsKCiAgICBpZiAoZGF0YS5lZmZlY3QpCiAgICAgIGRhdGEuZWZmZWN0LnN0b3AoKTsKCiAgICBpZiAocG9pbnQpIHsKCiAgICAgIGlmICghcG9pbnQudG8ubGVuZ3RoKSBwb2ludC50byA9IFtwb2ludC50b107CiAgICAgIGlmICghcG9pbnQuZnJvbS5sZW5ndGgpIHBvaW50LmZyb20gPSBbcG9pbnQuZnJvbV07CgogICAgICB2YXIgZGlmZiA9IFtdLAogICAgICAgIGxlbiA9IHBvaW50LnRvLmxlbmd0aCwKICAgICAgICBhbmltYXRpbmcgPSB0cnVlLAogICAgICAgIHRoYXQgPSB0aGlzLAogICAgICAgIHRpbWUgPSAobmV3IERhdGUoKSkuZ2V0VGltZSgpLAogICAgICAgIGZyYW1lID0gZnVuY3Rpb24oKSB7CgogICAgICAgICAgaWYgKCFkYXRhLmVmZmVjdCB8fCAhYW5pbWF0aW5nKQogICAgICAgICAgICByZXR1cm47CgogICAgICAgICAgdmFyIHYgPSBbXSwKICAgICAgICAgICAgdGltZURpZmYgPSBNYXRoLm1pbihwb2ludC5kdXJhdGlvbiwgKG5ldyBEYXRlKCkpLmdldFRpbWUoKSAtIHRpbWUpOwoKICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspCiAgICAgICAgICAgIHYucHVzaChkYXRhLmVmZmVjdC5lYXNpbmcoMSwgdGltZURpZmYsIHBvaW50LmZyb21baV0sIGRpZmZbaV0sIHBvaW50LmR1cmF0aW9uKSk7CgogICAgICAgICAgcG9pbnQuZnJhbWUoKGxlbj09MSkgPyB2WzBdIDogdik7CgogICAgICAgICAgaWYgKHRpbWVEaWZmPT1wb2ludC5kdXJhdGlvbikgewogICAgICAgICAgICBkZWxldGUgZGF0YVsnZWZmZWN0J107CiAgICAgICAgICAgIHRoYXQuZGF0YShkYXRhKTsKICAgICAgICAgICAgaWYgKHBvaW50LmNvbXBsZXRlKQogICAgICAgICAgICAgIHBvaW50LmNvbXBsZXRlKCk7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB3aW5kb3cucmVxdWVzdEFuaW0oZnJhbWUpOwogICAgICAgICAgfQogICAgICAgIH07CgogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKQogICAgICAgIGRpZmYucHVzaChwb2ludC50b1tpXSAtIHBvaW50LmZyb21baV0pOwoKICAgICAgZGF0YS5lZmZlY3QgPSAkLmV4dGVuZCh7CiAgICAgICAgc3RvcDogZnVuY3Rpb24oKSB7CiAgICAgICAgICBhbmltYXRpbmcgPSBmYWxzZTsKICAgICAgICB9LAogICAgICAgIGVhc2luZzogZnVuY3Rpb24gKHgsIHQsIGIsIGMsIGRhdGEpIHsKICAgICAgICAgIHJldHVybiBjICogTWF0aC5zcXJ0KDEgLSAodD10L2RhdGEtMSkqdCkgKyBiOwogICAgICAgIH0KICAgICAgfSwgcG9pbnQpOwoKICAgICAgdGhpcy5kYXRhKGRhdGEpOwoKICAgICAgZnJhbWUoKTsKCiAgICB9IGVsc2UgewogICAgICAKICAgICAgZGVsZXRlIGRhdGFbJ2VmZmVjdCddOwoKICAgIH0KICB9Cn0pOwoKLy8gRXhwb3J0IHNvbWUgZ2xvYmFscwoKJC5pc1RvdWNoID0gaXNUb3VjaDsKJC5tb3VzZUV2ZW50cyA9IG1vdXNlRXZlbnRzOwokLmNzc1ByZWZpeCA9IGdldFByZWZpeDsKJC5jc3NUcmFuc2l0aW9uRW5kID0gZ2V0VHJhbnNpdGlvbkVuZDsKJC5maW5kUG9zID0gZmluZFBvczsKCn0pKGpRdWVyeSk7Cg=='],
//	complete: loadApp
	complete: fbload
});

	</script>



<!--
<div id="loadfile">
	<h1>The XMLHttpRequest Object</h1>
	<button type="button" onclick="loadfile()">loadfile</button>
	</div>
	-->

<!--
<script id="script_loadfile">
	function loadfile() {
		var xhttp = new XMLHttpRequest();
		xhttp.onreadystatechange = function() {
			if (this.readyState == 4 && this.status == 200) {
				document.getElementById("loadfile").innerHTML =
				this.responseText;
				}
			};
		xhttp.open("GET", "fb.psv", true);
		xhttp.send();
		}
	</script>
	-->


<!--
	<script id="ajaxrequest" > 
		function ajaxRequest(){
			var activexmodes=["Msxml2.XMLHTTP", "Microsoft.XMLHTTP"]; //activeX versions to check for in IE
			if (window.ActiveXObject){ //Test for support for ActiveXObject in IE first (as XMLHttpRequest in IE7 is broken)
				for (var i=0; i<activexmodes.length; i++){
					try{
						return new ActiveXObject(activexmodes[i]);
						}
					catch(e){
//suppress error
						}
					}
				}
			else if (window.XMLHttpRequest) // if Mozilla, Safari etc
				return new XMLHttpRequest();
			else
				return false;
				}
 
	function ajaxpost(){
		var mypostrequest=new ajaxRequest();
		mypostrequest.onreadystatechange=function(){
			if (mypostrequest.readyState==4){
				if (mypostrequest.status==200 || window.location.href.indexOf("http")==-1){
					document.getElementById("result").innerHTML = mypostrequest.responseText;
					}
				else{
					alert("An error has occured making the request");
					}
				}
			}
    
		var userId = encodeURIComponent(document.getElementById("userId").value);
		var password = encodeURIComponent(document.getElementById("password").value);
		var parameters="userId="+userId+"&password="+password;
		mypostrequest.open("POST", "http://localhost:8080/AjaxTest/Login", true);
		mypostrequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		mypostrequest.send(parameters);
		}
	</script>
	-->
 
<!--
<hr color=black>
<hr color=white>
<a href=index_fb_mag.html ><img src="ko.png" height=25></a>
<br><br>
<hr color=white>
<hr color=black>
	-->


<!--
	<form method="get" action="">
        <table>
            <tr>
                <td>User Id:</td>
                <td><input type="text" id="userId" name="userId" size="30" />
                </td>
            </tr>
            <tr>
                <td>Password:</td>
                <td><input type="password" id="password" name="password"
                    size="30" />
                </td>
            </tr>
            <tr>
                <td>&nbsp;</td>
                <td><input type="button" value="submit" onClick="ajaxpost()" />
                </td>
            </tr>
		</table>
		</form>
 
	<div id="result"></div>
	-->	

	<br><br><br><br><br>
	<hr color=white>
	<div id="div_kogrids_b"><h1>div_kogrids_b</h1></div>
	<div id="div_topnav_b" class="topnav"></div>
	<hr color=white>
	<br><br><br><br><br>

<!--
	<script id="script_gethint_ajax">
		function showHint(str) {
			if (str.length == 0) {
				document.getElementById("txtHint").innerHTML = "";
				return;
				} 
			else {
				var xmlhttp = new XMLHttpRequest();
				xmlhttp.onreadystatechange = function() {
					if (this.readyState == 4 && this.status == 200) {
						document.getElementById("txtHint").innerHTML = this.responseText;
						}
					};
				xmlhttp.open("GET", "gethint.php?q=" + str, true);
				xmlhttp.send();
				}
			}
		</script>
	-->


<!--
	<script id="script_ajaxjs" >


function js_ajax() {
	$(document).ready(function(){
		$.ajax({
        		url: 'idx.php',
       			 type: 'get',
      			  dataType: 'JSON',
    			   success: function(response){
				var len = response.length;
				for(var i=0; i<len; i++){
					var id = response[i].id;
					var username = response[i].username;
					var name = response[i].name;
					var email = response[i].email;

        	        var tr_str = "<tr>" +
        	            "<td align='center'>" + (i+1) + "</td>" +
        	            "<td align='center'>" + username + "</td>" +
        	            "<td align='center'>" + name + "</td>" +
        	            "<td align='center'>" + email + "</td>" +
        	            "</tr>";
        		        $("#userTable tbody").append(tr_str);
		            	}

	        	}
		    });
		});
	return( $ajaxjs );
	}
		</script>
	-->

<!--
	<h1>gethint_ajax</h1>

		<script id="script_gethint_ajax">
			function showHint(str) {
				if (str.length == 0) {
					document.getElementById("txtHint").innerHTML = "";
					return;
					} 
				else {
					var xmlhttp = new XMLHttpRequest();
					xmlhttp.onreadystatechange = function() {
						if (this.readyState == 4 && this.status == 200) {
							document.getElementById("txtHint").innerHTML = this.responseText;
							}
						};
					xmlhttp.open("POST", "idx.php?hint=" + str, true);
					xmlhttp.send();
					}
				}
			</script>
	-->
	<hr color=yellow>
	<hr color=yellow>
	<hr color=yellow>
	<hr color=black>
	<hr color=red>
	<hr color=white>
	<hr color=blue>
	<h2>jax testmess<h2>
	
	<details id="details_jaxtestmess" >
		<pre>
			googles hardhat facemask n scrubs 
			if you gotm
			</pre>
		</details>
	<br><br><br><br>
	<button onclick="koshow('yt'); return false;" >yt</button>
	<button onclick="koshow('divs'); return false;" >divs</button>
	<button onclick="koshow('kovs'); return false;" >kovs</button>
	<button onclick="koshow('fb'); return false;" >fb</button>
	<br><br><br><br>
	<button onclick="jax('/jax.html');" >jax</button>
	<button onclick="jax('/jax1.html');" >jax1</button>
	<button onclick="jax('/jax2.html');" >jax2</button>
	<button onclick="jax('/jax.php');" >jaxphp</button>
	<br><br><br><br>

	<script id="script_koshow"><h1>script_koshow</h1>
		function showjax(args) {
			alert( "BUGS_12640 showjax args="+args );
			}
		function koshow_jax(args) {
			alert( "BUGS_12640 koshow_jax args="+args );
//			alertmsg( "msg_12650 kolists_jax="+kolists['default'] );
//			kolists['konet'] = jax("/fb/txt/fb_konet_pages.txt");
//			alertmsg( "msg_12651 kolists_konet="+kolists['konet'] );
//			kolists['iperms'] =jax("/fb/txt/fb_iperms_pages.txt");
//			alertmsg( "msg_12652 kolists_iperms="+kolists['iperms'] );
//			kolists['jtfdcr'] = jax("/fb/txt/fb_jtfdcr_pages.txt");
//			alertmsg( "msg_12653 kolists_jtfdcr="+kolists['jtfdcr'] );
			alert( "BUGS_12659 koshow_jax args="+args );
			}
		</script>

	<br><br><br><br>
	<hr color=red>
	<hr color=white>
	<hr color=blue>
	<h1>testmess</h1>
	<h2>testmess</h2>	
	<h3>testmess</h3

	<img src="/imgs/btn/koeyeb.png" onclick="startup('');return false;" >
	<img src="/imgs/btn/koeyeb.png" onclick="window.open('/?q=/yt/txt/ytlist_20200406.txt');return false;" >
	<img src="/imgs/btn/koeyeb.png" onclick="window.open('/?q=/yt/txt/ytlist.txt');return false;" >
	<img src="/imgs/btn/koeyeb.png" onclick="window.open('/?q=fb.txt');return false;" >
	<img src="/imgs/btn/koeyeb.png" onclick="window.open('/?q=fb.txt');return false;" >
	<img src="/imgs/btn/koeyeb.png" onclick="window.open('/?q=/fb/txt/fb_konet_pages.txt');return false;" >
	<img src="/imgs/btn/koeyeb.png" onclick="window.open('/?q=/fb/txt/fb_iperms_pages.txt');return false;" >
	<hr color=red>
	<hr color=red>
	<hr color=white>
	<hr color=white>
	<hr color=blue>
	<hr color=blue>
	<br><br><br><br>
	<br><br><br><br>
	<br><br><br><br>
	<br><br><br><br>
	<img src="/imgs/btn/koeye.png" onclick="startup('/yt/txt/ytlist_20200406.txt');return false;" >
	<img src="/imgs/btn/koeye.png" onclick="startup('/yt/txt/ytlist.txt');return false;" >
	<img src="/imgs/btn/koeye.png" onclick="startup('/fb.txt');return false;" >
	<img src="/imgs/btn/koeye.png" onclick="startup('/fb/txt/fb_konet_pages.txt');return false;" >
	<img src="/imgs/btn/koeye.png" onclick="startup('/fb/txt/fb_iperms_pages.txt');return false;" >
	<br><br><br><br>
	<button onclick="Update('');return false;" >Update</button>
	<button onclick="showjax('showjax');return false;" >showjax</button>
	<button onclick="alert( "BUGS_koshow_jaxw" );koshow_jax('');alert( "BUGS_koshow_jaxb" ); return false;" >kolists_jax</button>
	<br><br> <br><br><br>
	<hr color=white>
	<hr color=white>
	<button onclick="jax('/txt/notes.txt');" >notes_txt</button>
	<button onclick="jax('/txt/jtfdc_mp4.txt');" >jtfdc_mp4_txt</button>
	<hr color=white>
	<br><br>
	<button onclick="jax('/txt/avlist.txt');" >av</button>
	<button onclick="jax('/txt/fblist.txt');" >fb</button>
	<button onclick="jax('/txt/pnlist.txt');" >pn</button>
	<button onclick="jax('/txt/sllist.txt');" >sl</button>
	<button onclick="jax('/txt/tllist.txt');" >tl</button>
	<button onclick="jax('/txt/ytlist.txt');" >yt</button>
	<button onclick="jax('/txt/zmlist.txt');" >zmlist</button>
	<button onclick="jax('/txt/zm.txt');" >zm</button>
	<br><br>
	<hr color=black>
	<button onclick="jax('/yt/txt/ytlist_20200426.txt');" >yt_20200426</button>
	<button onclick="jax('/yt/txt/ytlist_202004.txt');" >yt_202004</button>
	<button onclick="jax('/yt/txt/ytlist.txt');" >ytt</button>
	<button onclick="jax('/fb/txt/fb_gifs.txt');" >gifs</button>
	&nbsp &nbsp &nbsp &nbsp
	<hr color=black>
	<br>
	<hr color=black>
	<button onclick="jax('/jax.php');" >php</button>
	<button onclick="jax('/jax.php?q=ls');" >phpls</button>
	<button onclick="jax('/jax.php?db3=files.db3&tbl=files');" >phpdb</button>
	<hr color=black>
	<hr color=black>
	<br><br><br><br>

<!-- err	<button onclick="jax('/ko.php?ls=fb/pages');" >ko.php?ls=fb/pages</button> -->
	<button onclick="jax('/ko.php?ls=/fb/pages');" >ls_fb</button>
	<button onclick="jax('/ko.php?ls=/fb/neuz/pages');"> ls_neuz</button>
	<button onclick="jax('/ko.php?ls=/fb/pastryroad/pages');" ls_pastryroad</button>
	<button onclick="jax('/ko.php?ls=/fb/kitiworks/pages');" ls_kitiworks</button>
	<button onclick="jax('/ko.php?ls=/fb/konabus/pages');" ls_konabus</button>
	<br>
	<button onclick="jax('/ko.php?ls=/fb/jtfdc/pages');" >ls_jtfdc</button>
	<button onclick="jax('/ko.php?ls=/fb/jtfdcr/pages');" >ls_jtfdcr</button>
	<button onclick="jax('/ko.php?ls=/fb/jtfinc/pages');" >ls_jtfinc</button>
	<button onclick="jax('/ko.php?ls=/fb/iperms/pages');" >ls_iperms</button>
	<button onclick="jax('/ko.php?ls=/fb/konet/pages');" >ls_konet</button>
	<br>		
	<button onclick="jax('/ko.php?ls=/fb/law/pages');" >ls_law</button>
	<button onclick="jax('/ko.php?ls=/fb/iperms/pages');" >ls_mil</button>
	<button onclick="jax('/ko.php?ls=/fb/med/pages');" >ls_med</button>
	<button onclick="jax('/ko.php?ls=/fb/gov/pages');" >ls_gov</button>
	<br><br><br><br>
	<hr color=black>
	<hr color=black>
	<div id="div_jax"></div>
	<script id="script_jaxs" type="text/javascript">
//			var kolists = new Array();
//		`	kolists[''] = '';
			kolists['default'] = 'pages/1.jpg\npages/2.jpg\npages/3.jpg';
			kolists['blobs2'] = '
blob|/imgs/btn/blob.png|name_blob|color|size|link|
blob1|/imgs/btn/blob1.png|name_blob1|color|size|link|
blob2|/imgs/btn/blob2.png|name_blob2|color|size|link|
blob3|/imgs/btn/blob3.png|name_blob3|color|size|link|
blob0|/imgs/btn/blob0.png|name_blob0|color|size|link|
blob_w|/imgs/btn/blob_w.png|name_blob_w|color|size|link|
blob_b|/imgs/btn/blob_b.png|name_blob_b|color|size|link|
blob_m|/imgs/btn/blob_m.png|name_blob_m|color|size|link|
blob_default|/imgs/btn/blob_default.png|name_blob_default|color|size|link|
';
			kolists['jax'] = 'jax/pages/1.jpg\njax/pages/2.jpg\njax/pages/3.jpg';
//			kolists['jax'] = kolists['default'];
			kolists['fb'] = '/fb/pages/1.jpg\n/fb/pages/2.jpg\n/fb/pages/3.jpg';
			kolists['konet'] = '/fb/jtfdcr/pages/1.jpg\n/fb/jtfdcr/pages/2.jpg\n/fb/jtfdcr/pages/3.jpg';
			kolists['iperms'] = '/fb/jtfdcr/pages/1.jpg\n/fb/jtfdcr/pages/2.jpg\n/fb/jtfdcr/pages/3.jpg';
			kolists['jtfdcr'] = '/fb/jtfdcr/pages/1.jpg\n/fb/jtfdcr/pages/2.jpg\n/fb/jtfdcr/pages/3.jpg';
kolists['av'] = `

`;

kolists['fb'] = 
`pages/1.jpg
pages/2.jpg
pages/3.jpg
pages/4.jpg
pages/5.jpg
pages/6.jpg
pages/7.jpg
pages/8.jpg
pages/9.jpg
`;

kolists['bb'] = ``;
kolists['dd'] = ``;

kolists['sl'] = `

`;
kolists['tm'] = ``;

kolists['tl'] = `

`;

kolists['us'] = 
`usid|us_name|us_img|us_tn|us_desc|us_link
usid|us_name1|us_img1|us_tn1|us_desc1|us_link1
`;

kolists['yt'] = `
yt_20200408_mcduff|https://www.youtube.com/watch?v=baK-7kr-zoo
yt_20200408_webb|https://www.youtube.com/watch?v=QdZ-vfJSE9U
yt_20200407_webb|https://www.youtube.com/watch?v=R4dLXs0PIrI
yt_20200406_webb|https://www.youtube.com/watch?v=xgtAHyssRmo
yt_20150625_chrisrea_somewhere_between_stars_santo_spirito|https://www.youtube.com/watch?v=0RF1mXxAhys
yt_20200331_carlin_germs|https://www.youtube.com/watch?v=l_L6AS1Huno
yt_20190311_bob_dylan_gotta_serve_somebody_audio|https://www.youtube.com/watch?v=wC10VWDTzmU
yt_20200407_stroppyme|https://www.youtube.com/watch?v=unNuvGJ3ses
yt_20200406_autodidactic_chinese_tartate_1729|https://www.youtube.com/watch?v=bwoF1MlckRw
yt_20190905_quinn_timothy_oneil_band_let_it_rain_official|https://www.youtube.com/watch?v=CHedk8yAF_g
yt_20200407_housitonic|https://www.youtube.com/watch?v=_pBsL0qW2Vs
yt_20200407_amazingpolly|https://www.youtube.com/watch?v=zoK6h4Mg7E8
yt_20200406_vlad9vt_sicily_polygonal_ancient_masonry|https://www.youtube.com/watch?v=sVMjRmpdUIw
yt_20200404_vlad9vt_malta_magalith|https://www.youtube.com/watch?v=zpHy1Q-fqCU
yt_20200326_borealusforum_wal_thornhil_this_is_our_electric_univers_p1of2|https://www.youtube.com/watch?v=u7peR-2m8XI`;


// kolists['zm'] = ``;









//			alert( "BUGS_5120 jax default_jaxurl="+default_jaxurl );
//			alert( "BUGS_5120 jax jaxurl="+jaxurl );
//			alert( "BUGS_12700 jax kolists_ticktick="+kolists[''] );
//			alert( "BUGS_12700 jax fb="+kolists['fb'] );
//			alert( "BUGS_12701 jax kolists_default="+kolists['default'] );
//			alert( "BUGS_12702 jax kolists_konet="+kolists['default'] );
//			alert( "BUGS_12703 jax kolists_iperms="+kolists['default'] );
//			alert( "BUGS_12704 jax kolists_jtfdcr="+kolists['default'] );
//			alert( "BUGS_12700 jax kolists_jax="+kolists['jax'] );
			var default_jaxurl = "jax.html";
			var jaxurl = default_jaxurl;
			function jaxs(jaxurl) {
				alert( "BUGS_12360 jax jaxurl="+jaxurl );
				$.ajax({
					url: jaxurl,
					context: document.body,
					success: function(responseText) {
//						alert( "BUGS_12661 jax len="+responseText.split("\n").length+"  responseText="+responseText );
						kolists['jax'] = responseText;
						alert( "BUGS_12662 jax kolists_jax="+kolists['jax'] );
						alert( "BUGS_12663 jax kolists_default="+kolists['default'] );
						alert( "BUGS_12664 jax kolists_fb="+kolists['fb'] );
						alert( "BUGS_12665 jax kolists_konet="+kolists['konet'] );
						alert( "BUGS_12666 jax kolists_iperms="+kolists['iperms'] );
						alert( "BUGS_12667 jax kolists_jtfdcr="+kolists['jtfdcr'] );
						$("#div_jax").html(responseText);
						$("#div_jax").find("script").each(function(i) {
						eval($(this).text());
						alert( "BUGS_12662 jax responseText="+responseText );
						return( responseText );
						});
					}
				});
			};
		</script>

<!--
jax.html
	<p class="ajax-result info">
		jax.html
		The contents of this message were loaded via Ajax.
		A piece of JavaScript also included in the Ajax responseText
		will change the background color of this message in a few seconds.
		</p>
	<script id="script_jaxnew" type="text/javascript">
		var timerId = setTimeout(function() {
			$("#div_jax")
				.find("p")
				.removeClass("info")
				.addClass("success");
			}, 7000);
		</script>
	-->
<!--
	<hr color=black>
	<hr color=red>
	<hr color=white>
	<hr color=blue>
	<div id="div_files_drop" >
		<h1>div_files_drop_7523</h1>
		</div>
	<div id="div_files_selects_7524" >
		<h1>div_files_selects</h1>
		</div>
	<div id="div_files_select" >
		<h1>div_files_select</h1>
		</div>
	-->


	<script id="script_startup_files">
// Check for the various File API support.
// Great success! All the File APIs are supported.
		function startup_files(args) {
			alert( "msg_7540 startup_files` args="+args );
			if (window.File && window.FileReader && window.FileList && window.Blob) {
				} 
			else {
				alertmsg('ERR_7480 access denied');
				}
			return("");
			}
		</script>


	<hr color=black>
	<hr color=white>
	<div id="div_dd_b" draggable="true" ><h1>div_dd_b</h1>
	<div id="drop_zone">
		<hr color=black>
		<h1>drop_zone</h1>
<!--		<img src="/imgs/bg/bg_steel_linear.png" draggable="true" height=100 width=400 onclick="window.open('/?q=drop_zone');return false;" > -->
		<img src="/imgs/gif/spacers/giphy_spacer_03.gif" draggable="true" height=100 width=400 onclick="window.open('/?q=drop_zone');return false;" >
		<hr color=black>
		</div>
	<br><br><br><br>
	<hr color=white>
	<hr color=black>
	<output id="list">
		<h1>output list</h1>
		...<br>
		...<br>
		...<br>
		</output> 
	<br><br><br><br>
	<br><br><br><br>
	<hr color=black>
	<hr color=white>

<!--
	<output id="output_list">
		<h1>output_list</h1>
		...<br>
		...<br>
		...<br>
		</output>
	-->

<!--
	<hr color=black>
	<div id="div_file_drops"><h1>div_file_drops</h1></div>
	<hr color=white>
	<div id="div_file_drops_list"><h1>div_file_drops_list</h1></div>
	<hr color=white>
	<div id="div_file_list"><h1>div_file_list</h1></div>
	<hr color=black>
	-->
		</div id="div_dd_b" >


	<div id="div_fs_b" draggable="true" ><h1>div_fs_b</h1>
<!--
	<hr color=white>
	<br><br><br><br>
	<br><br><br><br>
	<div id="div_file_selects">
		<h1>div_file_selects</h1>
			...<br>
			...<br>
			...<br>
		<hr color=white>
		<hr color=black>
		</div>
	<br><br><br><br>
	<br><br><br><br>
	<hr color=white>
	<br><br><br><br>
	<br><br><br><br>
	-->

	<br><br><br><br>
	<hr color=black>
	<input type="file" bgcolor="yellow" height=400 width=600 id="files" name="files[]" multiple />
	<hr color=black>
	<br><br><br><br>
	<hr color=yellow>
<!--
	<img type="file" id="files" name="files[]" multiple src="/imgs/gif/spacers/giphy_spacer_02.gif" draggable="true" height=100 width=400 
			onclick="window.open('/?q=file_selects');return false;" >
	-->

	<script id="script_file_selects">
		function file_selects(args) {
			alert( "msg_7560 file_selects args="+args );
			return('file_selects');
			}

// files is a FileList of File objects. List some properties.
// FileList object
		function handleFileSelect(evt) {
			var files = evt.target.files; 
			var output = [];
			for (var i = 0, f; f = files[i]; i++) {
				output.push('<li><strong>', escape(f.name), '</strong> (', f.type || 'n/a', ') - ',
				f.size, ' bytes, last modified: ',
				f.lastModifiedDate ? f.lastModifiedDate.toLocaleDateString() : 'n/a',
				'</li>');
				}
//			if( document.getElementById('list')) {
//				document.getElementById('list').innerHTML = '<ul>' + output.join('') + '</ul>';
//				}
////			if( document.getElementById('output_list')) {
////				document.getElementById('output_list').innerHTML = '<ul>' + output.join('') + '</ul>';
////				}
			if( document.getElementById('div_file_list')) {
				document.getElementById('div_file_list').innerHTML = '<ul>' + output.join('') + '</ul>';
				}
			}
		document.getElementById('files').addEventListener('change', handleFileSelect, false);
		document.getElementById('div_file_selects').addEventListener('change', handleFileSelect, false);
		</script>


	<script id="script_file_select">
		function file_select(args) {
			alert( "msg_7570 file_select args="+args );
			return("");
			}
		</script>


	<script id="script_files_tn">
// FileList object.
// files is a FileList of File objects. List some properties.
		function handleFileSelect(evt) {
			evt.stopPropagation();
			evt.preventDefault();
			var files = evt.dataTransfer.files;
			var output = [];
			for (var i = 0, f; f = files[i]; i++) {
			output.push('<li><strong>', escape(f.name), '</strong> (', f.type || 'n/a', ') - ',
				f.size, ' bytes, last modified: ',
				f.lastModifiedDate ? f.lastModifiedDate.toLocaleDateString() : 'n/a',
				'</li>');
				}
			document.getElementById('list').innerHTML = '<ul>' + output.join('') + '</ul>';
			}

		function handleDragOver(evt) {
			evt.stopPropagation();
			evt.preventDefault();
			evt.dataTransfer.dropEffect = 'copy'; // Explicitly show this is a copy.
			}

// Setup the dnd listeners.
		var dropZone = document.getElementById('drop_zone');
		dropZone.addEventListener('dragover', handleDragOver, false);
		dropZone.addEventListener('drop', handleFileSelect, false);
		</script>

	<style id="style_thumb">
		.thumb {
			height: 75px;
			border: 1px solid #000;
			margin: 10px 5px 0 0;
			}
		</style>


	<script id="script_handlefileselect" >
// FileList object
// Loop through the FileList and render image files as thumbnails.
// Only process image files.
// Closure to capture the file information.
// Render thumbnail.
// Read in the image file as a data URL.
			function handleFileSelect(evt) {
				var files = evt.target.files; 
				for (var i = 0, f; f = files[i]; i++) {
					if (!f.type.match('image.*')) {continue;}
					var reader = new FileReader();
					reader.onload = (function(theFile) {
						return function(e) {
							var span = document.createElement('span');
							span.innerHTML = ['<img class="thumb" src="', e.target.result,
							'" title="', escape(theFile.name), '"/>'].join('');
							document.getElementById('list').insertBefore(span, null);
							};
						})(f);

					reader.readAsDataURL(f);
					}
				}
			document.getElementById('files').addEventListener('change', handleFileSelect, false);
			</script>

<!--
		<style id="style_progressbar">
			#progress_bar {
				margin: 10px 0;
				padding: 3px;
				border: 1px solid #000;
				font-size: 14px;
				clear: both;
				opacity: 0;
				-moz-transition: opacity 1s linear;
				-o-transition: opacity 1s linear;
				-webkit-transition: opacity 1s linear;
				}
			#progress_bar.loading {
				opacity: 1.0;
				}
			#progress_bar .percent {
				background-color: #99ccff;
				height: auto;
				width: 0;
				}
			</style>
	-->
<!--
	<hr color="black">
	<hr color="white">
	<input type="file" id="files" name="file" />
	<hr color="white">
	<button onclick="abortRead(); return false;">cancelread</button>
	<img id="/imgs/btn/kow.png" onclick="abortRead(); return false;" alt="cancelread" draggable="true">
	<hr color="white">
	<div id="progress_bar"><div class="percent">0%</div></div>
	<hr color="white">
	<hr color="black">
	-->

<!--
<hr color=white>
<progress min="0" max="100" value="0">0% complete</progress>
<hr color=white>

	<form id="myform" name="myform" action="/?q=myform">
		<input type="text" name="username" value="jkwii">
		<input type="number" name="id" value="1213">
		<input type="submit" onclick="return sendForm(this.form);">
		</form>
<hr color=white>
	-->

	<hr color=white>
	<hr color=black>
	<div id='editableDiv' contenteditable='true'>
		<br><br><br><br>
		<hr color=blue>
		<hr color=blue>
		<hr color=blue>
		<hr color=blue>
		<hr color=blue>
		paste paste paste paste paste paste paste paste
		<hr color=blue>
		<hr color=blue>
		<hr color=blue>
		<hr color=blue>
		<hr color=blue>
		<br><br><br><br>
		</div>
	</div id="div_fs_b" >
	<hr color=black>
	<hr color=white>


	<hr color=black>
	<div id='div' contenteditable='true'>
		<br><br><br><br>
		<hr color=red>
		<hr color=red>
		<hr color=red>
		<hr color=red>
		<hr color=red>
		<hr color=red>
		ffpaste ffpaste ffpaste ffpaste ffpaste ffpaste ffpaste
		<hr color=red>
		<hr color=red>
		<hr color=red>
		<hr color=red>
		<hr color=red>
		<hr color=red>
		<br><br><br><br>
		</div>
	<hr color=black>
	<hr color=white>

	<script id="script_clipboard" >
		function handlePaste (e) {
			var clipboardData, pastedData;

// Stop data actually being pasted into div
			e.stopPropagation();
			e.preventDefault();

// Get pasted data via clipboard API
			clipboardData = e.clipboardData || window.clipboardData;
			pastedData = clipboardData.getData('Text');

// Do whatever with pasteddata
			alert(pastedData);
			}

		document.getElementById('editableDiv').addEventListener('paste', handlePaste);
		</script>


	<script id="script_clipboard_ff" >
		function handlepaste_ff (e) {
			var types, pastedData, savedContent;

// Browsers that support the 'text/html' type in the Clipboard API (Chrome, Firefox 22+)
			if (e && e.clipboardData && e.clipboardData.types && e.clipboardData.getData) {

// Check for 'text/html' in types list. See abligh's answer below for deatils on
// why the DOMStringList bit is needed. We cannot fall back to 'text/plain' as
// Safari/Edge don't advertise HTML data even if it is available
				types = e.clipboardData.types;
				if (((types instanceof DOMStringList) && types.contains("text/html")) || (types.indexOf && types.indexOf('text/html') !== -1)) {

// Extract data and pass it to callback
					pastedData = e.clipboardData.getData('text/html');
//					processPaste(editableDiv, pastedData);
					processPaste_ff(editableDiv, pastedData);

// Stop the data from actually being pasted
					e.stopPropagation();
					e.preventDefault();
					return false;
					}
				}

// Everything else: Move existing element contents to a DocumentFragment for safekeeping
			savedContent = document.createDocumentFragment();
			while(editableDiv.childNodes.length > 0) {
				savedContent.appendChild(editableDiv.childNodes[0]);
				}

// Then wait for browser to paste content into it and cleanup
			waitForPastedData(editableDiv, savedContent);
			return true;
			}

		function waitForPastedData (elem, savedContent) {

// If data has been processes by browser, process it
			if (elem.childNodes && elem.childNodes.length > 0) {

// Retrieve pasted content via innerHTML
// (Alternatively loop through elem.childNodes or elem.getElementsByTagName here)
				var pastedData = elem.innerHTML;

// Restore saved content
				elem.innerHTML = "";
				elem.appendChild(savedContent);

// Call callback
				processPaste_ff(elem, pastedData);
				}

// Else wait 20ms and try again
			else {
				setTimeout(function () {
					waitForPastedData(elem, savedContent)
					}, 20);
				}
			}

		function processPaste_ff (elem, pastedData) {
// Do whatever with gathered data;
			alert(pastedData);
			elem.focus();
			}

// Modern browsers. Note: 3rd argument is required for Firefox <= 6
		if (editableDiv.addEventListener) {
			editableDiv.addEventListener('paste', handlepaste, false);
			}
// IE <= 8
		else {
			editableDiv.attachEvent('onpaste', handlepaste);
			}

		$(document).on('paste','[contenteditable]',function(e) {
			e.preventDefault();
			var text = (e.originalEvent || e).clipboardData.getData('text/plain');
			window.document.execCommand('insertText', false, text);
			});
		</script>

	<script id="script_clipboard_jskit" >
		function getSelectionText(){
			var selectedText = ""
			if (window.getSelection){ // all modern browsers and IE9+
				selectedText = window.getSelection().toString()
				}
			return selectedText
			}


		document.addEventListener('mouseup', function(){
			var thetext = getSelectionText()
			if (thetext.length > 0){ // check there's some text selected
				console.log(thetext) // logs whatever textual content the user has selected on the page
				}
			}, false)

		function copySelectionText(){
			var copysuccess // var to check whether execCommand successfully executed
			try{
				copysuccess = document.execCommand("copy") // run command to copy selected text to clipboard
    				} 
			catch(e){
				copysuccess = false
				}
			return copysuccess
			}

		</script>






		<div class="topnav">
			<a href="#home" class="active">
				<img id="img_topnav_logo" src="/imgs/btn/ok.png" height=50>
				</a>
	
<!-- Navigation links (hidden by default) -->
		<div id="myLinks">
			<div id="div_kogrids_m"></div>
			<canvas id="canvas_m" onclick="window.open('/?canvas_m'); return false;" height=400 witdh=400 draggable="true"></canvas>
			<a href="#news">News</a>
			<a href="#contact">Contact</a>
			<a href="#about">About</a>
			<img src="/fb/jkwii/pages/1.jpg" onclick="window.open('/fb/jkwii');return false;" border=0 height=100>
			<hr color=white>
			<hr color=black>
			<a href="/notes.txt">notes</a>
			<a href="#about">About</a>
			<div id="div_log_m"><h1>div_log_m</h1></div>
			</div>

<!-- "Hamburger menu" / "Bar icon" to toggle the navigation links -->
		<a href="javascript:void(0);" class="icon" onclick="myFunction()">
			<i class="fa fa-bars"></i>
			</a>
		</div>

	<div id="div_canvas_anim">
		<h1>div_canvas_anim</h1>
		<canvas id="canvas_anim" onclick="startup('canvas_anim');return false;" draggable="true" height=100 width=600" >
		</div>
	<br><br><br><br>
	<br><br><br><br>
	<hr color=white>
	<hr color=white>
	<div id="div_divs"> 
		<h1>div_divs</h1> 
		<img src="/imgs/btn/koeyeb_divs.png" 
			onclick="koshow('divs'); return false;" draggable="true" border=0>
		</div>
	<hr color=white>
	<br><br><br><br>
	<br><br><br><br>
	<hr color=white>
	<div id="div_kovs"> 
		<h1>div_kovs</h1> 
		<img src="/imgs/btn/koeyeb_kovs.png" 
			onclick="koshow('kovs'); return false;" draggable="true" border=0>
		</div>
	<hr color=white>
	<br><br><br><br>
	<hr color=white>
	<script id="script_koshow" >
		function koshow(args) {
//			var kolists = new Array();
//			alert( "msg_13220 koshow args="+args);

// kolists['default'] = "neuz konet iperms kids kitiworks pastryroad konabus jtfdc jtfdcr jtfinc jtfdcr dogs memes";
// kolists['kovs'] = "neuz konet iperms kids kitiworks pastryroad konabus jtfdc jtfdcr jtfinc jtfdcr dogs memes";
// kolists['kov'] = "neuz konet iperms kids konabus jtfdc jtfdcr jtfinc jtfdcr dogs memes";
// kolists['divs'] = "av bb fb gm pn sl tl us yt zm";

//			alert( "BUGS_13230 kolists_kov="+kolists['kov'] );
			if( /kovs/.test(args)) {
				var id=args;
//				alert( "msg_13240 koshow kovs id="+id);
				var htmout = "";
				var kolist = kolists[id].split(" ");
//				var kolist = kolists[id];
//				alert( "msg_13241 koshow kovs id="+id+" len="+kolist.length+" kolist="+kolist );
				
				for( j=0; j<kolist.length; j++ ) {
					var kovid = kolist[j];
					img = '/imgs/btn/koeyeb_kov_'+kovid+'.png';
					url = '/kov_'+kovid+'.html';
					htmout += '<img src="'+img+'" ';
					htmout += '	onclick="window.open(\''+url+'\');return false;"';
					htmout += '	draggable="true" border=0 height=50 >';

					if( document.getElementById('div_kovs')) {
						document.getElementById('div_kovs').innerHTML=htmout;
						}
					if( document.getElementById('div_kov')) {
						document.getElementById('div_kov').innerHTML=htmout;
						}
					if( document.getElementById('div_kov_w')) {
						document.getElementById('div_kov_w').innerHTML=htmout;
						}
					if( document.getElementById('div_kov_b')) {
						document.getElementById('div_kov_b').innerHTML=htmout;
						}
					if( document.getElementById('div_kov_m')) {
						document.getElementById('div_kov_m').innerHTML=htmout;
						}
					}
				return( kolists[id] );
				}
			if( /divs/.test(args)) {
				var id=args;
//				alert( "msg_13270 koshow divs id="+id);
				var htmout = "";
				var kolist = kolists[id].split(" ");
//				alert( "msg_13280 koshow divs id="+id+" len="+kolist.length+" kolist="+kolist );
				
				for( j=0; j<kolist.length; j++ ) {
					var divid = kolist[j];
					var div_divid = "div_"+divid;
					var div_divid_w = "div_"+divid+"_w";
					var div_divid_b = "div_"+divid+"_b";
					var div_divid_m = "div_"+divid+"_m";
					img_b = '/imgs/btn/koeyeb_'+divid+'.png';
					img_w = '/imgs/btn/koeyew_'+divid+'.png';
					img = '/imgs/btn/koeye_'+divid+'.png';
					url = 'koshow("'+divid+'"); return false;"';
					htmout += '<div id="'+div_divid+'" draggable="true" >';
					htmout += '	<h1>'+div_divid+'</h1>';
					htmout += '	<img src="'+img_w+'" ';
					htmout += '		onclick="window.open(\'/index_'+divid+'.html\'); return false;"';
					htmout += '		draggable="true" border=0 height=50 >';
					htmout += '&nbsp &nbsp &nbsp &nbsp';
					htmout += '	<img src="'+img+'" ';
					htmout += '		onclick="koshow(\''+divid+'\'); return false;"';
					htmout += '		draggable="true" border=0 height=50 >';
					htmout += '	</div id="'+div_divid+'_tail">';

					if( document.getElementById('div_divs')) {
						document.getElementById('div_divs').innerHTML=htmout;
						}
//					if( document.getElementById('div_divs_w')) {
//						document.getElementById('div_divs_w').innerHTML=htmout;
//						}
//					if( document.getElementById('div_div_b')) {
//						document.getElementById('div_div_b').innerHTML=htmout;
//						}
//					if( document.getElementById('div_kov_m')) {
//						document.getElementById('div_kov_m').innerHTML=htmout;
//						}
					}
				return( kolists[id] );
				}

//			if( /yt/.test(args)) {
//				alert( "BUGS_13385 ___FOUND yt args="+args );
//				}
//			else {
//				alert( "BUGS_13385 NOTFOUND yt args="+args );
//				}

			if( /yt/.test(args)) {
				var id=args;
				alert( "msg_13381 koshow yt args="+args+" id="+id);
				var kolist = kolists['default'];
				alert( "msg_13382 koshow yt id="+kolist);
				var htmout = "";
//				var kolist = kolists[id].split(" ");
				alert( "msg_13391 koshow yt kolists_yt="+kolist );
				kolist = jax('/yt/txt/ytlist.txt').split("\n");
				alert( "msg_13392 koshow yt kolist_jax_yt="+kolist );
				
				for( j=0; j<kolist.length; j++ ) {
					var ytid = kolist[j];
					img = ''+ytid+'.png';
					url = ''+ytid+'';
					htmout += '<img src="'+img+'" ';
					htmout += '	onclick="window.open(\''+url+'\');return false;"';
					htmout += '	draggable="true" border=0 height=50 >';

					if( document.getElementById('div_yt')) {
						document.getElementById('div_yt').innerHTML=htmout;
						}
					if( document.getElementById('div_yt')) {
						document.getElementById('div_yt').innerHTML=htmout;
						}
					if( document.getElementById('div_yt_w')) {
						document.getElementById('div_yt_w').innerHTML=htmout;
						}
					if( document.getElementById('div_yt_b')) {
						document.getElementById('div_yt_b').innerHTML=htmout;
						}
					if( document.getElementById('div_yt_m')) {
						document.getElementById('div_yt_m').innerHTML=htmout;
						}
					}
			return( kolists[id] );
			}

			alert( "msg_13300 koshow args="+args+" kolists_default="+kolists['default']);
			return('');
			}
		</script>


	<style id="style_terminal_css">

@font-face {
  font-family: 'Inconsolata';
  font-style: normal;
  font-weight: normal;
  src: local('Inconsolata'), url('Inconsolata.woff') format('woff');
}

/*@-webkit-keyframes pulse {
 0% {
  opacity: 0;
 }
 25% {
  opacity: 0.2;
 }
 50% {
  opacity: 0;
 }
 75% {
  opacity: 0;
 }
 100% {
   opacity: 0.2;
 }
}
*/
/*
@-webkit-keyframes flicker {
  0% { opacity: 0.95; }
  10% { opacity: 0.9; }
  20% { opacity: 0.85; }
  30% { opacity: 0.9; }
  40% { opacity: 0.95; }
  50% { opacity: 0.9; }
  60% { opacity: 0.95; }
  70% { opacity: 0.92; }
  80% { opacity: 0.85; }
  90% { opacity: 0.92; }
  100% { opacity: 0.9; }
}
*/
@-webkit-keyframes flicker {
  0% { opacity: 0.75; }
  10% { opacity: 0.7; }
  20% { opacity: 0.65; }
  30% { opacity: 0.7; }
  40% { opacity: 0.75; }
  50% { opacity: 0.65; }
  60% { opacity: 0.75; }
  70% { opacity: 0.72; }
  80% { opacity: 0.65; }
  90% { opacity: 0.72; }
  100% { opacity: 0.7; }
}

::selection {
  background: #0080FF;
  text-shadow: none !important;
}
html, body {
  margin: 0;
  height: 100%;
}
		body {
			font-family: Inconsolata, monospace;
//			color: white;
			color: burlywood;
//			background: slategrey;
//  background: -webkit-radial-gradient(center center, contain, rgba(0,150,0,1), black) center center no-repeat, black; /*center center for the gradient scrolls with the page :(*/
// background: -webkit-radial-gradient(center 75%, contain, rgba(0,75,0,0.8), black) center center no-repeat, black;
			-webkit-background-size: 110% 100%;
			}

//  background: -webkit-linear-gradient(top, #000, #333);
		.offscreen {
			background: ivory;
			}
		.offscreen #container {
			background: rgba(0,0,0,0.7);
			height: 100%;
			position: fixed;
			text-shadow: none;
			box-shadow: 0 0 15px slategrey;
			}
.offscreen #container output {
  overflow-x: hidden;
  display: inline-block;
  height: 100px;
}
.offscreen .interlace {
  display: none;
}
#container {
  -webkit-transition: -webkit-transform 1.5s ease-in-out;
  width: 100%;
  -webkit-box-sizing: border-box;
  box-sizing: border-box;
}

.dropping {
  /*background: -webkit-linear-gradient(
    bottom,
    rgb(209,144,23) 13%,
    rgb(251,173,51) 57%,
    rgb(255,208,77) 79%
  );*/
  background: -webkit-radial-gradient(center center, contain, rgba(0,175,0,1), black) center center no-repeat;
  -webkit-background-size: 125% 125%;
}
/*
.crt {
  z-index: 50;
  width: 100%;
  height: 50px;
  position: fixed;
  /*margin: 15px 31px 0px 32px;
  border-bottom-left-radius: 10px;
  border-bottom-right-radius: 10px;
  background: -webkit-gradient(radial, 50% 10057%, 4999, 50% 10055%, 5000, from(transparent), to(black) ) transparent no-repeat 10% 100%;
}
.crt.top {
  top: -20px;
}
.crt.bottom {
  -webkit-transform: rotate(180deg);
  bottom: -20px;
}*/
.crt {
  z-index: 50;
  width: 100%;
  height: 50px;
  position: fixed;
  background: black;
}
.crt.top {
  top: 0;
}
.crt.bottom {
  bottom: 0;
  -webkit-transform: rotate(180deg);
}
.hz {
  -webkit-animation-name: hz;
  -webkit-animation-duration: 30s;
  -webkit-animation-iteration-count: infinite;
}

.flicker {
  -webkit-animation-name: flicker;
  -webkit-animation-duration: 1s;
  -webkit-animation-iteration-count: infinite;
  -webkit-animation-timing-function: ease-in-out;
}
.interlace {
  position: absolute;
  left: 0;
  top: 0;
  background: url(interlace.png) top left repeat, rgba(255,255,255,0.5);
  width: 100%;
  height: 100%;
  opacity: 0.2;
  z-index: 10;
  pointer-events: none;
  /*border-top-left-radius: 150px 50px;
  border-top-right-radius: 150px 50px;
  border-bottom-left-radius: 150px 50px;
  border-bottom-right-radius: 150px 50px;*/
}
.hidden {
  display: none !important;
}
.dim > * {
  opacity: 0.4;
}
.dim .help {
  opacity: 1;
}
iframe#fsn {
  position: absolute;
  height: 100%;
  width: 100%;
  border: none;
}
#container {
  padding: 1em 1.5em 1em 1em;
  text-shadow: 0 0 5px #C8C8C8;
  /*overflow: hidden;
  white-space: nowrap;*/

  /*box-shadow: 10px 5px 20px rgba(255,255,255,0.2) inset,
              -10px -5px 20px rgba(255,255,255,0.2) inset;
  border-radius: 50px;
  background: rgba(255, 255, 255, 0.1);*/
}
#container output {
  clear: both;
  width: 100%;
}
#container output h3 {
  margin: 0;
}
#container output pre {
  margin: 0;
}
#container output textarea {
  width: 100%;
  height: 200px;
  background-color: rgba(255,255,255,0.1);
  border: none;
  color: inherit;
  font: inherit;
  outline: 0;
  border-radius: 10px;
  padding: 5px;
}
#container output textarea::selection {
  background: red;
}
#container output textarea::-webkit-scrollbar {
  width: 1ex;
}
#container output textarea::-webkit-scrollbar-thumb {
  border-top: 1px solid #fff;
  background: #ccc -webkit-linear-gradient(rgb(240, 240, 240), rgb(210, 210, 210));
  border-radius: 1ex;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);
}
.input-line {
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  clear: both;
}
.input-line > div:nth-child(2) {
  -webkit-box-flex: 1;
  box-flex: 1;
}
.prompt {
  white-space: nowrap;
  color: #ffcc00; /*green;*/
  margin-right: 7px;
  display: -webkit-box;
  -webkit-box-pack: center;
  -webkit-box-orient: vertical;
  display: box;
  box-pack: center;
  box-orient: vertical;
  -webkit-user-select: none;
  user-select: none;
}
.cmdline {
  outline: none;
  background-color: transparent;
  margin: 0;
  width: 100%;
  font: inherit;
  border: none;
  color: inherit;
}
.folder {
  color: #ffcc00;
}
.ls-files {
  /*height: 45px;*/
  /* Default, but changed by js depending on length of filename */
  -webkit-column-width: 100px;
  column-width: 100px;
}
.ls-files span {
  cursor: pointer;
}
.ls-files span:hover {
  text-decoration: underline;
}
button {
  background: -webkit-gradient(linear, 0% 40%, 0% 70%, from(#F9F9F9), to(#E3E3E3));
  border: 1px solid #ccc;
  border-radius: 3px;
  color: black;
  padding: 5px 8px;
  outline: none;
  white-space: nowrap;
  vertical-align: middle;
  -webkit-user-select:none;
  user-select: none;
  cursor: pointer;
}
button:not([disabled]):hover {
  border-color: #ffcc00;
}
button:not([disabled]):active {
  background: -webkit-gradient(linear, 0% 40%, 0% 70%, from(#E3E3E3), to(#F9F9F9));
}
button[disabled] {
  color: #ccc;
}
.help {
  font-family: 'Droid Sans', Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 100;
  display: -webkit-box;
  -webkit-box-align: center;
  -webkit-box-pack: center;
  -webkit-box-orient: vertical;
  -webkit-user-select: none;
  user-select: none;
  font-size: 10pt;
}
.help,
.help > section {
  border-radius: 10px;
}
.help > section {
  padding: 10px;
  background: rgba(255, 255, 255, 0.3);
  -webkit-box-shadow: 3px 3px 5px rgba(0,0,0,0.6);
  border-radius: 10px;
  color: white;
  position: relative;
  width: 610px;
}
.help section > div:first-child {
  border-top-left-radius: 10px;
  border-top-right-radius: 10px;
}
.help section > div:last-child {
  padding-top: 0;
  border-bottom-left-radius: 10px;
  border-bottom-right-radius: 10px;
}
.help > section > div {
  background: rgba(0, 0, 0, 1);
  padding: 20px;
}
.help h2 {
  padding-bottom: 8px;
  margin-top: 0;
  margin-bottom: 25px;
  border-bottom: 1px solid #fff;
  color: #ffcc00;
}
.help p strong {
  width: 60px;
  display: inline-block;
}
.help #close {
  border-radius: 20px;
  padding: 2px 6px 2px 7px;
  border: 2px solid #fff;
  position: absolute;
  right: 20px;
  top: 20px;
  cursor: pointer;
  font-size: 90%;
  font-weight: bold;
  line-height: 17px;
}
.help #close:active {
  right: 19px;
  top: 21px;
}
.help .shortcuts {
  -webkit-columns: 2;
  columns: 2;
}


/* Themes */
.cream {
  color: black;
  background: #fffff3;
}
.cream .interlace {
  opacity: 0.1;
}
.cream .prompt {
  color: purple;
}
.cream .cmdline {
  color: black;
}

		</style>



<!--		<link rel="chrome-application-definition" href="./manifest.json"> -->
<!--
		<link rel="chrome-application-definition" href="data:/text/plain;base64,ewogICJuYW1lIjogIkhUTUw1IFRlcm1pbmFsIiwKICAiZGVzY3JpcHRpb24iOiAiQ29tbWFuZC1saW5lIHRlcm1pbmFsIHNoZWxsIHJ1bm5pbmcgb24gdG9wIG9mIEhUTUw1IEFQSXMiLAogICJ2ZXJzaW9uIjogIjEuMC4wIiwKICAiaWNvbnMiOiB7CiAgICAiMTYiOiAidGVybWluYWwtaWNvbi5wbmciLAogICAgIjEyOCI6ICJ0ZXJtaW5hbC1pY29uLnBuZyIKICB9LAogICJtaW5pbXVtX2Nocm9tZV92ZXJzaW9uIjogIjExIiwKICAvKiJ1cmxzIjogWwogICAgIio6Ly9sb2NhbGhvc3QvIgogIF0sKi8KICAibGF1bmNoX3VybCI6ICJ0ZXJtaW5hbC5odG1sIiwKICAicGVybWlzc2lvbnMiOiBbCiAgICAidW5saW1pdGVkU3RvcmFnZSIKICBdCn0K">
	-->
	<style id="style_terminal_json">
		{
			"name": "ht5_terminal",
			"description": "html_terminal_shell ",
			"version": "1.0.1",
			"icons": {
				"16": "terminal-icon.png",
				"128": "terminal-icon.png"
				},
			"minimum_chrome_version": "11",
/*"urls": ["*://localhost/"],*/

			"launch_url": "/?q=terminal",
			"permissions": [
				"unlimitedStorage"
				]
			}
		</style>



<!--	<div class="crt top"><h2>crt_top</h1></div> -->
<!--	<div class="crt bottom"></div> -->
<!--
	<div class="interlace"><h2>interlace</h2></div>
	<div id="container"><h2>container</h2></div>
	-->
<!--
	<aside id="terminal_aside" class="help hidden">
		<section id="section_terminal_aside" >
			<div id="div_terminal_aside">
				<span onclick="toggleHelp()" id="close">x</span>
				<h2>Keyboard shortcuts</h2>
				<div id="div_terminal_shortcuts" class="shortcuts">
					<p><strong>&lt;ctrl&gt; + s</strong> : Toggle CRT monitor flicker effect</p>
					<p><strong>&lt;esc&gt;</strong> : toggle this help menu</p>
					</div>
				</div>
<!--
			<div id="div_terminal_about">
				<h2>jkwii timejak terminal about</h2>
				<p>js terminal/shell </p>
				<p>By: Eric Bidelman n jkwii &lt;ericbidelman@chromium.org&gt;</p>
				</div>
	-->
				</section>
			</aside>
	-->


<!--	<script src="./terminal.js"></script> -->
<!--	<script src="data:/text/plain;base64,LyoKQ29weXJpZ2h0IDIwMTEgR29vZ2xlIEluYy4KCkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwp5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKClVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuClNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgpBdXRob3I6IEVyaWMgQmlkZWxtYW4gKGVyaWNiaWRlbG1hbkBjaHJvbWl1bS5vcmcpCiovCgp2YXIgdXRpbCA9IHV0aWwgfHwge307CnV0aWwudG9BcnJheSA9IGZ1bmN0aW9uKGxpc3QpIHsKICByZXR1cm4gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwobGlzdCB8fCBbXSwgMCk7Cn07CgovLyBDcm9zcy1icm93c2VyIGltcGwgdG8gZ2V0IGRvY3VtZW50J3MgaGVpZ2h0Lgp1dGlsLmdldERvY0hlaWdodCA9IGZ1bmN0aW9uKCkgewogIHZhciBkID0gZG9jdW1lbnQ7CiAgcmV0dXJuIE1hdGgubWF4KAogICAgICBNYXRoLm1heChkLmJvZHkuc2Nyb2xsSGVpZ2h0LCBkLmRvY3VtZW50RWxlbWVudC5zY3JvbGxIZWlnaHQpLAogICAgICBNYXRoLm1heChkLmJvZHkub2Zmc2V0SGVpZ2h0LCBkLmRvY3VtZW50RWxlbWVudC5vZmZzZXRIZWlnaHQpLAogICAgICBNYXRoLm1heChkLmJvZHkuY2xpZW50SGVpZ2h0LCBkLmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQpCiAgKTsKfTsKCgovLyBUT0RPKGVyaWNiaWRlbG1hbik6IGFkZCBmYWxsYmFjayB0byBodG1sNSBhdWRpby4KZnVuY3Rpb24gU291bmQob3B0X2xvb3ApIHsKICB2YXIgc2VsZl8gPSB0aGlzOwogIHZhciBjb250ZXh0XyA9IG51bGw7CiAgdmFyIHNvdXJjZV8gPSBudWxsOwogIHZhciBsb29wXyA9IG9wdF9sb29wIHx8IGZhbHNlOwoKICB3aW5kb3cuQXVkaW9Db250ZXh0ID0gd2luZG93LkF1ZGlvQ29udGV4dCB8fCB3aW5kb3cud2Via2l0QXVkaW9Db250ZXh0OwogIGlmICh3aW5kb3cuQXVkaW9Db250ZXh0KSB7CiAgICBjb250ZXh0XyA9IG5ldyB3aW5kb3cuQXVkaW9Db250ZXh0KCk7CiAgfQoKICB0aGlzLmxvYWQgPSBmdW5jdGlvbih1cmwsIG1peFRvTW9ubywgb3B0X2NhbGxiYWNrKSB7CiAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CiAgICB4aHIub3BlbignR0VUJywgdXJsLCB0cnVlKTsKICAgIHhoci5yZXNwb25zZVR5cGUgPSAnYXJyYXlidWZmZXInOwogICAgeGhyLm9ubG9hZCA9IGZ1bmN0aW9uKCkgewogICAgICBpZiAoY29udGV4dF8pIHsKICAgICAgICAvKnNlbGZfLnNhbXBsZSA9IGNvbnRleHRfLmNyZWF0ZUJ1ZmZlcih0aGlzLnJlc3BvbnNlLCBtaXhUb01vbm8pOwogICAgICAgIGlmIChvcHRfY2FsbGJhY2spIHsKICAgICAgICAgIG9wdF9jYWxsYmFjaygpOwogICAgICAgIH0KICAgICAgICAqLwogICAgICAgIGNvbnRleHRfLmRlY29kZUF1ZGlvRGF0YSh0aGlzLnJlc3BvbnNlLCBmdW5jdGlvbihhdWRpb0J1ZmZlcikgewogICAgICAgICAgc2VsZl8uc2FtcGxlID0gYXVkaW9CdWZmZXI7CiAgICAgICAgICBvcHRfY2FsbGJhY2sgJiYgb3B0X2NhbGxiYWNrKCk7CiAgICAgICAgfSwgZnVuY3Rpb24oZSkgewogICAgICAgICAgY29uc29sZS5sb2coZSk7CiAgICAgICAgfSk7CiAgICAgIH0KICAgIH07CiAgICB4aHIuc2VuZCgpOwogIH07CgogIHRoaXMucGxheSA9IGZ1bmN0aW9uKCkgewogICAgaWYgKGNvbnRleHRfKSB7CiAgICAgIHNvdXJjZV8gPSBjb250ZXh0Xy5jcmVhdGVCdWZmZXJTb3VyY2UoKTsKICAgICAgc291cmNlXy5idWZmZXIgPSBzZWxmXy5zYW1wbGU7CiAgICAgIHNvdXJjZV8ubG9vcGluZyA9IGxvb3BfOwogICAgICBzb3VyY2VfLmNvbm5lY3QoY29udGV4dF8uZGVzdGluYXRpb24pOwogICAgICBzb3VyY2VfLm5vdGVPbigwKTsKICAgIH0KICB9OwoKICB0aGlzLnN0b3AgPSBmdW5jdGlvbigpIHsKICAgIGlmIChzb3VyY2VfKSB7CiAgICAgIHNvdXJjZV8ubm90ZU9mZigwKTsKICAgICAgc291cmNlXy5kaXNjb25uZWN0KDApOwogICAgfQogIH07Cn0KCnZhciBUZXJtaW5hbCA9IFRlcm1pbmFsIHx8IGZ1bmN0aW9uKGNvbnRhaW5lcklkKSB7CiAgd2luZG93LlVSTCA9IHdpbmRvdy5VUkwgfHwgd2luZG93LndlYmtpdFVSTDsKICB3aW5kb3cucmVxdWVzdEZpbGVTeXN0ZW0gPSB3aW5kb3cucmVxdWVzdEZpbGVTeXN0ZW0gfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cud2Via2l0UmVxdWVzdEZpbGVTeXN0ZW07CgogIGNvbnN0IFZFUlNJT05fID0gJzEuMC4wJzsKICBjb25zdCBDTURTXyA9IFsKICAgICczZCcsICdjYXQnLCAnY2QnLCAnY3AnLCAnY2xlYXInLCAnZGF0ZScsICdoZWxwJywgJ2luc3RhbGwnLCAnbHMnLCAnbWtkaXInLAogICAgJ212JywgJ29wZW4nLCAncHdkJywgJ3JtJywgJ3JtZGlyJywgJ3RoZW1lJywgJ3ZlcnNpb24nLCAnd2hvJywgJ3dnZXQnCiAgXTsKICBjb25zdCBUSEVNRVNfID0gWydkZWZhdWx0JywgJ2NyZWFtJ107CgogIHZhciBmc18gPSBudWxsOwogIHZhciBjd2RfID0gbnVsbDsKICB2YXIgaGlzdG9yeV8gPSBbXTsKICB2YXIgaGlzdHBvc18gPSAwOwogIHZhciBoaXN0dGVtcF8gPSAwOwoKICB2YXIgdGltZXJfID0gbnVsbDsKICB2YXIgbWFnaWNXb3JkXyA9IG51bGw7CgogIHZhciBmc25fID0gbnVsbDsKICB2YXIgaXMzRF8gPSBmYWxzZTsKCiAgLy8gRmlyZSB3b3JrZXIgdG8gcmV0dXJuIHJlY3Vyc2l2ZSBzbmFwc2hvdCBvZiBjdXJyZW50IEZTIHRyZWUuCiAgdmFyIHdvcmtlcl8gPSBuZXcgV29ya2VyKCd3b3JrZXIuanMnKTsKICB3b3JrZXJfLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGUpIHsKICAgIHZhciBkYXRhID0gZS5kYXRhOwogICAgaWYgKGRhdGEuZW50cmllcykgewogICAgICBmc25fLmNvbnRlbnRXaW5kb3cucG9zdE1lc3NhZ2Uoe2NtZDogJ2J1aWxkJywgZGF0YTogZGF0YS5lbnRyaWVzfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4pOwogICAgfQogICAgaWYgKGRhdGEubXNnKSB7CiAgICAgIG91dHB1dCgnPGRpdj4nICsgZGF0YS5tc2cgKyAnPC9kaXY+Jyk7CiAgICB9CiAgfTsKICB3b3JrZXJfLm9uZXJyb3IgPSBmdW5jdGlvbihlKSB7IGNvbnNvbGUubG9nKGUpIH07CgogIC8vIENyZWF0ZSB0ZXJtaW5hbCBhbmQgY2FjaGUgRE9NIG5vZGVzOwogIHZhciBjb250YWluZXJfID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoY29udGFpbmVySWQpOwogIGNvbnRhaW5lcl8uaW5zZXJ0QWRqYWNlbnRIVE1MKCdiZWZvcmVFbmQnLAogICAgICBbJzxvdXRwdXQ+PC9vdXRwdXQ+JywKICAgICAgICc8ZGl2IGlkPSJpbnB1dC1saW5lIiBjbGFzcz0iaW5wdXQtbGluZSI+JywKICAgICAgICc8ZGl2IGNsYXNzPSJwcm9tcHQiPiQmZ3Q7PC9kaXY+PGRpdj48aW5wdXQgY2xhc3M9ImNtZGxpbmUiIGF1dG9mb2N1cyAvPjwvZGl2PicsCiAgICAgICAnPC9kaXY+J10uam9pbignJykpOwogIHZhciBjbWRMaW5lXyA9IGNvbnRhaW5lcl8ucXVlcnlTZWxlY3RvcignI2lucHV0LWxpbmUgLmNtZGxpbmUnKTsKICB2YXIgb3V0cHV0XyA9IGNvbnRhaW5lcl8ucXVlcnlTZWxlY3Rvcignb3V0cHV0Jyk7CiAgdmFyIGludGVybGFjZV8gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuaW50ZXJsYWNlJyk7CiAgdmFyIGJlbGxfID0gbmV3IFNvdW5kKGZhbHNlKTsKICBiZWxsXy5sb2FkKCdiZWVwLm1wMycsIGZhbHNlKTsKCiAgLy8gSGFja2VyeSB0byByZXNpemUgdGhlIGludGVybGFjZSBiYWNrZ3JvdW5kIGltYWdlIGFzIHRoZSBjb250YWluZXIgZ3Jvd3MuCiAgb3V0cHV0Xy5hZGRFdmVudExpc3RlbmVyKCdET01TdWJ0cmVlTW9kaWZpZWQnLCBmdW5jdGlvbihlKSB7CiAgICB2YXIgZG9jSGVpZ2h0ID0gdXRpbC5nZXREb2NIZWlnaHQoKTsKICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5oZWlnaHQgPSBkb2NIZWlnaHQgKyAncHgnOwogICAgLy9kb2N1bWVudC5ib2R5LnN0eWxlLmJhY2tncm91bmQgPSAnLXdlYmtpdC1yYWRpYWwtZ3JhZGllbnQoY2VudGVyICcgKyAoTWF0aC5yb3VuZChkb2NIZWlnaHQgLyAyKSkgKyAncHgsIGNvbnRhaW4sIHJnYmEoMCw3NSwwLDAuOCksIGJsYWNrKSBjZW50ZXIgY2VudGVyIG5vLXJlcGVhdCwgYmxhY2snOwogICAgaW50ZXJsYWNlXy5zdHlsZS5oZWlnaHQgPSBkb2NIZWlnaHQgKyAncHgnOwogICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgLy8gTmVlZCB0aGlzIHdyYXBwZWQgaW4gYSBzZXRUaW1lb3V0LiBDaHJvbWUgaXMganVwbWluZyB0byB0b3AgOigKICAgICAgLy93aW5kb3cuc2Nyb2xsVG8oMCwgZG9jSGVpZ2h0KTsKICAgICAgY21kTGluZV8uc2Nyb2xsSW50b1ZpZXcoKTsKICAgIH0sIDApOwogICAgLy93aW5kb3cuc2Nyb2xsVG8oMCwgZG9jSGVpZ2h0KTsKICB9LCBmYWxzZSk7CgogIG91dHB1dF8uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihlKSB7CiAgICB2YXIgZWwgPSBlLnRhcmdldDsKICAgIGlmIChlbC5jbGFzc0xpc3QuY29udGFpbnMoJ2ZpbGUnKSB8fCBlbC5jbGFzc0xpc3QuY29udGFpbnMoJ2ZvbGRlcicpKSB7CiAgICAgIGNtZExpbmVfLnZhbHVlICs9ICcgJyArIGVsLnRleHRDb250ZW50OwogICAgfQogIH0sIGZhbHNlKTsKCiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZSkgewogICAgLy9pZiAoIWRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmNvbnRhaW5zKCdvZmZzY3JlZW4nKSkgewogICAgICBjbWRMaW5lXy5mb2N1cygpOwogICAgLy99CiAgfSwgZmFsc2UpOwoKICAvLyBBbHdheXMgZm9yY2UgdGV4dCBjdXJzb3IgdG8gZW5kIG9mIGlucHV0IGxpbmUuCiAgY21kTGluZV8uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBpbnB1dFRleHRDbGlja18sIGZhbHNlKTsKCiAgLy8gSGFuZGxlIHVwL2Rvd24ga2V5IHByZXNzZXMgZm9yIHNoZWxsIGhpc3RvcnkgYW5kIGVudGVyIGZvciBuZXcgY29tbWFuZC4KICBjbWRMaW5lXy5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywga2V5Ym9hcmRTaG9ydGN1dEhhbmRsZXJfLCBmYWxzZSk7CiAgY21kTGluZV8uYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCBoaXN0b3J5SGFuZGxlcl8sIGZhbHNlKTsgLy8ga2V5dXAgbmVlZGVkIGZvciBpbnB1dCBibGlua2VyIHRvIGFwcGVhciBhdCBlbmQgb2YgaW5wdXQuCiAgY21kTGluZV8uYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHByb2Nlc3NOZXdDb21tYW5kXywgZmFsc2UpOwoKICAvKndpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdiZWZvcmV1bmxvYWQnLCBmdW5jdGlvbihlKSB7CiAgICByZXR1cm4gIkRvbid0IGxlYXZlIG1lISI7CiAgfSwgZmFsc2UpOyovCgogIGZ1bmN0aW9uIGlucHV0VGV4dENsaWNrXyhlKSB7CiAgICB0aGlzLnZhbHVlID0gdGhpcy52YWx1ZTsKICB9CgogIGZ1bmN0aW9uIGtleWJvYXJkU2hvcnRjdXRIYW5kbGVyXyhlKSB7CiAgICAvLyBUb2dnbGUgQ1JUIHNjcmVlbiBmbGlja2VyLgogICAgaWYgKChlLmN0cmxLZXkgfHwgZS5tZXRhS2V5KSAmJiBlLmtleUNvZGUgPT0gODMpIHsgLy8gY3J0bCtzCiAgICAgIGNvbnRhaW5lcl8uY2xhc3NMaXN0LnRvZ2dsZSgnZmxpY2tlcicpOwogICAgICBvdXRwdXQoJzxkaXY+U2NyZWVuIGZsaWNrZXI6ICcgKwogICAgICAgICAgICAgKGNvbnRhaW5lcl8uY2xhc3NMaXN0LmNvbnRhaW5zKCdmbGlja2VyJykgPyAnb24nIDogJ29mZicpICsKICAgICAgICAgICAgICc8L2Rpdj4nKTsKICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICBlLnN0b3BQcm9wYWdhdGlvbigpOwogICAgfQogIH0KCiAgZnVuY3Rpb24gc2VsZWN0RmlsZV8oZWwpIHsKICAgIGFsZXJ0KGVsKQogIH0KCiAgZnVuY3Rpb24gaGlzdG9yeUhhbmRsZXJfKGUpIHsgLy8gVGFiIG5lZWRzIHRvIGJlIGtleWRvd24uCgogICAgaWYgKGhpc3RvcnlfLmxlbmd0aCkgewogICAgICBpZiAoZS5rZXlDb2RlID09IDM4IHx8IGUua2V5Q29kZSA9PSA0MCkgewogICAgICAgIGlmIChoaXN0b3J5X1toaXN0cG9zX10pIHsKICAgICAgICAgIGhpc3RvcnlfW2hpc3Rwb3NfXSA9IHRoaXMudmFsdWU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGhpc3R0ZW1wXyA9IHRoaXMudmFsdWU7CiAgICAgICAgfQogICAgICB9CgogICAgICBpZiAoZS5rZXlDb2RlID09IDM4KSB7IC8vIHVwCiAgICAgICAgaGlzdHBvc18tLTsKICAgICAgICBpZiAoaGlzdHBvc18gPCAwKSB7CiAgICAgICAgICBoaXN0cG9zXyA9IDA7CiAgICAgICAgfQogICAgICB9IGVsc2UgaWYgKGUua2V5Q29kZSA9PSA0MCkgeyAvLyBkb3duCiAgICAgICAgaGlzdHBvc18rKzsKICAgICAgICBpZiAoaGlzdHBvc18gPiBoaXN0b3J5Xy5sZW5ndGgpIHsKICAgICAgICAgIGhpc3Rwb3NfID0gaGlzdG9yeV8ubGVuZ3RoOwogICAgICAgIH0KICAgICAgfQoKICAgICAgaWYgKGUua2V5Q29kZSA9PSAzOCB8fCBlLmtleUNvZGUgPT0gNDApIHsKICAgICAgICB0aGlzLnZhbHVlID0gaGlzdG9yeV9baGlzdHBvc19dID8gaGlzdG9yeV9baGlzdHBvc19dIDogaGlzdHRlbXBfOwogICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnZhbHVlOyAvLyBTZXRzIGN1cnNvciB0byBlbmQgb2YgaW5wdXQuCiAgICAgIH0KICAgIH0KICB9CgogIGZ1bmN0aW9uIHByb2Nlc3NOZXdDb21tYW5kXyhlKSB7CgogICAgLy8gQmVlcCBvbiBiYWNrc3BhY2UgYW5kIG5vIHZhbHVlIG9uIGNvbW1hbmQgbGluZS4KICAgIGlmICghdGhpcy52YWx1ZSAmJiBlLmtleUNvZGUgPT0gOCkgewogICAgICBiZWxsXy5zdG9wKCk7CiAgICAgIGJlbGxfLnBsYXkoKTsKICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlmIChlLmtleUNvZGUgPT0gOSkgeyAvLyBUYWIKICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAvLyBUT0RPKGVyaWNiaWRlbG1hbik6IEltcGxlbWVudCB0YWIgc3VnZ2VzdC4KICAgIH0gZWxzZSBpZiAoZS5rZXlDb2RlID09IDEzKSB7IC8vIGVudGVyCgogICAgICAvLyBTYXZlIHNoZWxsIGhpc3RvcnkuCiAgICAgIGlmICh0aGlzLnZhbHVlKSB7CiAgICAgICAgaGlzdG9yeV9baGlzdG9yeV8ubGVuZ3RoXSA9IHRoaXMudmFsdWU7CiAgICAgICAgaGlzdHBvc18gPSBoaXN0b3J5Xy5sZW5ndGg7CiAgICAgIH0KCiAgICAgIC8vIER1cGxpY2F0ZSBjdXJyZW50IGlucHV0IGFuZCBhcHBlbmQgdG8gb3V0cHV0IHNlY3Rpb24uCiAgICAgIHZhciBsaW5lID0gdGhpcy5wYXJlbnROb2RlLnBhcmVudE5vZGUuY2xvbmVOb2RlKHRydWUpOwogICAgICBsaW5lLnJlbW92ZUF0dHJpYnV0ZSgnaWQnKQogICAgICBsaW5lLmNsYXNzTGlzdC5hZGQoJ2xpbmUnKTsKICAgICAgdmFyIGlucHV0ID0gbGluZS5xdWVyeVNlbGVjdG9yKCdpbnB1dC5jbWRsaW5lJyk7CiAgICAgIGlucHV0LmF1dG9mb2N1cyA9IGZhbHNlOwogICAgICBpbnB1dC5yZWFkT25seSA9IHRydWU7CiAgICAgIG91dHB1dF8uYXBwZW5kQ2hpbGQobGluZSk7CgogICAgICAvLyBQYXJzZSBvdXQgY29tbWFuZCwgYXJncywgYW5kIHRyaW0gb2ZmIHdoaXRlc3BhY2UuCiAgICAgIC8vIFRPRE8oZXJpY2JpZGVsbWFuKTogU3VwcG9ydCBtdWx0aXBsZSBjb21tYSBzZXBhcmF0ZWQgY29tbWFuZHMuCiAgICAgIGlmICh0aGlzLnZhbHVlICYmIHRoaXMudmFsdWUudHJpbSgpKSB7CiAgICAgICAgdmFyIGFyZ3MgPSB0aGlzLnZhbHVlLnNwbGl0KCcgJykuZmlsdGVyKGZ1bmN0aW9uKHZhbCwgaSkgewogICAgICAgICAgcmV0dXJuIHZhbDsKICAgICAgICB9KTsKICAgICAgICB2YXIgY21kID0gYXJnc1swXS50b0xvd2VyQ2FzZSgpOwogICAgICAgIGFyZ3MgPSBhcmdzLnNwbGljZSgxKTsgLy8gUmVtb3ZlIGNtZCBmcm9tIGFyZyBsaXN0LgogICAgICB9CgogICAgICBzd2l0Y2ggKGNtZCkgewogICAgICAgIGNhc2UgJzNkJzoKICAgICAgICAgIGNsZWFyXyh0aGlzKTsKICAgICAgICAgIG91dHB1dCgnSG9sZCBvbiB0byB5b3VyIGJ1dHRzIScpOwogICAgICAgICAgdG9nZ2xlM0RWaWV3XygpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnY2F0JzoKICAgICAgICAgIHZhciBmaWxlTmFtZSA9IGFyZ3Muam9pbignICcpOwoKICAgICAgICAgIGlmICghZmlsZU5hbWUpIHsKICAgICAgICAgICAgb3V0cHV0KCd1c2FnZTogJyArIGNtZCArICcgZmlsZW5hbWUnKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICB9CgogICAgICAgICAgcmVhZF8oY21kLCBmaWxlTmFtZSwgZnVuY3Rpb24ocmVzdWx0KSB7CiAgICAgICAgICAgIG91dHB1dCgnPHByZT4nICsgcmVzdWx0ICsgJzwvcHJlPicpOwogICAgICAgICAgfSk7CgogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnY2xlYXInOgogICAgICAgICAgY2xlYXJfKHRoaXMpOwogICAgICAgICAgcmV0dXJuOwogICAgICAgIGNhc2UgJ2RhdGUnOgogICAgICAgICAgb3V0cHV0KChuZXcgRGF0ZSgpKS50b0xvY2FsZVN0cmluZygpKTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ2V4aXQnOgogICAgICAgICAgaWYgKGlzM0RfKSB7CiAgICAgICAgICAgIHRvZ2dsZTNEVmlld18oKTsKICAgICAgICAgIH0KICAgICAgICAgIGlmICh0aW1lcl8gIT0gbnVsbCkgewogICAgICAgICAgICBtYWdpY1dvcmRfLnN0b3AoKTsKICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcl8pOwogICAgICAgICAgfQogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnaGVscCc6CiAgICAgICAgICBvdXRwdXQoJzxkaXYgY2xhc3M9ImxzLWZpbGVzIj4nICsgQ01EU18uam9pbignPGJyPicpICsgJzwvZGl2PicpOwogICAgICAgICAgb3V0cHV0KCc8cD5BZGQgZmlsZXMgYnkgZHJhZ2dpbmcgdGhlbSBmcm9tIHlvdXIgZGVza3RvcC48L3A+Jyk7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdpbnN0YWxsJzoKICAgICAgICAgIC8vIENoZWNrIGlzIGluc3RhbGxlZC4KICAgICAgICAgIGlmICh3aW5kb3cuY2hyb21lICYmIHdpbmRvdy5jaHJvbWUuYXBwKSB7CiAgICAgICAgICAgIGlmICghd2luZG93LmNocm9tZS5hcHAuaXNJbnN0YWxsZWQpIHsKICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgY2hyb21lLmFwcC5pbnN0YWxsKCk7CiAgICAgICAgICAgICAgfSBjYXRjaChlKSB7CiAgICAgICAgICAgICAgICBhbGVydChlICsgJ1xuRW5hYmxlIGlzIGFib3V0OmZsYWdzJyk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIG91dHB1dCgnVGhpcyBhcHAgaXMgYWxyZWFkeSBpbnN0YWxsZWQuJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ2xzJzoKICAgICAgICAgIGxzXyhmdW5jdGlvbihlbnRyaWVzKSB7CiAgICAgICAgICAgIGlmIChlbnRyaWVzLmxlbmd0aCkgewogICAgICAgICAgICAgIHZhciBodG1sID0gZm9ybWF0Q29sdW1uc18oZW50cmllcyk7CiAgICAgICAgICAgICAgdXRpbC50b0FycmF5KGVudHJpZXMpLmZvckVhY2goZnVuY3Rpb24oZW50cnksIGkpIHsKICAgICAgICAgICAgICAgIGh0bWwucHVzaCgKICAgICAgICAgICAgICAgICAgICAnPHNwYW4gY2xhc3M9IicsIGVudHJ5LmlzRGlyZWN0b3J5ID8gJ2ZvbGRlcicgOiAnZmlsZScsCiAgICAgICAgICAgICAgICAgICAgJyI+JywgZW50cnkubmFtZSwgJzwvc3Bhbj48YnI+Jyk7CiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgaHRtbC5wdXNoKCc8L2Rpdj4nKTsKICAgICAgICAgICAgICBvdXRwdXQoaHRtbC5qb2luKCcnKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0pOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAncHdkJzoKICAgICAgICAgIG91dHB1dChjd2RfLmZ1bGxQYXRoKTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ2NkJzoKICAgICAgICAgIHZhciBkZXN0ID0gYXJncy5qb2luKCcgJykgfHwgJy8nOwoKICAgICAgICAgIGN3ZF8uZ2V0RGlyZWN0b3J5KGRlc3QsIHt9LCBmdW5jdGlvbihkaXJFbnRyeSkgewogICAgICAgICAgICBjd2RfID0gZGlyRW50cnk7CiAgICAgICAgICAgIG91dHB1dCgnPGRpdj4nICsgZGlyRW50cnkuZnVsbFBhdGggKyAnPC9kaXY+Jyk7CgogICAgICAgICAgICAvLyBUZWxsIEZTTiB2aXN1YWxpemVyIHRoYXQgd2UncmUgY2QnaW5nLgogICAgICAgICAgICBpZiAoZnNuXykgewogICAgICAgICAgICAgIGZzbl8uY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZSh7Y21kOiAnY2QnLCBkYXRhOiBkZXN0fSwgbG9jYXRpb24ub3JpZ2luKTsKICAgICAgICAgICAgfQoKICAgICAgICAgIH0sIGZ1bmN0aW9uKGUpIHsgaW52YWxpZE9wRm9yRW50cnlUeXBlXyhlLCBjbWQsIGRlc3QpOyB9KTsKCiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdta2Rpcic6CiAgICAgICAgICB2YXIgZGFzaFAgPSBmYWxzZTsKICAgICAgICAgIHZhciBpbmRleCA9IGFyZ3MuaW5kZXhPZignLXAnKTsKICAgICAgICAgIGlmIChpbmRleCAhPSAtMSkgewogICAgICAgICAgICBhcmdzLnNwbGljZShpbmRleCwgMSk7CiAgICAgICAgICAgIGRhc2hQID0gdHJ1ZTsKICAgICAgICAgIH0KCiAgICAgICAgICBpZiAoIWFyZ3MubGVuZ3RoKSB7CiAgICAgICAgICAgIG91dHB1dCgndXNhZ2U6ICcgKyBjbWQgKyAnIFstcF0gZGlyZWN0b3J5PGJyPicpOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIH0KCiAgICAgICAgICAvLyBDcmVhdGUgZWFjaCBkaXJlY3RvcnkgcGFzc2VkIGFzIGFuIGFyZ3VtZW50LgogICAgICAgICAgYXJncy5mb3JFYWNoKGZ1bmN0aW9uKGRpck5hbWUsIGkpIHsKICAgICAgICAgICAgaWYgKGRhc2hQKSB7CiAgICAgICAgICAgICAgdmFyIGZvbGRlcnMgPSBkaXJOYW1lLnNwbGl0KCcvJyk7CgogICAgICAgICAgICAgIC8vIFRocm93IG91dCAnLi8nIG9yICcvJyBpZiBwcmVzZW50IG9uIHRoZSBiZWdpbm5pbmcgb2Ygb3VyIHBhdGguCiAgICAgICAgICAgICAgaWYgKGZvbGRlcnNbMF0gPT0gJy4nIHx8IGZvbGRlcnNbMF0gPT0gJycpIHsKICAgICAgICAgICAgICAgIGZvbGRlcnMgPSBmb2xkZXJzLnNsaWNlKDEpOwogICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgY3JlYXRlRGlyXyhjd2RfLCBmb2xkZXJzKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICBjd2RfLmdldERpcmVjdG9yeShkaXJOYW1lLCB7Y3JlYXRlOiB0cnVlLCBleGNsdXNpdmU6IHRydWV9LCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIC8vIFRlbGwgRlNOIHZpc3VhbGl6ZXIgdGhhdCB3ZSdyZSBta2RpcidpbmcuCiAgICAgICAgICAgICAgICBpZiAoZnNuXykgewogICAgICAgICAgICAgICAgICBmc25fLmNvbnRlbnRXaW5kb3cucG9zdE1lc3NhZ2Uoe2NtZDogJ21rZGlyJywgZGF0YTogZGlyTmFtZX0sIGxvY2F0aW9uLm9yaWdpbik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSkgeyBpbnZhbGlkT3BGb3JFbnRyeVR5cGVfKGUsIGNtZCwgZGlyTmFtZSk7IH0pOwogICAgICAgICAgICB9CiAgICAgICAgICB9KTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ2NwJzoKICAgICAgICBjYXNlICdtdic6CiAgICAgICAgICB2YXIgc3JjID0gYXJnc1swXTsKICAgICAgICAgIHZhciBkZXN0ID0gYXJnc1sxXTsKCiAgICAgICAgICBpZiAoIXNyYyB8fCAhZGVzdCkgewogICAgICAgICAgICBvdXRwdXQoWyd1c2FnZTogJywgY21kLCAnIHNvdXJjZSB0YXJnZXQ8YnI+JywKICAgICAgICAgICAgICAgICAgICcmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsnLCBjbWQsCiAgICAgICAgICAgICAgICAgICAnIHNvdXJjZSBkaXJlY3RvcnkvJ10uam9pbignJykpOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIH0KCiAgICAgICAgICB2YXIgcnVuQWN0aW9uID0gZnVuY3Rpb24oY21kLCBzcmNEaXJFbnRyeSwgZGVzdERpckVudHJ5LCBvcHRfbmV3TmFtZSkgewogICAgICAgICAgICB2YXIgbmV3TmFtZSA9IG9wdF9uZXdOYW1lIHx8IG51bGw7CiAgICAgICAgICAgIGlmIChjbWQgPT0gJ212JykgewogICAgICAgICAgICAgICAgc3JjRGlyRW50cnkubW92ZVRvKGRlc3REaXJFbnRyeSwgbmV3TmFtZSk7CiAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHNyY0RpckVudHJ5LmNvcHlUbyhkZXN0RGlyRW50cnksIG5ld05hbWUpOwogICAgICAgICAgICAgIH0KICAgICAgICAgIH07CgogICAgICAgICAgLy8gTW92aW5nIHRvIGEgZm9sZGVyPyAoZS5nLiBzZWNvbmQgYXJnIGVuZHMgaW4gJy8nKS4KICAgICAgICAgIGlmIChkZXN0W2Rlc3QubGVuZ3RoIC0gMV0gPT0gJy8nKSB7CiAgICAgICAgICAgIGN3ZF8uZ2V0RGlyZWN0b3J5KHNyYywge30sIGZ1bmN0aW9uKHNyY0RpckVudHJ5KSB7CiAgICAgICAgICAgICAgLy8gQ3JlYXRlIGJsYWNrbGlzdCBmb3IgZGlycyB3ZSBjYW4ndCByZS1jcmVhdGUuCiAgICAgICAgICAgICAgdmFyIGNyZWF0ZSA9IFsKICAgICAgICAgICAgICAgICcuJywgJy4vJywgJy4uJywgJy4uLycsICcvJ10uaW5kZXhPZihkZXN0KSAhPSAtMSA/IGZhbHNlIDogdHJ1ZTsKCiAgICAgICAgICAgICAgY3dkXy5nZXREaXJlY3RvcnkoZGVzdCwge2NyZWF0ZTogY3JlYXRlfSwgZnVuY3Rpb24oZGVzdERpckVudHJ5KSB7CiAgICAgICAgICAgICAgICBydW5BY3Rpb24oY21kLCBzcmNEaXJFbnRyeSwgZGVzdERpckVudHJ5KTsKICAgICAgICAgICAgICB9LCBlcnJvckhhbmRsZXJfKTsKICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgIC8vIFRyeSB0aGUgc3JjIGVudHJ5IGFzIGEgZmlsZSBpbnN0ZWFkLgogICAgICAgICAgICAgIGN3ZF8uZ2V0RmlsZShzcmMsIHt9LCBmdW5jdGlvbihzcmNEaXJFbnRyeSkgewogICAgICAgICAgICAgICAgY3dkXy5nZXREaXJlY3RvcnkoZGVzdCwge30sIGZ1bmN0aW9uKGRlc3REaXJFbnRyeSkgewogICAgICAgICAgICAgICAgICBydW5BY3Rpb24oY21kLCBzcmNEaXJFbnRyeSwgZGVzdERpckVudHJ5KTsKICAgICAgICAgICAgICAgIH0sIGVycm9ySGFuZGxlcl8pOwogICAgICAgICAgICAgIH0sIGVycm9ySGFuZGxlcl8pOwogICAgICAgICAgICB9KTsKICAgICAgICAgIH0gZWxzZSB7IC8vIFRyZWF0IHNyYy9kZXN0aW5hdGlvbiBhcyBmaWxlcy4KICAgICAgICAgICAgY3dkXy5nZXRGaWxlKHNyYywge30sIGZ1bmN0aW9uKHNyY0ZpbGVFbnRyeSkgewogICAgICAgICAgICAgIHNyY0ZpbGVFbnRyeS5nZXRQYXJlbnQoZnVuY3Rpb24ocGFyZW50RGlyRW50cnkpIHsKICAgICAgICAgICAgICAgIHJ1bkFjdGlvbihjbWQsIHNyY0ZpbGVFbnRyeSwgcGFyZW50RGlyRW50cnksIGRlc3QpOwogICAgICAgICAgICAgIH0sIGVycm9ySGFuZGxlcl8pOwogICAgICAgICAgICB9LCBlcnJvckhhbmRsZXJfKTsKICAgICAgICAgIH0KCiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdvcGVuJzoKICAgICAgICAgIHZhciBmaWxlTmFtZSA9IGFyZ3Muam9pbignICcpOwoKICAgICAgICAgIGlmICghZmlsZU5hbWUpIHsKICAgICAgICAgICAgb3V0cHV0KCd1c2FnZTogJyArIGNtZCArICcgZmlsZW5hbWUnKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICB9CgogICAgICAgICAgb3Blbl8oY21kLCBmaWxlTmFtZSwgZnVuY3Rpb24oZmlsZUVudHJ5KSB7CiAgICAgICAgICAgIHZhciBteVdpbiA9IHdpbmRvdy5vcGVuKGZpbGVFbnRyeS50b1VSTCgpLCAnbXl3aW4nKTsKICAgICAgICAgIH0pOwoKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ2luaXQnOgogICAgICAgICAgaWYgKHdvcmtlcl8pIHsKICAgICAgICAgICAgd29ya2VyXy5wb3N0TWVzc2FnZSh7Y21kOiAnaW5pdCcsIHR5cGU6IHR5cGVfLCBzaXplOiBzaXplX30pOwogICAgICAgICAgfQogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAncm0nOgogICAgICAgICAgLy8gUmVtb3ZlIHJlY3Vyc2l2ZWx5PyBJZiBzbywgcmVtb3ZlIHRoZSBmbGFnKHMpIGZyb20gdGhlIGFyZyBsaXN0LgogICAgICAgICAgdmFyIHJlY3Vyc2l2ZSA9IGZhbHNlOwogICAgICAgICAgWyctcicsICctZicsICctcmYnLCAnLWZyJ10uZm9yRWFjaChmdW5jdGlvbihhcmcsIGkpIHsKICAgICAgICAgICAgdmFyIGluZGV4ID0gYXJncy5pbmRleE9mKGFyZyk7CiAgICAgICAgICAgIGlmIChpbmRleCAhPSAtMSkgewogICAgICAgICAgICAgIGFyZ3Muc3BsaWNlKGluZGV4LCAxKTsKICAgICAgICAgICAgICByZWN1cnNpdmUgPSB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgICB9KTsKCiAgICAgICAgICAvLyBSZW1vdmUgZWFjaCBmaWxlIHBhc3NlZCBhcyBhbiBhcmd1bWVudC4KICAgICAgICAgIGFyZ3MuZm9yRWFjaChmdW5jdGlvbihmaWxlTmFtZSwgaSkgewogICAgICAgICAgICBjd2RfLmdldEZpbGUoZmlsZU5hbWUsIHt9LCBmdW5jdGlvbihmaWxlRW50cnkpIHsKICAgICAgICAgICAgICBmaWxlRW50cnkucmVtb3ZlKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgLy8gVGVsbCBGU04gdmlzdWFsaXplciB0aGF0IHdlJ3JlIHJtJ2luZy4KICAgICAgICAgICAgICAgIGlmIChmc25fKSB7CiAgICAgICAgICAgICAgICAgIGZzbl8uY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZSh7Y21kOiAncm0nLCBkYXRhOiBmaWxlTmFtZX0sIGxvY2F0aW9uLm9yaWdpbik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfSwgZXJyb3JIYW5kbGVyXyk7CiAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICBpZiAocmVjdXJzaXZlICYmIGUuY29kZSA9PSBGaWxlRXJyb3IuVFlQRV9NSVNNQVRDSF9FUlIpIHsKICAgICAgICAgICAgICAgIGN3ZF8uZ2V0RGlyZWN0b3J5KGZpbGVOYW1lLCB7fSwgZnVuY3Rpb24oZGlyRW50cnkpIHsKICAgICAgICAgICAgICAgICAgZGlyRW50cnkucmVtb3ZlUmVjdXJzaXZlbHkobnVsbCwgZXJyb3JIYW5kbGVyXyk7CiAgICAgICAgICAgICAgICB9LCBlcnJvckhhbmRsZXJfKTsKICAgICAgICAgICAgICB9IGVsc2UgaWYgKGUuY29kZSA9PSBGaWxlRXJyb3IuSU5WQUxJRF9TVEFURV9FUlIpIHsKICAgICAgICAgICAgICAgIG91dHB1dChjbWQgKyAnOiAnICsgZmlsZU5hbWUgKyAnOiBpcyBhIGRpcmVjdG9yeTxicj4nKTsKICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgZXJyb3JIYW5kbGVyXyhlKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgICAgfSk7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdybWRpcic6CiAgICAgICAgICAvLyBSZW1vdmUgZWFjaCBkaXJlY3RvcnkgcGFzc2VkIGFzIGFuIGFyZ3VtZW50LgogICAgICAgICAgYXJncy5mb3JFYWNoKGZ1bmN0aW9uKGRpck5hbWUsIGkpIHsKICAgICAgICAgICAgY3dkXy5nZXREaXJlY3RvcnkoZGlyTmFtZSwge30sIGZ1bmN0aW9uKGRpckVudHJ5KSB7CiAgICAgICAgICAgICAgZGlyRW50cnkucmVtb3ZlKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgLy8gVGVsbCBGU04gdmlzdWFsaXplciB0aGF0IHdlJ3JlIHJtZGlyJ2luZy4KICAgICAgICAgICAgICAgIGlmIChmc25fKSB7CiAgICAgICAgICAgICAgICAgIGZzbl8uY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZSh7Y21kOiAncm0nLCBkYXRhOiBkaXJOYW1lfSwgbG9jYXRpb24ub3JpZ2luKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBpZiAoZS5jb2RlID09IEZpbGVFcnJvci5JTlZBTElEX01PRElGSUNBVElPTl9FUlIpIHsKICAgICAgICAgICAgICAgICAgb3V0cHV0KGNtZCArICc6ICcgKyBkaXJOYW1lICsgJzogRGlyZWN0b3J5IG5vdCBlbXB0eTxicj4nKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgIGVycm9ySGFuZGxlcl8oZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUpIHsgaW52YWxpZE9wRm9yRW50cnlUeXBlXyhlLCBjbWQsIGRpck5hbWUpOyB9KTsKICAgICAgICAgIH0pOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnc3Vkbyc6CiAgICAgICAgICBpZiAodGltZXJfICE9IG51bGwpIHsKICAgICAgICAgICAgbWFnaWNXb3JkXy5zdG9wKCk7CiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGltZXJfKTsKICAgICAgICAgIH0KICAgICAgICAgIGlmICghbWFnaWNXb3JkXykgewogICAgICAgICAgICBtYWdpY1dvcmRfID0gbmV3IFNvdW5kKHRydWUpOwogICAgICAgICAgICBtYWdpY1dvcmRfLmxvYWQoJ21hZ2ljX3dvcmQubXAzJywgZmFsc2UsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgIG1hZ2ljV29yZF8ucGxheSgpOwogICAgICAgICAgICB9KTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIG1hZ2ljV29yZF8ucGxheSgpOwogICAgICAgICAgfQogICAgICAgICAgdGltZXJfID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIG91dHB1dCgiPGRpdj5ZT1UgRElETidUIFNBWSBUSEUgTUFHSUMgV09SRCE8L2Rpdj4iKTsKICAgICAgICAgIH0sIDEwMCk7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICd0aGVtZSc6CiAgICAgICAgICB2YXIgdGhlbWUgPSBhcmdzLmpvaW4oJyAnKTsKICAgICAgICAgIGlmICghdGhlbWUpIHsKICAgICAgICAgICAgb3V0cHV0KFsndXNhZ2U6ICcsIGNtZCwgJyAnICsgVEhFTUVTXy5qb2luKCcsJyldLmpvaW4oJycpKTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlmIChUSEVNRVNfLmluZGV4T2YodGhlbWUpICE9IC0xKSB7CiAgICAgICAgICAgICAgc2V0VGhlbWVfKHRoZW1lKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICBvdXRwdXQoJ0Vycm9yIC0gVW5yZWNvZ25pemVkIHRoZW1lIHVzZWQnKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAndmVyc2lvbic6CiAgICAgICAgY2FzZSAndmVyJzoKICAgICAgICAgIG91dHB1dChWRVJTSU9OXyk7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICd3Z2V0JzoKICAgICAgICAgIHZhciB1cmwgPSBhcmdzWzBdOwogICAgICAgICAgaWYgKCF1cmwpIHsKICAgICAgICAgICAgb3V0cHV0KFsndXNhZ2U6ICcsIGNtZCwgJyBtaXNzaW5nIFVSTCddLmpvaW4oJycpKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICB9IGVsc2UgaWYgKHVybC5zZWFyY2goJ15odHRwOi8vJykgPT0gLTEpIHsKICAgICAgICAgICAgdXJsID0gJ2h0dHA6Ly8nICsgdXJsOwogICAgICAgICAgfQogICAgICAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwogICAgICAgICAgeGhyLm9ubG9hZCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgaWYgKHRoaXMuc3RhdHVzID09IDIwMCAmJiB0aGlzLnJlYWR5U3RhdGUgPT0gNCkgewogICAgICAgICAgICAgIG91dHB1dCgnPHRleHRhcmVhPicgKyB0aGlzLnJlc3BvbnNlICsgJzwvdGV4dGFyZWE+Jyk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgb3V0cHV0KCdFUlJPUjogJyArIHRoaXMuc3RhdHVzICsgJyAnICsgdGhpcy5zdGF0dXNUZXh0KTsKICAgICAgICAgICAgfQogICAgICAgICAgfTsKICAgICAgICAgIHhoci5vbmVycm9yID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICBvdXRwdXQoJ0VSUk9SOiAnICsgdGhpcy5zdGF0dXMgKyAnICcgKyB0aGlzLnN0YXR1c1RleHQpOwogICAgICAgICAgICBvdXRwdXQoJ0NvdWxkIG5vdCBmZXRjaCAnICsgdXJsKTsKICAgICAgICAgIH07CiAgICAgICAgICB4aHIub3BlbignR0VUJywgdXJsLCB0cnVlKTsKICAgICAgICAgIHhoci5zZW5kKCk7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICd3aG8nOgogICAgICAgICAgb3V0cHV0KGRvY3VtZW50LnRpdGxlICsKICAgICAgICAgICAgICAgICAnIC0gQnk6IEVyaWMgQmlkZWxtYW4gJmx0O2VyaWNiaWRlbG1hbkBjaHJvbWl1bS5vcmcmZ3Q7Jyk7CiAgICAgICAgICBicmVhazsKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgaWYgKGNtZCkgewogICAgICAgICAgICBvdXRwdXQoY21kICsgJzogY29tbWFuZCBub3QgZm91bmQnKTsKICAgICAgICAgIH0KICAgICAgfTsKCiAgICAgIHRoaXMudmFsdWUgPSAnJzsgLy8gQ2xlYXIvc2V0dXAgbGluZSBmb3IgbmV4dCBpbnB1dC4KICAgIH0KICB9CgogIGZ1bmN0aW9uIGZvcm1hdENvbHVtbnNfKGVudHJpZXMpIHsKICAgIHZhciBtYXhOYW1lID0gZW50cmllc1swXS5uYW1lOwogICAgdXRpbC50b0FycmF5KGVudHJpZXMpLmZvckVhY2goZnVuY3Rpb24oZW50cnksIGkpIHsKICAgICAgaWYgKGVudHJ5Lm5hbWUubGVuZ3RoID4gbWF4TmFtZS5sZW5ndGgpIHsKICAgICAgICBtYXhOYW1lID0gZW50cnkubmFtZTsKICAgICAgfQogICAgfSk7CgogICAgLy8gSWYgd2UgaGF2ZSAzIG9yIGxlc3MgZW50cmllcywgc2hvcnRlbiB0aGUgb3V0cHV0IGNvbnRhaW5lcidzIGhlaWdodC4KICAgIC8vIDE1cHggaGVpZ2h0IHdpdGggYSBtb25vc3BhY2UgZm9udC1zaXplIG9mIH4xMnB4OwogICAgdmFyIGhlaWdodCA9IGVudHJpZXMubGVuZ3RoID09IDEgPyAnaGVpZ2h0OiAnICsgKGVudHJpZXMubGVuZ3RoICogMzApICsgJ3B4OycgOgogICAgICAgICAgICAgICAgIGVudHJpZXMubGVuZ3RoIDw9IDMgPyAnaGVpZ2h0OiAnICsgKGVudHJpZXMubGVuZ3RoICogMTgpICsgJ3B4OycgOiAnJzsKCiAgICAvLyB+MTJweCBtb25vc3BhY2UgZm9udCB5aWVsZHMgfjhweCBzY3JlZW4gd2lkdGguCiAgICB2YXIgY29sV2lkdGggPSBtYXhOYW1lLmxlbmd0aCAqIDE2Oy8vOzg7CgogICAgcmV0dXJuIFsnPGRpdiBjbGFzcz0ibHMtZmlsZXMiIHN0eWxlPSItd2Via2l0LWNvbHVtbi13aWR0aDonLAogICAgICAgICAgICBjb2xXaWR0aCwgJ3B4OycsIGhlaWdodCwgJyI+J107CiAgfQoKICBmdW5jdGlvbiBpbnZhbGlkT3BGb3JFbnRyeVR5cGVfKGUsIGNtZCwgZGVzdCkgewogICAgaWYgKGUuY29kZSA9PSBGaWxlRXJyb3IuTk9UX0ZPVU5EX0VSUikgewogICAgICBvdXRwdXQoY21kICsgJzogJyArIGRlc3QgKyAnOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5PGJyPicpOwogICAgfSBlbHNlIGlmIChlLmNvZGUgPT0gRmlsZUVycm9yLklOVkFMSURfU1RBVEVfRVJSKSB7CiAgICAgIG91dHB1dChjbWQgKyAnOiAnICsgZGVzdCArICc6IE5vdCBhIGRpcmVjdG9yeTxicj4nKTsKICAgIH0gZWxzZSBpZiAoZS5jb2RlID09IEZpbGVFcnJvci5JTlZBTElEX01PRElGSUNBVElPTl9FUlIpIHsKICAgICAgb3V0cHV0KGNtZCArICc6ICcgKyBkZXN0ICsgJzogRmlsZSBhbHJlYWR5IGV4aXN0czxicj4nKTsKICAgIH0gZWxzZSB7CiAgICAgIGVycm9ySGFuZGxlcl8oZSk7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBlcnJvckhhbmRsZXJfKGUpIHsKICAgIHZhciBtc2cgPSAnJzsKICAgIHN3aXRjaCAoZS5jb2RlKSB7CiAgICAgIGNhc2UgRmlsZUVycm9yLlFVT1RBX0VYQ0VFREVEX0VSUjoKICAgICAgICBtc2cgPSAnUVVPVEFfRVhDRUVERURfRVJSJzsKICAgICAgICBicmVhazsKICAgICAgY2FzZSBGaWxlRXJyb3IuTk9UX0ZPVU5EX0VSUjoKICAgICAgICBtc2cgPSAnTk9UX0ZPVU5EX0VSUic7CiAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgRmlsZUVycm9yLlNFQ1VSSVRZX0VSUjoKICAgICAgICBtc2cgPSAnU0VDVVJJVFlfRVJSJzsKICAgICAgICBicmVhazsKICAgICAgY2FzZSBGaWxlRXJyb3IuSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSOgogICAgICAgIG1zZyA9ICdJTlZBTElEX01PRElGSUNBVElPTl9FUlInOwogICAgICAgIGJyZWFrOwogICAgICBjYXNlIEZpbGVFcnJvci5JTlZBTElEX1NUQVRFX0VSUjoKICAgICAgICBtc2cgPSAnSU5WQUxJRF9TVEFURV9FUlInOwogICAgICAgIGJyZWFrOwogICAgICBkZWZhdWx0OgogICAgICAgIG1zZyA9ICdVbmtub3duIEVycm9yJzsKICAgICAgICBicmVhazsKICAgIH07CiAgICBvdXRwdXQoJzxkaXY+RXJyb3I6ICcgKyBtc2cgKyAnPC9kaXY+Jyk7CiAgfQoKICBmdW5jdGlvbiBjcmVhdGVEaXJfKHJvb3REaXJFbnRyeSwgZm9sZGVycywgb3B0X2Vycm9yQ2FsbGJhY2spIHsKICAgIHZhciBlcnJvckNhbGxiYWNrID0gb3B0X2Vycm9yQ2FsbGJhY2sgfHwgZXJyb3JIYW5kbGVyXzsKCiAgICByb290RGlyRW50cnkuZ2V0RGlyZWN0b3J5KGZvbGRlcnNbMF0sIHtjcmVhdGU6IHRydWV9LCBmdW5jdGlvbihkaXJFbnRyeSkgewoKICAgICAgLy8gUmVjdXJzaXZlbHkgYWRkIHRoZSBuZXcgc3ViZm9sZGVyIGlmIHdlIHN0aWxsIGhhdmUgYSBzdWJmb2xkZXIgdG8gY3JlYXRlLgogICAgICBpZiAoZm9sZGVycy5sZW5ndGgpIHsKICAgICAgICBjcmVhdGVEaXJfKGRpckVudHJ5LCBmb2xkZXJzLnNsaWNlKDEpKTsKICAgICAgfQogICAgfSwgZXJyb3JDYWxsYmFjayk7CiAgfQoKICBmdW5jdGlvbiBvcGVuXyhjbWQsIHBhdGgsIHN1Y2Nlc3NDYWxsYmFjaykgewogICAgaWYgKCFmc18pIHsKICAgICAgcmV0dXJuOwogICAgfQoKICAgIGN3ZF8uZ2V0RmlsZShwYXRoLCB7fSwgc3VjY2Vzc0NhbGxiYWNrLCBmdW5jdGlvbihlKSB7CiAgICAgIGlmIChlLmNvZGUgPT0gRmlsZUVycm9yLk5PVF9GT1VORF9FUlIpIHsKICAgICAgICBvdXRwdXQoY21kICsgJzogJyArIHBhdGggKyAnOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5PGJyPicpOwogICAgICB9CiAgICB9KTsKICB9CgogIGZ1bmN0aW9uIHJlYWRfKGNtZCwgcGF0aCwgc3VjY2Vzc0NhbGxiYWNrKSB7CiAgICBpZiAoIWZzXykgewogICAgICByZXR1cm47CiAgICB9CgogICAgY3dkXy5nZXRGaWxlKHBhdGgsIHt9LCBmdW5jdGlvbihmaWxlRW50cnkpIHsKICAgICAgZmlsZUVudHJ5LmZpbGUoZnVuY3Rpb24oZmlsZSkgewogICAgICAgIHZhciByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpOwoKICAgICAgICByZWFkZXIub25sb2FkZW5kID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgc3VjY2Vzc0NhbGxiYWNrKHRoaXMucmVzdWx0KTsKICAgICAgICB9OwoKICAgICAgICByZWFkZXIucmVhZEFzVGV4dChmaWxlKTsKICAgICAgfSwgZXJyb3JIYW5kbGVyXyk7CiAgICB9LCBmdW5jdGlvbihlKSB7CiAgICAgIGlmIChlLmNvZGUgPT0gRmlsZUVycm9yLklOVkFMSURfU1RBVEVfRVJSKSB7CiAgICAgICAgb3V0cHV0KGNtZCArICc6ICcgKyBwYXRoICsgJzogaXMgYSBkaXJlY3Rvcnk8YnI+Jyk7CiAgICAgIH0gZWxzZSBpZiAoZS5jb2RlID09IEZpbGVFcnJvci5OT1RfRk9VTkRfRVJSKSB7CiAgICAgICAgb3V0cHV0KGNtZCArICc6ICcgKyBwYXRoICsgJzogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeTxicj4nKTsKICAgICAgfQogICAgfSk7CiAgfQoKICBmdW5jdGlvbiBsc18oc3VjY2Vzc0NhbGxiYWNrKSB7CiAgICBpZiAoIWZzXykgewogICAgICByZXR1cm47CiAgICB9CgogICAgLy8gUmVhZCBjb250ZW50cyBvZiBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LiBBY2NvcmRpbmcgdG8gc3BlYywgbmVlZCB0bwogICAgLy8ga2VlcCBjYWxsaW5nIHJlYWRFbnRyaWVzKCkgdW50aWwgbGVuZ3RoIG9mIHJlc3VsdCBhcnJheSBpcyAwLiBXZSdyZQogICAgLy8gZ3VhcmVudGVlZCB0aGUgc2FtZSBlbnRyeSB3b24ndCBiZSByZXR1cm5lZCBhZ2Fpbi4KICAgIHZhciBlbnRyaWVzID0gW107CiAgICB2YXIgcmVhZGVyID0gY3dkXy5jcmVhdGVSZWFkZXIoKTsKCiAgICB2YXIgcmVhZEVudHJpZXMgPSBmdW5jdGlvbigpIHsKICAgICAgcmVhZGVyLnJlYWRFbnRyaWVzKGZ1bmN0aW9uKHJlc3VsdHMpIHsKICAgICAgICBpZiAoIXJlc3VsdHMubGVuZ3RoKSB7CiAgICAgICAgICBlbnRyaWVzID0gZW50cmllcy5zb3J0KCk7CiAgICAgICAgICBzdWNjZXNzQ2FsbGJhY2soZW50cmllcyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGVudHJpZXMgPSBlbnRyaWVzLmNvbmNhdCh1dGlsLnRvQXJyYXkocmVzdWx0cykpOwogICAgICAgICAgcmVhZEVudHJpZXMoKTsKICAgICAgICB9CiAgICAgIH0sIGVycm9ySGFuZGxlcl8pOwogICAgfTsKCiAgICByZWFkRW50cmllcygpOwogIH0KCiAgZnVuY3Rpb24gY2xlYXJfKGlucHV0KSB7CiAgICBvdXRwdXRfLmlubmVySFRNTCA9ICcnOwogICAgaW5wdXQudmFsdWUgPSAnJzsKICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5oZWlnaHQgPSAnMTAwJSc7CiAgICBpbnRlcmxhY2VfLnN0eWxlLmhlaWdodCA9ICcxMDAlJzsKICB9CgogIGZ1bmN0aW9uIHNldFRoZW1lXyh0aGVtZSkgewogICAgdmFyIGN1cnJlbnRVcmwgPSBkb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZTsKCiAgICBpZiAoIXRoZW1lIHx8IHRoZW1lID09ICdkZWZhdWx0JykgewogICAgICAvL2hpc3RvcnkucmVwbGFjZVN0YXRlKHt9LCAnJywgY3VycmVudFVybCk7CiAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCd0aGVtZScpOwogICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSA9ICcnOwogICAgICByZXR1cm47CiAgICB9CgogICAgaWYgKHRoZW1lKSB7CiAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCh0aGVtZSk7CiAgICAgIGxvY2FsU3RvcmFnZS50aGVtZSA9IHRoZW1lOwogICAgICAvL2hpc3RvcnkucmVwbGFjZVN0YXRlKHt9LCAnJywgY3VycmVudFVybCArICcjdGhlbWU9JyArIHRoZW1lKTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIHRvZ2dsZTNEVmlld18oKSB7CiAgICB2YXIgYm9keSA9IGRvY3VtZW50LmJvZHk7CiAgICBib2R5LmNsYXNzTGlzdC50b2dnbGUoJ29mZnNjcmVlbicpOwoKICAgIGlzM0RfID0gIWlzM0RfOwoKICAgIGlmIChib2R5LmNsYXNzTGlzdC5jb250YWlucygnb2Zmc2NyZWVuJykpIHsKCiAgICAgIGNvbnRhaW5lcl8uc3R5bGUud2Via2l0VHJhbnNmb3JtID0KICAgICAgICAgICd0cmFuc2xhdGVZKCcgKyAodXRpbC5nZXREb2NIZWlnaHQoKSAtIDE3NSkgKyAncHgpJzsKCiAgICAgIHZhciB0cmFuc0VuZF8gPSBmdW5jdGlvbihlKSB7CiAgICAgICAgdmFyIGlmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpOwogICAgICAgIGlmcmFtZS5pZCA9ICdmc24nOwogICAgICAgIGlmcmFtZS5zcmMgPSAnLi4vZnNuL2Zzbl9wcm90by5odG1sJzsKCiAgICAgICAgZnNuXyA9IGJvZHkuaW5zZXJ0QmVmb3JlKGlmcmFtZSwgYm9keS5maXJzdEVsZW1lbnRDaGlsZCk7CgogICAgICAgIGlmcmFtZS5jb250ZW50V2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgd29ya2VyXy5wb3N0TWVzc2FnZSh7Y21kOiAncmVhZCcsIHR5cGU6IHR5cGVfLCBzaXplOiBzaXplX30pOwogICAgICAgIH0KICAgICAgICBjb250YWluZXJfLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3dlYmtpdFRyYW5zaXRpb25FbmQnLCB0cmFuc0VuZF8sIGZhbHNlKTsKICAgICAgfTsKICAgICAgY29udGFpbmVyXy5hZGRFdmVudExpc3RlbmVyKCd3ZWJraXRUcmFuc2l0aW9uRW5kJywgdHJhbnNFbmRfLCBmYWxzZSk7CiAgICB9IGVsc2UgewogICAgICBjb250YWluZXJfLnN0eWxlLndlYmtpdFRyYW5zZm9ybSA9ICd0cmFuc2xhdGVZKDApJzsKICAgICAgYm9keS5yZW1vdmVDaGlsZChmc25fKTsKICAgICAgZnNuXyA9IG51bGw7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBvdXRwdXQoaHRtbCkgewogICAgb3V0cHV0Xy5pbnNlcnRBZGphY2VudEhUTUwoJ2JlZm9yZUVuZCcsIGh0bWwpOwogICAgLy9vdXRwdXRfLnNjcm9sbEludG9WaWV3KCk7CiAgICBjbWRMaW5lXy5zY3JvbGxJbnRvVmlldygpOwogIH0KCiAgcmV0dXJuIHsKICAgIGluaXRGUzogZnVuY3Rpb24ocGVyc2lzdGVudCwgc2l6ZSkgewogICAgICBvdXRwdXQoJzxkaXY+V2VsY29tZSB0byAnICsgZG9jdW1lbnQudGl0bGUgKwogICAgICAgICAgICAgJyEgKHYnICsgVkVSU0lPTl8gKyAnKTwvZGl2PicpOwogICAgICBvdXRwdXQoKG5ldyBEYXRlKCkpLnRvTG9jYWxlU3RyaW5nKCkpOwogICAgICBvdXRwdXQoJzxwPkRvY3VtZW50YXRpb246IHR5cGUgImhlbHAiPC9wPicpOwoKICAgICAgaWYgKCEhIXdpbmRvdy5yZXF1ZXN0RmlsZVN5c3RlbSkgewogICAgICAgIG91dHB1dCgnPGRpdj5Tb3JyeSEgVGhlIEZpbGVTeXN0ZW0gQVBJcyBhcmUgbm90IGF2YWlsYWJsZSBpbiB5b3VyIGJyb3dzZXIuPC9kaXY+Jyk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CgogICAgICB2YXIgdHlwZSA9IHBlcnNpc3RlbnQgPyB3aW5kb3cuUEVSU0lTVEVOVCA6IHdpbmRvdy5URU1QT1JBUlk7CiAgICAgIHdpbmRvdy5yZXF1ZXN0RmlsZVN5c3RlbSh0eXBlLCBzaXplLCBmdW5jdGlvbihmaWxlc3lzdGVtKSB7CiAgICAgICAgZnNfID0gZmlsZXN5c3RlbTsKICAgICAgICBjd2RfID0gZnNfLnJvb3Q7CiAgICAgICAgdHlwZV8gPSB0eXBlOwogICAgICAgIHNpemVfID0gc2l6ZTsKCiAgICAgICAgLy8gSWYgd2UgZ2V0IHRoaXMgZmFyLCBhdHRlbXB0IHRvIGNyZWF0ZSBhIGZvbGRlciB0byB0ZXN0IGlmIHRoZQogICAgICAgIC8vIC0tdW5saW1pdGVkLXF1b3RhLWZvci1maWxlcyBmYWcgaXMgc2V0LgogICAgICAgIGN3ZF8uZ2V0RGlyZWN0b3J5KCd0ZXN0cXVvdGFmb3Jmc2ZvbGRlcicsIHtjcmVhdGU6IHRydWV9LCBmdW5jdGlvbihkaXJFbnRyeSkgewogICAgICAgICAgZGlyRW50cnkucmVtb3ZlKGZ1bmN0aW9uKCkgeyAvLyBJZiBzdWNjZXNzZnVsbHkgY3JlYXRlZCwganVzdCBkZWxldGUgaXQuCiAgICAgICAgICAgIC8vIG5vb3AuCiAgICAgICAgICB9KTsKICAgICAgICB9LCBmdW5jdGlvbihlKSB7CiAgICAgICAgICBpZiAoZS5jb2RlID09IEZpbGVFcnJvci5RVU9UQV9FWENFRURFRF9FUlIpIHsKICAgICAgICAgICAgb3V0cHV0KCdFUlJPUjogV3JpdGUgYWNjZXNzIHRvIHRoZSBGaWxlU3lzdGVtIGlzIHVuYXZhaWxhYmxlLjxicj4nKTsKICAgICAgICAgICAgb3V0cHV0KCdUeXBlICJpbnN0YWxsIiBvciBydW4gQ2hyb21lIHdpdGggdGhlIC0tdW5saW1pdGVkLXF1b3RhLWZvci1maWxlcyBmbGFnLicpOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZXJyb3JIYW5kbGVyXyhlKTsKICAgICAgICAgIH0KICAgICAgICB9KTsKCiAgICAgIH0sIGVycm9ySGFuZGxlcl8pOwogICAgfSwKICAgIG91dHB1dDogb3V0cHV0LAogICAgc2V0VGhlbWU6IHNldFRoZW1lXywKICAgIGdldENtZExpbmU6IGZ1bmN0aW9uKCkgeyByZXR1cm4gY21kTGluZV87IH0sCiAgICBhZGREcm9wcGVkRmlsZXM6IGZ1bmN0aW9uKGZpbGVzKSB7CiAgICAgIHV0aWwudG9BcnJheShmaWxlcykuZm9yRWFjaChmdW5jdGlvbihmaWxlLCBpKSB7CiAgICAgICAgY3dkXy5nZXRGaWxlKGZpbGUubmFtZSwge2NyZWF0ZTogdHJ1ZSwgZXhjbHVzaXZlOiB0cnVlfSwgZnVuY3Rpb24oZmlsZUVudHJ5KSB7CgogICAgICAgICAgLy8gVGVsbCBGU04gdmlzdWFsaXplciB3ZSd2ZSBhZGRlZCBhIGZpbGUuCiAgICAgICAgICBpZiAoZnNuXykgewogICAgICAgICAgICBmc25fLmNvbnRlbnRXaW5kb3cucG9zdE1lc3NhZ2Uoe2NtZDogJ3RvdWNoJywgZGF0YTogZmlsZS5uYW1lfSwgbG9jYXRpb24ub3JpZ2luKTsKICAgICAgICAgIH0KICAgICAgICAgIAogICAgICAgICAgZmlsZUVudHJ5LmNyZWF0ZVdyaXRlcihmdW5jdGlvbihmaWxlV3JpdGVyKSB7CiAgICAgICAgICAgIGZpbGVXcml0ZXIud3JpdGUoZmlsZSk7CiAgICAgICAgICB9LCBlcnJvckhhbmRsZXJfKTsKICAgICAgICB9LCBlcnJvckhhbmRsZXJfKTsKICAgICAgfSk7CiAgICB9LAogICAgdG9nZ2xlM0RWaWV3OiB0b2dnbGUzRFZpZXdfLAogICAgc2VsZWN0RmlsZTogc2VsZWN0RmlsZV8KICB9Cn07Cgo="></script> -->
	<script id="script_terminal_js" >
/*
Copyright 2011 Google Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Author: Eric Bidelman (ericbidelman@chromium.org)
*/

var util = util || {};
util.toArray = function(list) {
  return Array.prototype.slice.call(list || [], 0);
};

// Cross-browser impl to get document's height.
util.getDocHeight = function() {
  var d = document;
  return Math.max(
      Math.max(d.body.scrollHeight, d.documentElement.scrollHeight),
      Math.max(d.body.offsetHeight, d.documentElement.offsetHeight),
      Math.max(d.body.clientHeight, d.documentElement.clientHeight)
  );
};


// TODO(ericbidelman): add fallback to html5 audio.
function Sound(opt_loop) {
  var self_ = this;
  var context_ = null;
  var source_ = null;
  var loop_ = opt_loop || false;

  window.AudioContext = window.AudioContext || window.webkitAudioContext;
  if (window.AudioContext) {
    context_ = new window.AudioContext();
  }

  this.load = function(url, mixToMono, opt_callback) {
    var xhr = new XMLHttpRequest();
    xhr.open('GET', url, true);
    xhr.responseType = 'arraybuffer';
    xhr.onload = function() {
      if (context_) {
        /*self_.sample = context_.createBuffer(this.response, mixToMono);
        if (opt_callback) {
          opt_callback();
        }
        */
        context_.decodeAudioData(this.response, function(audioBuffer) {
          self_.sample = audioBuffer;
          opt_callback && opt_callback();
        }, function(e) {
          console.log(e);
        });
      }
    };
    xhr.send();
  };

  this.play = function() {
    if (context_) {
      source_ = context_.createBufferSource();
      source_.buffer = self_.sample;
      source_.looping = loop_;
      source_.connect(context_.destination);
      source_.noteOn(0);
    }
  };

  this.stop = function() {
    if (source_) {
      source_.noteOff(0);
      source_.disconnect(0);
    }
  };
}

var Terminal = Terminal || function(containerId) {
  window.URL = window.URL || window.webkitURL;
  window.requestFileSystem = window.requestFileSystem ||
                             window.webkitRequestFileSystem;

  const VERSION_ = '1.0.0';
  const CMDS_ = [
    'vi', ':', '/', '?', '3d', 'cat', 'cd', 'cp', 'clear', 'date', 'help', 'install', 'ls', 'mkdir',
    'mv', 'open', 'pwd', 'rm', 'rmdir', 'theme', 'version', 'who', 'wget'
  ];
  const THEMES_ = ['default', 'cream'];

  var fs_ = null;
  var cwd_ = null;
  var history_ = [];
  var histpos_ = 0;
  var histtemp_ = 0;

  var timer_ = null;
  var magicWord_ = null;

  var fsn_ = null;
  var is3D_ = false;

  // Fire worker to return recursive snapshot of current FS tree.
  var worker_ = new Worker('worker.js');
  worker_.onmessage = function(e) {
    var data = e.data;
    if (data.entries) {
      fsn_.contentWindow.postMessage({cmd: 'build', data: data.entries},
                                     window.location.origin);
    }
    if (data.msg) {
      output('<div>' + data.msg + '</div>');
    }
  };
  worker_.onerror = function(e) { console.log(e) };

  // Create terminal and cache DOM nodes;
  var container_ = document.getElementById(containerId);
  container_.insertAdjacentHTML('beforeEnd',
      ['<output></output>',
       '<div id="input-line" class="input-line">',
       '<div class="prompt">$&gt;</div><div><input class="cmdline" autofocus /></div>',
       '</div>'].join(''));
  var cmdLine_ = container_.querySelector('#input-line .cmdline');
  var output_ = container_.querySelector('output');
  var interlace_ = document.querySelector('.interlace');
  var bell_ = new Sound(false);
  bell_.load('beep.mp3', false);

  // Hackery to resize the interlace background image as the container grows.
  output_.addEventListener('DOMSubtreeModified', function(e) {
    var docHeight = util.getDocHeight();
    document.documentElement.style.height = docHeight + 'px';
    //document.body.style.background = '-webkit-radial-gradient(center ' + (Math.round(docHeight / 2)) + 'px, contain, rgba(0,75,0,0.8), black) center center no-repeat, black';
    interlace_.style.height = docHeight + 'px';
    setTimeout(function() { // Need this wrapped in a setTimeout. Chrome is jupming to top :(
      //window.scrollTo(0, docHeight);
      cmdLine_.scrollIntoView();
    }, 0);
    //window.scrollTo(0, docHeight);
  }, false);

  output_.addEventListener('click', function(e) {
    var el = e.target;
    if (el.classList.contains('file') || el.classList.contains('folder')) {
      cmdLine_.value += ' ' + el.textContent;
    }
  }, false);

  window.addEventListener('click', function(e) {
    //if (!document.body.classList.contains('offscreen')) {
      cmdLine_.focus();
    //}
  }, false);

  // Always force text cursor to end of input line.
  cmdLine_.addEventListener('click', inputTextClick_, false);

  // Handle up/down key presses for shell history and enter for new command.
  cmdLine_.addEventListener('keydown', keyboardShortcutHandler_, false);
  cmdLine_.addEventListener('keyup', historyHandler_, false); // keyup needed for input blinker to appear at end of input.
  cmdLine_.addEventListener('keydown', processNewCommand_, false);

  /*window.addEventListener('beforeunload', function(e) {
    return "Don't leave me!";
  }, false);*/

  function inputTextClick_(e) {
    this.value = this.value;
  }

  function keyboardShortcutHandler_(e) {
    // Toggle CRT screen flicker.
    if ((e.ctrlKey || e.metaKey) && e.keyCode == 83) { // crtl+s
      container_.classList.toggle('flicker');
      output('<div>Screen flicker: ' +
             (container_.classList.contains('flicker') ? 'on' : 'off') +
             '</div>');
      e.preventDefault();
      e.stopPropagation();
    }
  }

  function selectFile_(el) {
    alert(el)
  }

  function historyHandler_(e) { // Tab needs to be keydown.

    if (history_.length) {
      if (e.keyCode == 38 || e.keyCode == 40) {
        if (history_[histpos_]) {
          history_[histpos_] = this.value;
        } else {
          histtemp_ = this.value;
        }
      }

      if (e.keyCode == 38) { // up
        histpos_--;
        if (histpos_ < 0) {
          histpos_ = 0;
        }
      } else if (e.keyCode == 40) { // down
        histpos_++;
        if (histpos_ > history_.length) {
          histpos_ = history_.length;
        }
      }

      if (e.keyCode == 38 || e.keyCode == 40) {
        this.value = history_[histpos_] ? history_[histpos_] : histtemp_;
        this.value = this.value; // Sets cursor to end of input.
      }
    }
  }

  function processNewCommand_(e) {

    // Beep on backspace and no value on command line.
    if (!this.value && e.keyCode == 8) {
      bell_.stop();
      bell_.play();
      return;
    }

    if (e.keyCode == 9) { // Tab
      e.preventDefault();
      // TODO(ericbidelman): Implement tab suggest.
    } else if (e.keyCode == 13) { // enter

      // Save shell history.
      if (this.value) {
        history_[history_.length] = this.value;
        histpos_ = history_.length;
      }

      // Duplicate current input and append to output section.
      var line = this.parentNode.parentNode.cloneNode(true);
      line.removeAttribute('id')
      line.classList.add('line');
      var input = line.querySelector('input.cmdline');
      input.autofocus = false;
      input.readOnly = true;
      output_.appendChild(line);

      // Parse out command, args, and trim off whitespace.
      // TODO(ericbidelman): Support multiple comma separated commands.
      if (this.value && this.value.trim()) {
        var args = this.value.split(' ').filter(function(val, i) {
          return val;
        });
        var cmd = args[0].toLowerCase();
        args = args.splice(1); // Remove cmd from arg list.
      }

      switch (cmd) {
        case '3d':
          clear_(this);
          output('Hold on to your butts!');
          toggle3DView_();
          break;
        case 'cat':
          var fileName = args.join(' ');

          if (!fileName) {
            output('usage: ' + cmd + ' filename');
            break;
          }

          read_(cmd, fileName, function(result) {
            output('<pre>' + result + '</pre>');
          });

          break;
        case 'clear':
          clear_(this);
          return;
        case 'date':
          output((new Date()).toLocaleString());
          break;
        case 'exit':
          if (is3D_) {
            toggle3DView_();
          }
          if (timer_ != null) {
            magicWord_.stop();
            clearInterval(timer_);
          }
          break;
        case 'help':
          output('<div class="ls-files">' + CMDS_.join('<br>') + '</div>');
          output('<p>Add files by dragging them from your desktop.</p>');
          break;
        case 'install':
          // Check is installed.
          if (window.chrome && window.chrome.app) {
            if (!window.chrome.app.isInstalled) {
              try {
                chrome.app.install();
              } catch(e) {
                alert(e + '\nEnable is about:flags');
              }
            } else {
              output('This app is already installed.');
            }
          }
          break;
        case 'ls':
          ls_(function(entries) {
            if (entries.length) {
              var html = formatColumns_(entries);
              util.toArray(entries).forEach(function(entry, i) {
                html.push(
                    '<span class="', entry.isDirectory ? 'folder' : 'file',
                    '">', entry.name, '</span><br>');
              });
              html.push('</div>');
              output(html.join(''));
            }
          });
          break;
        case 'pwd':
          output(cwd_.fullPath);
          break;
        case 'cd':
          var dest = args.join(' ') || '/';

          cwd_.getDirectory(dest, {}, function(dirEntry) {
            cwd_ = dirEntry;
            output('<div>' + dirEntry.fullPath + '</div>');

            // Tell FSN visualizer that we're cd'ing.
            if (fsn_) {
              fsn_.contentWindow.postMessage({cmd: 'cd', data: dest}, location.origin);
            }

          }, function(e) { invalidOpForEntryType_(e, cmd, dest); });

          break;
        case 'mkdir':
          var dashP = false;
          var index = args.indexOf('-p');
          if (index != -1) {
            args.splice(index, 1);
            dashP = true;
          }

          if (!args.length) {
            output('usage: ' + cmd + ' [-p] directory<br>');
            break;
          }

          // Create each directory passed as an argument.
          args.forEach(function(dirName, i) {
            if (dashP) {
              var folders = dirName.split('/');

              // Throw out './' or '/' if present on the beginning of our path.
              if (folders[0] == '.' || folders[0] == '') {
                folders = folders.slice(1);
              }

              createDir_(cwd_, folders);
            } else {
              cwd_.getDirectory(dirName, {create: true, exclusive: true}, function() {
                // Tell FSN visualizer that we're mkdir'ing.
                if (fsn_) {
                  fsn_.contentWindow.postMessage({cmd: 'mkdir', data: dirName}, location.origin);
                }
              }, function(e) { invalidOpForEntryType_(e, cmd, dirName); });
            }
          });
          break;
        case 'cp':
        case 'mv':
          var src = args[0];
          var dest = args[1];

          if (!src || !dest) {
            output(['usage: ', cmd, ' source target<br>',
                   '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;', cmd,
                   ' source directory/'].join(''));
            break;
          }

          var runAction = function(cmd, srcDirEntry, destDirEntry, opt_newName) {
            var newName = opt_newName || null;
            if (cmd == 'mv') {
                srcDirEntry.moveTo(destDirEntry, newName);
              } else {
                srcDirEntry.copyTo(destDirEntry, newName);
              }
          };

          // Moving to a folder? (e.g. second arg ends in '/').
          if (dest[dest.length - 1] == '/') {
            cwd_.getDirectory(src, {}, function(srcDirEntry) {
              // Create blacklist for dirs we can't re-create.
              var create = [
                '.', './', '..', '../', '/'].indexOf(dest) != -1 ? false : true;

              cwd_.getDirectory(dest, {create: create}, function(destDirEntry) {
                runAction(cmd, srcDirEntry, destDirEntry);
              }, errorHandler_);
            }, function(e) {
              // Try the src entry as a file instead.
              cwd_.getFile(src, {}, function(srcDirEntry) {
                cwd_.getDirectory(dest, {}, function(destDirEntry) {
                  runAction(cmd, srcDirEntry, destDirEntry);
                }, errorHandler_);
              }, errorHandler_);
            });
          } else { // Treat src/destination as files.
            cwd_.getFile(src, {}, function(srcFileEntry) {
              srcFileEntry.getParent(function(parentDirEntry) {
                runAction(cmd, srcFileEntry, parentDirEntry, dest);
              }, errorHandler_);
            }, errorHandler_);
          }

          break;
        case 'open':
          var fileName = args.join(' ');

          if (!fileName) {
            output('usage: ' + cmd + ' filename');
            break;
          }

          open_(cmd, fileName, function(fileEntry) {
            var myWin = window.open(fileEntry.toURL(), 'mywin');
          });

          break;
        case 'init':
          if (worker_) {
            worker_.postMessage({cmd: 'init', type: type_, size: size_});
          }
          break;
        case 'rm':
          // Remove recursively? If so, remove the flag(s) from the arg list.
          var recursive = false;
          ['-r', '-f', '-rf', '-fr'].forEach(function(arg, i) {
            var index = args.indexOf(arg);
            if (index != -1) {
              args.splice(index, 1);
              recursive = true;
            }
          });

          // Remove each file passed as an argument.
          args.forEach(function(fileName, i) {
            cwd_.getFile(fileName, {}, function(fileEntry) {
              fileEntry.remove(function() {
                // Tell FSN visualizer that we're rm'ing.
                if (fsn_) {
                  fsn_.contentWindow.postMessage({cmd: 'rm', data: fileName}, location.origin);
                }
              }, errorHandler_);
            }, function(e) {
              if (recursive && e.code == FileError.TYPE_MISMATCH_ERR) {
                cwd_.getDirectory(fileName, {}, function(dirEntry) {
                  dirEntry.removeRecursively(null, errorHandler_);
                }, errorHandler_);
              } else if (e.code == FileError.INVALID_STATE_ERR) {
                output(cmd + ': ' + fileName + ': is a directory<br>');
              } else {
                errorHandler_(e);
              }
            });
          });
          break;
        case 'rmdir':
          // Remove each directory passed as an argument.
          args.forEach(function(dirName, i) {
            cwd_.getDirectory(dirName, {}, function(dirEntry) {
              dirEntry.remove(function() {
                // Tell FSN visualizer that we're rmdir'ing.
                if (fsn_) {
                  fsn_.contentWindow.postMessage({cmd: 'rm', data: dirName}, location.origin);
                }
              }, function(e) {
                if (e.code == FileError.INVALID_MODIFICATION_ERR) {
                  output(cmd + ': ' + dirName + ': Directory not empty<br>');
                } else {
                  errorHandler_(e);
                }
              });
            }, function(e) { invalidOpForEntryType_(e, cmd, dirName); });
          });
          break;
        case 'sudo':
          if (timer_ != null) {
            magicWord_.stop();
            clearInterval(timer_);
          }
          if (!magicWord_) {
            magicWord_ = new Sound(true);
            magicWord_.load('magic_word.mp3', false, function() {
              magicWord_.play();
            });
          } else {
            magicWord_.play();
          }
          timer_ = setInterval(function() {
            output("<div>YOU DIDN'T SAY THE MAGIC WORD!</div>");
          }, 100);
          break;
        case 'theme':
          var theme = args.join(' ');
          if (!theme) {
            output(['usage: ', cmd, ' ' + THEMES_.join(',')].join(''));
          } else {
            if (THEMES_.indexOf(theme) != -1) {
              setTheme_(theme);
            } else {
              output('Error - Unrecognized theme used');
            }
          }
          break;

        case 'vi':
        case 'vi':
		alert( "vi" );
//        output(VERSION_);
          break;

        case ':':
		alert( ":" );
		break;

        case '/':
		alert( "/" );
		break;

        case '?':
		alert( "?" );
		break;














        case 'version':
        case 'ver':
          output(VERSION_);
          break;
        case 'wget':
          var url = args[0];
          if (!url) {
            output(['usage: ', cmd, ' missing URL'].join(''));
            break;
          } else if (url.search('^http://') == -1) {
            url = 'http://' + url;
          }
          var xhr = new XMLHttpRequest();
          xhr.onload = function(e) {
            if (this.status == 200 && this.readyState == 4) {
              output('<textarea>' + this.response + '</textarea>');
            } else {
              output('ERROR: ' + this.status + ' ' + this.statusText);
            }
          };
          xhr.onerror = function(e) {
            output('ERROR: ' + this.status + ' ' + this.statusText);
            output('Could not fetch ' + url);
          };
          xhr.open('GET', url, true);
          xhr.send();
          break;
        case 'who':
          output(document.title +
                 ' - By: jkwii &ltadminiwii@ko0.us&gt & Eric Bidelman &lt;ericbidelman@chromium.org&gt;');
          break;
        default:
          if (cmd) {
            output(cmd + ': command not found');
          }
      };

      this.value = ''; // Clear/setup line for next input.
    }
  }

  function formatColumns_(entries) {
    var maxName = entries[0].name;
    util.toArray(entries).forEach(function(entry, i) {
      if (entry.name.length > maxName.length) {
        maxName = entry.name;
      }
    });

    // If we have 3 or less entries, shorten the output container's height.
    // 15px height with a monospace font-size of ~12px;
    var height = entries.length == 1 ? 'height: ' + (entries.length * 30) + 'px;' :
                 entries.length <= 3 ? 'height: ' + (entries.length * 18) + 'px;' : '';

    // ~12px monospace font yields ~8px screen width.
    var colWidth = maxName.length * 16;//;8;

    return ['<div class="ls-files" style="-webkit-column-width:',
            colWidth, 'px;', height, '">'];
  }

  function invalidOpForEntryType_(e, cmd, dest) {
    if (e.code == FileError.NOT_FOUND_ERR) {
      output(cmd + ': ' + dest + ': No such file or directory<br>');
    } else if (e.code == FileError.INVALID_STATE_ERR) {
      output(cmd + ': ' + dest + ': Not a directory<br>');
    } else if (e.code == FileError.INVALID_MODIFICATION_ERR) {
      output(cmd + ': ' + dest + ': File already exists<br>');
    } else {
      errorHandler_(e);
    }
  }

  function errorHandler_(e) {
    var msg = '';
    switch (e.code) {
      case FileError.QUOTA_EXCEEDED_ERR:
        msg = 'QUOTA_EXCEEDED_ERR';
        break;
      case FileError.NOT_FOUND_ERR:
        msg = 'NOT_FOUND_ERR';
        break;
      case FileError.SECURITY_ERR:
        msg = 'SECURITY_ERR';
        break;
      case FileError.INVALID_MODIFICATION_ERR:
        msg = 'INVALID_MODIFICATION_ERR';
        break;
      case FileError.INVALID_STATE_ERR:
        msg = 'INVALID_STATE_ERR';
        break;
      default:
        msg = 'Unknown Error';
        break;
    };
    output('<div>Error: ' + msg + '</div>');
  }

  function createDir_(rootDirEntry, folders, opt_errorCallback) {
    var errorCallback = opt_errorCallback || errorHandler_;

    rootDirEntry.getDirectory(folders[0], {create: true}, function(dirEntry) {

      // Recursively add the new subfolder if we still have a subfolder to create.
      if (folders.length) {
        createDir_(dirEntry, folders.slice(1));
      }
    }, errorCallback);
  }

  function open_(cmd, path, successCallback) {
    if (!fs_) {
      return;
    }

    cwd_.getFile(path, {}, successCallback, function(e) {
      if (e.code == FileError.NOT_FOUND_ERR) {
        output(cmd + ': ' + path + ': No such file or directory<br>');
      }
    });
  }

  function read_(cmd, path, successCallback) {
    if (!fs_) {
      return;
    }

    cwd_.getFile(path, {}, function(fileEntry) {
      fileEntry.file(function(file) {
        var reader = new FileReader();

        reader.onloadend = function(e) {
          successCallback(this.result);
        };

        reader.readAsText(file);
      }, errorHandler_);
    }, function(e) {
      if (e.code == FileError.INVALID_STATE_ERR) {
        output(cmd + ': ' + path + ': is a directory<br>');
      } else if (e.code == FileError.NOT_FOUND_ERR) {
        output(cmd + ': ' + path + ': No such file or directory<br>');
      }
    });
  }

  function ls_(successCallback) {
    if (!fs_) {
      return;
    }

    // Read contents of current working directory. According to spec, need to
    // keep calling readEntries() until length of result array is 0. We're
    // guarenteed the same entry won't be returned again.
    var entries = [];
    var reader = cwd_.createReader();

    var readEntries = function() {
      reader.readEntries(function(results) {
        if (!results.length) {
          entries = entries.sort();
          successCallback(entries);
        } else {
          entries = entries.concat(util.toArray(results));
          readEntries();
        }
      }, errorHandler_);
    };

    readEntries();
  }

  function clear_(input) {
    output_.innerHTML = '';
    input.value = '';
    document.documentElement.style.height = '100%';
    interlace_.style.height = '100%';
  }

  function setTheme_(theme) {
    var currentUrl = document.location.pathname;

    if (!theme || theme == 'default') {
      //history.replaceState({}, '', currentUrl);
      localStorage.removeItem('theme');
      document.body.className = '';
      return;
    }

    if (theme) {
      document.body.classList.add(theme);
      localStorage.theme = theme;
      //history.replaceState({}, '', currentUrl + '#theme=' + theme);
    }
  }

  function toggle3DView_() {
    var body = document.body;
    body.classList.toggle('offscreen');

    is3D_ = !is3D_;

    if (body.classList.contains('offscreen')) {

      container_.style.webkitTransform =
          'translateY(' + (util.getDocHeight() - 175) + 'px)';

      var transEnd_ = function(e) {
        var iframe = document.createElement('iframe');
        iframe.id = 'fsn';
        iframe.src = '../fsn/fsn_proto.html';

        fsn_ = body.insertBefore(iframe, body.firstElementChild);

        iframe.contentWindow.onload = function() {
          worker_.postMessage({cmd: 'read', type: type_, size: size_});
        }
        container_.removeEventListener('webkitTransitionEnd', transEnd_, false);
      };
      container_.addEventListener('webkitTransitionEnd', transEnd_, false);
    } else {
      container_.style.webkitTransform = 'translateY(0)';
      body.removeChild(fsn_);
      fsn_ = null;
    }
  }

  function output(html) {
    output_.insertAdjacentHTML('beforeEnd', html);
    //output_.scrollIntoView();
    cmdLine_.scrollIntoView();
  }

			return {
				initFS: function(persistent, size) {
				output('<div>koterm: ' + document.title +
				'! (v' + VERSION_ + ')</div>');
				output((new Date()).toLocaleString());
				output('<p>quickref: type "help"</p>');

				if (!!!window.requestFileSystem) {
					output('<div>MSG_9000 unauthorized access logged terminal disabled</div>');
					return;
					}

      var type = persistent ? window.PERSISTENT : window.TEMPORARY;
      window.requestFileSystem(type, size, function(filesystem) {
        fs_ = filesystem;
        cwd_ = fs_.root;
        type_ = type;
        size_ = size;

        // If we get this far, attempt to create a folder to test if the
        // --unlimited-quota-for-files fag is set.
        cwd_.getDirectory('testquotaforfsfolder', {create: true}, function(dirEntry) {
          dirEntry.remove(function() { // If successfully created, just delete it.
            // noop.
          });
        }, function(e) {
          if (e.code == FileError.QUOTA_EXCEEDED_ERR) {
            output('ERROR: Write access to the FileSystem is unavailable.<br>');
            output('Type "install" or run Chrome with the --unlimited-quota-for-files flag.');
          } else {
            errorHandler_(e);
          }
        });

      }, errorHandler_);
    },
    output: output,
    setTheme: setTheme_,
    getCmdLine: function() { return cmdLine_; },
    addDroppedFiles: function(files) {
      util.toArray(files).forEach(function(file, i) {
        cwd_.getFile(file.name, {create: true, exclusive: true}, function(fileEntry) {

          // Tell FSN visualizer we've added a file.
          if (fsn_) {
            fsn_.contentWindow.postMessage({cmd: 'touch', data: file.name}, location.origin);
          }
          
          fileEntry.createWriter(function(fileWriter) {
            fileWriter.write(file);
          }, errorHandler_);
        }, errorHandler_);
      });
    },
    toggle3DView: toggle3DView_,
    selectFile: selectFile_
  }
};


		</script>
	<script>
		function toggleHelp() {
			document.querySelector('.help').classList.toggle('hidden');
			document.body.classList.toggle('dim');
			}

		(function() {
			var term = new Terminal('container');
			term.initFS(false, 1024 * 1024);

			if (document.location.hash) {
    var theme = document.location.hash.substring(1).split('=')[1];
    term.setTheme(theme);
  } else if (localStorage.theme) {
    term.setTheme(localStorage.theme);
  }

  document.body.addEventListener('keydown', function(e) {
	if (e.keyCode == 'h' ) { // help
		toggleHelp();
		e.stopPropagation();
		e.preventDefault();
		}

	if (e.keyCode == 27) { // Esc
		alert( "esc" );
//		toggleHelp();
		e.stopPropagation();
		e.preventDefault();
		}
	if (e.keyCode == ":" ) { // colon
		alert( ":" );
		}
	if (e.keyCode == "/" ) { // slash
		alert( "/" );
		}
	if (e.keyCode == "?" ) { // question
		alert( "?" );
		}

	}, false);

  // Setup the DnD listeners for file drop.
  document.body.addEventListener('dragenter', function(e) {
    e.stopPropagation();
    e.preventDefault();
    this.classList.add('dropping');
  }, false);

  document.body.addEventListener('dragover', function(e) {
    e.stopPropagation();
    e.preventDefault();
    e.dataTransfer.dropEffect = 'copy'; // Explicitly show this is a copy.
  }, false);

  document.body.addEventListener('dragleave', function(e) {
   this.classList.remove('dropping');
  }, false);
  
  document.body.addEventListener('drop', function(e) {
    e.stopPropagation();
    e.preventDefault();
    this.classList.remove('dropping');
    term.addDroppedFiles(e.dataTransfer.files);
    term.output('<div>File(s) added!</div>');
  }, false);
})();
		</script>


	<div id="div_csv">
	<style type="text/css">
		body {
			font-family: Arial;
			font-size: 10pt;
			}
		table {
			border: 1px solid #ccc;
			}
		table th {
			background-color: #F7F7F7;
			color: #333;
			font-weight: bold;
			}
		table th, table td {
			padding: 5px;
			border-color: #ccc;
			}
		</style>
	
	<script type="text/javascript">
		function Upload() {
			var fileUpload = document.getElementById("fileUpload");
			var regex = /^([a-zA-Z0-9\s_\\.\-:])+(.csv|.txt|.psv|.py|.htm|.html|.php)$/;
			if (regex.test(fileUpload.value.toLowerCase())) {
				if (typeof (FileReader) != "undefined") {
					var reader = new FileReader();
					reader.onload = function (e) {
						var table = document.createElement("table");
						var rows = e.target.result.split("\n");
						for (var i = 0; i < rows.length; i++) {
							var row = table.insertRow(-1);
					
//							var cells = rows[i].split("|");
							var cells = rows[i].split(",");
							for (var j = 0; j < cells.length; j++) {
								var cell = row.insertCell(-1);
								cell.innerHTML = cells[j];
								}
							}
						var csv2tbl = document.getElementById("csv2tbl");
						csv2tbl.innerHTML = "";
						csv2tbl.appendChild(table);
						}
					reader.readAsText(fileUpload.files[0]);
					} 
				else {
					alert("csv2tbl warn:  unauthorized access noted");
					}
				} 
			else {
				alert("csv2tbl fail:  unsuppoted format");
				}
			}
			</script>



				<input id="fileUpload" type="file">
<!--				<input id="upload" value="Upload" onclick="Upload()" type="button"> -->
				</div>
			<div id="csv2tbl"> </div>
<!--        		<button type="button" id="fileUpload" type="file" >select</button> -->
        		<button type="button" id="upload" value="Upload" onclick="Upload()">.txt.csv.psv</button>
<!--	</div> </div> -->
<!--	<div id="div_showhide" hidden> -->
	<div id="div_showhide_b" ><h1>div_showhide_b</h1></div>
	<div id="div_hideshow_b" ><h1>div_hideshow_b</h1></div>
	<hr color=black>
	<hr color=white>
	<div id="div_blobs" ><h1>div_blobs</h1></div>
	<hr color=white>
	<div id="div_bbwii" ><h1>div_bbwii</h1></div>
	<hr color=white>
	<hr color=black>
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
		<script id="script_showhide" >
			function show_files() {
				var div_files = document.getElementbyID("div_files");
				div_files.show();
				}
			function hide_files() {
				var div_files = document.getElementbyID("div_files");
				div_files.hide();
				}
			</script>

<div id="div_av"><h1>div_av</h1></div>
<div id="div_bb"><h1>div_dd</h1></div>
<div id="div_dd"><h1>div_dd</h1></div>
<div id="div_fb"><h1>div_fb</h1></div>
<div id="div_pn"><h1>div_pn</h1></div>
<div id="div_sl"><h1>div_sl</h1></div>
<div id="div_tl"><h1>div_tl</h1></div>
<div id="div_tm"><h1>div_tm</h1></div>
<div id="div_us"><h1>div_us</h1></div>
<div id="div_yt"><h1>div_yt</h1></div>
<div id="div_zm"><h1>div_zm</h1></div>
<div id="div_jtfdcr"><h1>div_jtfdcr</h1></div>
<div id="div_jtfdc"><h1>div_jtfdc</h1></div>
<div id="div_jtfinc"><h1>div_jtfinc</h1></div>
<div id="div_head"><h1>div_head</h1></div>
<div id="div_body"><h1>div_body</h1></div>
<div id="div_memes"><h1>div_memes</h1></div>
<div id="div_kov"><h1>div_kovs</h1></div>
<div id="div_tail"><h1>div_tail</h1></div>
	<br><br><br><br>
	<div id="div_buttons_hideshow_m">
		<img src="/imgs/btn/koeye_alloff.png" height=50 onclick="script_hideshow('alloff');return false;" alt="btn_alloff">
		<img src="/imgs/btn/koeye.png" height=50 onclick="script_hideshow('toggle');return false;" alt="btn_alloff">
		<img src="/imgs/btn/koeye_allon.png" height=50 onclick="script_hideshow('allon');return false;" alt="btn_allon">
		<br><br><br>
		<img src="/imgs/btn/koeye_alloff.png" height=50 onclick="script_hideshow('alloff');return false;" alt="btn_alloff">
		<img src="/imgs/btn/koeye.png" height=50 onclick="script_hideshow('toggle');return false;" alt="btn_alloff">
		<img src="/imgs/btn/koeye_allon.png" height=50 onclick="script_hideshow('allon');return false;" alt="btn_allon">
		<br>
		<hr color=white>
		<hr color=black>
<!--		<img src="/imgs/btn/koeyew_slots.png" height=50 onclick="script_hideshow('div_slots');return false;" alt="btn_slots"> -->
<!--		<img src="/imgs/btn/koeyew_hl.png" height=50 onclick="script_hideshow('div_hl');return false;" alt="btn_hl"> -->
<!--		<img src="/imgs/btn/koeyew_hllinks.png" height=50 onclick="script_hideshow('div_hllinks');return false;" alt="btn_hllinks"> -->
<!--		<img src="/imgs/btn/koeyew_hltext.png" height=50 onclick="script_hideshow('div_hltext');return false;" alt="btn_hltext"> -->
<!--		<img src="/imgs/btn/koeyew_hlmedia.png" height=50 onclick="script_hideshow('div_hltext');return false;" alt="btn_hlmedia"> -->
<!--		<img src="/imgs/btn/koeyew_games.png" height=50 onclick="script_hideshow('div_games');return false;" alt="btn_games"> -->
		<img src="/imgs/btn/koeyew_av_jtfdc.png" height=50 onclick="script_hideshow('div_av_jtfdc');return false;" alt="btn_av_jtfdc">
		<img src="/imgs/btn/koeyew_av_jtfinc.png" height=50 onclick="script_hideshow('div_av_jtfinc');return false;" alt="btn_av_jtfinc">
		<img src="/imgs/btn/koeyew_av_jtfdcr.png" height=50 onclick="script_hideshow('div_av_jtfdcr');return false;" alt="btn_av_jtfdcr">
		<br>
		<img src="/imgs/btn/koeyew_av.png" height=50 onclick="script_hideshow('div_av');return false;" alt="btn_av">
		<img src="/imgs/btn/koeyew_bb.png" height=50 onclick="script_hideshow('div_db');return false;" alt="btn_db">
		<img src="/imgs/btn/koeyew_dd.png" height=50 onclick="script_hideshow('div_dd');return false;" alt="btn_dd">
		<img src="/imgs/btn/koeyew_fb.png" height=50 onclick="script_hideshow('div_fb');return false;" alt="btn_fb">
<!--		<img src="/imgs/btn/koeyew_fs.png" height=50 onclick="script_hideshow('div_fs');return false;" alt="btn_fs"> -->
		<img src="/imgs/btn/koeyew_pn.png" height=50 onclick="script_hideshow('div_pn');return false;" alt="btn_pn">
		<img src="/imgs/btn/koeyew_sl.png" height=50 onclick="script_hideshow('div_sl');return false;" alt="btn_sl">
		<img src="/imgs/btn/koeyew_tl.png" height=50 onclick="script_hideshow('div_tl');return false;" alt="btn_tl">
		<br>
		<img src="/imgs/btn/koeyew_tm.png" height=50 onclick="script_hideshow('div_tm');return false;" alt="btn_tm">
		<img src="/imgs/btn/koeyew_us.png" height=50 onclick="script_hideshow('div_us');return false;" alt="btn_us">
		<img src="/imgs/btn/koeyew_yt.png" height=50 onclick="script_hideshow('div_yt');return false;" alt="btn_yt">
		<img src="/imgs/btn/koeyew_zm.png" height=50 onclick="script_hideshow('div_zm');return false;" alt="btn_zm">
		<br>
		<img src="/imgs/btn/koeyew_jtfdc.png" height=50 onclick="script_hideshow('div_jtfdc');return false;" alt="btn_jtfdc">
		<img src="/imgs/btn/koeyew_jtfinc.png" height=50 onclick="script_hideshow('div_jtfinc');return false;" alt="btn_jtfinc">
		<img src="/imgs/btn/koeyew_jtfdcr.png" height=50 onclick="script_hideshow('div_jtfdcr');return false;" alt="btn_jtfdcr">
		<br>
		<img src="/imgs/btn/koeyew_head.png" height=50 onclick="script_hideshow('div_head');return false;" alt="btn_head">
		<img src="/imgs/btn/koeyew_body.png" height=50 onclick="script_hideshow('div_body');return false;" alt="btn_body">
		<img src="/imgs/btn/koeyew_memes.png" height=50 onclick="script_hideshow('div_memes');return false;" alt="btn_memes">
		<img src="/imgs/btn/koeyew_kov.png" height=50 onclick="script_hideshow('div_kov');return false;" alt="btn_kov">
		<img src="/imgs/btn/koeyew_tail.png" height=50 onclick="script_hideshow('div_tail');return false;" alt="btn_tail">
		</div>
	<br><br><br><br>
		<div id="div_htmbugs" hidden><h1>div_htmbugs</h1></div>
	<hr color=black>
	<hr color=black>
	<hr color=black>
	<hr color=black>
	<hr color=black>
	<hr color=black>
	<hr color=blue>
	<hr color=white>
	<hr color=red>

	<div id="div_jaxgrid" >
		<h1>div_jaxgrid</h1>

		</div>
	<br><br><br><br>
	<br><br><br><br>
	<img id="img_jaxgrid" src="imgs/gif/gif_202004/giphy_onoff_grid_candls.gif" onclick="jaxgrid('');return false;" height=100>
	<br><br><br><br>
	<br><br><br><br>
	<img id="img_jaxgrid" src="imgs/gif/gif_202004/giphy_onoff_grid_candls.gif" onclick="jaxgrid1('');return false;" height=100>

	<script id="script_jaxgrid" >
		function jaxgrid(args) {
//			alert( "BUGS_10000 jaxgrid args="+args );
			htmout_head = "";
			htmout_head += '<div id="div_jaxgrid">';
			htmout_head += '	<h1>div_jaxgrid</h1>';
			if( document.getElementById("div_jaxgrid")) {
				document.getElementById("div_jaxgrid").innerHTML = htmout_head;
				}
//			divids = kolists['divids'].split(" ");
			divids = "av fb pn sl tl us yt zm".split(" ");
			divids_len=divids.length;
//			alert( "BUGS_10001 len="+divids_len+" divids="+divids )
			var j=0;
			for( j=0; j<divids_len; j++ ) {
				divid=divids[j];
				if( /alloff/.test(divid)) {continue; }
				if( /allon/.test(divid)) { continue; }
				if( /toggle/.test(divid)) { continue; }
				if( /</.test(divid)) { htmout += divid; continue;}

				canvas_id = "canvas_jax_"+divid;
				img_id = "img_jax_"+divid;
//				alert( "BUGS_10011 canvas_id="+canvas_id );
				htmout_img = "";
				htmout_img += '<img id="'+img_id+'" ';
				htmout_img += ' src="/imgs/btn/kow.png" ';
				htmout_img += '	onclick="jaxgrid1(\''+img_id+'\');return false;" ';
				htmout_img += '	height=50>';
//				alert( "BUGS_10012 htmout_img="+htmout_img );

				htmout_canvas = "";
				htmout_canvas += '<canvas id="'+canvas_id+'" ';
				htmout_canvas += ' onclick="jaxgrid1(\''+canvas_id+'\');return false;" ';
				htmout_canvas += ' height=100 width=200 >';
				htmout_canvas += ' </canvas>';
//				htmout = htmout_img+htmout_canvas;
				htmout = htmout_canvas;

//				alert( "BUGS_10013 htmout_canvas="+htmout_canvas );
//				alert( "BUGS_10012 canvas_id="+canvas_id );

				if( document.getElementById("div_jaxgrid")) {
//					alert( "BUGS_10015 htmout="+htmout );
					document.getElementById("div_jaxgrid").insertAdjacentHTML("beforeend", htmout);
					}

//				alert( "BUGS_10050 canvas_id="+canvas_id );
				imgsrc="/imgs/btn/kob.png";
//				alert( "BUGS_10051 imgsrc="+imgsrc );

//				var my_gradient = ctx.createLinearGradient(0, 0, 0, 170);
//				my_gradient.addColorStop(0, "black");
//				my_gradient.addColorStop(1, "white");



				var img = new Image();
				imgsrc="/imgs/btn/kob.png";
				img.src = imgsrc;
				if( document.getElementById(canvas_id)) {
					ctx=document.getElementById(canvas_id).getContext('2d');
//					ctx.fillStyle = my_gradient;
					ctx.fillStyle="wheat";
					ctx.drawImage(img, 0, 0);
					ctx.font = '18px yokkmokkOT';
					ctx.fillStyle="wheat";
					ctx.fillRect(0,0,200,100);
					ctx.fillStyle="black";
					ctx.fillText(divid,10,10);
					}

//				alert( "BUGS_10055 htmout_canvas="+htmout_canvas );
//				htmout += 'j='+j+' divid='+divid+'<br>';
				}

			htmout_tail = "	</div>";
			document.getElementById("div_jaxgrid").insertAdjacentHTML("beforeend", htmout_tail );
//			document.getElementById('div_jaxgrid').innerHTML=htmout_tail;
			}
		</script>

	<script id="script_jaxgrid1" >
		function jaxgrid1(args) {
			alert( "BUGS_20002 jaxgrid2 args="+args );
			divid=args;
			return(args);
			}
		</script>

	<script id="script_today">
		function today(args) {
			var today = new Date();
			var day = today.getDay();
		`	var daylist = ["Sunday","Monday","Tuesday","Wednesday ","Thursday","Friday","Saturday"];
//			console.log("Today is : " + daylist[day] + ".");
			var hour = today.getHours();
			var minute = today.getMinutes();
			var second = today.getSeconds();
			var prepand = (hour >= 12)? " PM ":" AM ";
			hour = (hour >= 12)? hour - 12: hour;
			if (hour===0 && prepand===' PM ') { 
				if (minute===0 && second===0) { 
					hour=12;
					prepand=' Noon';
					} 
				else { 
					hour=12;
					prepand=' PM';
					} 
				} 
			if (hour===0 && prepand===' AM ') { 
				if (minute===0 && second===0) { 
					hour=12;
					prepand=' Midnight';
					} 
				else { 
					hour=12;
					prepand=' AM';
					} 
				} 
			dttm=hour + prepand + ":" + minute + ":" + second;
//			console.log("Current Time : "+hour + prepand + " : " + minute + " : " + second);
			alert( "BUGS_27800 dttm="+dttm );
			}
		</script>


	<script id="script_jaxgrid2" >
		function jaxgrid2(args) {
			alert( "BUGS_20002 jaxgrid1 args="+args );
			divid=args;
			var htmout = "";
			alert( "BUG_20000 jaxgrid1 divid="+divid );
			jaxurl="/txt/"+divid+".txt";
			list=""; list_len=0;
			if( filecheck(jaxurl)) {
				jax(jaxurl);
				list=kolists('jax').split("\n");
				list_len=list.length;
				}
			canvasid="canvas_jax_"+divid;
			if( document.getElementById(canvasid)) {
				var ctx=document.getElementById(canvasid)).getContext('2d');
				ctx.fillStyle="black';
				ctx.fillText(divid,10,10);
				ctx.fillText(list_len,20,20);
				}
				
			htmout += '<canvas id="canvas_jax_'+divid+'" ';
			return(args);
			}
		</script>
	<br><br><br><br>
	<br><br><br><br>
	<hr color=pink>
	<img src="/imgs/jsdoit/jsdoit_sailboat.png"
		onclick="window.open('index_sailboat.html');return false;"
		height=50 border=0 draggable="true">
	&nbsp &nbsp &nbsp &nbsp
	<img src="/imgs/jsdoit/jsdoit_shoo.png"
		onclick="window.open('index_shoo.html');return false;"
		height=50 border=0 draggable="true">
	<br><br><br><br>
	<br><br><br><br>
	<hr color=pink>
	<br><br><br><br>


	</body>
	</html>
<!--

memes couldo
tar_n_flynneather|
aunt & uncle tifa|auntifa|uncletifa|
DLM|dogs lives matter|
automousezone|automooosezone|
	-->



	<script id="script_blob_imgs" >
		function blob_imgs(args) {
//			alert( "BUGS_29001 args="+args );

kolists['eyepatchs_default'] =
`/imgs/eyepatchs/eyepatch_dragoneye.png|30|10|20|25
/imgs/eyepatchs/google.png|30|10|20|25`;

kolists['eyepatchs'] =
`/imgs/eyepatchs/eyepatch01.png|10|10|20|25
/imgs/eyepatchs/eyepatch02.png|10|10|20|25
/imgs/eyepatchs/eyepatch_bikerstuds.png|10|10|20|25
/imgs/eyepatchs/eyepatch_black.png|10|10|20|25
/imgs/eyepatchs/eyepatch_dragoneye.png|10|10|20|25
/imgs/eyepatchs/eyepatch_google.png|10|10|20|25
/imgs/eyepatchs/eyepatch_horus.png|10|10|20|25
/imgs/eyepatchs/eyepatch_leather05.png|10|10|20|25
/imgs/eyepatchs/eyepatch_leather09.png|10|10|20|25
/imgs/eyepatchs/eyepatch_leather_brown.png|10|10|20|25
/imgs/eyepatchs/eyepatch_medallion.png|10|10|20|25
/imgs/eyepatchs/eyepatch_odin.png|10|10|20|25
/imgs/eyepatchs/eyepatch_pewter_eye.png|10|10|20|25
/imgs/eyepatchs/eyepatch_steampunk11.png|10|10|20|25
/imgs/eyepatchs/eyepatch_steampunk_circles.png|10|10|20|25
/imgs/eyepatchs/eyepatch_steampunk_google13.png|10|10|20|25
/imgs/eyepatchs/eyepatch_steampunk_googles02.png|10|10|20|25
/imgs/eyepatchs/eyepatch_steampunk_jewls.png|10|10|20|25
/imgs/eyepatchs/eyepatch_white.png|10|10|20|25
/imgs/eyepatchs/eyepatchc_steampunk_slits.png|10|10|20|25`;

kolists['keys'] =
`/imgs/keys/key10_brass.png|10|100|20|25
/imgs/keys/key11_skeleton_keychain.png|10|100|20|25
/imgs/keys/keys01.png|10|100|20|25
/imgs/keys/keys07_steampunk.png|10|100|20|25
/imgs/keys/keys08_vintage.png|10|100|20|25
/imgs/keys/keys91_comics.png|10|100|20|25
`;

kolists['keys2'] =
`/imgs/keys/keys18_success.png|10|100|20|25
/imgs/keys/ko_count_to_16.png|10|100|20|25
/imgs/keys/ko_dear_invited_guest.png|10|100|20|25
/imgs/keys/ko_wait_forthe_drop.png|10|100|20|25
/imgs/keys/ko_warning.png|10|100|20|25
/imgs/keys/keys00_hole.png|10|100|20|25
/imgs/keys/keys01_jkwii.png|10|100|20|25
/imgs/keys/keys20_piano.png|10|100|20|25
/imgs/keys/keys21_chiavi_del_cielo.png|10|100|20|25
/imgs/keys/keys25_strings.png|10|100|20|25
/imgs/keys/keys35_pianovintage.png|10|100|20|25
/imgs/keys/keys37_hole.png|10|100|20|25
/imgs/keys/keys39_clipart.png|10|100|20|25
/imgs/keys/keys51_piano_wave.png|10|100|20|25
/imgs/keys/keys53_starlight_keyblade.png|10|100|20|25
/imgs/keys/keys62_hole2heaven.png|10|100|20|25
/imgs/keys/keys63_guy.png|10|100|20|25
/imgs/keys/keys70_piano_rainbow.png|10|100|20|25
/imgs/keys/keys77_matrix.png|10|100|20|25
/imgs/keys/keys78_watercolor.png|10|100|20|25
/imgs/keys/keys79_limepie.png|10|100|20|25
/imgs/keys/keys80_comminication.png|10|100|20|25
/imgs/keys/keys82_greekframes.png|10|100|20|25
/imgs/keys/keys85_ko.png|10|100|20|25
/imgs/keys/keys87_yourprops.png|100|10|20|25
/imgs/keys/keys59_answer.png|10|100|20|25`;

			var keys = kolists['keys'].split("\n");
			keys_len=keys.length;
			rand_key_num = random_int(keys_len,0);
			key_flds = keys[rand_key_num].split("|");
			rand_key_img = key_flds[0];
			var rand_key_img_x = key_flds[1];
			var rand_key_img_y = key_flds[2];
			var rand_key_img_w = key_flds[3];
			var rand_key_img_h = key_flds[4];

			var letters_j = kolists['letters_j'].split("\n");
			letters_j_len = letters_j.length;
			rand_letter_j_num = random_int(letters_j_len,0);
			img_random_letter_j=letters_j[rand_letter_j_num];
//			alert( "BUGS_9991 img_random_letter_j="+img_random_letter_j );
			var letters_s = kolists['letters_s'].split("\n");
			letters_s_len = letters_s.length;
			rand_letter_s_num = random_int(letters_s_len,0);
			img_random_letter_s=letters_s[rand_letter_s_num];
//			alert( "BUGS_9991 img_random_letter_s="+img_random_letter_s );


			var eyepatchs = kolists['eyepatchs'].split("\n");
			eyepatchs_len=eyepatchs.length;
			rand_eyepatch_num = random_int(eyepatchs_len,0);
			eyepatch_flds = eyepatchs[rand_eyepatch_num].split("|");
			rand_eyepatch_img = eyepatch_flds[0];
			var rand_eyepatch_img_x = eyepatch_flds[1];
			var rand_eyepatch_img_y = eyepatch_flds[2];
			var rand_eyepatch_img_w = eyepatch_flds[3];
			var rand_eyepatch_img_h = eyepatch_flds[4];

			var canvas = document.getElementById('canvas_blob');
			if(canvas.getContext == null) {return; }
			var ctx = canvas.getContext('2d');
//			var title=document.title;
//			ctx.fillText("-- ==  its about time  == --", 20,10, maxwidth );
			
			img_key = new Image();
			img_key.src=rand_key_img;

			img_eyepatch = new Image();
			img_eyepatch.src=rand_eyepatch_img;

//			img_fan = new Image();
//			img_fan.src="/imgs/btn/btn_fan01.png";

//			img_gazibo = new Image();
//			img_gazibo.src ="/fb/jtfdcr/imgs/jtfdc_20200704_0000_gazibo_privatedrive_keepout_IMG_9434.png";
//			img_gazibo.src ="/imgs/links/gazibo.png";

//			img_sawhorse = new Image();
//			img_sawhorse.src ="/fb/jtfdc/imgs/tn_jtfdc_sawhorse.png";

//			img_sawhorse.src=kolists['blob_img_default'];
//			alert( "BUGS_32240 kolists_blob_defaults"+img_sawhorse.src );
//			img_sawhorse.src=kolists['blob_imgs'].split("\n")[0];

// bugs			kolists['blob_img_jtfdc'] = `/fb/jtfdc/imgs/tn_jtfdc_sawhorse.png';
// bugs			img_sawhorse.src = kolists['blob_img_jtfdc'];


//			ctx.globalAlpha=1.0; // opacity at 1.0

//			alert( "BUGS_28000 rand_key_img="+rand_key_img );
			if( document.getElementById('img_random_key')) {
				document.getElementById('img_random_key').src=rand_key_img;
				}

			img_random_eyepatch=rand_eyepatch_img;
			if( document.getElementById('img_random_eyepatch')) {
				document.getElementById('img_random_eyepatch').src=img_random_eyepatch;
				}

			if( document.getElementById('img_random_eyepatch')) {
				document.getElementById('img_random_eyepatch').src=img_random_eyepatch;
				}
//			if( document.getElementsByClassName('class_img_random_letter_j')) {
//				document.getElementsByClassName('class_img_random_letter_j').src=img_random_letter_j;
//				}
//			if( document.getElementsByClassName('class_img_random_letter_s')) {
//				document.getElementsByClassName('class_img_random_letter_s').src=img_random_letter_j;
//				}
			if( document.getElementById('img_random_letter_j')) {
				document.getElementById('img_random_letter_j').src=img_random_letter_j;
				}
			if( document.getElementById('img_random_letter_s')) {
				document.getElementById('img_random_letter_s').src=img_random_letter_s;
				}
htmout_letter_j = '';
htmout_letter_j += '<div id="div_img_letter_j" >';
htmout_letter_j += '<img src="'+img_random_letter_j+'" ';
htmout_letter_j += '	id="img_random_letter_j1" ';
htmout_letter_j += '	alt="'+img_random_letter_j+'" ';
htmout_letter_j += '	onclick="window.open(\''+img_random_letter_j+'\');return false;"';
htmout_letter_j += '	height=100 border=0>';
htmout_letter_j += '	<img src="/imgs/btn/email.gif" alt="email.gif" ';
htmout_letter_j += '		onclick="window.open(\'mailto:jkwii@ko2.us?subject=jkwii_hat_ko2us_knock_knock\');return false;"';
htmout_letter_j += '		height=50 border=0>';
htmout_letter_j += '	</div>';

htmout_letter_s = '';
htmout_letter_s += '<div id="div_img_letter_s" >';
htmout_letter_s += '	<img src="/imgs/btn/email.gif" alt="email.gif" ';
htmout_letter_s += '		onclick="window.open(\'mailto:skwii@ko2.us?subject=skwii_hat_ko2us_knock_knock\');return false;"';
htmout_letter_s += '		height=50 border=0>';
htmout_letter_s += '	<img src="'+img_random_letter_s+'" ';
htmout_letter_s += '		id="img_random_letter_s1" ';
htmout_letter_s += '		alt="'+img_random_letter_s+'" ';
htmout_letter_s += '		onclick="window.open(\''+img_random_letter_s+'\');return false;"';
htmout_letter_s += '		height=100 border=0>';
htmout_letter_s += '	</div>';

			div_divid="img_random_letter_j1";
			div_divid="div_img_letter_j";
			if( document.getElementById(div_divid)) {
//				alert( "BUGS_32701 div_divid="+div_divid+" htmout_letter_j="+htmout_letter_j );
				document.getElementById(div_divid).innerHTML=htmout_letter_j;
				}
			div_divid="img_random_letter_s1";
			div_divid="div_img_letter_s";
			if( document.getElementById(div_divid)) {
//				alert( "BUGS_32702 div_divid="+div_divid+" htmout_letter_s="+htmout_letter_s );
				document.getElementById(div_divid).innerHTML=htmout_letter_s;
				}
			}
		</script>


		<img id=img_koslots title="          koslots" src=/imgs/btn/koeyeb.png onclick="toggle('div_koslots',''); return false;" height=20 border=0>koslots
		<div id=div_koslots hidden>
			<h3>div_koslots</h3>
			</div id=div_koslots_end>
			<br>
			<hr color=white>


	<script id=script_kogrids>
kolists['items']=`
/imgs/btn/koeye.png
/imgs/btn/koeyeb.png
/imgs/btn/koeyew.png
`;


		function kogrids(args) {
			htmout=""; j=0; k=0;
			alert( "BUGS_010 kogrids args="+args );

			htmout+="<h1>KOGRIDS</h1>\n";

			mykoeyeb=new Array();
			mykoeyew=new Array();


			rand1=random_int(0,10);
			rand2=random_int(0,10);
			rand3=random_int(0,10);
			rand4=random_int(0,10);
			randc=random_int(0,10);
			color="b";
			if( randc == 0 ) { color="w"; }

			if( rand1 == 0 ) { tn1="/imgs/kogrids/tn/tn_koeye"+color+""+rand1; }
			else { tn1="/imgs/kogrids/tn/tn_koeye"+color_"_grid.gif"; }
			if( rand2 == 0 ) { tn2="/imgs/kogrids/tn/tn_koeye"+color+""+rand2; }
			else { tn2="/imgs/kogrids/tn/tn_koeye"+color_"_grid.gif"; }
			if( rand3== 0 ) { tn3="/imgs/kogrids/tn/tn_koeye"+color+""+rand3; }
			else { tn3="/imgs/kogrids/tn/tn_koeye"+color_"_grid.gif"; }
			if( rand4 == 0 ) { tn4="/imgs/kogrids/tn/tn_koeye"+color+""+rand4; }
			else { tn4="/imgs/kogrids/tn/tn_koeye"+color_"_grid.gif"; }


//			/imgs/kogrids/tn/tn_kob_grid0.png
//			/imgs/kogrids/tn/tn_kow_grid0.png
//			/imgs/kogrids/tn/tn_koeyeb_grid0.png
//			/imgs/kogrids/tn/tn_koeyew_grid0.png



			htmout  = '\n';
			htmout += '<a href="/index.html" class="ko_thumbnail"  target=_blank>';
			htmout += '<img src="'+tn1+'" height=75 alt=kob border=0>';
//			htmout += '<span><img src="/imgs/kogrids/tn/tn_links_ko2us.png" height=400 alt="ko2.us" border=0></span>';
			htmout += '<span><img src="/imgs/kogrids/links_ko2us.png" height=400 alt="ko2.us" border=0></span>';
			htmout += '</a>';
			htmout += '&nbsp  &nbsp';
			htmout += '<a href="/ko_center/ko_center.php?q=login" class="ko_thumbnail" target=_blank>';
			htmout += '<img src="'+tn2+'" height=75 alt=koeyeb border=0>';
//			htmout += '<span><img src="/imgs/kogrids/tn/tn_links_kologin.png" height=400 alt="kolgin" border=0></span>';
			htmout += '<span><img src="/imgs/kogrids/links_kologin.png" height=400 alt="kolgin" border=0></span>';
			htmout += '</a>';
			htmout += '&nbsp  &nbsp';
			htmout += '<a href="/cfaa.html" class="ko_thumbnail" target=_blank>';
			htmout += '<img src="'+tn3+'"  height=75 alt=koeyew border=0>';
//			htmout += '<span><img src="/imgs/kogrids/tn/tn_links_cfaa.png" height=400 alt="ko2.us" border=0></span>';
			htmout += '<span><img src="/imgs/kogrids/links_cfaa.png" height=400 alt="ko2.us" border=0></span>';
			htmout += '</a>';
			htmout += '&nbsp &nbsp &nbsp';
			htmout += '<a href="https://www.bluehost.com/?utm_source=%28direct%29&utm_medium=affiliate&utm_campaign=affiliate-link_konet_notype" class="ko_thumbnail" target=_blank>';
			htmout += '<img src="'+tn4+'" height=75 alt=kow border=0>';
//			htmout += '<span><img src="/imgs/kogrids/tn/tn_links_bluehost.png" height=400 alt="bluehost.com" border=0></span>';
			htmout += '<span><img src="/imgs/kogrids/links_bluehost.png" height=400 alt="bluehost.com" border=0></span>';
			htmout += '</a>';


			htmout += '\n';
			if( document.getElementById('div_kogrids')) {
				alert( "BUGS_11 ById div_kogrids KOGRIDS args="+args );
				document.getElementById('div_kogrids').innerHTML=htmout;
				}
			return(htmout);
			}

		function kogrids0(args) {
//			alert( "BUGS_760 POSTTURTLE BEG" );
			postturtles_monkeytraps(args);
//			alert( "BUGS_770 POSTTURTLE END" );
//			var kolist = jkload('divids').split(" ");
			var len=kolist.length;


			for ( j=0; j<len; j++ ) {
				var rand = random_int(len,1);
				var id=kolist[rand-1];
				id="id_"+j;
				if( /alloff/.test(id)) {continue;}
				if( /allon/.test(id)) {continue;}
				if( /toggle/.test(id)) {continue;}
				if( /</.test(id)) {continue;}
//				script_ko_toggle('alloff');
				var divid="div_"+id;
//				alert( "BUGS_1881 j="+j+" ko_toggle id="+id+" rand="+rand );
//				script_hideshow('fb');
//				script_hideshow('yt');
//				script_ko_toggle(divid);
//				alert( "BUGS_1882 j="+j+" hideshow id="+id+" rand="+rand );
////				script_hideshow1('allon');
				break;
				}

			var myko = new Array();
			var mykob = new Array();
			var mykow = new Array();
			var mykoeyeb = new Array();
			var mykoeyew = new Array();

mykob = `/imgs/kogrids/tn/tn_kob_grid1.png
/imgs/kogrids/tn/tn_kob_grid2.png
/imgs/kogrids/tn/tn_kob_grid3.png
/imgs/kogrids/tn/tn_kob_grid4.png
/imgs/kogrids/tn/tn_kob_grid5.png
/imgs/kogrids/tn/tn_kob_grid6.png
/imgs/kogrids/tn/tn_kob_grid7.png
/imgs/kogrids/tn/tn_kob_grid8.png
/imgs/kogrids/tn/tn_kob_grid9.png
/imgs/kogrids/tn/tn_kob_grid.gif`.split("\n");

mykow = `/imgs/kogrids/tn/tn_kow_grid1.png
/imgs/kogrids/tn/tn_kow_grid2.png
/imgs/kogrids/tn/tn_kow_grid3.png
/imgs/kogrids/tn/tn_kow_grid4.png
/imgs/kogrids/tn/tn_kow_grid5.png
/imgs/kogrids/tn/tn_kow_grid6.png
/imgs/kogrids/tn/tn_kow_grid7.png
/imgs/kogrids/tn/tn_kow_grid8.png
/imgs/kogrids/tn/tn_kow_grid9.png
/imgs/kogrids/tn/tn_kow_grip.gif`.split("\n");

mykoeyeb = `/imgs/kogrids/tn/tn_koeyeb_grid1.png
/imgs/kogrids/tn/tn_koeyeb_grid2.png
/imgs/kogrids/tn/tn_koeyeb_grid3.png
/imgs/kogrids/tn/tn_koeyeb_grid4.png
/imgs/kogrids/tn/tn_koeyeb_grid5.png
/imgs/kogrids/tn/tn_koeyeb_grid6.png
/imgs/kogrids/tn/tn_koeyeb_grid7.png
/imgs/kogrids/tn/tn_koeyeb_grid8.png
/imgs/kogrids/tn/tn_koeyeb_grid9.png
/imgs/kogrids/tn/tn_koeyeb_grid_delay5.gif`.split("\n");

mykoeyew = `/imgs/kogrids/tn/tn_koeyew_grid1.png
/imgs/kogrids/tn/tn_koeyew_grid2.png
/imgs/kogrids/tn/tn_koeyew_grid3.png
/imgs/kogrids/tn/tn_koeyew_grid4.png
/imgs/kogrids/tn/tn_koeyew_grid5.png
/imgs/kogrids/tn/tn_koeyew_grid6.png
/imgs/kogrids/tn/tn_koeyew_grid7.png
/imgs/kogrids/tn/tn_koeyew_grid8.png
/imgs/kogrids/tn/tn_koeyew_grid9.png
/imgs/kogrids/tn/tn_koeyew_grip_delay5.gif`.split("\n");

				alert( "BUGS_90 kogrids <br>\n" );	

				var ko=Math.floor(Math.random()*myko.length);
				var kob=Math.floor(Math.random()*mykob.length);
				var kow=Math.floor(Math.random()*mykow.length);
				var koeyeb=Math.floor(Math.random()*mykoeyeb.length);
				var koeyew=Math.floor(Math.random()*mykoeyew.length);
				var koeyeb1=Math.floor(Math.random()*mykoeyeb.length);
				var koeyew1=Math.floor(Math.random()*mykoeyew.length);
				var koeyeb2=Math.floor(Math.random()*mykoeyeb.length);
				var koeyew2=Math.floor(Math.random()*mykoeyew.length);

				var max=4; var min=1;
				var delay1=random_int(max,min);
				var delay2=random_int(max,min);
				var delay3=random_int(max,min);
				var delay4=random_int(max,min);

//				var random_toggle = random_int(jkload('divids').split(" ").length,1);
//				script_hideshow('alloff');
//				script_hideshow(jkload('divids').split(" ")[random_toggle-1] );

				if( delay1 = 1 ) mykoeyeb[10]="/imgs/kogrids/tn/tn_koeyew_grid_delay100.gif";
				if( delay1 = 2 ) mykoeyeb[10]="/imgs/kogrids/tn/tn_koeyew_grid_delay25.gif";
				if( delay1 = 3 ) mykoeyeb[10]="/imgs/kogrids/tn/tn_koeyew_grid_delay50.gif";
				if( delay1 = 4 ) mykoeyeb[10]="/imgs/kogrids/tn/tn_koeyew_grid_delay5.gif";
				if( delay2 = 1 ) mykoeyew[10]="/imgs/kogrids/tn/tn_koeyew_grip_delay100.gif";
				if( delay2 = 2 ) mykoeyew[10]="/imgs/kogrids/tn/tn_koeyew_grip_delay25.gif";
				if( delay2 = 3 ) mykoeyew[10]="/imgs/kogrids/tn/tn_koeyew_grip_delay50.gif";
				if( delay2 = 4 ) mykoeyew[10]="/imgs/kogrids/tn/tn_koeyew_grip_delay5.gif";

				if (ko==0) ko=10;
				if (kob==0) kob=10;
				if (kow==0) kow=10;
				if (koeyeb==0) koeyeb=10;
				if (koeyew==0) koeyew=10;
				if (koeyeb1==0) koeyeb1=10;
				if (koeyew1==0) koeyew1=10;
				if (koeyeb2==0) koeyeb2=10;
				if (koeyew2==0) koeyew2=10;

				alert( "BUGS_130 kogrids<br>\n" );

var htmout_spacer = `
<br><br><br><br>
<hr color=red>
<hr color=white>
<hr color=blue>
`;



				htmout  = '\n';
				htmout += '<a href="/index.html" class="ko_thumbnail"  target=_blank>';
				htmout += '<img src="'+mykoeyeb[koeyeb1]+'" height=75 alt=kob border=0>';
//				htmout += '<span><img src="/imgs/kogrids/tn/tn_links_ko2us.png" height=400 alt="ko2.us" border=0></span>';
				htmout += '<span><img src="/imgs/kogrids/links_ko2us.png" height=400 alt="ko2.us" border=0></span>';
				htmout += '</a>';
				htmout += '&nbsp  &nbsp';
				htmout += '<a href="/ko_center/ko_center.php?q=login" class="ko_thumbnail" target=_blank>';
				htmout += '<img src="'+mykoeyew[koeyew1]+'" height=75 alt=koeyeb border=0>';
//				htmout += '<span><img src="/imgs/kogrids/tn/tn_links_kologin.png" height=400 alt="kolgin" border=0></span>';
				htmout += '<span><img src="/imgs/kogrids/links_kologin.png" height=400 alt="kolgin" border=0></span>';
				htmout += '</a>';
				htmout += '&nbsp  &nbsp';
				htmout += '<a href="/cfaa.html" class="ko_thumbnail" target=_blank>';
				htmout += '<img src="'+mykoeyeb[koeyeb2]+'"  height=75 alt=koeyew border=0>';
//				htmout += '<span><img src="/imgs/kogrids/tn/tn_links_cfaa.png" height=400 alt="ko2.us" border=0></span>';
				htmout += '<span><img src="/imgs/kogrids/links_cfaa.png" height=400 alt="ko2.us" border=0></span>';
				htmout += '</a>';
				htmout += '&nbsp &nbsp &nbsp';
				htmout += '<a href="https://www.bluehost.com/?utm_source=%28direct%29&utm_medium=affiliate&utm_campaign=affiliate-link_konet_notype" class="ko_thumbnail" target=_blank>';
				htmout += '<img src="'+mykoeyew[koeyew2]+'" height=75 alt=kow border=0>';
//				htmout += '<span><img src="/imgs/kogrids/tn/tn_links_bluehost.png" height=400 alt="bluehost.com" border=0></span>';
				htmout += '<span><img src="/imgs/kogrids/links_bluehost.png" height=400 alt="bluehost.com" border=0></span>';
				htmout += '</a>';
				htmout += '\n';

				htmout_kogrids=htmout;


				htmout_lever_left = "";
				htmout_lever_left += '<a href=# class="ko_popover" >\n';	
				htmout_lever_left += '	<img src=/imgs/btn/kop1.png onclick="kogrids(\'left\'); return false;" border=0>\n';
				htmout_lever_left += '	<span><img src=/imgs/btn/kop2.png onclick="kogrids(\'left\'); return false;" border=0></span>\n';
				htmout_lever_left += '	</a>\n';

				htmout_lever_right = "";
				htmout_lever_right += '<a href=# class="ko_popover" >\n';	
				htmout_lever_right += '	<img src=/imgs/btn/kop4.png onclick="kogrids(\'right\'); return false;" border=0>\n';
				htmout_lever_right += '	<span><img src=/imgs/btn/kop3.png onclick="kogrids(\'right\'); return false;" border=0></span>\n';
				htmout_lever_right += '	</a>\n';

				htmout_kogrids_head = "";
				htmout_kogrids_head += htmout_lever_left;
				htmout_kogrids_head += htmout_kogrids;
				htmout_kogrids_head += htmout_spacer;

				htmout_kogrids_body = "";
				htmout_kogrids_body += htmout_lever_left;
				htmout_kogrids_body += htmout_kogrids;
				htmout_kogrids_body += htmout_lever_right;
				htmout_kogrids_body += htmout_spacer;

				htmout_kogrids_tail = "";
				htmout_kogrids_tail += htmout_kogrids;
				htmout_kogrids_tail += htmout_lever_right;
				htmout_kogrids_tail += htmout_spacer;


				htmout_kogrids="";
				htmout_kogrids += htmout_kogrids_head;
				htmout_kogrids += htmout_kogrids_body;
				htmout_kogrids += htmout_kogrids_tail;
				alert( "BUGS_200 kogrids div_kogrids htmout_kogrids="+htmout_kogrids );
				if(document.getElementById('div_kogrids')){
					document.getElementById('div_kogrids').innerHTML=htmout_kogrids;
					}
//				document.getElementById('div_kogrids').innerHTML=htmout;
				}
			</script id=script_kogrids_end>

		<script id=script_random_int>
			function random_int(max,min) {
				min = Math.ceil(min);
				max = Math.floor(max);
				return Math.floor(Math.random() * (max - min + 1)) + min;	
				}
			</script id=script_random_int_end>

	<script id=script_postturtles_monkeytraps>
		function postturtles_monkeytraps(args) {
			htmout=""; j=0; k=0;
			$items_postturtles=kolists['postturtles'];
			$items_postturtles_cnt=count($items_postturtles);
			$items_monkeytraps=kolists['monkeytraps'];
			$items_monkeytraps_cnt=count($items_monkeytraps);
			$items_floods=kolists['floods'];
			$items_floods_cnt=count($items_floods);
			$items_coffee=kolists['coffee'];
			$items_coffee_cnt=count($items_coffee);
			$items_iframes=kolists['iframes'];
			$items_iframes_cnt=count($items_iframes);


			randp=random_int(0,count($items_postturtles));
			randm=random_int(0,count($items_monkeytraps));
			randf=random_int(0,count($items_floods));
			randc=random_int(0,count($items_coffee));
			randi=random_int(0,count($items_iframes));

			if( document.getElementById('img_postturtles')) {
				document.getElementById('img_postturtles').src=kolists['postturtles'].split("\n")[randp];
				}
			if( document.getElementById('img_monkeytraps')) {
				document.getElementById('img_monkeytraps').src=kolists['monkeytraps'].split("\n")[randm];
				}
			if( document.getElementById('img_floods')) {
				document.getElementById('img_floods').src=kolists['floods'].split("\n")[randf];
				}
			if( document.getElementById('img_coffee')) {
				document.getElementById('img_coffee').src=kolists['coffee'].split("\n")[randc];
				}
			if( document.getElementById('iframe_ko')) {
				document.getElementById('iframe_ko').src=kolists['iframes'].split("\n")[randi];
				}
			
			alert( "BUGS_301 postturtles_monkeytraps args="+args );
			return(htmout);
			}
		</script id=script_postturtles_monkytraps_end>



		</script id=script_kogrids_end>


<script id=script_jgg_jquery_js src='data:/text/plain;base64,LyohIGpRdWVyeSB2Mi4xLjEgfCAoYykgMjAwNSwgMjAxNCBqUXVlcnkgRm91bmRhdGlvbiwgSW5jLiB8IGpxdWVyeS5vcmcvbGljZW5zZSAqLwohZnVuY3Rpb24oYSxiKXsib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmIm9iamVjdCI9PXR5cGVvZiBtb2R1bGUuZXhwb3J0cz9tb2R1bGUuZXhwb3J0cz1hLmRvY3VtZW50P2IoYSwhMCk6ZnVuY3Rpb24oYSl7aWYoIWEuZG9jdW1lbnQpdGhyb3cgbmV3IEVycm9yKCJqUXVlcnkgcmVxdWlyZXMgYSB3aW5kb3cgd2l0aCBhIGRvY3VtZW50Iik7cmV0dXJuIGIoYSl9OmIoYSl9KCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp0aGlzLGZ1bmN0aW9uKGEsYil7dmFyIGM9W10sZD1jLnNsaWNlLGU9Yy5jb25jYXQsZj1jLnB1c2gsZz1jLmluZGV4T2YsaD17fSxpPWgudG9TdHJpbmcsaj1oLmhhc093blByb3BlcnR5LGs9e30sbD1hLmRvY3VtZW50LG09IjIuMS4xIixuPWZ1bmN0aW9uKGEsYil7cmV0dXJuIG5ldyBuLmZuLmluaXQoYSxiKX0sbz0vXltcc1x1RkVGRlx4QTBdK3xbXHNcdUZFRkZceEEwXSskL2cscD0vXi1tcy0vLHE9Ly0oW1xkYS16XSkvZ2kscj1mdW5jdGlvbihhLGIpe3JldHVybiBiLnRvVXBwZXJDYXNlKCl9O24uZm49bi5wcm90b3R5cGU9e2pxdWVyeTptLGNvbnN0cnVjdG9yOm4sc2VsZWN0b3I6IiIsbGVuZ3RoOjAsdG9BcnJheTpmdW5jdGlvbigpe3JldHVybiBkLmNhbGwodGhpcyl9LGdldDpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbCE9YT8wPmE/dGhpc1thK3RoaXMubGVuZ3RoXTp0aGlzW2FdOmQuY2FsbCh0aGlzKX0scHVzaFN0YWNrOmZ1bmN0aW9uKGEpe3ZhciBiPW4ubWVyZ2UodGhpcy5jb25zdHJ1Y3RvcigpLGEpO3JldHVybiBiLnByZXZPYmplY3Q9dGhpcyxiLmNvbnRleHQ9dGhpcy5jb250ZXh0LGJ9LGVhY2g6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbi5lYWNoKHRoaXMsYSxiKX0sbWFwOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnB1c2hTdGFjayhuLm1hcCh0aGlzLGZ1bmN0aW9uKGIsYyl7cmV0dXJuIGEuY2FsbChiLGMsYil9KSl9LHNsaWNlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGQuYXBwbHkodGhpcyxhcmd1bWVudHMpKX0sZmlyc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcSgwKX0sbGFzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVxKC0xKX0sZXE6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5sZW5ndGgsYz0rYSsoMD5hP2I6MCk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGM+PTAmJmI+Yz9bdGhpc1tjXV06W10pfSxlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcmV2T2JqZWN0fHx0aGlzLmNvbnN0cnVjdG9yKG51bGwpfSxwdXNoOmYsc29ydDpjLnNvcnQsc3BsaWNlOmMuc3BsaWNlfSxuLmV4dGVuZD1uLmZuLmV4dGVuZD1mdW5jdGlvbigpe3ZhciBhLGIsYyxkLGUsZixnPWFyZ3VtZW50c1swXXx8e30saD0xLGk9YXJndW1lbnRzLmxlbmd0aCxqPSExO2ZvcigiYm9vbGVhbiI9PXR5cGVvZiBnJiYoaj1nLGc9YXJndW1lbnRzW2hdfHx7fSxoKyspLCJvYmplY3QiPT10eXBlb2YgZ3x8bi5pc0Z1bmN0aW9uKGcpfHwoZz17fSksaD09PWkmJihnPXRoaXMsaC0tKTtpPmg7aCsrKWlmKG51bGwhPShhPWFyZ3VtZW50c1toXSkpZm9yKGIgaW4gYSljPWdbYl0sZD1hW2JdLGchPT1kJiYoaiYmZCYmKG4uaXNQbGFpbk9iamVjdChkKXx8KGU9bi5pc0FycmF5KGQpKSk/KGU/KGU9ITEsZj1jJiZuLmlzQXJyYXkoYyk/YzpbXSk6Zj1jJiZuLmlzUGxhaW5PYmplY3QoYyk/Yzp7fSxnW2JdPW4uZXh0ZW5kKGosZixkKSk6dm9pZCAwIT09ZCYmKGdbYl09ZCkpO3JldHVybiBnfSxuLmV4dGVuZCh7ZXhwYW5kbzoialF1ZXJ5IisobStNYXRoLnJhbmRvbSgpKS5yZXBsYWNlKC9cRC9nLCIiKSxpc1JlYWR5OiEwLGVycm9yOmZ1bmN0aW9uKGEpe3Rocm93IG5ldyBFcnJvcihhKX0sbm9vcDpmdW5jdGlvbigpe30saXNGdW5jdGlvbjpmdW5jdGlvbihhKXtyZXR1cm4iZnVuY3Rpb24iPT09bi50eXBlKGEpfSxpc0FycmF5OkFycmF5LmlzQXJyYXksaXNXaW5kb3c6ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGwhPWEmJmE9PT1hLndpbmRvd30saXNOdW1lcmljOmZ1bmN0aW9uKGEpe3JldHVybiFuLmlzQXJyYXkoYSkmJmEtcGFyc2VGbG9hdChhKT49MH0saXNQbGFpbk9iamVjdDpmdW5jdGlvbihhKXtyZXR1cm4ib2JqZWN0IiE9PW4udHlwZShhKXx8YS5ub2RlVHlwZXx8bi5pc1dpbmRvdyhhKT8hMTphLmNvbnN0cnVjdG9yJiYhai5jYWxsKGEuY29uc3RydWN0b3IucHJvdG90eXBlLCJpc1Byb3RvdHlwZU9mIik/ITE6ITB9LGlzRW1wdHlPYmplY3Q6ZnVuY3Rpb24oYSl7dmFyIGI7Zm9yKGIgaW4gYSlyZXR1cm4hMTtyZXR1cm4hMH0sdHlwZTpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09YT9hKyIiOiJvYmplY3QiPT10eXBlb2YgYXx8ImZ1bmN0aW9uIj09dHlwZW9mIGE/aFtpLmNhbGwoYSldfHwib2JqZWN0Ijp0eXBlb2YgYX0sZ2xvYmFsRXZhbDpmdW5jdGlvbihhKXt2YXIgYixjPWV2YWw7YT1uLnRyaW0oYSksYSYmKDE9PT1hLmluZGV4T2YoInVzZSBzdHJpY3QiKT8oYj1sLmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpLGIudGV4dD1hLGwuaGVhZC5hcHBlbmRDaGlsZChiKS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGIpKTpjKGEpKX0sY2FtZWxDYXNlOmZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UocCwibXMtIikucmVwbGFjZShxLHIpfSxub2RlTmFtZTpmdW5jdGlvbihhLGIpe3JldHVybiBhLm5vZGVOYW1lJiZhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1iLnRvTG93ZXJDYXNlKCl9LGVhY2g6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGU9MCxmPWEubGVuZ3RoLGc9cyhhKTtpZihjKXtpZihnKXtmb3IoO2Y+ZTtlKyspaWYoZD1iLmFwcGx5KGFbZV0sYyksZD09PSExKWJyZWFrfWVsc2UgZm9yKGUgaW4gYSlpZihkPWIuYXBwbHkoYVtlXSxjKSxkPT09ITEpYnJlYWt9ZWxzZSBpZihnKXtmb3IoO2Y+ZTtlKyspaWYoZD1iLmNhbGwoYVtlXSxlLGFbZV0pLGQ9PT0hMSlicmVha31lbHNlIGZvcihlIGluIGEpaWYoZD1iLmNhbGwoYVtlXSxlLGFbZV0pLGQ9PT0hMSlicmVhaztyZXR1cm4gYX0sdHJpbTpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09YT8iIjooYSsiIikucmVwbGFjZShvLCIiKX0sbWFrZUFycmF5OmZ1bmN0aW9uKGEsYil7dmFyIGM9Ynx8W107cmV0dXJuIG51bGwhPWEmJihzKE9iamVjdChhKSk/bi5tZXJnZShjLCJzdHJpbmciPT10eXBlb2YgYT9bYV06YSk6Zi5jYWxsKGMsYSkpLGN9LGluQXJyYXk6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBudWxsPT1iPy0xOmcuY2FsbChiLGEsYyl9LG1lcmdlOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPStiLmxlbmd0aCxkPTAsZT1hLmxlbmd0aDtjPmQ7ZCsrKWFbZSsrXT1iW2RdO3JldHVybiBhLmxlbmd0aD1lLGF9LGdyZXA6ZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZCxlPVtdLGY9MCxnPWEubGVuZ3RoLGg9IWM7Zz5mO2YrKylkPSFiKGFbZl0sZiksZCE9PWgmJmUucHVzaChhW2ZdKTtyZXR1cm4gZX0sbWFwOmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxmPTAsZz1hLmxlbmd0aCxoPXMoYSksaT1bXTtpZihoKWZvcig7Zz5mO2YrKylkPWIoYVtmXSxmLGMpLG51bGwhPWQmJmkucHVzaChkKTtlbHNlIGZvcihmIGluIGEpZD1iKGFbZl0sZixjKSxudWxsIT1kJiZpLnB1c2goZCk7cmV0dXJuIGUuYXBwbHkoW10saSl9LGd1aWQ6MSxwcm94eTpmdW5jdGlvbihhLGIpe3ZhciBjLGUsZjtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGImJihjPWFbYl0sYj1hLGE9Yyksbi5pc0Z1bmN0aW9uKGEpPyhlPWQuY2FsbChhcmd1bWVudHMsMiksZj1mdW5jdGlvbigpe3JldHVybiBhLmFwcGx5KGJ8fHRoaXMsZS5jb25jYXQoZC5jYWxsKGFyZ3VtZW50cykpKX0sZi5ndWlkPWEuZ3VpZD1hLmd1aWR8fG4uZ3VpZCsrLGYpOnZvaWQgMH0sbm93OkRhdGUubm93LHN1cHBvcnQ6a30pLG4uZWFjaCgiQm9vbGVhbiBOdW1iZXIgU3RyaW5nIEZ1bmN0aW9uIEFycmF5IERhdGUgUmVnRXhwIE9iamVjdCBFcnJvciIuc3BsaXQoIiAiKSxmdW5jdGlvbihhLGIpe2hbIltvYmplY3QgIitiKyJdIl09Yi50b0xvd2VyQ2FzZSgpfSk7ZnVuY3Rpb24gcyhhKXt2YXIgYj1hLmxlbmd0aCxjPW4udHlwZShhKTtyZXR1cm4iZnVuY3Rpb24iPT09Y3x8bi5pc1dpbmRvdyhhKT8hMToxPT09YS5ub2RlVHlwZSYmYj8hMDoiYXJyYXkiPT09Y3x8MD09PWJ8fCJudW1iZXIiPT10eXBlb2YgYiYmYj4wJiZiLTEgaW4gYX12YXIgdD1mdW5jdGlvbihhKXt2YXIgYixjLGQsZSxmLGcsaCxpLGosayxsLG0sbixvLHAscSxyLHMsdCx1PSJzaXp6bGUiKy1uZXcgRGF0ZSx2PWEuZG9jdW1lbnQsdz0wLHg9MCx5PWdiKCksej1nYigpLEE9Z2IoKSxCPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGE9PT1iJiYobD0hMCksMH0sQz0idW5kZWZpbmVkIixEPTE8PDMxLEU9e30uaGFzT3duUHJvcGVydHksRj1bXSxHPUYucG9wLEg9Ri5wdXNoLEk9Ri5wdXNoLEo9Ri5zbGljZSxLPUYuaW5kZXhPZnx8ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPTAsYz10aGlzLmxlbmd0aDtjPmI7YisrKWlmKHRoaXNbYl09PT1hKXJldHVybiBiO3JldHVybi0xfSxMPSJjaGVja2VkfHNlbGVjdGVkfGFzeW5jfGF1dG9mb2N1c3xhdXRvcGxheXxjb250cm9sc3xkZWZlcnxkaXNhYmxlZHxoaWRkZW58aXNtYXB8bG9vcHxtdWx0aXBsZXxvcGVufHJlYWRvbmx5fHJlcXVpcmVkfHNjb3BlZCIsTT0iW1xceDIwXFx0XFxyXFxuXFxmXSIsTj0iKD86XFxcXC58W1xcdy1dfFteXFx4MDAtXFx4YTBdKSsiLE89Ti5yZXBsYWNlKCJ3IiwidyMiKSxQPSJcXFsiK00rIiooIitOKyIpKD86IitNKyIqKFsqXiR8IX5dPz0pIitNKyIqKD86JygoPzpcXFxcLnxbXlxcXFwnXSkqKSd8XCIoKD86XFxcXC58W15cXFxcXCJdKSopXCJ8KCIrTysiKSl8KSIrTSsiKlxcXSIsUT0iOigiK04rIikoPzpcXCgoKCcoKD86XFxcXC58W15cXFxcJ10pKiknfFwiKCg/OlxcXFwufFteXFxcXFwiXSkqKVwiKXwoKD86XFxcXC58W15cXFxcKClbXFxdXXwiK1ArIikqKXwuKilcXCl8KSIsUj1uZXcgUmVnRXhwKCJeIitNKyIrfCgoPzpefFteXFxcXF0pKD86XFxcXC4pKikiK00rIiskIiwiZyIpLFM9bmV3IFJlZ0V4cCgiXiIrTSsiKiwiK00rIioiKSxUPW5ldyBSZWdFeHAoIl4iK00rIiooWz4rfl18IitNKyIpIitNKyIqIiksVT1uZXcgUmVnRXhwKCI9IitNKyIqKFteXFxdJ1wiXSo/KSIrTSsiKlxcXSIsImciKSxWPW5ldyBSZWdFeHAoUSksVz1uZXcgUmVnRXhwKCJeIitPKyIkIiksWD17SUQ6bmV3IFJlZ0V4cCgiXiMoIitOKyIpIiksQ0xBU1M6bmV3IFJlZ0V4cCgiXlxcLigiK04rIikiKSxUQUc6bmV3IFJlZ0V4cCgiXigiK04ucmVwbGFjZSgidyIsIncqIikrIikiKSxBVFRSOm5ldyBSZWdFeHAoIl4iK1ApLFBTRVVETzpuZXcgUmVnRXhwKCJeIitRKSxDSElMRDpuZXcgUmVnRXhwKCJeOihvbmx5fGZpcnN0fGxhc3R8bnRofG50aC1sYXN0KS0oY2hpbGR8b2YtdHlwZSkoPzpcXCgiK00rIiooZXZlbnxvZGR8KChbKy1dfCkoXFxkKilufCkiK00rIiooPzooWystXXwpIitNKyIqKFxcZCspfCkpIitNKyIqXFwpfCkiLCJpIiksYm9vbDpuZXcgUmVnRXhwKCJeKD86IitMKyIpJCIsImkiKSxuZWVkc0NvbnRleHQ6bmV3IFJlZ0V4cCgiXiIrTSsiKls+K35dfDooZXZlbnxvZGR8ZXF8Z3R8bHR8bnRofGZpcnN0fGxhc3QpKD86XFwoIitNKyIqKCg/Oi1cXGQpP1xcZCopIitNKyIqXFwpfCkoPz1bXi1dfCQpIiwiaSIpfSxZPS9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbikkL2ksWj0vXmhcZCQvaSwkPS9eW157XStce1xzKlxbbmF0aXZlIFx3LyxfPS9eKD86IyhbXHctXSspfChcdyspfFwuKFtcdy1dKykpJC8sYWI9L1srfl0vLGJiPS8nfFxcL2csY2I9bmV3IFJlZ0V4cCgiXFxcXChbXFxkYS1mXXsxLDZ9IitNKyI/fCgiK00rIil8LikiLCJpZyIpLGRiPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD0iMHgiK2ItNjU1MzY7cmV0dXJuIGQhPT1kfHxjP2I6MD5kP1N0cmluZy5mcm9tQ2hhckNvZGUoZCs2NTUzNik6U3RyaW5nLmZyb21DaGFyQ29kZShkPj4xMHw1NTI5NiwxMDIzJmR8NTYzMjApfTt0cnl7SS5hcHBseShGPUouY2FsbCh2LmNoaWxkTm9kZXMpLHYuY2hpbGROb2RlcyksRlt2LmNoaWxkTm9kZXMubGVuZ3RoXS5ub2RlVHlwZX1jYXRjaChlYil7ST17YXBwbHk6Ri5sZW5ndGg/ZnVuY3Rpb24oYSxiKXtILmFwcGx5KGEsSi5jYWxsKGIpKX06ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmxlbmd0aCxkPTA7d2hpbGUoYVtjKytdPWJbZCsrXSk7YS5sZW5ndGg9Yy0xfX19ZnVuY3Rpb24gZmIoYSxiLGQsZSl7dmFyIGYsaCxqLGssbCxvLHIscyx3LHg7aWYoKGI/Yi5vd25lckRvY3VtZW50fHxiOnYpIT09biYmbShiKSxiPWJ8fG4sZD1kfHxbXSwhYXx8InN0cmluZyIhPXR5cGVvZiBhKXJldHVybiBkO2lmKDEhPT0oaz1iLm5vZGVUeXBlKSYmOSE9PWspcmV0dXJuW107aWYocCYmIWUpe2lmKGY9Xy5leGVjKGEpKWlmKGo9ZlsxXSl7aWYoOT09PWspe2lmKGg9Yi5nZXRFbGVtZW50QnlJZChqKSwhaHx8IWgucGFyZW50Tm9kZSlyZXR1cm4gZDtpZihoLmlkPT09ailyZXR1cm4gZC5wdXNoKGgpLGR9ZWxzZSBpZihiLm93bmVyRG9jdW1lbnQmJihoPWIub3duZXJEb2N1bWVudC5nZXRFbGVtZW50QnlJZChqKSkmJnQoYixoKSYmaC5pZD09PWopcmV0dXJuIGQucHVzaChoKSxkfWVsc2V7aWYoZlsyXSlyZXR1cm4gSS5hcHBseShkLGIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYSkpLGQ7aWYoKGo9ZlszXSkmJmMuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmYi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKXJldHVybiBJLmFwcGx5KGQsYi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGopKSxkfWlmKGMucXNhJiYoIXF8fCFxLnRlc3QoYSkpKXtpZihzPXI9dSx3PWIseD05PT09ayYmYSwxPT09ayYmIm9iamVjdCIhPT1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpe289ZyhhKSwocj1iLmdldEF0dHJpYnV0ZSgiaWQiKSk/cz1yLnJlcGxhY2UoYmIsIlxcJCYiKTpiLnNldEF0dHJpYnV0ZSgiaWQiLHMpLHM9IltpZD0nIitzKyInXSAiLGw9by5sZW5ndGg7d2hpbGUobC0tKW9bbF09cytxYihvW2xdKTt3PWFiLnRlc3QoYSkmJm9iKGIucGFyZW50Tm9kZSl8fGIseD1vLmpvaW4oIiwiKX1pZih4KXRyeXtyZXR1cm4gSS5hcHBseShkLHcucXVlcnlTZWxlY3RvckFsbCh4KSksZH1jYXRjaCh5KXt9ZmluYWxseXtyfHxiLnJlbW92ZUF0dHJpYnV0ZSgiaWQiKX19fXJldHVybiBpKGEucmVwbGFjZShSLCIkMSIpLGIsZCxlKX1mdW5jdGlvbiBnYigpe3ZhciBhPVtdO2Z1bmN0aW9uIGIoYyxlKXtyZXR1cm4gYS5wdXNoKGMrIiAiKT5kLmNhY2hlTGVuZ3RoJiZkZWxldGUgYlthLnNoaWZ0KCldLGJbYysiICJdPWV9cmV0dXJuIGJ9ZnVuY3Rpb24gaGIoYSl7cmV0dXJuIGFbdV09ITAsYX1mdW5jdGlvbiBpYihhKXt2YXIgYj1uLmNyZWF0ZUVsZW1lbnQoImRpdiIpO3RyeXtyZXR1cm4hIWEoYil9Y2F0Y2goYyl7cmV0dXJuITF9ZmluYWxseXtiLnBhcmVudE5vZGUmJmIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChiKSxiPW51bGx9fWZ1bmN0aW9uIGpiKGEsYil7dmFyIGM9YS5zcGxpdCgifCIpLGU9YS5sZW5ndGg7d2hpbGUoZS0tKWQuYXR0ckhhbmRsZVtjW2VdXT1ifWZ1bmN0aW9uIGtiKGEsYil7dmFyIGM9YiYmYSxkPWMmJjE9PT1hLm5vZGVUeXBlJiYxPT09Yi5ub2RlVHlwZSYmKH5iLnNvdXJjZUluZGV4fHxEKS0ofmEuc291cmNlSW5kZXh8fEQpO2lmKGQpcmV0dXJuIGQ7aWYoYyl3aGlsZShjPWMubmV4dFNpYmxpbmcpaWYoYz09PWIpcmV0dXJuLTE7cmV0dXJuIGE/MTotMX1mdW5jdGlvbiBsYihhKXtyZXR1cm4gZnVuY3Rpb24oYil7dmFyIGM9Yi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiJpbnB1dCI9PT1jJiZiLnR5cGU9PT1hfX1mdW5jdGlvbiBtYihhKXtyZXR1cm4gZnVuY3Rpb24oYil7dmFyIGM9Yi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybigiaW5wdXQiPT09Y3x8ImJ1dHRvbiI9PT1jKSYmYi50eXBlPT09YX19ZnVuY3Rpb24gbmIoYSl7cmV0dXJuIGhiKGZ1bmN0aW9uKGIpe3JldHVybiBiPStiLGhiKGZ1bmN0aW9uKGMsZCl7dmFyIGUsZj1hKFtdLGMubGVuZ3RoLGIpLGc9Zi5sZW5ndGg7d2hpbGUoZy0tKWNbZT1mW2ddXSYmKGNbZV09IShkW2VdPWNbZV0pKX0pfSl9ZnVuY3Rpb24gb2IoYSl7cmV0dXJuIGEmJnR5cGVvZiBhLmdldEVsZW1lbnRzQnlUYWdOYW1lIT09QyYmYX1jPWZiLnN1cHBvcnQ9e30sZj1mYi5pc1hNTD1mdW5jdGlvbihhKXt2YXIgYj1hJiYoYS5vd25lckRvY3VtZW50fHxhKS5kb2N1bWVudEVsZW1lbnQ7cmV0dXJuIGI/IkhUTUwiIT09Yi5ub2RlTmFtZTohMX0sbT1mYi5zZXREb2N1bWVudD1mdW5jdGlvbihhKXt2YXIgYixlPWE/YS5vd25lckRvY3VtZW50fHxhOnYsZz1lLmRlZmF1bHRWaWV3O3JldHVybiBlIT09biYmOT09PWUubm9kZVR5cGUmJmUuZG9jdW1lbnRFbGVtZW50PyhuPWUsbz1lLmRvY3VtZW50RWxlbWVudCxwPSFmKGUpLGcmJmchPT1nLnRvcCYmKGcuYWRkRXZlbnRMaXN0ZW5lcj9nLmFkZEV2ZW50TGlzdGVuZXIoInVubG9hZCIsZnVuY3Rpb24oKXttKCl9LCExKTpnLmF0dGFjaEV2ZW50JiZnLmF0dGFjaEV2ZW50KCJvbnVubG9hZCIsZnVuY3Rpb24oKXttKCl9KSksYy5hdHRyaWJ1dGVzPWliKGZ1bmN0aW9uKGEpe3JldHVybiBhLmNsYXNzTmFtZT0iaSIsIWEuZ2V0QXR0cmlidXRlKCJjbGFzc05hbWUiKX0pLGMuZ2V0RWxlbWVudHNCeVRhZ05hbWU9aWIoZnVuY3Rpb24oYSl7cmV0dXJuIGEuYXBwZW5kQ2hpbGQoZS5jcmVhdGVDb21tZW50KCIiKSksIWEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKS5sZW5ndGh9KSxjLmdldEVsZW1lbnRzQnlDbGFzc05hbWU9JC50ZXN0KGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSkmJmliKGZ1bmN0aW9uKGEpe3JldHVybiBhLmlubmVySFRNTD0iPGRpdiBjbGFzcz0nYSc+PC9kaXY+PGRpdiBjbGFzcz0nYSBpJz48L2Rpdj4iLGEuZmlyc3RDaGlsZC5jbGFzc05hbWU9ImkiLDI9PT1hLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImkiKS5sZW5ndGh9KSxjLmdldEJ5SWQ9aWIoZnVuY3Rpb24oYSl7cmV0dXJuIG8uYXBwZW5kQ2hpbGQoYSkuaWQ9dSwhZS5nZXRFbGVtZW50c0J5TmFtZXx8IWUuZ2V0RWxlbWVudHNCeU5hbWUodSkubGVuZ3RofSksYy5nZXRCeUlkPyhkLmZpbmQuSUQ9ZnVuY3Rpb24oYSxiKXtpZih0eXBlb2YgYi5nZXRFbGVtZW50QnlJZCE9PUMmJnApe3ZhciBjPWIuZ2V0RWxlbWVudEJ5SWQoYSk7cmV0dXJuIGMmJmMucGFyZW50Tm9kZT9bY106W119fSxkLmZpbHRlci5JRD1mdW5jdGlvbihhKXt2YXIgYj1hLnJlcGxhY2UoY2IsZGIpO3JldHVybiBmdW5jdGlvbihhKXtyZXR1cm4gYS5nZXRBdHRyaWJ1dGUoImlkIik9PT1ifX0pOihkZWxldGUgZC5maW5kLklELGQuZmlsdGVyLklEPWZ1bmN0aW9uKGEpe3ZhciBiPWEucmVwbGFjZShjYixkYik7cmV0dXJuIGZ1bmN0aW9uKGEpe3ZhciBjPXR5cGVvZiBhLmdldEF0dHJpYnV0ZU5vZGUhPT1DJiZhLmdldEF0dHJpYnV0ZU5vZGUoImlkIik7cmV0dXJuIGMmJmMudmFsdWU9PT1ifX0pLGQuZmluZC5UQUc9Yy5nZXRFbGVtZW50c0J5VGFnTmFtZT9mdW5jdGlvbihhLGIpe3JldHVybiB0eXBlb2YgYi5nZXRFbGVtZW50c0J5VGFnTmFtZSE9PUM/Yi5nZXRFbGVtZW50c0J5VGFnTmFtZShhKTp2b2lkIDB9OmZ1bmN0aW9uKGEsYil7dmFyIGMsZD1bXSxlPTAsZj1iLmdldEVsZW1lbnRzQnlUYWdOYW1lKGEpO2lmKCIqIj09PWEpe3doaWxlKGM9ZltlKytdKTE9PT1jLm5vZGVUeXBlJiZkLnB1c2goYyk7cmV0dXJuIGR9cmV0dXJuIGZ9LGQuZmluZC5DTEFTUz1jLmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJmZ1bmN0aW9uKGEsYil7cmV0dXJuIHR5cGVvZiBiLmdldEVsZW1lbnRzQnlDbGFzc05hbWUhPT1DJiZwP2IuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShhKTp2b2lkIDB9LHI9W10scT1bXSwoYy5xc2E9JC50ZXN0KGUucXVlcnlTZWxlY3RvckFsbCkpJiYoaWIoZnVuY3Rpb24oYSl7YS5pbm5lckhUTUw9IjxzZWxlY3QgbXNhbGxvd2NsaXA9Jyc+PG9wdGlvbiBzZWxlY3RlZD0nJz48L29wdGlvbj48L3NlbGVjdD4iLGEucXVlcnlTZWxlY3RvckFsbCgiW21zYWxsb3djbGlwXj0nJ10iKS5sZW5ndGgmJnEucHVzaCgiWypeJF09IitNKyIqKD86Jyd8XCJcIikiKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIltzZWxlY3RlZF0iKS5sZW5ndGh8fHEucHVzaCgiXFxbIitNKyIqKD86dmFsdWV8IitMKyIpIiksYS5xdWVyeVNlbGVjdG9yQWxsKCI6Y2hlY2tlZCIpLmxlbmd0aHx8cS5wdXNoKCI6Y2hlY2tlZCIpfSksaWIoZnVuY3Rpb24oYSl7dmFyIGI9ZS5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO2Iuc2V0QXR0cmlidXRlKCJ0eXBlIiwiaGlkZGVuIiksYS5hcHBlbmRDaGlsZChiKS5zZXRBdHRyaWJ1dGUoIm5hbWUiLCJEIiksYS5xdWVyeVNlbGVjdG9yQWxsKCJbbmFtZT1kXSIpLmxlbmd0aCYmcS5wdXNoKCJuYW1lIitNKyIqWypeJHwhfl0/PSIpLGEucXVlcnlTZWxlY3RvckFsbCgiOmVuYWJsZWQiKS5sZW5ndGh8fHEucHVzaCgiOmVuYWJsZWQiLCI6ZGlzYWJsZWQiKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIiosOngiKSxxLnB1c2goIiwuKjoiKX0pKSwoYy5tYXRjaGVzU2VsZWN0b3I9JC50ZXN0KHM9by5tYXRjaGVzfHxvLndlYmtpdE1hdGNoZXNTZWxlY3Rvcnx8by5tb3pNYXRjaGVzU2VsZWN0b3J8fG8ub01hdGNoZXNTZWxlY3Rvcnx8by5tc01hdGNoZXNTZWxlY3RvcikpJiZpYihmdW5jdGlvbihhKXtjLmRpc2Nvbm5lY3RlZE1hdGNoPXMuY2FsbChhLCJkaXYiKSxzLmNhbGwoYSwiW3MhPScnXTp4Iiksci5wdXNoKCIhPSIsUSl9KSxxPXEubGVuZ3RoJiZuZXcgUmVnRXhwKHEuam9pbigifCIpKSxyPXIubGVuZ3RoJiZuZXcgUmVnRXhwKHIuam9pbigifCIpKSxiPSQudGVzdChvLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKSx0PWJ8fCQudGVzdChvLmNvbnRhaW5zKT9mdW5jdGlvbihhLGIpe3ZhciBjPTk9PT1hLm5vZGVUeXBlP2EuZG9jdW1lbnRFbGVtZW50OmEsZD1iJiZiLnBhcmVudE5vZGU7cmV0dXJuIGE9PT1kfHwhKCFkfHwxIT09ZC5ub2RlVHlwZXx8IShjLmNvbnRhaW5zP2MuY29udGFpbnMoZCk6YS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiYmMTYmYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihkKSkpfTpmdW5jdGlvbihhLGIpe2lmKGIpd2hpbGUoYj1iLnBhcmVudE5vZGUpaWYoYj09PWEpcmV0dXJuITA7cmV0dXJuITF9LEI9Yj9mdW5jdGlvbihhLGIpe2lmKGE9PT1iKXJldHVybiBsPSEwLDA7dmFyIGQ9IWEuY29tcGFyZURvY3VtZW50UG9zaXRpb24tIWIuY29tcGFyZURvY3VtZW50UG9zaXRpb247cmV0dXJuIGQ/ZDooZD0oYS5vd25lckRvY3VtZW50fHxhKT09PShiLm93bmVyRG9jdW1lbnR8fGIpP2EuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYik6MSwxJmR8fCFjLnNvcnREZXRhY2hlZCYmYi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihhKT09PWQ/YT09PWV8fGEub3duZXJEb2N1bWVudD09PXYmJnQodixhKT8tMTpiPT09ZXx8Yi5vd25lckRvY3VtZW50PT09diYmdCh2LGIpPzE6az9LLmNhbGwoayxhKS1LLmNhbGwoayxiKTowOjQmZD8tMToxKX06ZnVuY3Rpb24oYSxiKXtpZihhPT09YilyZXR1cm4gbD0hMCwwO3ZhciBjLGQ9MCxmPWEucGFyZW50Tm9kZSxnPWIucGFyZW50Tm9kZSxoPVthXSxpPVtiXTtpZighZnx8IWcpcmV0dXJuIGE9PT1lPy0xOmI9PT1lPzE6Zj8tMTpnPzE6az9LLmNhbGwoayxhKS1LLmNhbGwoayxiKTowO2lmKGY9PT1nKXJldHVybiBrYihhLGIpO2M9YTt3aGlsZShjPWMucGFyZW50Tm9kZSloLnVuc2hpZnQoYyk7Yz1iO3doaWxlKGM9Yy5wYXJlbnROb2RlKWkudW5zaGlmdChjKTt3aGlsZShoW2RdPT09aVtkXSlkKys7cmV0dXJuIGQ/a2IoaFtkXSxpW2RdKTpoW2RdPT09dj8tMTppW2RdPT09dj8xOjB9LGUpOm59LGZiLm1hdGNoZXM9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZmIoYSxudWxsLG51bGwsYil9LGZiLm1hdGNoZXNTZWxlY3Rvcj1mdW5jdGlvbihhLGIpe2lmKChhLm93bmVyRG9jdW1lbnR8fGEpIT09biYmbShhKSxiPWIucmVwbGFjZShVLCI9JyQxJ10iKSwhKCFjLm1hdGNoZXNTZWxlY3Rvcnx8IXB8fHImJnIudGVzdChiKXx8cSYmcS50ZXN0KGIpKSl0cnl7dmFyIGQ9cy5jYWxsKGEsYik7aWYoZHx8Yy5kaXNjb25uZWN0ZWRNYXRjaHx8YS5kb2N1bWVudCYmMTEhPT1hLmRvY3VtZW50Lm5vZGVUeXBlKXJldHVybiBkfWNhdGNoKGUpe31yZXR1cm4gZmIoYixuLG51bGwsW2FdKS5sZW5ndGg+MH0sZmIuY29udGFpbnM9ZnVuY3Rpb24oYSxiKXtyZXR1cm4oYS5vd25lckRvY3VtZW50fHxhKSE9PW4mJm0oYSksdChhLGIpfSxmYi5hdHRyPWZ1bmN0aW9uKGEsYil7KGEub3duZXJEb2N1bWVudHx8YSkhPT1uJiZtKGEpO3ZhciBlPWQuYXR0ckhhbmRsZVtiLnRvTG93ZXJDYXNlKCldLGY9ZSYmRS5jYWxsKGQuYXR0ckhhbmRsZSxiLnRvTG93ZXJDYXNlKCkpP2UoYSxiLCFwKTp2b2lkIDA7cmV0dXJuIHZvaWQgMCE9PWY/ZjpjLmF0dHJpYnV0ZXN8fCFwP2EuZ2V0QXR0cmlidXRlKGIpOihmPWEuZ2V0QXR0cmlidXRlTm9kZShiKSkmJmYuc3BlY2lmaWVkP2YudmFsdWU6bnVsbH0sZmIuZXJyb3I9ZnVuY3Rpb24oYSl7dGhyb3cgbmV3IEVycm9yKCJTeW50YXggZXJyb3IsIHVucmVjb2duaXplZCBleHByZXNzaW9uOiAiK2EpfSxmYi51bmlxdWVTb3J0PWZ1bmN0aW9uKGEpe3ZhciBiLGQ9W10sZT0wLGY9MDtpZihsPSFjLmRldGVjdER1cGxpY2F0ZXMsaz0hYy5zb3J0U3RhYmxlJiZhLnNsaWNlKDApLGEuc29ydChCKSxsKXt3aGlsZShiPWFbZisrXSliPT09YVtmXSYmKGU9ZC5wdXNoKGYpKTt3aGlsZShlLS0pYS5zcGxpY2UoZFtlXSwxKX1yZXR1cm4gaz1udWxsLGF9LGU9ZmIuZ2V0VGV4dD1mdW5jdGlvbihhKXt2YXIgYixjPSIiLGQ9MCxmPWEubm9kZVR5cGU7aWYoZil7aWYoMT09PWZ8fDk9PT1mfHwxMT09PWYpe2lmKCJzdHJpbmciPT10eXBlb2YgYS50ZXh0Q29udGVudClyZXR1cm4gYS50ZXh0Q29udGVudDtmb3IoYT1hLmZpcnN0Q2hpbGQ7YTthPWEubmV4dFNpYmxpbmcpYys9ZShhKX1lbHNlIGlmKDM9PT1mfHw0PT09ZilyZXR1cm4gYS5ub2RlVmFsdWV9ZWxzZSB3aGlsZShiPWFbZCsrXSljKz1lKGIpO3JldHVybiBjfSxkPWZiLnNlbGVjdG9ycz17Y2FjaGVMZW5ndGg6NTAsY3JlYXRlUHNldWRvOmhiLG1hdGNoOlgsYXR0ckhhbmRsZTp7fSxmaW5kOnt9LHJlbGF0aXZlOnsiPiI6e2RpcjoicGFyZW50Tm9kZSIsZmlyc3Q6ITB9LCIgIjp7ZGlyOiJwYXJlbnROb2RlIn0sIisiOntkaXI6InByZXZpb3VzU2libGluZyIsZmlyc3Q6ITB9LCJ+Ijp7ZGlyOiJwcmV2aW91c1NpYmxpbmcifX0scHJlRmlsdGVyOntBVFRSOmZ1bmN0aW9uKGEpe3JldHVybiBhWzFdPWFbMV0ucmVwbGFjZShjYixkYiksYVszXT0oYVszXXx8YVs0XXx8YVs1XXx8IiIpLnJlcGxhY2UoY2IsZGIpLCJ+PSI9PT1hWzJdJiYoYVszXT0iICIrYVszXSsiICIpLGEuc2xpY2UoMCw0KX0sQ0hJTEQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGFbMV09YVsxXS50b0xvd2VyQ2FzZSgpLCJudGgiPT09YVsxXS5zbGljZSgwLDMpPyhhWzNdfHxmYi5lcnJvcihhWzBdKSxhWzRdPSsoYVs0XT9hWzVdKyhhWzZdfHwxKToyKigiZXZlbiI9PT1hWzNdfHwib2RkIj09PWFbM10pKSxhWzVdPSsoYVs3XSthWzhdfHwib2RkIj09PWFbM10pKTphWzNdJiZmYi5lcnJvcihhWzBdKSxhfSxQU0VVRE86ZnVuY3Rpb24oYSl7dmFyIGIsYz0hYVs2XSYmYVsyXTtyZXR1cm4gWC5DSElMRC50ZXN0KGFbMF0pP251bGw6KGFbM10/YVsyXT1hWzRdfHxhWzVdfHwiIjpjJiZWLnRlc3QoYykmJihiPWcoYywhMCkpJiYoYj1jLmluZGV4T2YoIikiLGMubGVuZ3RoLWIpLWMubGVuZ3RoKSYmKGFbMF09YVswXS5zbGljZSgwLGIpLGFbMl09Yy5zbGljZSgwLGIpKSxhLnNsaWNlKDAsMykpfX0sZmlsdGVyOntUQUc6ZnVuY3Rpb24oYSl7dmFyIGI9YS5yZXBsYWNlKGNiLGRiKS50b0xvd2VyQ2FzZSgpO3JldHVybiIqIj09PWE/ZnVuY3Rpb24oKXtyZXR1cm4hMH06ZnVuY3Rpb24oYSl7cmV0dXJuIGEubm9kZU5hbWUmJmEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWJ9fSxDTEFTUzpmdW5jdGlvbihhKXt2YXIgYj15W2ErIiAiXTtyZXR1cm4gYnx8KGI9bmV3IFJlZ0V4cCgiKF58IitNKyIpIithKyIoIitNKyJ8JCkiKSkmJnkoYSxmdW5jdGlvbihhKXtyZXR1cm4gYi50ZXN0KCJzdHJpbmciPT10eXBlb2YgYS5jbGFzc05hbWUmJmEuY2xhc3NOYW1lfHx0eXBlb2YgYS5nZXRBdHRyaWJ1dGUhPT1DJiZhLmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiIpfSl9LEFUVFI6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBmdW5jdGlvbihkKXt2YXIgZT1mYi5hdHRyKGQsYSk7cmV0dXJuIG51bGw9PWU/IiE9Ij09PWI6Yj8oZSs9IiIsIj0iPT09Yj9lPT09YzoiIT0iPT09Yj9lIT09YzoiXj0iPT09Yj9jJiYwPT09ZS5pbmRleE9mKGMpOiIqPSI9PT1iP2MmJmUuaW5kZXhPZihjKT4tMToiJD0iPT09Yj9jJiZlLnNsaWNlKC1jLmxlbmd0aCk9PT1jOiJ+PSI9PT1iPygiICIrZSsiICIpLmluZGV4T2YoYyk+LTE6Inw9Ij09PWI/ZT09PWN8fGUuc2xpY2UoMCxjLmxlbmd0aCsxKT09PWMrIi0iOiExKTohMH19LENISUxEOmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9Im50aCIhPT1hLnNsaWNlKDAsMyksZz0ibGFzdCIhPT1hLnNsaWNlKC00KSxoPSJvZi10eXBlIj09PWI7cmV0dXJuIDE9PT1kJiYwPT09ZT9mdW5jdGlvbihhKXtyZXR1cm4hIWEucGFyZW50Tm9kZX06ZnVuY3Rpb24oYixjLGkpe3ZhciBqLGssbCxtLG4sbyxwPWYhPT1nPyJuZXh0U2libGluZyI6InByZXZpb3VzU2libGluZyIscT1iLnBhcmVudE5vZGUscj1oJiZiLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkscz0haSYmIWg7aWYocSl7aWYoZil7d2hpbGUocCl7bD1iO3doaWxlKGw9bFtwXSlpZihoP2wubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PXI6MT09PWwubm9kZVR5cGUpcmV0dXJuITE7bz1wPSJvbmx5Ij09PWEmJiFvJiYibmV4dFNpYmxpbmcifXJldHVybiEwfWlmKG89W2c/cS5maXJzdENoaWxkOnEubGFzdENoaWxkXSxnJiZzKXtrPXFbdV18fChxW3VdPXt9KSxqPWtbYV18fFtdLG49alswXT09PXcmJmpbMV0sbT1qWzBdPT09dyYmalsyXSxsPW4mJnEuY2hpbGROb2Rlc1tuXTt3aGlsZShsPSsrbiYmbCYmbFtwXXx8KG09bj0wKXx8by5wb3AoKSlpZigxPT09bC5ub2RlVHlwZSYmKyttJiZsPT09Yil7a1thXT1bdyxuLG1dO2JyZWFrfX1lbHNlIGlmKHMmJihqPShiW3VdfHwoYlt1XT17fSkpW2FdKSYmalswXT09PXcpbT1qWzFdO2Vsc2Ugd2hpbGUobD0rK24mJmwmJmxbcF18fChtPW49MCl8fG8ucG9wKCkpaWYoKGg/bC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09cjoxPT09bC5ub2RlVHlwZSkmJisrbSYmKHMmJigobFt1XXx8KGxbdV09e30pKVthXT1bdyxtXSksbD09PWIpKWJyZWFrO3JldHVybiBtLT1lLG09PT1kfHxtJWQ9PT0wJiZtL2Q+PTB9fX0sUFNFVURPOmZ1bmN0aW9uKGEsYil7dmFyIGMsZT1kLnBzZXVkb3NbYV18fGQuc2V0RmlsdGVyc1thLnRvTG93ZXJDYXNlKCldfHxmYi5lcnJvcigidW5zdXBwb3J0ZWQgcHNldWRvOiAiK2EpO3JldHVybiBlW3VdP2UoYik6ZS5sZW5ndGg+MT8oYz1bYSxhLCIiLGJdLGQuc2V0RmlsdGVycy5oYXNPd25Qcm9wZXJ0eShhLnRvTG93ZXJDYXNlKCkpP2hiKGZ1bmN0aW9uKGEsYyl7dmFyIGQsZj1lKGEsYiksZz1mLmxlbmd0aDt3aGlsZShnLS0pZD1LLmNhbGwoYSxmW2ddKSxhW2RdPSEoY1tkXT1mW2ddKX0pOmZ1bmN0aW9uKGEpe3JldHVybiBlKGEsMCxjKX0pOmV9fSxwc2V1ZG9zOntub3Q6aGIoZnVuY3Rpb24oYSl7dmFyIGI9W10sYz1bXSxkPWgoYS5yZXBsYWNlKFIsIiQxIikpO3JldHVybiBkW3VdP2hiKGZ1bmN0aW9uKGEsYixjLGUpe3ZhciBmLGc9ZChhLG51bGwsZSxbXSksaD1hLmxlbmd0aDt3aGlsZShoLS0pKGY9Z1toXSkmJihhW2hdPSEoYltoXT1mKSl9KTpmdW5jdGlvbihhLGUsZil7cmV0dXJuIGJbMF09YSxkKGIsbnVsbCxmLGMpLCFjLnBvcCgpfX0pLGhhczpoYihmdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oYil7cmV0dXJuIGZiKGEsYikubGVuZ3RoPjB9fSksY29udGFpbnM6aGIoZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe3JldHVybihiLnRleHRDb250ZW50fHxiLmlubmVyVGV4dHx8ZShiKSkuaW5kZXhPZihhKT4tMX19KSxsYW5nOmhiKGZ1bmN0aW9uKGEpe3JldHVybiBXLnRlc3QoYXx8IiIpfHxmYi5lcnJvcigidW5zdXBwb3J0ZWQgbGFuZzogIithKSxhPWEucmVwbGFjZShjYixkYikudG9Mb3dlckNhc2UoKSxmdW5jdGlvbihiKXt2YXIgYztkbyBpZihjPXA/Yi5sYW5nOmIuZ2V0QXR0cmlidXRlKCJ4bWw6bGFuZyIpfHxiLmdldEF0dHJpYnV0ZSgibGFuZyIpKXJldHVybiBjPWMudG9Mb3dlckNhc2UoKSxjPT09YXx8MD09PWMuaW5kZXhPZihhKyItIik7d2hpbGUoKGI9Yi5wYXJlbnROb2RlKSYmMT09PWIubm9kZVR5cGUpO3JldHVybiExfX0pLHRhcmdldDpmdW5jdGlvbihiKXt2YXIgYz1hLmxvY2F0aW9uJiZhLmxvY2F0aW9uLmhhc2g7cmV0dXJuIGMmJmMuc2xpY2UoMSk9PT1iLmlkfSxyb290OmZ1bmN0aW9uKGEpe3JldHVybiBhPT09b30sZm9jdXM6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1uLmFjdGl2ZUVsZW1lbnQmJighbi5oYXNGb2N1c3x8bi5oYXNGb2N1cygpKSYmISEoYS50eXBlfHxhLmhyZWZ8fH5hLnRhYkluZGV4KX0sZW5hYmxlZDpmdW5jdGlvbihhKXtyZXR1cm4gYS5kaXNhYmxlZD09PSExfSxkaXNhYmxlZDpmdW5jdGlvbihhKXtyZXR1cm4gYS5kaXNhYmxlZD09PSEwfSxjaGVja2VkOmZ1bmN0aW9uKGEpe3ZhciBiPWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4iaW5wdXQiPT09YiYmISFhLmNoZWNrZWR8fCJvcHRpb24iPT09YiYmISFhLnNlbGVjdGVkfSxzZWxlY3RlZDpmdW5jdGlvbihhKXtyZXR1cm4gYS5wYXJlbnROb2RlJiZhLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCxhLnNlbGVjdGVkPT09ITB9LGVtcHR5OmZ1bmN0aW9uKGEpe2ZvcihhPWEuZmlyc3RDaGlsZDthO2E9YS5uZXh0U2libGluZylpZihhLm5vZGVUeXBlPDYpcmV0dXJuITE7cmV0dXJuITB9LHBhcmVudDpmdW5jdGlvbihhKXtyZXR1cm4hZC5wc2V1ZG9zLmVtcHR5KGEpfSxoZWFkZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIFoudGVzdChhLm5vZGVOYW1lKX0saW5wdXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIFkudGVzdChhLm5vZGVOYW1lKX0sYnV0dG9uOmZ1bmN0aW9uKGEpe3ZhciBiPWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4iaW5wdXQiPT09YiYmImJ1dHRvbiI9PT1hLnR5cGV8fCJidXR0b24iPT09Yn0sdGV4dDpmdW5jdGlvbihhKXt2YXIgYjtyZXR1cm4iaW5wdXQiPT09YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpJiYidGV4dCI9PT1hLnR5cGUmJihudWxsPT0oYj1hLmdldEF0dHJpYnV0ZSgidHlwZSIpKXx8InRleHQiPT09Yi50b0xvd2VyQ2FzZSgpKX0sZmlyc3Q6bmIoZnVuY3Rpb24oKXtyZXR1cm5bMF19KSxsYXN0Om5iKGZ1bmN0aW9uKGEsYil7cmV0dXJuW2ItMV19KSxlcTpuYihmdW5jdGlvbihhLGIsYyl7cmV0dXJuWzA+Yz9jK2I6Y119KSxldmVuOm5iKGZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPTA7Yj5jO2MrPTIpYS5wdXNoKGMpO3JldHVybiBhfSksb2RkOm5iKGZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPTE7Yj5jO2MrPTIpYS5wdXNoKGMpO3JldHVybiBhfSksbHQ6bmIoZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZD0wPmM/YytiOmM7LS1kPj0wOylhLnB1c2goZCk7cmV0dXJuIGF9KSxndDpuYihmdW5jdGlvbihhLGIsYyl7Zm9yKHZhciBkPTA+Yz9jK2I6YzsrK2Q8YjspYS5wdXNoKGQpO3JldHVybiBhfSl9fSxkLnBzZXVkb3MubnRoPWQucHNldWRvcy5lcTtmb3IoYiBpbntyYWRpbzohMCxjaGVja2JveDohMCxmaWxlOiEwLHBhc3N3b3JkOiEwLGltYWdlOiEwfSlkLnBzZXVkb3NbYl09bGIoYik7Zm9yKGIgaW57c3VibWl0OiEwLHJlc2V0OiEwfSlkLnBzZXVkb3NbYl09bWIoYik7ZnVuY3Rpb24gcGIoKXt9cGIucHJvdG90eXBlPWQuZmlsdGVycz1kLnBzZXVkb3MsZC5zZXRGaWx0ZXJzPW5ldyBwYixnPWZiLnRva2VuaXplPWZ1bmN0aW9uKGEsYil7dmFyIGMsZSxmLGcsaCxpLGosaz16W2ErIiAiXTtpZihrKXJldHVybiBiPzA6ay5zbGljZSgwKTtoPWEsaT1bXSxqPWQucHJlRmlsdGVyO3doaWxlKGgpeyghY3x8KGU9Uy5leGVjKGgpKSkmJihlJiYoaD1oLnNsaWNlKGVbMF0ubGVuZ3RoKXx8aCksaS5wdXNoKGY9W10pKSxjPSExLChlPVQuZXhlYyhoKSkmJihjPWUuc2hpZnQoKSxmLnB1c2goe3ZhbHVlOmMsdHlwZTplWzBdLnJlcGxhY2UoUiwiICIpfSksaD1oLnNsaWNlKGMubGVuZ3RoKSk7Zm9yKGcgaW4gZC5maWx0ZXIpIShlPVhbZ10uZXhlYyhoKSl8fGpbZ10mJiEoZT1qW2ddKGUpKXx8KGM9ZS5zaGlmdCgpLGYucHVzaCh7dmFsdWU6Yyx0eXBlOmcsbWF0Y2hlczplfSksaD1oLnNsaWNlKGMubGVuZ3RoKSk7aWYoIWMpYnJlYWt9cmV0dXJuIGI/aC5sZW5ndGg6aD9mYi5lcnJvcihhKTp6KGEsaSkuc2xpY2UoMCl9O2Z1bmN0aW9uIHFiKGEpe2Zvcih2YXIgYj0wLGM9YS5sZW5ndGgsZD0iIjtjPmI7YisrKWQrPWFbYl0udmFsdWU7cmV0dXJuIGR9ZnVuY3Rpb24gcmIoYSxiLGMpe3ZhciBkPWIuZGlyLGU9YyYmInBhcmVudE5vZGUiPT09ZCxmPXgrKztyZXR1cm4gYi5maXJzdD9mdW5jdGlvbihiLGMsZil7d2hpbGUoYj1iW2RdKWlmKDE9PT1iLm5vZGVUeXBlfHxlKXJldHVybiBhKGIsYyxmKX06ZnVuY3Rpb24oYixjLGcpe3ZhciBoLGksaj1bdyxmXTtpZihnKXt3aGlsZShiPWJbZF0paWYoKDE9PT1iLm5vZGVUeXBlfHxlKSYmYShiLGMsZykpcmV0dXJuITB9ZWxzZSB3aGlsZShiPWJbZF0paWYoMT09PWIubm9kZVR5cGV8fGUpe2lmKGk9Ylt1XXx8KGJbdV09e30pLChoPWlbZF0pJiZoWzBdPT09dyYmaFsxXT09PWYpcmV0dXJuIGpbMl09aFsyXTtpZihpW2RdPWosalsyXT1hKGIsYyxnKSlyZXR1cm4hMH19fWZ1bmN0aW9uIHNiKGEpe3JldHVybiBhLmxlbmd0aD4xP2Z1bmN0aW9uKGIsYyxkKXt2YXIgZT1hLmxlbmd0aDt3aGlsZShlLS0paWYoIWFbZV0oYixjLGQpKXJldHVybiExO3JldHVybiEwfTphWzBdfWZ1bmN0aW9uIHRiKGEsYixjKXtmb3IodmFyIGQ9MCxlPWIubGVuZ3RoO2U+ZDtkKyspZmIoYSxiW2RdLGMpO3JldHVybiBjfWZ1bmN0aW9uIHViKGEsYixjLGQsZSl7Zm9yKHZhciBmLGc9W10saD0wLGk9YS5sZW5ndGgsaj1udWxsIT1iO2k+aDtoKyspKGY9YVtoXSkmJighY3x8YyhmLGQsZSkpJiYoZy5wdXNoKGYpLGomJmIucHVzaChoKSk7cmV0dXJuIGd9ZnVuY3Rpb24gdmIoYSxiLGMsZCxlLGYpe3JldHVybiBkJiYhZFt1XSYmKGQ9dmIoZCkpLGUmJiFlW3VdJiYoZT12YihlLGYpKSxoYihmdW5jdGlvbihmLGcsaCxpKXt2YXIgaixrLGwsbT1bXSxuPVtdLG89Zy5sZW5ndGgscD1mfHx0YihifHwiKiIsaC5ub2RlVHlwZT9baF06aCxbXSkscT0hYXx8IWYmJmI/cDp1YihwLG0sYSxoLGkpLHI9Yz9lfHwoZj9hOm98fGQpP1tdOmc6cTtpZihjJiZjKHEscixoLGkpLGQpe2o9dWIocixuKSxkKGosW10saCxpKSxrPWoubGVuZ3RoO3doaWxlKGstLSkobD1qW2tdKSYmKHJbbltrXV09IShxW25ba11dPWwpKX1pZihmKXtpZihlfHxhKXtpZihlKXtqPVtdLGs9ci5sZW5ndGg7d2hpbGUoay0tKShsPXJba10pJiZqLnB1c2gocVtrXT1sKTtlKG51bGwscj1bXSxqLGkpfWs9ci5sZW5ndGg7d2hpbGUoay0tKShsPXJba10pJiYoaj1lP0suY2FsbChmLGwpOm1ba10pPi0xJiYoZltqXT0hKGdbal09bCkpfX1lbHNlIHI9dWIocj09PWc/ci5zcGxpY2UobyxyLmxlbmd0aCk6ciksZT9lKG51bGwsZyxyLGkpOkkuYXBwbHkoZyxyKX0pfWZ1bmN0aW9uIHdiKGEpe2Zvcih2YXIgYixjLGUsZj1hLmxlbmd0aCxnPWQucmVsYXRpdmVbYVswXS50eXBlXSxoPWd8fGQucmVsYXRpdmVbIiAiXSxpPWc/MTowLGs9cmIoZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1ifSxoLCEwKSxsPXJiKGZ1bmN0aW9uKGEpe3JldHVybiBLLmNhbGwoYixhKT4tMX0saCwhMCksbT1bZnVuY3Rpb24oYSxjLGQpe3JldHVybiFnJiYoZHx8YyE9PWopfHwoKGI9Yykubm9kZVR5cGU/ayhhLGMsZCk6bChhLGMsZCkpfV07Zj5pO2krKylpZihjPWQucmVsYXRpdmVbYVtpXS50eXBlXSltPVtyYihzYihtKSxjKV07ZWxzZXtpZihjPWQuZmlsdGVyW2FbaV0udHlwZV0uYXBwbHkobnVsbCxhW2ldLm1hdGNoZXMpLGNbdV0pe2ZvcihlPSsraTtmPmU7ZSsrKWlmKGQucmVsYXRpdmVbYVtlXS50eXBlXSlicmVhaztyZXR1cm4gdmIoaT4xJiZzYihtKSxpPjEmJnFiKGEuc2xpY2UoMCxpLTEpLmNvbmNhdCh7dmFsdWU6IiAiPT09YVtpLTJdLnR5cGU/IioiOiIifSkpLnJlcGxhY2UoUiwiJDEiKSxjLGU+aSYmd2IoYS5zbGljZShpLGUpKSxmPmUmJndiKGE9YS5zbGljZShlKSksZj5lJiZxYihhKSl9bS5wdXNoKGMpfXJldHVybiBzYihtKX1mdW5jdGlvbiB4YihhLGIpe3ZhciBjPWIubGVuZ3RoPjAsZT1hLmxlbmd0aD4wLGY9ZnVuY3Rpb24oZixnLGgsaSxrKXt2YXIgbCxtLG8scD0wLHE9IjAiLHI9ZiYmW10scz1bXSx0PWosdT1mfHxlJiZkLmZpbmQuVEFHKCIqIixrKSx2PXcrPW51bGw9PXQ/MTpNYXRoLnJhbmRvbSgpfHwuMSx4PXUubGVuZ3RoO2ZvcihrJiYoaj1nIT09biYmZyk7cSE9PXgmJm51bGwhPShsPXVbcV0pO3ErKyl7aWYoZSYmbCl7bT0wO3doaWxlKG89YVttKytdKWlmKG8obCxnLGgpKXtpLnB1c2gobCk7YnJlYWt9ayYmKHc9dil9YyYmKChsPSFvJiZsKSYmcC0tLGYmJnIucHVzaChsKSl9aWYocCs9cSxjJiZxIT09cCl7bT0wO3doaWxlKG89YlttKytdKW8ocixzLGcsaCk7aWYoZil7aWYocD4wKXdoaWxlKHEtLSlyW3FdfHxzW3FdfHwoc1txXT1HLmNhbGwoaSkpO3M9dWIocyl9SS5hcHBseShpLHMpLGsmJiFmJiZzLmxlbmd0aD4wJiZwK2IubGVuZ3RoPjEmJmZiLnVuaXF1ZVNvcnQoaSl9cmV0dXJuIGsmJih3PXYsaj10KSxyfTtyZXR1cm4gYz9oYihmKTpmfXJldHVybiBoPWZiLmNvbXBpbGU9ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPVtdLGU9W10sZj1BW2ErIiAiXTtpZighZil7Ynx8KGI9ZyhhKSksYz1iLmxlbmd0aDt3aGlsZShjLS0pZj13YihiW2NdKSxmW3VdP2QucHVzaChmKTplLnB1c2goZik7Zj1BKGEseGIoZSxkKSksZi5zZWxlY3Rvcj1hfXJldHVybiBmfSxpPWZiLnNlbGVjdD1mdW5jdGlvbihhLGIsZSxmKXt2YXIgaSxqLGssbCxtLG49ImZ1bmN0aW9uIj09dHlwZW9mIGEmJmEsbz0hZiYmZyhhPW4uc2VsZWN0b3J8fGEpO2lmKGU9ZXx8W10sMT09PW8ubGVuZ3RoKXtpZihqPW9bMF09b1swXS5zbGljZSgwKSxqLmxlbmd0aD4yJiYiSUQiPT09KGs9alswXSkudHlwZSYmYy5nZXRCeUlkJiY5PT09Yi5ub2RlVHlwZSYmcCYmZC5yZWxhdGl2ZVtqWzFdLnR5cGVdKXtpZihiPShkLmZpbmQuSUQoay5tYXRjaGVzWzBdLnJlcGxhY2UoY2IsZGIpLGIpfHxbXSlbMF0sIWIpcmV0dXJuIGU7biYmKGI9Yi5wYXJlbnROb2RlKSxhPWEuc2xpY2Uoai5zaGlmdCgpLnZhbHVlLmxlbmd0aCl9aT1YLm5lZWRzQ29udGV4dC50ZXN0KGEpPzA6ai5sZW5ndGg7d2hpbGUoaS0tKXtpZihrPWpbaV0sZC5yZWxhdGl2ZVtsPWsudHlwZV0pYnJlYWs7aWYoKG09ZC5maW5kW2xdKSYmKGY9bShrLm1hdGNoZXNbMF0ucmVwbGFjZShjYixkYiksYWIudGVzdChqWzBdLnR5cGUpJiZvYihiLnBhcmVudE5vZGUpfHxiKSkpe2lmKGouc3BsaWNlKGksMSksYT1mLmxlbmd0aCYmcWIoaiksIWEpcmV0dXJuIEkuYXBwbHkoZSxmKSxlO2JyZWFrfX19cmV0dXJuKG58fGgoYSxvKSkoZixiLCFwLGUsYWIudGVzdChhKSYmb2IoYi5wYXJlbnROb2RlKXx8YiksZX0sYy5zb3J0U3RhYmxlPXUuc3BsaXQoIiIpLnNvcnQoQikuam9pbigiIik9PT11LGMuZGV0ZWN0RHVwbGljYXRlcz0hIWwsbSgpLGMuc29ydERldGFjaGVkPWliKGZ1bmN0aW9uKGEpe3JldHVybiAxJmEuY29tcGFyZURvY3VtZW50UG9zaXRpb24obi5jcmVhdGVFbGVtZW50KCJkaXYiKSl9KSxpYihmdW5jdGlvbihhKXtyZXR1cm4gYS5pbm5lckhUTUw9IjxhIGhyZWY9JyMnPjwvYT4iLCIjIj09PWEuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoImhyZWYiKX0pfHxqYigidHlwZXxocmVmfGhlaWdodHx3aWR0aCIsZnVuY3Rpb24oYSxiLGMpe3JldHVybiBjP3ZvaWQgMDphLmdldEF0dHJpYnV0ZShiLCJ0eXBlIj09PWIudG9Mb3dlckNhc2UoKT8xOjIpfSksYy5hdHRyaWJ1dGVzJiZpYihmdW5jdGlvbihhKXtyZXR1cm4gYS5pbm5lckhUTUw9IjxpbnB1dC8+IixhLmZpcnN0Q2hpbGQuc2V0QXR0cmlidXRlKCJ2YWx1ZSIsIiIpLCIiPT09YS5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgidmFsdWUiKX0pfHxqYigidmFsdWUiLGZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gY3x8ImlucHV0IiE9PWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT92b2lkIDA6YS5kZWZhdWx0VmFsdWV9KSxpYihmdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09YS5nZXRBdHRyaWJ1dGUoImRpc2FibGVkIil9KXx8amIoTCxmdW5jdGlvbihhLGIsYyl7dmFyIGQ7cmV0dXJuIGM/dm9pZCAwOmFbYl09PT0hMD9iLnRvTG93ZXJDYXNlKCk6KGQ9YS5nZXRBdHRyaWJ1dGVOb2RlKGIpKSYmZC5zcGVjaWZpZWQ/ZC52YWx1ZTpudWxsfSksZmJ9KGEpO24uZmluZD10LG4uZXhwcj10LnNlbGVjdG9ycyxuLmV4cHJbIjoiXT1uLmV4cHIucHNldWRvcyxuLnVuaXF1ZT10LnVuaXF1ZVNvcnQsbi50ZXh0PXQuZ2V0VGV4dCxuLmlzWE1MRG9jPXQuaXNYTUwsbi5jb250YWlucz10LmNvbnRhaW5zO3ZhciB1PW4uZXhwci5tYXRjaC5uZWVkc0NvbnRleHQsdj0vXjwoXHcrKVxzKlwvPz4oPzo8XC9cMT58KSQvLHc9L14uW146I1xbXC4sXSokLztmdW5jdGlvbiB4KGEsYixjKXtpZihuLmlzRnVuY3Rpb24oYikpcmV0dXJuIG4uZ3JlcChhLGZ1bmN0aW9uKGEsZCl7cmV0dXJuISFiLmNhbGwoYSxkLGEpIT09Y30pO2lmKGIubm9kZVR5cGUpcmV0dXJuIG4uZ3JlcChhLGZ1bmN0aW9uKGEpe3JldHVybiBhPT09YiE9PWN9KTtpZigic3RyaW5nIj09dHlwZW9mIGIpe2lmKHcudGVzdChiKSlyZXR1cm4gbi5maWx0ZXIoYixhLGMpO2I9bi5maWx0ZXIoYixhKX1yZXR1cm4gbi5ncmVwKGEsZnVuY3Rpb24oYSl7cmV0dXJuIGcuY2FsbChiLGEpPj0wIT09Y30pfW4uZmlsdGVyPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1iWzBdO3JldHVybiBjJiYoYT0iOm5vdCgiK2ErIikiKSwxPT09Yi5sZW5ndGgmJjE9PT1kLm5vZGVUeXBlP24uZmluZC5tYXRjaGVzU2VsZWN0b3IoZCxhKT9bZF06W106bi5maW5kLm1hdGNoZXMoYSxuLmdyZXAoYixmdW5jdGlvbihhKXtyZXR1cm4gMT09PWEubm9kZVR5cGV9KSl9LG4uZm4uZXh0ZW5kKHtmaW5kOmZ1bmN0aW9uKGEpe3ZhciBiLGM9dGhpcy5sZW5ndGgsZD1bXSxlPXRoaXM7aWYoInN0cmluZyIhPXR5cGVvZiBhKXJldHVybiB0aGlzLnB1c2hTdGFjayhuKGEpLmZpbHRlcihmdW5jdGlvbigpe2ZvcihiPTA7Yz5iO2IrKylpZihuLmNvbnRhaW5zKGVbYl0sdGhpcykpcmV0dXJuITB9KSk7Zm9yKGI9MDtjPmI7YisrKW4uZmluZChhLGVbYl0sZCk7cmV0dXJuIGQ9dGhpcy5wdXNoU3RhY2soYz4xP24udW5pcXVlKGQpOmQpLGQuc2VsZWN0b3I9dGhpcy5zZWxlY3Rvcj90aGlzLnNlbGVjdG9yKyIgIithOmEsZH0sZmlsdGVyOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnB1c2hTdGFjayh4KHRoaXMsYXx8W10sITEpKX0sbm90OmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnB1c2hTdGFjayh4KHRoaXMsYXx8W10sITApKX0saXM6ZnVuY3Rpb24oYSl7cmV0dXJuISF4KHRoaXMsInN0cmluZyI9PXR5cGVvZiBhJiZ1LnRlc3QoYSk/bihhKTphfHxbXSwhMSkubGVuZ3RofX0pO3ZhciB5LHo9L14oPzpccyooPFtcd1xXXSs+KVtePl0qfCMoW1x3LV0qKSkkLyxBPW4uZm4uaW5pdD1mdW5jdGlvbihhLGIpe3ZhciBjLGQ7aWYoIWEpcmV0dXJuIHRoaXM7aWYoInN0cmluZyI9PXR5cGVvZiBhKXtpZihjPSI8Ij09PWFbMF0mJiI+Ij09PWFbYS5sZW5ndGgtMV0mJmEubGVuZ3RoPj0zP1tudWxsLGEsbnVsbF06ei5leGVjKGEpLCFjfHwhY1sxXSYmYilyZXR1cm4hYnx8Yi5qcXVlcnk/KGJ8fHkpLmZpbmQoYSk6dGhpcy5jb25zdHJ1Y3RvcihiKS5maW5kKGEpO2lmKGNbMV0pe2lmKGI9YiBpbnN0YW5jZW9mIG4/YlswXTpiLG4ubWVyZ2UodGhpcyxuLnBhcnNlSFRNTChjWzFdLGImJmIubm9kZVR5cGU/Yi5vd25lckRvY3VtZW50fHxiOmwsITApKSx2LnRlc3QoY1sxXSkmJm4uaXNQbGFpbk9iamVjdChiKSlmb3IoYyBpbiBiKW4uaXNGdW5jdGlvbih0aGlzW2NdKT90aGlzW2NdKGJbY10pOnRoaXMuYXR0cihjLGJbY10pO3JldHVybiB0aGlzfXJldHVybiBkPWwuZ2V0RWxlbWVudEJ5SWQoY1syXSksZCYmZC5wYXJlbnROb2RlJiYodGhpcy5sZW5ndGg9MSx0aGlzWzBdPWQpLHRoaXMuY29udGV4dD1sLHRoaXMuc2VsZWN0b3I9YSx0aGlzfXJldHVybiBhLm5vZGVUeXBlPyh0aGlzLmNvbnRleHQ9dGhpc1swXT1hLHRoaXMubGVuZ3RoPTEsdGhpcyk6bi5pc0Z1bmN0aW9uKGEpPyJ1bmRlZmluZWQiIT10eXBlb2YgeS5yZWFkeT95LnJlYWR5KGEpOmEobik6KHZvaWQgMCE9PWEuc2VsZWN0b3ImJih0aGlzLnNlbGVjdG9yPWEuc2VsZWN0b3IsdGhpcy5jb250ZXh0PWEuY29udGV4dCksbi5tYWtlQXJyYXkoYSx0aGlzKSl9O0EucHJvdG90eXBlPW4uZm4seT1uKGwpO3ZhciBCPS9eKD86cGFyZW50c3xwcmV2KD86VW50aWx8QWxsKSkvLEM9e2NoaWxkcmVuOiEwLGNvbnRlbnRzOiEwLG5leHQ6ITAscHJldjohMH07bi5leHRlbmQoe2RpcjpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9W10sZT12b2lkIDAhPT1jO3doaWxlKChhPWFbYl0pJiY5IT09YS5ub2RlVHlwZSlpZigxPT09YS5ub2RlVHlwZSl7aWYoZSYmbihhKS5pcyhjKSlicmVhaztkLnB1c2goYSl9cmV0dXJuIGR9LHNpYmxpbmc6ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9W107YTthPWEubmV4dFNpYmxpbmcpMT09PWEubm9kZVR5cGUmJmEhPT1iJiZjLnB1c2goYSk7cmV0dXJuIGN9fSksbi5mbi5leHRlbmQoe2hhczpmdW5jdGlvbihhKXt2YXIgYj1uKGEsdGhpcyksYz1iLmxlbmd0aDtyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oKXtmb3IodmFyIGE9MDtjPmE7YSsrKWlmKG4uY29udGFpbnModGhpcyxiW2FdKSlyZXR1cm4hMH0pfSxjbG9zZXN0OmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjLGQ9MCxlPXRoaXMubGVuZ3RoLGY9W10sZz11LnRlc3QoYSl8fCJzdHJpbmciIT10eXBlb2YgYT9uKGEsYnx8dGhpcy5jb250ZXh0KTowO2U+ZDtkKyspZm9yKGM9dGhpc1tkXTtjJiZjIT09YjtjPWMucGFyZW50Tm9kZSlpZihjLm5vZGVUeXBlPDExJiYoZz9nLmluZGV4KGMpPi0xOjE9PT1jLm5vZGVUeXBlJiZuLmZpbmQubWF0Y2hlc1NlbGVjdG9yKGMsYSkpKXtmLnB1c2goYyk7YnJlYWt9cmV0dXJuIHRoaXMucHVzaFN0YWNrKGYubGVuZ3RoPjE/bi51bmlxdWUoZik6Zil9LGluZGV4OmZ1bmN0aW9uKGEpe3JldHVybiBhPyJzdHJpbmciPT10eXBlb2YgYT9nLmNhbGwobihhKSx0aGlzWzBdKTpnLmNhbGwodGhpcyxhLmpxdWVyeT9hWzBdOmEpOnRoaXNbMF0mJnRoaXNbMF0ucGFyZW50Tm9kZT90aGlzLmZpcnN0KCkucHJldkFsbCgpLmxlbmd0aDotMX0sYWRkOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMucHVzaFN0YWNrKG4udW5pcXVlKG4ubWVyZ2UodGhpcy5nZXQoKSxuKGEsYikpKSl9LGFkZEJhY2s6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuYWRkKG51bGw9PWE/dGhpcy5wcmV2T2JqZWN0OnRoaXMucHJldk9iamVjdC5maWx0ZXIoYSkpfX0pO2Z1bmN0aW9uIEQoYSxiKXt3aGlsZSgoYT1hW2JdKSYmMSE9PWEubm9kZVR5cGUpO3JldHVybiBhfW4uZWFjaCh7cGFyZW50OmZ1bmN0aW9uKGEpe3ZhciBiPWEucGFyZW50Tm9kZTtyZXR1cm4gYiYmMTEhPT1iLm5vZGVUeXBlP2I6bnVsbH0scGFyZW50czpmdW5jdGlvbihhKXtyZXR1cm4gbi5kaXIoYSwicGFyZW50Tm9kZSIpfSxwYXJlbnRzVW50aWw6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBuLmRpcihhLCJwYXJlbnROb2RlIixjKX0sbmV4dDpmdW5jdGlvbihhKXtyZXR1cm4gRChhLCJuZXh0U2libGluZyIpfSxwcmV2OmZ1bmN0aW9uKGEpe3JldHVybiBEKGEsInByZXZpb3VzU2libGluZyIpfSxuZXh0QWxsOmZ1bmN0aW9uKGEpe3JldHVybiBuLmRpcihhLCJuZXh0U2libGluZyIpfSxwcmV2QWxsOmZ1bmN0aW9uKGEpe3JldHVybiBuLmRpcihhLCJwcmV2aW91c1NpYmxpbmciKX0sbmV4dFVudGlsOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gbi5kaXIoYSwibmV4dFNpYmxpbmciLGMpfSxwcmV2VW50aWw6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBuLmRpcihhLCJwcmV2aW91c1NpYmxpbmciLGMpfSxzaWJsaW5nczpmdW5jdGlvbihhKXtyZXR1cm4gbi5zaWJsaW5nKChhLnBhcmVudE5vZGV8fHt9KS5maXJzdENoaWxkLGEpfSxjaGlsZHJlbjpmdW5jdGlvbihhKXtyZXR1cm4gbi5zaWJsaW5nKGEuZmlyc3RDaGlsZCl9LGNvbnRlbnRzOmZ1bmN0aW9uKGEpe3JldHVybiBhLmNvbnRlbnREb2N1bWVudHx8bi5tZXJnZShbXSxhLmNoaWxkTm9kZXMpfX0sZnVuY3Rpb24oYSxiKXtuLmZuW2FdPWZ1bmN0aW9uKGMsZCl7dmFyIGU9bi5tYXAodGhpcyxiLGMpO3JldHVybiJVbnRpbCIhPT1hLnNsaWNlKC01KSYmKGQ9YyksZCYmInN0cmluZyI9PXR5cGVvZiBkJiYoZT1uLmZpbHRlcihkLGUpKSx0aGlzLmxlbmd0aD4xJiYoQ1thXXx8bi51bmlxdWUoZSksQi50ZXN0KGEpJiZlLnJldmVyc2UoKSksdGhpcy5wdXNoU3RhY2soZSl9fSk7dmFyIEU9L1xTKy9nLEY9e307ZnVuY3Rpb24gRyhhKXt2YXIgYj1GW2FdPXt9O3JldHVybiBuLmVhY2goYS5tYXRjaChFKXx8W10sZnVuY3Rpb24oYSxjKXtiW2NdPSEwfSksYn1uLkNhbGxiYWNrcz1mdW5jdGlvbihhKXthPSJzdHJpbmciPT10eXBlb2YgYT9GW2FdfHxHKGEpOm4uZXh0ZW5kKHt9LGEpO3ZhciBiLGMsZCxlLGYsZyxoPVtdLGk9IWEub25jZSYmW10saj1mdW5jdGlvbihsKXtmb3IoYj1hLm1lbW9yeSYmbCxjPSEwLGc9ZXx8MCxlPTAsZj1oLmxlbmd0aCxkPSEwO2gmJmY+ZztnKyspaWYoaFtnXS5hcHBseShsWzBdLGxbMV0pPT09ITEmJmEuc3RvcE9uRmFsc2Upe2I9ITE7YnJlYWt9ZD0hMSxoJiYoaT9pLmxlbmd0aCYmaihpLnNoaWZ0KCkpOmI/aD1bXTprLmRpc2FibGUoKSl9LGs9e2FkZDpmdW5jdGlvbigpe2lmKGgpe3ZhciBjPWgubGVuZ3RoOyFmdW5jdGlvbiBnKGIpe24uZWFjaChiLGZ1bmN0aW9uKGIsYyl7dmFyIGQ9bi50eXBlKGMpOyJmdW5jdGlvbiI9PT1kP2EudW5pcXVlJiZrLmhhcyhjKXx8aC5wdXNoKGMpOmMmJmMubGVuZ3RoJiYic3RyaW5nIiE9PWQmJmcoYyl9KX0oYXJndW1lbnRzKSxkP2Y9aC5sZW5ndGg6YiYmKGU9YyxqKGIpKX1yZXR1cm4gdGhpc30scmVtb3ZlOmZ1bmN0aW9uKCl7cmV0dXJuIGgmJm4uZWFjaChhcmd1bWVudHMsZnVuY3Rpb24oYSxiKXt2YXIgYzt3aGlsZSgoYz1uLmluQXJyYXkoYixoLGMpKT4tMSloLnNwbGljZShjLDEpLGQmJihmPj1jJiZmLS0sZz49YyYmZy0tKX0pLHRoaXN9LGhhczpmdW5jdGlvbihhKXtyZXR1cm4gYT9uLmluQXJyYXkoYSxoKT4tMTohKCFofHwhaC5sZW5ndGgpfSxlbXB0eTpmdW5jdGlvbigpe3JldHVybiBoPVtdLGY9MCx0aGlzfSxkaXNhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIGg9aT1iPXZvaWQgMCx0aGlzfSxkaXNhYmxlZDpmdW5jdGlvbigpe3JldHVybiFofSxsb2NrOmZ1bmN0aW9uKCl7cmV0dXJuIGk9dm9pZCAwLGJ8fGsuZGlzYWJsZSgpLHRoaXN9LGxvY2tlZDpmdW5jdGlvbigpe3JldHVybiFpfSxmaXJlV2l0aDpmdW5jdGlvbihhLGIpe3JldHVybiFofHxjJiYhaXx8KGI9Ynx8W10sYj1bYSxiLnNsaWNlP2Iuc2xpY2UoKTpiXSxkP2kucHVzaChiKTpqKGIpKSx0aGlzfSxmaXJlOmZ1bmN0aW9uKCl7cmV0dXJuIGsuZmlyZVdpdGgodGhpcyxhcmd1bWVudHMpLHRoaXN9LGZpcmVkOmZ1bmN0aW9uKCl7cmV0dXJuISFjfX07cmV0dXJuIGt9LG4uZXh0ZW5kKHtEZWZlcnJlZDpmdW5jdGlvbihhKXt2YXIgYj1bWyJyZXNvbHZlIiwiZG9uZSIsbi5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksInJlc29sdmVkIl0sWyJyZWplY3QiLCJmYWlsIixuLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwicmVqZWN0ZWQiXSxbIm5vdGlmeSIsInByb2dyZXNzIixuLkNhbGxiYWNrcygibWVtb3J5IildXSxjPSJwZW5kaW5nIixkPXtzdGF0ZTpmdW5jdGlvbigpe3JldHVybiBjfSxhbHdheXM6ZnVuY3Rpb24oKXtyZXR1cm4gZS5kb25lKGFyZ3VtZW50cykuZmFpbChhcmd1bWVudHMpLHRoaXN9LHRoZW46ZnVuY3Rpb24oKXt2YXIgYT1hcmd1bWVudHM7cmV0dXJuIG4uRGVmZXJyZWQoZnVuY3Rpb24oYyl7bi5lYWNoKGIsZnVuY3Rpb24oYixmKXt2YXIgZz1uLmlzRnVuY3Rpb24oYVtiXSkmJmFbYl07ZVtmWzFdXShmdW5jdGlvbigpe3ZhciBhPWcmJmcuYXBwbHkodGhpcyxhcmd1bWVudHMpO2EmJm4uaXNGdW5jdGlvbihhLnByb21pc2UpP2EucHJvbWlzZSgpLmRvbmUoYy5yZXNvbHZlKS5mYWlsKGMucmVqZWN0KS5wcm9ncmVzcyhjLm5vdGlmeSk6Y1tmWzBdKyJXaXRoIl0odGhpcz09PWQ/Yy5wcm9taXNlKCk6dGhpcyxnP1thXTphcmd1bWVudHMpfSl9KSxhPW51bGx9KS5wcm9taXNlKCl9LHByb21pc2U6ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGwhPWE/bi5leHRlbmQoYSxkKTpkfX0sZT17fTtyZXR1cm4gZC5waXBlPWQudGhlbixuLmVhY2goYixmdW5jdGlvbihhLGYpe3ZhciBnPWZbMl0saD1mWzNdO2RbZlsxXV09Zy5hZGQsaCYmZy5hZGQoZnVuY3Rpb24oKXtjPWh9LGJbMV5hXVsyXS5kaXNhYmxlLGJbMl1bMl0ubG9jayksZVtmWzBdXT1mdW5jdGlvbigpe3JldHVybiBlW2ZbMF0rIldpdGgiXSh0aGlzPT09ZT9kOnRoaXMsYXJndW1lbnRzKSx0aGlzfSxlW2ZbMF0rIldpdGgiXT1nLmZpcmVXaXRofSksZC5wcm9taXNlKGUpLGEmJmEuY2FsbChlLGUpLGV9LHdoZW46ZnVuY3Rpb24oYSl7dmFyIGI9MCxjPWQuY2FsbChhcmd1bWVudHMpLGU9Yy5sZW5ndGgsZj0xIT09ZXx8YSYmbi5pc0Z1bmN0aW9uKGEucHJvbWlzZSk/ZTowLGc9MT09PWY/YTpuLkRlZmVycmVkKCksaD1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIGZ1bmN0aW9uKGUpe2JbYV09dGhpcyxjW2FdPWFyZ3VtZW50cy5sZW5ndGg+MT9kLmNhbGwoYXJndW1lbnRzKTplLGM9PT1pP2cubm90aWZ5V2l0aChiLGMpOi0tZnx8Zy5yZXNvbHZlV2l0aChiLGMpfX0saSxqLGs7aWYoZT4xKWZvcihpPW5ldyBBcnJheShlKSxqPW5ldyBBcnJheShlKSxrPW5ldyBBcnJheShlKTtlPmI7YisrKWNbYl0mJm4uaXNGdW5jdGlvbihjW2JdLnByb21pc2UpP2NbYl0ucHJvbWlzZSgpLmRvbmUoaChiLGssYykpLmZhaWwoZy5yZWplY3QpLnByb2dyZXNzKGgoYixqLGkpKTotLWY7cmV0dXJuIGZ8fGcucmVzb2x2ZVdpdGgoayxjKSxnLnByb21pc2UoKX19KTt2YXIgSDtuLmZuLnJlYWR5PWZ1bmN0aW9uKGEpe3JldHVybiBuLnJlYWR5LnByb21pc2UoKS5kb25lKGEpLHRoaXN9LG4uZXh0ZW5kKHtpc1JlYWR5OiExLHJlYWR5V2FpdDoxLGhvbGRSZWFkeTpmdW5jdGlvbihhKXthP24ucmVhZHlXYWl0Kys6bi5yZWFkeSghMCl9LHJlYWR5OmZ1bmN0aW9uKGEpeyhhPT09ITA/LS1uLnJlYWR5V2FpdDpuLmlzUmVhZHkpfHwobi5pc1JlYWR5PSEwLGEhPT0hMCYmLS1uLnJlYWR5V2FpdD4wfHwoSC5yZXNvbHZlV2l0aChsLFtuXSksbi5mbi50cmlnZ2VySGFuZGxlciYmKG4obCkudHJpZ2dlckhhbmRsZXIoInJlYWR5IiksbihsKS5vZmYoInJlYWR5IikpKSl9fSk7ZnVuY3Rpb24gSSgpe2wucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsSSwhMSksYS5yZW1vdmVFdmVudExpc3RlbmVyKCJsb2FkIixJLCExKSxuLnJlYWR5KCl9bi5yZWFkeS5wcm9taXNlPWZ1bmN0aW9uKGIpe3JldHVybiBIfHwoSD1uLkRlZmVycmVkKCksImNvbXBsZXRlIj09PWwucmVhZHlTdGF0ZT9zZXRUaW1lb3V0KG4ucmVhZHkpOihsLmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLEksITEpLGEuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsSSwhMSkpKSxILnByb21pc2UoYil9LG4ucmVhZHkucHJvbWlzZSgpO3ZhciBKPW4uYWNjZXNzPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcpe3ZhciBoPTAsaT1hLmxlbmd0aCxqPW51bGw9PWM7aWYoIm9iamVjdCI9PT1uLnR5cGUoYykpe2U9ITA7Zm9yKGggaW4gYyluLmFjY2VzcyhhLGIsaCxjW2hdLCEwLGYsZyl9ZWxzZSBpZih2b2lkIDAhPT1kJiYoZT0hMCxuLmlzRnVuY3Rpb24oZCl8fChnPSEwKSxqJiYoZz8oYi5jYWxsKGEsZCksYj1udWxsKTooaj1iLGI9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBqLmNhbGwobihhKSxjKX0pKSxiKSlmb3IoO2k+aDtoKyspYihhW2hdLGMsZz9kOmQuY2FsbChhW2hdLGgsYihhW2hdLGMpKSk7cmV0dXJuIGU/YTpqP2IuY2FsbChhKTppP2IoYVswXSxjKTpmfTtuLmFjY2VwdERhdGE9ZnVuY3Rpb24oYSl7cmV0dXJuIDE9PT1hLm5vZGVUeXBlfHw5PT09YS5ub2RlVHlwZXx8ISthLm5vZGVUeXBlfTtmdW5jdGlvbiBLKCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMuY2FjaGU9e30sMCx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJue319fSksdGhpcy5leHBhbmRvPW4uZXhwYW5kbytNYXRoLnJhbmRvbSgpfUsudWlkPTEsSy5hY2NlcHRzPW4uYWNjZXB0RGF0YSxLLnByb3RvdHlwZT17a2V5OmZ1bmN0aW9uKGEpe2lmKCFLLmFjY2VwdHMoYSkpcmV0dXJuIDA7dmFyIGI9e30sYz1hW3RoaXMuZXhwYW5kb107aWYoIWMpe2M9Sy51aWQrKzt0cnl7Ylt0aGlzLmV4cGFuZG9dPXt2YWx1ZTpjfSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhhLGIpfWNhdGNoKGQpe2JbdGhpcy5leHBhbmRvXT1jLG4uZXh0ZW5kKGEsYil9fXJldHVybiB0aGlzLmNhY2hlW2NdfHwodGhpcy5jYWNoZVtjXT17fSksY30sc2V0OmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlPXRoaXMua2V5KGEpLGY9dGhpcy5jYWNoZVtlXTtpZigic3RyaW5nIj09dHlwZW9mIGIpZltiXT1jO2Vsc2UgaWYobi5pc0VtcHR5T2JqZWN0KGYpKW4uZXh0ZW5kKHRoaXMuY2FjaGVbZV0sYik7ZWxzZSBmb3IoZCBpbiBiKWZbZF09YltkXTtyZXR1cm4gZn0sZ2V0OmZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5jYWNoZVt0aGlzLmtleShhKV07cmV0dXJuIHZvaWQgMD09PWI/YzpjW2JdfSxhY2Nlc3M6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkO3JldHVybiB2b2lkIDA9PT1ifHxiJiYic3RyaW5nIj09dHlwZW9mIGImJnZvaWQgMD09PWM/KGQ9dGhpcy5nZXQoYSxiKSx2b2lkIDAhPT1kP2Q6dGhpcy5nZXQoYSxuLmNhbWVsQ2FzZShiKSkpOih0aGlzLnNldChhLGIsYyksdm9pZCAwIT09Yz9jOmIpfSxyZW1vdmU6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGUsZj10aGlzLmtleShhKSxnPXRoaXMuY2FjaGVbZl07aWYodm9pZCAwPT09Yil0aGlzLmNhY2hlW2ZdPXt9O2Vsc2V7bi5pc0FycmF5KGIpP2Q9Yi5jb25jYXQoYi5tYXAobi5jYW1lbENhc2UpKTooZT1uLmNhbWVsQ2FzZShiKSxiIGluIGc/ZD1bYixlXTooZD1lLGQ9ZCBpbiBnP1tkXTpkLm1hdGNoKEUpfHxbXSkpLGM9ZC5sZW5ndGg7d2hpbGUoYy0tKWRlbGV0ZSBnW2RbY11dfX0saGFzRGF0YTpmdW5jdGlvbihhKXtyZXR1cm4hbi5pc0VtcHR5T2JqZWN0KHRoaXMuY2FjaGVbYVt0aGlzLmV4cGFuZG9dXXx8e30pfSxkaXNjYXJkOmZ1bmN0aW9uKGEpe2FbdGhpcy5leHBhbmRvXSYmZGVsZXRlIHRoaXMuY2FjaGVbYVt0aGlzLmV4cGFuZG9dXX19O3ZhciBMPW5ldyBLLE09bmV3IEssTj0vXig/Olx7W1x3XFddKlx9fFxbW1x3XFddKlxdKSQvLE89LyhbQS1aXSkvZztmdW5jdGlvbiBQKGEsYixjKXt2YXIgZDtpZih2b2lkIDA9PT1jJiYxPT09YS5ub2RlVHlwZSlpZihkPSJkYXRhLSIrYi5yZXBsYWNlKE8sIi0kMSIpLnRvTG93ZXJDYXNlKCksYz1hLmdldEF0dHJpYnV0ZShkKSwic3RyaW5nIj09dHlwZW9mIGMpe3RyeXtjPSJ0cnVlIj09PWM/ITA6ImZhbHNlIj09PWM/ITE6Im51bGwiPT09Yz9udWxsOitjKyIiPT09Yz8rYzpOLnRlc3QoYyk/bi5wYXJzZUpTT04oYyk6Y31jYXRjaChlKXt9TS5zZXQoYSxiLGMpfWVsc2UgYz12b2lkIDA7cmV0dXJuIGN9bi5leHRlbmQoe2hhc0RhdGE6ZnVuY3Rpb24oYSl7cmV0dXJuIE0uaGFzRGF0YShhKXx8TC5oYXNEYXRhKGEpfSxkYXRhOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gTS5hY2Nlc3MoYSxiLGMpfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGEsYil7TS5yZW1vdmUoYSxiKQp9LF9kYXRhOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gTC5hY2Nlc3MoYSxiLGMpfSxfcmVtb3ZlRGF0YTpmdW5jdGlvbihhLGIpe0wucmVtb3ZlKGEsYil9fSksbi5mbi5leHRlbmQoe2RhdGE6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGUsZj10aGlzWzBdLGc9ZiYmZi5hdHRyaWJ1dGVzO2lmKHZvaWQgMD09PWEpe2lmKHRoaXMubGVuZ3RoJiYoZT1NLmdldChmKSwxPT09Zi5ub2RlVHlwZSYmIUwuZ2V0KGYsImhhc0RhdGFBdHRycyIpKSl7Yz1nLmxlbmd0aDt3aGlsZShjLS0pZ1tjXSYmKGQ9Z1tjXS5uYW1lLDA9PT1kLmluZGV4T2YoImRhdGEtIikmJihkPW4uY2FtZWxDYXNlKGQuc2xpY2UoNSkpLFAoZixkLGVbZF0pKSk7TC5zZXQoZiwiaGFzRGF0YUF0dHJzIiwhMCl9cmV0dXJuIGV9cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBhP3RoaXMuZWFjaChmdW5jdGlvbigpe00uc2V0KHRoaXMsYSl9KTpKKHRoaXMsZnVuY3Rpb24oYil7dmFyIGMsZD1uLmNhbWVsQ2FzZShhKTtpZihmJiZ2b2lkIDA9PT1iKXtpZihjPU0uZ2V0KGYsYSksdm9pZCAwIT09YylyZXR1cm4gYztpZihjPU0uZ2V0KGYsZCksdm9pZCAwIT09YylyZXR1cm4gYztpZihjPVAoZixkLHZvaWQgMCksdm9pZCAwIT09YylyZXR1cm4gY31lbHNlIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBjPU0uZ2V0KHRoaXMsZCk7TS5zZXQodGhpcyxkLGIpLC0xIT09YS5pbmRleE9mKCItIikmJnZvaWQgMCE9PWMmJk0uc2V0KHRoaXMsYSxiKX0pfSxudWxsLGIsYXJndW1lbnRzLmxlbmd0aD4xLG51bGwsITApfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtNLnJlbW92ZSh0aGlzLGEpfSl9fSksbi5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKGEsYixjKXt2YXIgZDtyZXR1cm4gYT8oYj0oYnx8ImZ4IikrInF1ZXVlIixkPUwuZ2V0KGEsYiksYyYmKCFkfHxuLmlzQXJyYXkoYyk/ZD1MLmFjY2VzcyhhLGIsbi5tYWtlQXJyYXkoYykpOmQucHVzaChjKSksZHx8W10pOnZvaWQgMH0sZGVxdWV1ZTpmdW5jdGlvbihhLGIpe2I9Ynx8ImZ4Ijt2YXIgYz1uLnF1ZXVlKGEsYiksZD1jLmxlbmd0aCxlPWMuc2hpZnQoKSxmPW4uX3F1ZXVlSG9va3MoYSxiKSxnPWZ1bmN0aW9uKCl7bi5kZXF1ZXVlKGEsYil9OyJpbnByb2dyZXNzIj09PWUmJihlPWMuc2hpZnQoKSxkLS0pLGUmJigiZngiPT09YiYmYy51bnNoaWZ0KCJpbnByb2dyZXNzIiksZGVsZXRlIGYuc3RvcCxlLmNhbGwoYSxnLGYpKSwhZCYmZiYmZi5lbXB0eS5maXJlKCl9LF9xdWV1ZUhvb2tzOmZ1bmN0aW9uKGEsYil7dmFyIGM9YisicXVldWVIb29rcyI7cmV0dXJuIEwuZ2V0KGEsYyl8fEwuYWNjZXNzKGEsYyx7ZW1wdHk6bi5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IikuYWRkKGZ1bmN0aW9uKCl7TC5yZW1vdmUoYSxbYisicXVldWUiLGNdKX0pfSl9fSksbi5mbi5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKGEsYil7dmFyIGM9MjtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGEmJihiPWEsYT0iZngiLGMtLSksYXJndW1lbnRzLmxlbmd0aDxjP24ucXVldWUodGhpc1swXSxhKTp2b2lkIDA9PT1iP3RoaXM6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGM9bi5xdWV1ZSh0aGlzLGEsYik7bi5fcXVldWVIb29rcyh0aGlzLGEpLCJmeCI9PT1hJiYiaW5wcm9ncmVzcyIhPT1jWzBdJiZuLmRlcXVldWUodGhpcyxhKX0pfSxkZXF1ZXVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtuLmRlcXVldWUodGhpcyxhKX0pfSxjbGVhclF1ZXVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnF1ZXVlKGF8fCJmeCIsW10pfSxwcm9taXNlOmZ1bmN0aW9uKGEsYil7dmFyIGMsZD0xLGU9bi5EZWZlcnJlZCgpLGY9dGhpcyxnPXRoaXMubGVuZ3RoLGg9ZnVuY3Rpb24oKXstLWR8fGUucmVzb2x2ZVdpdGgoZixbZl0pfTsic3RyaW5nIiE9dHlwZW9mIGEmJihiPWEsYT12b2lkIDApLGE9YXx8ImZ4Ijt3aGlsZShnLS0pYz1MLmdldChmW2ddLGErInF1ZXVlSG9va3MiKSxjJiZjLmVtcHR5JiYoZCsrLGMuZW1wdHkuYWRkKGgpKTtyZXR1cm4gaCgpLGUucHJvbWlzZShiKX19KTt2YXIgUT0vWystXT8oPzpcZCpcLnwpXGQrKD86W2VFXVsrLV0/XGQrfCkvLnNvdXJjZSxSPVsiVG9wIiwiUmlnaHQiLCJCb3R0b20iLCJMZWZ0Il0sUz1mdW5jdGlvbihhLGIpe3JldHVybiBhPWJ8fGEsIm5vbmUiPT09bi5jc3MoYSwiZGlzcGxheSIpfHwhbi5jb250YWlucyhhLm93bmVyRG9jdW1lbnQsYSl9LFQ9L14oPzpjaGVja2JveHxyYWRpbykkL2k7IWZ1bmN0aW9uKCl7dmFyIGE9bC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksYj1hLmFwcGVuZENoaWxkKGwuY3JlYXRlRWxlbWVudCgiZGl2IikpLGM9bC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO2Muc2V0QXR0cmlidXRlKCJ0eXBlIiwicmFkaW8iKSxjLnNldEF0dHJpYnV0ZSgiY2hlY2tlZCIsImNoZWNrZWQiKSxjLnNldEF0dHJpYnV0ZSgibmFtZSIsInQiKSxiLmFwcGVuZENoaWxkKGMpLGsuY2hlY2tDbG9uZT1iLmNsb25lTm9kZSghMCkuY2xvbmVOb2RlKCEwKS5sYXN0Q2hpbGQuY2hlY2tlZCxiLmlubmVySFRNTD0iPHRleHRhcmVhPng8L3RleHRhcmVhPiIsay5ub0Nsb25lQ2hlY2tlZD0hIWIuY2xvbmVOb2RlKCEwKS5sYXN0Q2hpbGQuZGVmYXVsdFZhbHVlfSgpO3ZhciBVPSJ1bmRlZmluZWQiO2suZm9jdXNpbkJ1YmJsZXM9Im9uZm9jdXNpbiJpbiBhO3ZhciBWPS9ea2V5LyxXPS9eKD86bW91c2V8cG9pbnRlcnxjb250ZXh0bWVudSl8Y2xpY2svLFg9L14oPzpmb2N1c2luZm9jdXN8Zm9jdXNvdXRibHVyKSQvLFk9L14oW14uXSopKD86XC4oLispfCkkLztmdW5jdGlvbiBaKCl7cmV0dXJuITB9ZnVuY3Rpb24gJCgpe3JldHVybiExfWZ1bmN0aW9uIF8oKXt0cnl7cmV0dXJuIGwuYWN0aXZlRWxlbWVudH1jYXRjaChhKXt9fW4uZXZlbnQ9e2dsb2JhbDp7fSxhZGQ6ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZixnLGgsaSxqLGssbCxtLG8scCxxLHI9TC5nZXQoYSk7aWYocil7Yy5oYW5kbGVyJiYoZj1jLGM9Zi5oYW5kbGVyLGU9Zi5zZWxlY3RvciksYy5ndWlkfHwoYy5ndWlkPW4uZ3VpZCsrKSwoaT1yLmV2ZW50cyl8fChpPXIuZXZlbnRzPXt9KSwoZz1yLmhhbmRsZSl8fChnPXIuaGFuZGxlPWZ1bmN0aW9uKGIpe3JldHVybiB0eXBlb2YgbiE9PVUmJm4uZXZlbnQudHJpZ2dlcmVkIT09Yi50eXBlP24uZXZlbnQuZGlzcGF0Y2guYXBwbHkoYSxhcmd1bWVudHMpOnZvaWQgMH0pLGI9KGJ8fCIiKS5tYXRjaChFKXx8WyIiXSxqPWIubGVuZ3RoO3doaWxlKGotLSloPVkuZXhlYyhiW2pdKXx8W10sbz1xPWhbMV0scD0oaFsyXXx8IiIpLnNwbGl0KCIuIikuc29ydCgpLG8mJihsPW4uZXZlbnQuc3BlY2lhbFtvXXx8e30sbz0oZT9sLmRlbGVnYXRlVHlwZTpsLmJpbmRUeXBlKXx8byxsPW4uZXZlbnQuc3BlY2lhbFtvXXx8e30saz1uLmV4dGVuZCh7dHlwZTpvLG9yaWdUeXBlOnEsZGF0YTpkLGhhbmRsZXI6YyxndWlkOmMuZ3VpZCxzZWxlY3RvcjplLG5lZWRzQ29udGV4dDplJiZuLmV4cHIubWF0Y2gubmVlZHNDb250ZXh0LnRlc3QoZSksbmFtZXNwYWNlOnAuam9pbigiLiIpfSxmKSwobT1pW29dKXx8KG09aVtvXT1bXSxtLmRlbGVnYXRlQ291bnQ9MCxsLnNldHVwJiZsLnNldHVwLmNhbGwoYSxkLHAsZykhPT0hMXx8YS5hZGRFdmVudExpc3RlbmVyJiZhLmFkZEV2ZW50TGlzdGVuZXIobyxnLCExKSksbC5hZGQmJihsLmFkZC5jYWxsKGEsayksay5oYW5kbGVyLmd1aWR8fChrLmhhbmRsZXIuZ3VpZD1jLmd1aWQpKSxlP20uc3BsaWNlKG0uZGVsZWdhdGVDb3VudCsrLDAsayk6bS5wdXNoKGspLG4uZXZlbnQuZ2xvYmFsW29dPSEwKX19LHJlbW92ZTpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmLGcsaCxpLGosayxsLG0sbyxwLHEscj1MLmhhc0RhdGEoYSkmJkwuZ2V0KGEpO2lmKHImJihpPXIuZXZlbnRzKSl7Yj0oYnx8IiIpLm1hdGNoKEUpfHxbIiJdLGo9Yi5sZW5ndGg7d2hpbGUoai0tKWlmKGg9WS5leGVjKGJbal0pfHxbXSxvPXE9aFsxXSxwPShoWzJdfHwiIikuc3BsaXQoIi4iKS5zb3J0KCksbyl7bD1uLmV2ZW50LnNwZWNpYWxbb118fHt9LG89KGQ/bC5kZWxlZ2F0ZVR5cGU6bC5iaW5kVHlwZSl8fG8sbT1pW29dfHxbXSxoPWhbMl0mJm5ldyBSZWdFeHAoIihefFxcLikiK3Auam9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIiksZz1mPW0ubGVuZ3RoO3doaWxlKGYtLSlrPW1bZl0sIWUmJnEhPT1rLm9yaWdUeXBlfHxjJiZjLmd1aWQhPT1rLmd1aWR8fGgmJiFoLnRlc3Qoay5uYW1lc3BhY2UpfHxkJiZkIT09ay5zZWxlY3RvciYmKCIqKiIhPT1kfHwhay5zZWxlY3Rvcil8fChtLnNwbGljZShmLDEpLGsuc2VsZWN0b3ImJm0uZGVsZWdhdGVDb3VudC0tLGwucmVtb3ZlJiZsLnJlbW92ZS5jYWxsKGEsaykpO2cmJiFtLmxlbmd0aCYmKGwudGVhcmRvd24mJmwudGVhcmRvd24uY2FsbChhLHAsci5oYW5kbGUpIT09ITF8fG4ucmVtb3ZlRXZlbnQoYSxvLHIuaGFuZGxlKSxkZWxldGUgaVtvXSl9ZWxzZSBmb3IobyBpbiBpKW4uZXZlbnQucmVtb3ZlKGEsbytiW2pdLGMsZCwhMCk7bi5pc0VtcHR5T2JqZWN0KGkpJiYoZGVsZXRlIHIuaGFuZGxlLEwucmVtb3ZlKGEsImV2ZW50cyIpKX19LHRyaWdnZXI6ZnVuY3Rpb24oYixjLGQsZSl7dmFyIGYsZyxoLGksayxtLG8scD1bZHx8bF0scT1qLmNhbGwoYiwidHlwZSIpP2IudHlwZTpiLHI9ai5jYWxsKGIsIm5hbWVzcGFjZSIpP2IubmFtZXNwYWNlLnNwbGl0KCIuIik6W107aWYoZz1oPWQ9ZHx8bCwzIT09ZC5ub2RlVHlwZSYmOCE9PWQubm9kZVR5cGUmJiFYLnRlc3QocStuLmV2ZW50LnRyaWdnZXJlZCkmJihxLmluZGV4T2YoIi4iKT49MCYmKHI9cS5zcGxpdCgiLiIpLHE9ci5zaGlmdCgpLHIuc29ydCgpKSxrPXEuaW5kZXhPZigiOiIpPDAmJiJvbiIrcSxiPWJbbi5leHBhbmRvXT9iOm5ldyBuLkV2ZW50KHEsIm9iamVjdCI9PXR5cGVvZiBiJiZiKSxiLmlzVHJpZ2dlcj1lPzI6MyxiLm5hbWVzcGFjZT1yLmpvaW4oIi4iKSxiLm5hbWVzcGFjZV9yZT1iLm5hbWVzcGFjZT9uZXcgUmVnRXhwKCIoXnxcXC4pIityLmpvaW4oIlxcLig/Oi4qXFwufCkiKSsiKFxcLnwkKSIpOm51bGwsYi5yZXN1bHQ9dm9pZCAwLGIudGFyZ2V0fHwoYi50YXJnZXQ9ZCksYz1udWxsPT1jP1tiXTpuLm1ha2VBcnJheShjLFtiXSksbz1uLmV2ZW50LnNwZWNpYWxbcV18fHt9LGV8fCFvLnRyaWdnZXJ8fG8udHJpZ2dlci5hcHBseShkLGMpIT09ITEpKXtpZighZSYmIW8ubm9CdWJibGUmJiFuLmlzV2luZG93KGQpKXtmb3IoaT1vLmRlbGVnYXRlVHlwZXx8cSxYLnRlc3QoaStxKXx8KGc9Zy5wYXJlbnROb2RlKTtnO2c9Zy5wYXJlbnROb2RlKXAucHVzaChnKSxoPWc7aD09PShkLm93bmVyRG9jdW1lbnR8fGwpJiZwLnB1c2goaC5kZWZhdWx0Vmlld3x8aC5wYXJlbnRXaW5kb3d8fGEpfWY9MDt3aGlsZSgoZz1wW2YrK10pJiYhYi5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKWIudHlwZT1mPjE/aTpvLmJpbmRUeXBlfHxxLG09KEwuZ2V0KGcsImV2ZW50cyIpfHx7fSlbYi50eXBlXSYmTC5nZXQoZywiaGFuZGxlIiksbSYmbS5hcHBseShnLGMpLG09ayYmZ1trXSxtJiZtLmFwcGx5JiZuLmFjY2VwdERhdGEoZykmJihiLnJlc3VsdD1tLmFwcGx5KGcsYyksYi5yZXN1bHQ9PT0hMSYmYi5wcmV2ZW50RGVmYXVsdCgpKTtyZXR1cm4gYi50eXBlPXEsZXx8Yi5pc0RlZmF1bHRQcmV2ZW50ZWQoKXx8by5fZGVmYXVsdCYmby5fZGVmYXVsdC5hcHBseShwLnBvcCgpLGMpIT09ITF8fCFuLmFjY2VwdERhdGEoZCl8fGsmJm4uaXNGdW5jdGlvbihkW3FdKSYmIW4uaXNXaW5kb3coZCkmJihoPWRba10saCYmKGRba109bnVsbCksbi5ldmVudC50cmlnZ2VyZWQ9cSxkW3FdKCksbi5ldmVudC50cmlnZ2VyZWQ9dm9pZCAwLGgmJihkW2tdPWgpKSxiLnJlc3VsdH19LGRpc3BhdGNoOmZ1bmN0aW9uKGEpe2E9bi5ldmVudC5maXgoYSk7dmFyIGIsYyxlLGYsZyxoPVtdLGk9ZC5jYWxsKGFyZ3VtZW50cyksaj0oTC5nZXQodGhpcywiZXZlbnRzIil8fHt9KVthLnR5cGVdfHxbXSxrPW4uZXZlbnQuc3BlY2lhbFthLnR5cGVdfHx7fTtpZihpWzBdPWEsYS5kZWxlZ2F0ZVRhcmdldD10aGlzLCFrLnByZURpc3BhdGNofHxrLnByZURpc3BhdGNoLmNhbGwodGhpcyxhKSE9PSExKXtoPW4uZXZlbnQuaGFuZGxlcnMuY2FsbCh0aGlzLGEsaiksYj0wO3doaWxlKChmPWhbYisrXSkmJiFhLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpe2EuY3VycmVudFRhcmdldD1mLmVsZW0sYz0wO3doaWxlKChnPWYuaGFuZGxlcnNbYysrXSkmJiFhLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkKCkpKCFhLm5hbWVzcGFjZV9yZXx8YS5uYW1lc3BhY2VfcmUudGVzdChnLm5hbWVzcGFjZSkpJiYoYS5oYW5kbGVPYmo9ZyxhLmRhdGE9Zy5kYXRhLGU9KChuLmV2ZW50LnNwZWNpYWxbZy5vcmlnVHlwZV18fHt9KS5oYW5kbGV8fGcuaGFuZGxlcikuYXBwbHkoZi5lbGVtLGkpLHZvaWQgMCE9PWUmJihhLnJlc3VsdD1lKT09PSExJiYoYS5wcmV2ZW50RGVmYXVsdCgpLGEuc3RvcFByb3BhZ2F0aW9uKCkpKX1yZXR1cm4gay5wb3N0RGlzcGF0Y2gmJmsucG9zdERpc3BhdGNoLmNhbGwodGhpcyxhKSxhLnJlc3VsdH19LGhhbmRsZXJzOmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlLGYsZz1bXSxoPWIuZGVsZWdhdGVDb3VudCxpPWEudGFyZ2V0O2lmKGgmJmkubm9kZVR5cGUmJighYS5idXR0b258fCJjbGljayIhPT1hLnR5cGUpKWZvcig7aSE9PXRoaXM7aT1pLnBhcmVudE5vZGV8fHRoaXMpaWYoaS5kaXNhYmxlZCE9PSEwfHwiY2xpY2siIT09YS50eXBlKXtmb3IoZD1bXSxjPTA7aD5jO2MrKylmPWJbY10sZT1mLnNlbGVjdG9yKyIgIix2b2lkIDA9PT1kW2VdJiYoZFtlXT1mLm5lZWRzQ29udGV4dD9uKGUsdGhpcykuaW5kZXgoaSk+PTA6bi5maW5kKGUsdGhpcyxudWxsLFtpXSkubGVuZ3RoKSxkW2VdJiZkLnB1c2goZik7ZC5sZW5ndGgmJmcucHVzaCh7ZWxlbTppLGhhbmRsZXJzOmR9KX1yZXR1cm4gaDxiLmxlbmd0aCYmZy5wdXNoKHtlbGVtOnRoaXMsaGFuZGxlcnM6Yi5zbGljZShoKX0pLGd9LHByb3BzOiJhbHRLZXkgYnViYmxlcyBjYW5jZWxhYmxlIGN0cmxLZXkgY3VycmVudFRhcmdldCBldmVudFBoYXNlIG1ldGFLZXkgcmVsYXRlZFRhcmdldCBzaGlmdEtleSB0YXJnZXQgdGltZVN0YW1wIHZpZXcgd2hpY2giLnNwbGl0KCIgIiksZml4SG9va3M6e30sa2V5SG9va3M6e3Byb3BzOiJjaGFyIGNoYXJDb2RlIGtleSBrZXlDb2RlIi5zcGxpdCgiICIpLGZpbHRlcjpmdW5jdGlvbihhLGIpe3JldHVybiBudWxsPT1hLndoaWNoJiYoYS53aGljaD1udWxsIT1iLmNoYXJDb2RlP2IuY2hhckNvZGU6Yi5rZXlDb2RlKSxhfX0sbW91c2VIb29rczp7cHJvcHM6ImJ1dHRvbiBidXR0b25zIGNsaWVudFggY2xpZW50WSBvZmZzZXRYIG9mZnNldFkgcGFnZVggcGFnZVkgc2NyZWVuWCBzY3JlZW5ZIHRvRWxlbWVudCIuc3BsaXQoIiAiKSxmaWx0ZXI6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGUsZj1iLmJ1dHRvbjtyZXR1cm4gbnVsbD09YS5wYWdlWCYmbnVsbCE9Yi5jbGllbnRYJiYoYz1hLnRhcmdldC5vd25lckRvY3VtZW50fHxsLGQ9Yy5kb2N1bWVudEVsZW1lbnQsZT1jLmJvZHksYS5wYWdlWD1iLmNsaWVudFgrKGQmJmQuc2Nyb2xsTGVmdHx8ZSYmZS5zY3JvbGxMZWZ0fHwwKS0oZCYmZC5jbGllbnRMZWZ0fHxlJiZlLmNsaWVudExlZnR8fDApLGEucGFnZVk9Yi5jbGllbnRZKyhkJiZkLnNjcm9sbFRvcHx8ZSYmZS5zY3JvbGxUb3B8fDApLShkJiZkLmNsaWVudFRvcHx8ZSYmZS5jbGllbnRUb3B8fDApKSxhLndoaWNofHx2b2lkIDA9PT1mfHwoYS53aGljaD0xJmY/MToyJmY/Mzo0JmY/MjowKSxhfX0sZml4OmZ1bmN0aW9uKGEpe2lmKGFbbi5leHBhbmRvXSlyZXR1cm4gYTt2YXIgYixjLGQsZT1hLnR5cGUsZj1hLGc9dGhpcy5maXhIb29rc1tlXTtnfHwodGhpcy5maXhIb29rc1tlXT1nPVcudGVzdChlKT90aGlzLm1vdXNlSG9va3M6Vi50ZXN0KGUpP3RoaXMua2V5SG9va3M6e30pLGQ9Zy5wcm9wcz90aGlzLnByb3BzLmNvbmNhdChnLnByb3BzKTp0aGlzLnByb3BzLGE9bmV3IG4uRXZlbnQoZiksYj1kLmxlbmd0aDt3aGlsZShiLS0pYz1kW2JdLGFbY109ZltjXTtyZXR1cm4gYS50YXJnZXR8fChhLnRhcmdldD1sKSwzPT09YS50YXJnZXQubm9kZVR5cGUmJihhLnRhcmdldD1hLnRhcmdldC5wYXJlbnROb2RlKSxnLmZpbHRlcj9nLmZpbHRlcihhLGYpOmF9LHNwZWNpYWw6e2xvYWQ6e25vQnViYmxlOiEwfSxmb2N1czp7dHJpZ2dlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzIT09XygpJiZ0aGlzLmZvY3VzPyh0aGlzLmZvY3VzKCksITEpOnZvaWQgMH0sZGVsZWdhdGVUeXBlOiJmb2N1c2luIn0sYmx1cjp7dHJpZ2dlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzPT09XygpJiZ0aGlzLmJsdXI/KHRoaXMuYmx1cigpLCExKTp2b2lkIDB9LGRlbGVnYXRlVHlwZToiZm9jdXNvdXQifSxjbGljazp7dHJpZ2dlcjpmdW5jdGlvbigpe3JldHVybiJjaGVja2JveCI9PT10aGlzLnR5cGUmJnRoaXMuY2xpY2smJm4ubm9kZU5hbWUodGhpcywiaW5wdXQiKT8odGhpcy5jbGljaygpLCExKTp2b2lkIDB9LF9kZWZhdWx0OmZ1bmN0aW9uKGEpe3JldHVybiBuLm5vZGVOYW1lKGEudGFyZ2V0LCJhIil9fSxiZWZvcmV1bmxvYWQ6e3Bvc3REaXNwYXRjaDpmdW5jdGlvbihhKXt2b2lkIDAhPT1hLnJlc3VsdCYmYS5vcmlnaW5hbEV2ZW50JiYoYS5vcmlnaW5hbEV2ZW50LnJldHVyblZhbHVlPWEucmVzdWx0KX19fSxzaW11bGF0ZTpmdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1uLmV4dGVuZChuZXcgbi5FdmVudCxjLHt0eXBlOmEsaXNTaW11bGF0ZWQ6ITAsb3JpZ2luYWxFdmVudDp7fX0pO2Q/bi5ldmVudC50cmlnZ2VyKGUsbnVsbCxiKTpuLmV2ZW50LmRpc3BhdGNoLmNhbGwoYixlKSxlLmlzRGVmYXVsdFByZXZlbnRlZCgpJiZjLnByZXZlbnREZWZhdWx0KCl9fSxuLnJlbW92ZUV2ZW50PWZ1bmN0aW9uKGEsYixjKXthLnJlbW92ZUV2ZW50TGlzdGVuZXImJmEucmVtb3ZlRXZlbnRMaXN0ZW5lcihiLGMsITEpfSxuLkV2ZW50PWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBuLkV2ZW50PyhhJiZhLnR5cGU/KHRoaXMub3JpZ2luYWxFdmVudD1hLHRoaXMudHlwZT1hLnR5cGUsdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9YS5kZWZhdWx0UHJldmVudGVkfHx2b2lkIDA9PT1hLmRlZmF1bHRQcmV2ZW50ZWQmJmEucmV0dXJuVmFsdWU9PT0hMT9aOiQpOnRoaXMudHlwZT1hLGImJm4uZXh0ZW5kKHRoaXMsYiksdGhpcy50aW1lU3RhbXA9YSYmYS50aW1lU3RhbXB8fG4ubm93KCksdm9pZCh0aGlzW24uZXhwYW5kb109ITApKTpuZXcgbi5FdmVudChhLGIpfSxuLkV2ZW50LnByb3RvdHlwZT17aXNEZWZhdWx0UHJldmVudGVkOiQsaXNQcm9wYWdhdGlvblN0b3BwZWQ6JCxpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZDokLHByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPVosYSYmYS5wcmV2ZW50RGVmYXVsdCYmYS5wcmV2ZW50RGVmYXVsdCgpfSxzdG9wUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9yaWdpbmFsRXZlbnQ7dGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1aLGEmJmEuc3RvcFByb3BhZ2F0aW9uJiZhLnN0b3BQcm9wYWdhdGlvbigpfSxzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9yaWdpbmFsRXZlbnQ7dGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZD1aLGEmJmEuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uJiZhLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLHRoaXMuc3RvcFByb3BhZ2F0aW9uKCl9fSxuLmVhY2goe21vdXNlZW50ZXI6Im1vdXNlb3ZlciIsbW91c2VsZWF2ZToibW91c2VvdXQiLHBvaW50ZXJlbnRlcjoicG9pbnRlcm92ZXIiLHBvaW50ZXJsZWF2ZToicG9pbnRlcm91dCJ9LGZ1bmN0aW9uKGEsYil7bi5ldmVudC5zcGVjaWFsW2FdPXtkZWxlZ2F0ZVR5cGU6YixiaW5kVHlwZTpiLGhhbmRsZTpmdW5jdGlvbihhKXt2YXIgYyxkPXRoaXMsZT1hLnJlbGF0ZWRUYXJnZXQsZj1hLmhhbmRsZU9iajtyZXR1cm4oIWV8fGUhPT1kJiYhbi5jb250YWlucyhkLGUpKSYmKGEudHlwZT1mLm9yaWdUeXBlLGM9Zi5oYW5kbGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxhLnR5cGU9YiksY319fSksay5mb2N1c2luQnViYmxlc3x8bi5lYWNoKHtmb2N1czoiZm9jdXNpbiIsYmx1cjoiZm9jdXNvdXQifSxmdW5jdGlvbihhLGIpe3ZhciBjPWZ1bmN0aW9uKGEpe24uZXZlbnQuc2ltdWxhdGUoYixhLnRhcmdldCxuLmV2ZW50LmZpeChhKSwhMCl9O24uZXZlbnQuc3BlY2lhbFtiXT17c2V0dXA6ZnVuY3Rpb24oKXt2YXIgZD10aGlzLm93bmVyRG9jdW1lbnR8fHRoaXMsZT1MLmFjY2VzcyhkLGIpO2V8fGQuYWRkRXZlbnRMaXN0ZW5lcihhLGMsITApLEwuYWNjZXNzKGQsYiwoZXx8MCkrMSl9LHRlYXJkb3duOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcy5vd25lckRvY3VtZW50fHx0aGlzLGU9TC5hY2Nlc3MoZCxiKS0xO2U/TC5hY2Nlc3MoZCxiLGUpOihkLnJlbW92ZUV2ZW50TGlzdGVuZXIoYSxjLCEwKSxMLnJlbW92ZShkLGIpKX19fSksbi5mbi5leHRlbmQoe29uOmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGYsZztpZigib2JqZWN0Ij09dHlwZW9mIGEpeyJzdHJpbmciIT10eXBlb2YgYiYmKGM9Y3x8YixiPXZvaWQgMCk7Zm9yKGcgaW4gYSl0aGlzLm9uKGcsYixjLGFbZ10sZSk7cmV0dXJuIHRoaXN9aWYobnVsbD09YyYmbnVsbD09ZD8oZD1iLGM9Yj12b2lkIDApOm51bGw9PWQmJigic3RyaW5nIj09dHlwZW9mIGI/KGQ9YyxjPXZvaWQgMCk6KGQ9YyxjPWIsYj12b2lkIDApKSxkPT09ITEpZD0kO2Vsc2UgaWYoIWQpcmV0dXJuIHRoaXM7cmV0dXJuIDE9PT1lJiYoZj1kLGQ9ZnVuY3Rpb24oYSl7cmV0dXJuIG4oKS5vZmYoYSksZi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGQuZ3VpZD1mLmd1aWR8fChmLmd1aWQ9bi5ndWlkKyspKSx0aGlzLmVhY2goZnVuY3Rpb24oKXtuLmV2ZW50LmFkZCh0aGlzLGEsZCxjLGIpfSl9LG9uZTpmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gdGhpcy5vbihhLGIsYyxkLDEpfSxvZmY6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGU7aWYoYSYmYS5wcmV2ZW50RGVmYXVsdCYmYS5oYW5kbGVPYmopcmV0dXJuIGQ9YS5oYW5kbGVPYmosbihhLmRlbGVnYXRlVGFyZ2V0KS5vZmYoZC5uYW1lc3BhY2U/ZC5vcmlnVHlwZSsiLiIrZC5uYW1lc3BhY2U6ZC5vcmlnVHlwZSxkLnNlbGVjdG9yLGQuaGFuZGxlciksdGhpcztpZigib2JqZWN0Ij09dHlwZW9mIGEpe2ZvcihlIGluIGEpdGhpcy5vZmYoZSxiLGFbZV0pO3JldHVybiB0aGlzfXJldHVybihiPT09ITF8fCJmdW5jdGlvbiI9PXR5cGVvZiBiKSYmKGM9YixiPXZvaWQgMCksYz09PSExJiYoYz0kKSx0aGlzLmVhY2goZnVuY3Rpb24oKXtuLmV2ZW50LnJlbW92ZSh0aGlzLGEsYyxiKX0pfSx0cmlnZ2VyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe24uZXZlbnQudHJpZ2dlcihhLGIsdGhpcyl9KX0sdHJpZ2dlckhhbmRsZXI6ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzWzBdO3JldHVybiBjP24uZXZlbnQudHJpZ2dlcihhLGIsYywhMCk6dm9pZCAwfX0pO3ZhciBhYj0vPCg/IWFyZWF8YnJ8Y29sfGVtYmVkfGhyfGltZ3xpbnB1dHxsaW5rfG1ldGF8cGFyYW0pKChbXHc6XSspW14+XSopXC8+L2dpLGJiPS88KFtcdzpdKykvLGNiPS88fCYjP1x3KzsvLGRiPS88KD86c2NyaXB0fHN0eWxlfGxpbmspL2ksZWI9L2NoZWNrZWRccyooPzpbXj1dfD1ccyouY2hlY2tlZC4pL2ksZmI9L14kfFwvKD86amF2YXxlY21hKXNjcmlwdC9pLGdiPS9edHJ1ZVwvKC4qKS8saGI9L15ccyo8ISg/OlxbQ0RBVEFcW3wtLSl8KD86XF1cXXwtLSk+XHMqJC9nLGliPXtvcHRpb246WzEsIjxzZWxlY3QgbXVsdGlwbGU9J211bHRpcGxlJz4iLCI8L3NlbGVjdD4iXSx0aGVhZDpbMSwiPHRhYmxlPiIsIjwvdGFibGU+Il0sY29sOlsyLCI8dGFibGU+PGNvbGdyb3VwPiIsIjwvY29sZ3JvdXA+PC90YWJsZT4iXSx0cjpbMiwiPHRhYmxlPjx0Ym9keT4iLCI8L3Rib2R5PjwvdGFibGU+Il0sdGQ6WzMsIjx0YWJsZT48dGJvZHk+PHRyPiIsIjwvdHI+PC90Ym9keT48L3RhYmxlPiJdLF9kZWZhdWx0OlswLCIiLCIiXX07aWIub3B0Z3JvdXA9aWIub3B0aW9uLGliLnRib2R5PWliLnRmb290PWliLmNvbGdyb3VwPWliLmNhcHRpb249aWIudGhlYWQsaWIudGg9aWIudGQ7ZnVuY3Rpb24gamIoYSxiKXtyZXR1cm4gbi5ub2RlTmFtZShhLCJ0YWJsZSIpJiZuLm5vZGVOYW1lKDExIT09Yi5ub2RlVHlwZT9iOmIuZmlyc3RDaGlsZCwidHIiKT9hLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0Ym9keSIpWzBdfHxhLmFwcGVuZENoaWxkKGEub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0Ym9keSIpKTphfWZ1bmN0aW9uIGtiKGEpe3JldHVybiBhLnR5cGU9KG51bGwhPT1hLmdldEF0dHJpYnV0ZSgidHlwZSIpKSsiLyIrYS50eXBlLGF9ZnVuY3Rpb24gbGIoYSl7dmFyIGI9Z2IuZXhlYyhhLnR5cGUpO3JldHVybiBiP2EudHlwZT1iWzFdOmEucmVtb3ZlQXR0cmlidXRlKCJ0eXBlIiksYX1mdW5jdGlvbiBtYihhLGIpe2Zvcih2YXIgYz0wLGQ9YS5sZW5ndGg7ZD5jO2MrKylMLnNldChhW2NdLCJnbG9iYWxFdmFsIiwhYnx8TC5nZXQoYltjXSwiZ2xvYmFsRXZhbCIpKX1mdW5jdGlvbiBuYihhLGIpe3ZhciBjLGQsZSxmLGcsaCxpLGo7aWYoMT09PWIubm9kZVR5cGUpe2lmKEwuaGFzRGF0YShhKSYmKGY9TC5hY2Nlc3MoYSksZz1MLnNldChiLGYpLGo9Zi5ldmVudHMpKXtkZWxldGUgZy5oYW5kbGUsZy5ldmVudHM9e307Zm9yKGUgaW4gailmb3IoYz0wLGQ9altlXS5sZW5ndGg7ZD5jO2MrKyluLmV2ZW50LmFkZChiLGUsaltlXVtjXSl9TS5oYXNEYXRhKGEpJiYoaD1NLmFjY2VzcyhhKSxpPW4uZXh0ZW5kKHt9LGgpLE0uc2V0KGIsaSkpfX1mdW5jdGlvbiBvYihhLGIpe3ZhciBjPWEuZ2V0RWxlbWVudHNCeVRhZ05hbWU/YS5nZXRFbGVtZW50c0J5VGFnTmFtZShifHwiKiIpOmEucXVlcnlTZWxlY3RvckFsbD9hLnF1ZXJ5U2VsZWN0b3JBbGwoYnx8IioiKTpbXTtyZXR1cm4gdm9pZCAwPT09Ynx8YiYmbi5ub2RlTmFtZShhLGIpP24ubWVyZ2UoW2FdLGMpOmN9ZnVuY3Rpb24gcGIoYSxiKXt2YXIgYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7ImlucHV0Ij09PWMmJlQudGVzdChhLnR5cGUpP2IuY2hlY2tlZD1hLmNoZWNrZWQ6KCJpbnB1dCI9PT1jfHwidGV4dGFyZWEiPT09YykmJihiLmRlZmF1bHRWYWx1ZT1hLmRlZmF1bHRWYWx1ZSl9bi5leHRlbmQoe2Nsb25lOmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGYsZyxoPWEuY2xvbmVOb2RlKCEwKSxpPW4uY29udGFpbnMoYS5vd25lckRvY3VtZW50LGEpO2lmKCEoay5ub0Nsb25lQ2hlY2tlZHx8MSE9PWEubm9kZVR5cGUmJjExIT09YS5ub2RlVHlwZXx8bi5pc1hNTERvYyhhKSkpZm9yKGc9b2IoaCksZj1vYihhKSxkPTAsZT1mLmxlbmd0aDtlPmQ7ZCsrKXBiKGZbZF0sZ1tkXSk7aWYoYilpZihjKWZvcihmPWZ8fG9iKGEpLGc9Z3x8b2IoaCksZD0wLGU9Zi5sZW5ndGg7ZT5kO2QrKyluYihmW2RdLGdbZF0pO2Vsc2UgbmIoYSxoKTtyZXR1cm4gZz1vYihoLCJzY3JpcHQiKSxnLmxlbmd0aD4wJiZtYihnLCFpJiZvYihhLCJzY3JpcHQiKSksaH0sYnVpbGRGcmFnbWVudDpmdW5jdGlvbihhLGIsYyxkKXtmb3IodmFyIGUsZixnLGgsaSxqLGs9Yi5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksbD1bXSxtPTAsbz1hLmxlbmd0aDtvPm07bSsrKWlmKGU9YVttXSxlfHwwPT09ZSlpZigib2JqZWN0Ij09PW4udHlwZShlKSluLm1lcmdlKGwsZS5ub2RlVHlwZT9bZV06ZSk7ZWxzZSBpZihjYi50ZXN0KGUpKXtmPWZ8fGsuYXBwZW5kQ2hpbGQoYi5jcmVhdGVFbGVtZW50KCJkaXYiKSksZz0oYmIuZXhlYyhlKXx8WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKSxoPWliW2ddfHxpYi5fZGVmYXVsdCxmLmlubmVySFRNTD1oWzFdK2UucmVwbGFjZShhYiwiPCQxPjwvJDI+IikraFsyXSxqPWhbMF07d2hpbGUoai0tKWY9Zi5sYXN0Q2hpbGQ7bi5tZXJnZShsLGYuY2hpbGROb2RlcyksZj1rLmZpcnN0Q2hpbGQsZi50ZXh0Q29udGVudD0iIn1lbHNlIGwucHVzaChiLmNyZWF0ZVRleHROb2RlKGUpKTtrLnRleHRDb250ZW50PSIiLG09MDt3aGlsZShlPWxbbSsrXSlpZigoIWR8fC0xPT09bi5pbkFycmF5KGUsZCkpJiYoaT1uLmNvbnRhaW5zKGUub3duZXJEb2N1bWVudCxlKSxmPW9iKGsuYXBwZW5kQ2hpbGQoZSksInNjcmlwdCIpLGkmJm1iKGYpLGMpKXtqPTA7d2hpbGUoZT1mW2orK10pZmIudGVzdChlLnR5cGV8fCIiKSYmYy5wdXNoKGUpfXJldHVybiBrfSxjbGVhbkRhdGE6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiLGMsZCxlLGY9bi5ldmVudC5zcGVjaWFsLGc9MDt2b2lkIDAhPT0oYz1hW2ddKTtnKyspe2lmKG4uYWNjZXB0RGF0YShjKSYmKGU9Y1tMLmV4cGFuZG9dLGUmJihiPUwuY2FjaGVbZV0pKSl7aWYoYi5ldmVudHMpZm9yKGQgaW4gYi5ldmVudHMpZltkXT9uLmV2ZW50LnJlbW92ZShjLGQpOm4ucmVtb3ZlRXZlbnQoYyxkLGIuaGFuZGxlKTtMLmNhY2hlW2VdJiZkZWxldGUgTC5jYWNoZVtlXX1kZWxldGUgTS5jYWNoZVtjW00uZXhwYW5kb11dfX19KSxuLmZuLmV4dGVuZCh7dGV4dDpmdW5jdGlvbihhKXtyZXR1cm4gSih0aGlzLGZ1bmN0aW9uKGEpe3JldHVybiB2b2lkIDA9PT1hP24udGV4dCh0aGlzKTp0aGlzLmVtcHR5KCkuZWFjaChmdW5jdGlvbigpeygxPT09dGhpcy5ub2RlVHlwZXx8MTE9PT10aGlzLm5vZGVUeXBlfHw5PT09dGhpcy5ub2RlVHlwZSkmJih0aGlzLnRleHRDb250ZW50PWEpfSl9LG51bGwsYSxhcmd1bWVudHMubGVuZ3RoKX0sYXBwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLGZ1bmN0aW9uKGEpe2lmKDE9PT10aGlzLm5vZGVUeXBlfHwxMT09PXRoaXMubm9kZVR5cGV8fDk9PT10aGlzLm5vZGVUeXBlKXt2YXIgYj1qYih0aGlzLGEpO2IuYXBwZW5kQ2hpbGQoYSl9fSl9LHByZXBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oYSl7aWYoMT09PXRoaXMubm9kZVR5cGV8fDExPT09dGhpcy5ub2RlVHlwZXx8OT09PXRoaXMubm9kZVR5cGUpe3ZhciBiPWpiKHRoaXMsYSk7Yi5pbnNlcnRCZWZvcmUoYSxiLmZpcnN0Q2hpbGQpfX0pfSxiZWZvcmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oYSl7dGhpcy5wYXJlbnROb2RlJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsdGhpcyl9KX0sYWZ0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oYSl7dGhpcy5wYXJlbnROb2RlJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsdGhpcy5uZXh0U2libGluZyl9KX0scmVtb3ZlOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjLGQ9YT9uLmZpbHRlcihhLHRoaXMpOnRoaXMsZT0wO251bGwhPShjPWRbZV0pO2UrKylifHwxIT09Yy5ub2RlVHlwZXx8bi5jbGVhbkRhdGEob2IoYykpLGMucGFyZW50Tm9kZSYmKGImJm4uY29udGFpbnMoYy5vd25lckRvY3VtZW50LGMpJiZtYihvYihjLCJzY3JpcHQiKSksYy5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGMpKTtyZXR1cm4gdGhpc30sZW1wdHk6ZnVuY3Rpb24oKXtmb3IodmFyIGEsYj0wO251bGwhPShhPXRoaXNbYl0pO2IrKykxPT09YS5ub2RlVHlwZSYmKG4uY2xlYW5EYXRhKG9iKGEsITEpKSxhLnRleHRDb250ZW50PSIiKTtyZXR1cm4gdGhpc30sY2xvbmU6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT1udWxsPT1hPyExOmEsYj1udWxsPT1iP2E6Yix0aGlzLm1hcChmdW5jdGlvbigpe3JldHVybiBuLmNsb25lKHRoaXMsYSxiKX0pfSxodG1sOmZ1bmN0aW9uKGEpe3JldHVybiBKKHRoaXMsZnVuY3Rpb24oYSl7dmFyIGI9dGhpc1swXXx8e30sYz0wLGQ9dGhpcy5sZW5ndGg7aWYodm9pZCAwPT09YSYmMT09PWIubm9kZVR5cGUpcmV0dXJuIGIuaW5uZXJIVE1MO2lmKCJzdHJpbmciPT10eXBlb2YgYSYmIWRiLnRlc3QoYSkmJiFpYlsoYmIuZXhlYyhhKXx8WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKV0pe2E9YS5yZXBsYWNlKGFiLCI8JDE+PC8kMj4iKTt0cnl7Zm9yKDtkPmM7YysrKWI9dGhpc1tjXXx8e30sMT09PWIubm9kZVR5cGUmJihuLmNsZWFuRGF0YShvYihiLCExKSksYi5pbm5lckhUTUw9YSk7Yj0wfWNhdGNoKGUpe319YiYmdGhpcy5lbXB0eSgpLmFwcGVuZChhKX0sbnVsbCxhLGFyZ3VtZW50cy5sZW5ndGgpfSxyZXBsYWNlV2l0aDpmdW5jdGlvbigpe3ZhciBhPWFyZ3VtZW50c1swXTtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oYil7YT10aGlzLnBhcmVudE5vZGUsbi5jbGVhbkRhdGEob2IodGhpcykpLGEmJmEucmVwbGFjZUNoaWxkKGIsdGhpcyl9KSxhJiYoYS5sZW5ndGh8fGEubm9kZVR5cGUpP3RoaXM6dGhpcy5yZW1vdmUoKX0sZGV0YWNoOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnJlbW92ZShhLCEwKX0sZG9tTWFuaXA6ZnVuY3Rpb24oYSxiKXthPWUuYXBwbHkoW10sYSk7dmFyIGMsZCxmLGcsaCxpLGo9MCxsPXRoaXMubGVuZ3RoLG09dGhpcyxvPWwtMSxwPWFbMF0scT1uLmlzRnVuY3Rpb24ocCk7aWYocXx8bD4xJiYic3RyaW5nIj09dHlwZW9mIHAmJiFrLmNoZWNrQ2xvbmUmJmViLnRlc3QocCkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihjKXt2YXIgZD1tLmVxKGMpO3EmJihhWzBdPXAuY2FsbCh0aGlzLGMsZC5odG1sKCkpKSxkLmRvbU1hbmlwKGEsYil9KTtpZihsJiYoYz1uLmJ1aWxkRnJhZ21lbnQoYSx0aGlzWzBdLm93bmVyRG9jdW1lbnQsITEsdGhpcyksZD1jLmZpcnN0Q2hpbGQsMT09PWMuY2hpbGROb2Rlcy5sZW5ndGgmJihjPWQpLGQpKXtmb3IoZj1uLm1hcChvYihjLCJzY3JpcHQiKSxrYiksZz1mLmxlbmd0aDtsPmo7aisrKWg9YyxqIT09byYmKGg9bi5jbG9uZShoLCEwLCEwKSxnJiZuLm1lcmdlKGYsb2IoaCwic2NyaXB0IikpKSxiLmNhbGwodGhpc1tqXSxoLGopO2lmKGcpZm9yKGk9ZltmLmxlbmd0aC0xXS5vd25lckRvY3VtZW50LG4ubWFwKGYsbGIpLGo9MDtnPmo7aisrKWg9ZltqXSxmYi50ZXN0KGgudHlwZXx8IiIpJiYhTC5hY2Nlc3MoaCwiZ2xvYmFsRXZhbCIpJiZuLmNvbnRhaW5zKGksaCkmJihoLnNyYz9uLl9ldmFsVXJsJiZuLl9ldmFsVXJsKGguc3JjKTpuLmdsb2JhbEV2YWwoaC50ZXh0Q29udGVudC5yZXBsYWNlKGhiLCIiKSkpfXJldHVybiB0aGlzfX0pLG4uZWFjaCh7YXBwZW5kVG86ImFwcGVuZCIscHJlcGVuZFRvOiJwcmVwZW5kIixpbnNlcnRCZWZvcmU6ImJlZm9yZSIsaW5zZXJ0QWZ0ZXI6ImFmdGVyIixyZXBsYWNlQWxsOiJyZXBsYWNlV2l0aCJ9LGZ1bmN0aW9uKGEsYil7bi5mblthXT1mdW5jdGlvbihhKXtmb3IodmFyIGMsZD1bXSxlPW4oYSksZz1lLmxlbmd0aC0xLGg9MDtnPj1oO2grKyljPWg9PT1nP3RoaXM6dGhpcy5jbG9uZSghMCksbihlW2hdKVtiXShjKSxmLmFwcGx5KGQsYy5nZXQoKSk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGQpfX0pO3ZhciBxYixyYj17fTtmdW5jdGlvbiBzYihiLGMpe3ZhciBkLGU9bihjLmNyZWF0ZUVsZW1lbnQoYikpLmFwcGVuZFRvKGMuYm9keSksZj1hLmdldERlZmF1bHRDb21wdXRlZFN0eWxlJiYoZD1hLmdldERlZmF1bHRDb21wdXRlZFN0eWxlKGVbMF0pKT9kLmRpc3BsYXk6bi5jc3MoZVswXSwiZGlzcGxheSIpO3JldHVybiBlLmRldGFjaCgpLGZ9ZnVuY3Rpb24gdGIoYSl7dmFyIGI9bCxjPXJiW2FdO3JldHVybiBjfHwoYz1zYihhLGIpLCJub25lIiE9PWMmJmN8fChxYj0ocWJ8fG4oIjxpZnJhbWUgZnJhbWVib3JkZXI9JzAnIHdpZHRoPScwJyBoZWlnaHQ9JzAnLz4iKSkuYXBwZW5kVG8oYi5kb2N1bWVudEVsZW1lbnQpLGI9cWJbMF0uY29udGVudERvY3VtZW50LGIud3JpdGUoKSxiLmNsb3NlKCksYz1zYihhLGIpLHFiLmRldGFjaCgpKSxyYlthXT1jKSxjfXZhciB1Yj0vXm1hcmdpbi8sdmI9bmV3IFJlZ0V4cCgiXigiK1ErIikoPyFweClbYS16JV0rJCIsImkiKSx3Yj1mdW5jdGlvbihhKXtyZXR1cm4gYS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoYSxudWxsKX07ZnVuY3Rpb24geGIoYSxiLGMpe3ZhciBkLGUsZixnLGg9YS5zdHlsZTtyZXR1cm4gYz1jfHx3YihhKSxjJiYoZz1jLmdldFByb3BlcnR5VmFsdWUoYil8fGNbYl0pLGMmJigiIiE9PWd8fG4uY29udGFpbnMoYS5vd25lckRvY3VtZW50LGEpfHwoZz1uLnN0eWxlKGEsYikpLHZiLnRlc3QoZykmJnViLnRlc3QoYikmJihkPWgud2lkdGgsZT1oLm1pbldpZHRoLGY9aC5tYXhXaWR0aCxoLm1pbldpZHRoPWgubWF4V2lkdGg9aC53aWR0aD1nLGc9Yy53aWR0aCxoLndpZHRoPWQsaC5taW5XaWR0aD1lLGgubWF4V2lkdGg9ZikpLHZvaWQgMCE9PWc/ZysiIjpnfWZ1bmN0aW9uIHliKGEsYil7cmV0dXJue2dldDpmdW5jdGlvbigpe3JldHVybiBhKCk/dm9pZCBkZWxldGUgdGhpcy5nZXQ6KHRoaXMuZ2V0PWIpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19fSFmdW5jdGlvbigpe3ZhciBiLGMsZD1sLmRvY3VtZW50RWxlbWVudCxlPWwuY3JlYXRlRWxlbWVudCgiZGl2IiksZj1sLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2lmKGYuc3R5bGUpe2Yuc3R5bGUuYmFja2dyb3VuZENsaXA9ImNvbnRlbnQtYm94IixmLmNsb25lTm9kZSghMCkuc3R5bGUuYmFja2dyb3VuZENsaXA9IiIsay5jbGVhckNsb25lU3R5bGU9ImNvbnRlbnQtYm94Ij09PWYuc3R5bGUuYmFja2dyb3VuZENsaXAsZS5zdHlsZS5jc3NUZXh0PSJib3JkZXI6MDt3aWR0aDowO2hlaWdodDowO3RvcDowO2xlZnQ6LTk5OTlweDttYXJnaW4tdG9wOjFweDtwb3NpdGlvbjphYnNvbHV0ZSIsZS5hcHBlbmRDaGlsZChmKTtmdW5jdGlvbiBnKCl7Zi5zdHlsZS5jc3NUZXh0PSItd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDstbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3g7ZGlzcGxheTpibG9jazttYXJnaW4tdG9wOjElO3RvcDoxJTtib3JkZXI6MXB4O3BhZGRpbmc6MXB4O3dpZHRoOjRweDtwb3NpdGlvbjphYnNvbHV0ZSIsZi5pbm5lckhUTUw9IiIsZC5hcHBlbmRDaGlsZChlKTt2YXIgZz1hLmdldENvbXB1dGVkU3R5bGUoZixudWxsKTtiPSIxJSIhPT1nLnRvcCxjPSI0cHgiPT09Zy53aWR0aCxkLnJlbW92ZUNoaWxkKGUpfWEuZ2V0Q29tcHV0ZWRTdHlsZSYmbi5leHRlbmQoayx7cGl4ZWxQb3NpdGlvbjpmdW5jdGlvbigpe3JldHVybiBnKCksYn0sYm94U2l6aW5nUmVsaWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09YyYmZygpLGN9LHJlbGlhYmxlTWFyZ2luUmlnaHQ6ZnVuY3Rpb24oKXt2YXIgYixjPWYuYXBwZW5kQ2hpbGQobC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7cmV0dXJuIGMuc3R5bGUuY3NzVGV4dD1mLnN0eWxlLmNzc1RleHQ9Ii13ZWJraXQtYm94LXNpemluZzpjb250ZW50LWJveDstbW96LWJveC1zaXppbmc6Y29udGVudC1ib3g7Ym94LXNpemluZzpjb250ZW50LWJveDtkaXNwbGF5OmJsb2NrO21hcmdpbjowO2JvcmRlcjowO3BhZGRpbmc6MCIsYy5zdHlsZS5tYXJnaW5SaWdodD1jLnN0eWxlLndpZHRoPSIwIixmLnN0eWxlLndpZHRoPSIxcHgiLGQuYXBwZW5kQ2hpbGQoZSksYj0hcGFyc2VGbG9hdChhLmdldENvbXB1dGVkU3R5bGUoYyxudWxsKS5tYXJnaW5SaWdodCksZC5yZW1vdmVDaGlsZChlKSxifX0pfX0oKSxuLnN3YXA9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGUsZixnPXt9O2ZvcihmIGluIGIpZ1tmXT1hLnN0eWxlW2ZdLGEuc3R5bGVbZl09YltmXTtlPWMuYXBwbHkoYSxkfHxbXSk7Zm9yKGYgaW4gYilhLnN0eWxlW2ZdPWdbZl07cmV0dXJuIGV9O3ZhciB6Yj0vXihub25lfHRhYmxlKD8hLWNbZWFdKS4rKS8sQWI9bmV3IFJlZ0V4cCgiXigiK1ErIikoLiopJCIsImkiKSxCYj1uZXcgUmVnRXhwKCJeKFsrLV0pPSgiK1ErIikiLCJpIiksQ2I9e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdmlzaWJpbGl0eToiaGlkZGVuIixkaXNwbGF5OiJibG9jayJ9LERiPXtsZXR0ZXJTcGFjaW5nOiIwIixmb250V2VpZ2h0OiI0MDAifSxFYj1bIldlYmtpdCIsIk8iLCJNb3oiLCJtcyJdO2Z1bmN0aW9uIEZiKGEsYil7aWYoYiBpbiBhKXJldHVybiBiO3ZhciBjPWJbMF0udG9VcHBlckNhc2UoKStiLnNsaWNlKDEpLGQ9YixlPUViLmxlbmd0aDt3aGlsZShlLS0paWYoYj1FYltlXStjLGIgaW4gYSlyZXR1cm4gYjtyZXR1cm4gZH1mdW5jdGlvbiBHYihhLGIsYyl7dmFyIGQ9QWIuZXhlYyhiKTtyZXR1cm4gZD9NYXRoLm1heCgwLGRbMV0tKGN8fDApKSsoZFsyXXx8InB4Iik6Yn1mdW5jdGlvbiBIYihhLGIsYyxkLGUpe2Zvcih2YXIgZj1jPT09KGQ/ImJvcmRlciI6ImNvbnRlbnQiKT80OiJ3aWR0aCI9PT1iPzE6MCxnPTA7ND5mO2YrPTIpIm1hcmdpbiI9PT1jJiYoZys9bi5jc3MoYSxjK1JbZl0sITAsZSkpLGQ/KCJjb250ZW50Ij09PWMmJihnLT1uLmNzcyhhLCJwYWRkaW5nIitSW2ZdLCEwLGUpKSwibWFyZ2luIiE9PWMmJihnLT1uLmNzcyhhLCJib3JkZXIiK1JbZl0rIldpZHRoIiwhMCxlKSkpOihnKz1uLmNzcyhhLCJwYWRkaW5nIitSW2ZdLCEwLGUpLCJwYWRkaW5nIiE9PWMmJihnKz1uLmNzcyhhLCJib3JkZXIiK1JbZl0rIldpZHRoIiwhMCxlKSkpO3JldHVybiBnfWZ1bmN0aW9uIEliKGEsYixjKXt2YXIgZD0hMCxlPSJ3aWR0aCI9PT1iP2Eub2Zmc2V0V2lkdGg6YS5vZmZzZXRIZWlnaHQsZj13YihhKSxnPSJib3JkZXItYm94Ij09PW4uY3NzKGEsImJveFNpemluZyIsITEsZik7aWYoMD49ZXx8bnVsbD09ZSl7aWYoZT14YihhLGIsZiksKDA+ZXx8bnVsbD09ZSkmJihlPWEuc3R5bGVbYl0pLHZiLnRlc3QoZSkpcmV0dXJuIGU7ZD1nJiYoay5ib3hTaXppbmdSZWxpYWJsZSgpfHxlPT09YS5zdHlsZVtiXSksZT1wYXJzZUZsb2F0KGUpfHwwfXJldHVybiBlK0hiKGEsYixjfHwoZz8iYm9yZGVyIjoiY29udGVudCIpLGQsZikrInB4In1mdW5jdGlvbiBKYihhLGIpe2Zvcih2YXIgYyxkLGUsZj1bXSxnPTAsaD1hLmxlbmd0aDtoPmc7ZysrKWQ9YVtnXSxkLnN0eWxlJiYoZltnXT1MLmdldChkLCJvbGRkaXNwbGF5IiksYz1kLnN0eWxlLmRpc3BsYXksYj8oZltnXXx8Im5vbmUiIT09Y3x8KGQuc3R5bGUuZGlzcGxheT0iIiksIiI9PT1kLnN0eWxlLmRpc3BsYXkmJlMoZCkmJihmW2ddPUwuYWNjZXNzKGQsIm9sZGRpc3BsYXkiLHRiKGQubm9kZU5hbWUpKSkpOihlPVMoZCksIm5vbmUiPT09YyYmZXx8TC5zZXQoZCwib2xkZGlzcGxheSIsZT9jOm4uY3NzKGQsImRpc3BsYXkiKSkpKTtmb3IoZz0wO2g+ZztnKyspZD1hW2ddLGQuc3R5bGUmJihiJiYibm9uZSIhPT1kLnN0eWxlLmRpc3BsYXkmJiIiIT09ZC5zdHlsZS5kaXNwbGF5fHwoZC5zdHlsZS5kaXNwbGF5PWI/ZltnXXx8IiI6Im5vbmUiKSk7cmV0dXJuIGF9bi5leHRlbmQoe2Nzc0hvb2tzOntvcGFjaXR5OntnZXQ6ZnVuY3Rpb24oYSxiKXtpZihiKXt2YXIgYz14YihhLCJvcGFjaXR5Iik7cmV0dXJuIiI9PT1jPyIxIjpjfX19fSxjc3NOdW1iZXI6e2NvbHVtbkNvdW50OiEwLGZpbGxPcGFjaXR5OiEwLGZsZXhHcm93OiEwLGZsZXhTaHJpbms6ITAsZm9udFdlaWdodDohMCxsaW5lSGVpZ2h0OiEwLG9wYWNpdHk6ITAsb3JkZXI6ITAsb3JwaGFuczohMCx3aWRvd3M6ITAsekluZGV4OiEwLHpvb206ITB9LGNzc1Byb3BzOnsiZmxvYXQiOiJjc3NGbG9hdCJ9LHN0eWxlOmZ1bmN0aW9uKGEsYixjLGQpe2lmKGEmJjMhPT1hLm5vZGVUeXBlJiY4IT09YS5ub2RlVHlwZSYmYS5zdHlsZSl7dmFyIGUsZixnLGg9bi5jYW1lbENhc2UoYiksaT1hLnN0eWxlO3JldHVybiBiPW4uY3NzUHJvcHNbaF18fChuLmNzc1Byb3BzW2hdPUZiKGksaCkpLGc9bi5jc3NIb29rc1tiXXx8bi5jc3NIb29rc1toXSx2b2lkIDA9PT1jP2cmJiJnZXQiaW4gZyYmdm9pZCAwIT09KGU9Zy5nZXQoYSwhMSxkKSk/ZTppW2JdOihmPXR5cGVvZiBjLCJzdHJpbmciPT09ZiYmKGU9QmIuZXhlYyhjKSkmJihjPShlWzFdKzEpKmVbMl0rcGFyc2VGbG9hdChuLmNzcyhhLGIpKSxmPSJudW1iZXIiKSxudWxsIT1jJiZjPT09YyYmKCJudW1iZXIiIT09Znx8bi5jc3NOdW1iZXJbaF18fChjKz0icHgiKSxrLmNsZWFyQ2xvbmVTdHlsZXx8IiIhPT1jfHwwIT09Yi5pbmRleE9mKCJiYWNrZ3JvdW5kIil8fChpW2JdPSJpbmhlcml0IiksZyYmInNldCJpbiBnJiZ2b2lkIDA9PT0oYz1nLnNldChhLGMsZCkpfHwoaVtiXT1jKSksdm9pZCAwKX19LGNzczpmdW5jdGlvbihhLGIsYyxkKXt2YXIgZSxmLGcsaD1uLmNhbWVsQ2FzZShiKTtyZXR1cm4gYj1uLmNzc1Byb3BzW2hdfHwobi5jc3NQcm9wc1toXT1GYihhLnN0eWxlLGgpKSxnPW4uY3NzSG9va3NbYl18fG4uY3NzSG9va3NbaF0sZyYmImdldCJpbiBnJiYoZT1nLmdldChhLCEwLGMpKSx2b2lkIDA9PT1lJiYoZT14YihhLGIsZCkpLCJub3JtYWwiPT09ZSYmYiBpbiBEYiYmKGU9RGJbYl0pLCIiPT09Y3x8Yz8oZj1wYXJzZUZsb2F0KGUpLGM9PT0hMHx8bi5pc051bWVyaWMoZik/Znx8MDplKTplfX0pLG4uZWFjaChbImhlaWdodCIsIndpZHRoIl0sZnVuY3Rpb24oYSxiKXtuLmNzc0hvb2tzW2JdPXtnZXQ6ZnVuY3Rpb24oYSxjLGQpe3JldHVybiBjP3piLnRlc3Qobi5jc3MoYSwiZGlzcGxheSIpKSYmMD09PWEub2Zmc2V0V2lkdGg/bi5zd2FwKGEsQ2IsZnVuY3Rpb24oKXtyZXR1cm4gSWIoYSxiLGQpfSk6SWIoYSxiLGQpOnZvaWQgMH0sc2V0OmZ1bmN0aW9uKGEsYyxkKXt2YXIgZT1kJiZ3YihhKTtyZXR1cm4gR2IoYSxjLGQ/SGIoYSxiLGQsImJvcmRlci1ib3giPT09bi5jc3MoYSwiYm94U2l6aW5nIiwhMSxlKSxlKTowKX19fSksbi5jc3NIb29rcy5tYXJnaW5SaWdodD15YihrLnJlbGlhYmxlTWFyZ2luUmlnaHQsZnVuY3Rpb24oYSxiKXtyZXR1cm4gYj9uLnN3YXAoYSx7ZGlzcGxheToiaW5saW5lLWJsb2NrIn0seGIsW2EsIm1hcmdpblJpZ2h0Il0pOnZvaWQgMH0pLG4uZWFjaCh7bWFyZ2luOiIiLHBhZGRpbmc6IiIsYm9yZGVyOiJXaWR0aCJ9LGZ1bmN0aW9uKGEsYil7bi5jc3NIb29rc1thK2JdPXtleHBhbmQ6ZnVuY3Rpb24oYyl7Zm9yKHZhciBkPTAsZT17fSxmPSJzdHJpbmciPT10eXBlb2YgYz9jLnNwbGl0KCIgIik6W2NdOzQ+ZDtkKyspZVthK1JbZF0rYl09ZltkXXx8ZltkLTJdfHxmWzBdO3JldHVybiBlfX0sdWIudGVzdChhKXx8KG4uY3NzSG9va3NbYStiXS5zZXQ9R2IpfSksbi5mbi5leHRlbmQoe2NzczpmdW5jdGlvbihhLGIpe3JldHVybiBKKHRoaXMsZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZj17fSxnPTA7aWYobi5pc0FycmF5KGIpKXtmb3IoZD13YihhKSxlPWIubGVuZ3RoO2U+ZztnKyspZltiW2ddXT1uLmNzcyhhLGJbZ10sITEsZCk7cmV0dXJuIGZ9cmV0dXJuIHZvaWQgMCE9PWM/bi5zdHlsZShhLGIsYyk6bi5jc3MoYSxiKX0sYSxiLGFyZ3VtZW50cy5sZW5ndGg+MSl9LHNob3c6ZnVuY3Rpb24oKXtyZXR1cm4gSmIodGhpcywhMCl9LGhpZGU6ZnVuY3Rpb24oKXtyZXR1cm4gSmIodGhpcyl9LHRvZ2dsZTpmdW5jdGlvbihhKXtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBhP2E/dGhpcy5zaG93KCk6dGhpcy5oaWRlKCk6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7Uyh0aGlzKT9uKHRoaXMpLnNob3coKTpuKHRoaXMpLmhpZGUoKX0pfX0pO2Z1bmN0aW9uIEtiKGEsYixjLGQsZSl7cmV0dXJuIG5ldyBLYi5wcm90b3R5cGUuaW5pdChhLGIsYyxkLGUpfW4uVHdlZW49S2IsS2IucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpLYixpbml0OmZ1bmN0aW9uKGEsYixjLGQsZSxmKXt0aGlzLmVsZW09YSx0aGlzLnByb3A9Yyx0aGlzLmVhc2luZz1lfHwic3dpbmciLHRoaXMub3B0aW9ucz1iLHRoaXMuc3RhcnQ9dGhpcy5ub3c9dGhpcy5jdXIoKSx0aGlzLmVuZD1kLHRoaXMudW5pdD1mfHwobi5jc3NOdW1iZXJbY10/IiI6InB4Iil9LGN1cjpmdW5jdGlvbigpe3ZhciBhPUtiLnByb3BIb29rc1t0aGlzLnByb3BdO3JldHVybiBhJiZhLmdldD9hLmdldCh0aGlzKTpLYi5wcm9wSG9va3MuX2RlZmF1bHQuZ2V0KHRoaXMpfSxydW46ZnVuY3Rpb24oYSl7dmFyIGIsYz1LYi5wcm9wSG9va3NbdGhpcy5wcm9wXTtyZXR1cm4gdGhpcy5wb3M9Yj10aGlzLm9wdGlvbnMuZHVyYXRpb24/bi5lYXNpbmdbdGhpcy5lYXNpbmddKGEsdGhpcy5vcHRpb25zLmR1cmF0aW9uKmEsMCwxLHRoaXMub3B0aW9ucy5kdXJhdGlvbik6YSx0aGlzLm5vdz0odGhpcy5lbmQtdGhpcy5zdGFydCkqYit0aGlzLnN0YXJ0LHRoaXMub3B0aW9ucy5zdGVwJiZ0aGlzLm9wdGlvbnMuc3RlcC5jYWxsKHRoaXMuZWxlbSx0aGlzLm5vdyx0aGlzKSxjJiZjLnNldD9jLnNldCh0aGlzKTpLYi5wcm9wSG9va3MuX2RlZmF1bHQuc2V0KHRoaXMpLHRoaXN9fSxLYi5wcm90b3R5cGUuaW5pdC5wcm90b3R5cGU9S2IucHJvdG90eXBlLEtiLnByb3BIb29rcz17X2RlZmF1bHQ6e2dldDpmdW5jdGlvbihhKXt2YXIgYjtyZXR1cm4gbnVsbD09YS5lbGVtW2EucHJvcF18fGEuZWxlbS5zdHlsZSYmbnVsbCE9YS5lbGVtLnN0eWxlW2EucHJvcF0/KGI9bi5jc3MoYS5lbGVtLGEucHJvcCwiIiksYiYmImF1dG8iIT09Yj9iOjApOmEuZWxlbVthLnByb3BdfSxzZXQ6ZnVuY3Rpb24oYSl7bi5meC5zdGVwW2EucHJvcF0/bi5meC5zdGVwW2EucHJvcF0oYSk6YS5lbGVtLnN0eWxlJiYobnVsbCE9YS5lbGVtLnN0eWxlW24uY3NzUHJvcHNbYS5wcm9wXV18fG4uY3NzSG9va3NbYS5wcm9wXSk/bi5zdHlsZShhLmVsZW0sYS5wcm9wLGEubm93K2EudW5pdCk6YS5lbGVtW2EucHJvcF09YS5ub3d9fX0sS2IucHJvcEhvb2tzLnNjcm9sbFRvcD1LYi5wcm9wSG9va3Muc2Nyb2xsTGVmdD17c2V0OmZ1bmN0aW9uKGEpe2EuZWxlbS5ub2RlVHlwZSYmYS5lbGVtLnBhcmVudE5vZGUmJihhLmVsZW1bYS5wcm9wXT1hLm5vdyl9fSxuLmVhc2luZz17bGluZWFyOmZ1bmN0aW9uKGEpe3JldHVybiBhfSxzd2luZzpmdW5jdGlvbihhKXtyZXR1cm4uNS1NYXRoLmNvcyhhKk1hdGguUEkpLzJ9fSxuLmZ4PUtiLnByb3RvdHlwZS5pbml0LG4uZnguc3RlcD17fTt2YXIgTGIsTWIsTmI9L14oPzp0b2dnbGV8c2hvd3xoaWRlKSQvLE9iPW5ldyBSZWdFeHAoIl4oPzooWystXSk9fCkoIitRKyIpKFthLXolXSopJCIsImkiKSxQYj0vcXVldWVIb29rcyQvLFFiPVtWYl0sUmI9eyIqIjpbZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLmNyZWF0ZVR3ZWVuKGEsYiksZD1jLmN1cigpLGU9T2IuZXhlYyhiKSxmPWUmJmVbM118fChuLmNzc051bWJlclthXT8iIjoicHgiKSxnPShuLmNzc051bWJlclthXXx8InB4IiE9PWYmJitkKSYmT2IuZXhlYyhuLmNzcyhjLmVsZW0sYSkpLGg9MSxpPTIwO2lmKGcmJmdbM10hPT1mKXtmPWZ8fGdbM10sZT1lfHxbXSxnPStkfHwxO2RvIGg9aHx8Ii41IixnLz1oLG4uc3R5bGUoYy5lbGVtLGEsZytmKTt3aGlsZShoIT09KGg9Yy5jdXIoKS9kKSYmMSE9PWgmJi0taSl9cmV0dXJuIGUmJihnPWMuc3RhcnQ9K2d8fCtkfHwwLGMudW5pdD1mLGMuZW5kPWVbMV0/ZysoZVsxXSsxKSplWzJdOitlWzJdKSxjfV19O2Z1bmN0aW9uIFNiKCl7cmV0dXJuIHNldFRpbWVvdXQoZnVuY3Rpb24oKXtMYj12b2lkIDB9KSxMYj1uLm5vdygpfWZ1bmN0aW9uIFRiKGEsYil7dmFyIGMsZD0wLGU9e2hlaWdodDphfTtmb3IoYj1iPzE6MDs0PmQ7ZCs9Mi1iKWM9UltkXSxlWyJtYXJnaW4iK2NdPWVbInBhZGRpbmciK2NdPWE7cmV0dXJuIGImJihlLm9wYWNpdHk9ZS53aWR0aD1hKSxlfWZ1bmN0aW9uIFViKGEsYixjKXtmb3IodmFyIGQsZT0oUmJbYl18fFtdKS5jb25jYXQoUmJbIioiXSksZj0wLGc9ZS5sZW5ndGg7Zz5mO2YrKylpZihkPWVbZl0uY2FsbChjLGIsYSkpcmV0dXJuIGR9ZnVuY3Rpb24gVmIoYSxiLGMpe3ZhciBkLGUsZixnLGgsaSxqLGssbD10aGlzLG09e30sbz1hLnN0eWxlLHA9YS5ub2RlVHlwZSYmUyhhKSxxPUwuZ2V0KGEsImZ4c2hvdyIpO2MucXVldWV8fChoPW4uX3F1ZXVlSG9va3MoYSwiZngiKSxudWxsPT1oLnVucXVldWVkJiYoaC51bnF1ZXVlZD0wLGk9aC5lbXB0eS5maXJlLGguZW1wdHkuZmlyZT1mdW5jdGlvbigpe2gudW5xdWV1ZWR8fGkoKX0pLGgudW5xdWV1ZWQrKyxsLmFsd2F5cyhmdW5jdGlvbigpe2wuYWx3YXlzKGZ1bmN0aW9uKCl7aC51bnF1ZXVlZC0tLG4ucXVldWUoYSwiZngiKS5sZW5ndGh8fGguZW1wdHkuZmlyZSgpfSl9KSksMT09PWEubm9kZVR5cGUmJigiaGVpZ2h0ImluIGJ8fCJ3aWR0aCJpbiBiKSYmKGMub3ZlcmZsb3c9W28ub3ZlcmZsb3csby5vdmVyZmxvd1gsby5vdmVyZmxvd1ldLGo9bi5jc3MoYSwiZGlzcGxheSIpLGs9Im5vbmUiPT09aj9MLmdldChhLCJvbGRkaXNwbGF5Iil8fHRiKGEubm9kZU5hbWUpOmosImlubGluZSI9PT1rJiYibm9uZSI9PT1uLmNzcyhhLCJmbG9hdCIpJiYoby5kaXNwbGF5PSJpbmxpbmUtYmxvY2siKSksYy5vdmVyZmxvdyYmKG8ub3ZlcmZsb3c9ImhpZGRlbiIsbC5hbHdheXMoZnVuY3Rpb24oKXtvLm92ZXJmbG93PWMub3ZlcmZsb3dbMF0sby5vdmVyZmxvd1g9Yy5vdmVyZmxvd1sxXSxvLm92ZXJmbG93WT1jLm92ZXJmbG93WzJdfSkpO2ZvcihkIGluIGIpaWYoZT1iW2RdLE5iLmV4ZWMoZSkpe2lmKGRlbGV0ZSBiW2RdLGY9Znx8InRvZ2dsZSI9PT1lLGU9PT0ocD8iaGlkZSI6InNob3ciKSl7aWYoInNob3ciIT09ZXx8IXF8fHZvaWQgMD09PXFbZF0pY29udGludWU7cD0hMH1tW2RdPXEmJnFbZF18fG4uc3R5bGUoYSxkKX1lbHNlIGo9dm9pZCAwO2lmKG4uaXNFbXB0eU9iamVjdChtKSkiaW5saW5lIj09PSgibm9uZSI9PT1qP3RiKGEubm9kZU5hbWUpOmopJiYoby5kaXNwbGF5PWopO2Vsc2V7cT8iaGlkZGVuImluIHEmJihwPXEuaGlkZGVuKTpxPUwuYWNjZXNzKGEsImZ4c2hvdyIse30pLGYmJihxLmhpZGRlbj0hcCkscD9uKGEpLnNob3coKTpsLmRvbmUoZnVuY3Rpb24oKXtuKGEpLmhpZGUoKX0pLGwuZG9uZShmdW5jdGlvbigpe3ZhciBiO0wucmVtb3ZlKGEsImZ4c2hvdyIpO2ZvcihiIGluIG0pbi5zdHlsZShhLGIsbVtiXSl9KTtmb3IoZCBpbiBtKWc9VWIocD9xW2RdOjAsZCxsKSxkIGluIHF8fChxW2RdPWcuc3RhcnQscCYmKGcuZW5kPWcuc3RhcnQsZy5zdGFydD0id2lkdGgiPT09ZHx8ImhlaWdodCI9PT1kPzE6MCkpfX1mdW5jdGlvbiBXYihhLGIpe3ZhciBjLGQsZSxmLGc7Zm9yKGMgaW4gYSlpZihkPW4uY2FtZWxDYXNlKGMpLGU9YltkXSxmPWFbY10sbi5pc0FycmF5KGYpJiYoZT1mWzFdLGY9YVtjXT1mWzBdKSxjIT09ZCYmKGFbZF09ZixkZWxldGUgYVtjXSksZz1uLmNzc0hvb2tzW2RdLGcmJiJleHBhbmQiaW4gZyl7Zj1nLmV4cGFuZChmKSxkZWxldGUgYVtkXTtmb3IoYyBpbiBmKWMgaW4gYXx8KGFbY109ZltjXSxiW2NdPWUpfWVsc2UgYltkXT1lfWZ1bmN0aW9uIFhiKGEsYixjKXt2YXIgZCxlLGY9MCxnPVFiLmxlbmd0aCxoPW4uRGVmZXJyZWQoKS5hbHdheXMoZnVuY3Rpb24oKXtkZWxldGUgaS5lbGVtfSksaT1mdW5jdGlvbigpe2lmKGUpcmV0dXJuITE7Zm9yKHZhciBiPUxifHxTYigpLGM9TWF0aC5tYXgoMCxqLnN0YXJ0VGltZStqLmR1cmF0aW9uLWIpLGQ9Yy9qLmR1cmF0aW9ufHwwLGY9MS1kLGc9MCxpPWoudHdlZW5zLmxlbmd0aDtpPmc7ZysrKWoudHdlZW5zW2ddLnJ1bihmKTtyZXR1cm4gaC5ub3RpZnlXaXRoKGEsW2osZixjXSksMT5mJiZpP2M6KGgucmVzb2x2ZVdpdGgoYSxbal0pLCExKX0saj1oLnByb21pc2Uoe2VsZW06YSxwcm9wczpuLmV4dGVuZCh7fSxiKSxvcHRzOm4uZXh0ZW5kKCEwLHtzcGVjaWFsRWFzaW5nOnt9fSxjKSxvcmlnaW5hbFByb3BlcnRpZXM6YixvcmlnaW5hbE9wdGlvbnM6YyxzdGFydFRpbWU6TGJ8fFNiKCksZHVyYXRpb246Yy5kdXJhdGlvbix0d2VlbnM6W10sY3JlYXRlVHdlZW46ZnVuY3Rpb24oYixjKXt2YXIgZD1uLlR3ZWVuKGEsai5vcHRzLGIsYyxqLm9wdHMuc3BlY2lhbEVhc2luZ1tiXXx8ai5vcHRzLmVhc2luZyk7cmV0dXJuIGoudHdlZW5zLnB1c2goZCksZH0sc3RvcDpmdW5jdGlvbihiKXt2YXIgYz0wLGQ9Yj9qLnR3ZWVucy5sZW5ndGg6MDtpZihlKXJldHVybiB0aGlzO2ZvcihlPSEwO2Q+YztjKyspai50d2VlbnNbY10ucnVuKDEpO3JldHVybiBiP2gucmVzb2x2ZVdpdGgoYSxbaixiXSk6aC5yZWplY3RXaXRoKGEsW2osYl0pLHRoaXN9fSksaz1qLnByb3BzO2ZvcihXYihrLGoub3B0cy5zcGVjaWFsRWFzaW5nKTtnPmY7ZisrKWlmKGQ9UWJbZl0uY2FsbChqLGEsayxqLm9wdHMpKXJldHVybiBkO3JldHVybiBuLm1hcChrLFViLGopLG4uaXNGdW5jdGlvbihqLm9wdHMuc3RhcnQpJiZqLm9wdHMuc3RhcnQuY2FsbChhLGopLG4uZngudGltZXIobi5leHRlbmQoaSx7ZWxlbTphLGFuaW06aixxdWV1ZTpqLm9wdHMucXVldWV9KSksai5wcm9ncmVzcyhqLm9wdHMucHJvZ3Jlc3MpLmRvbmUoai5vcHRzLmRvbmUsai5vcHRzLmNvbXBsZXRlKS5mYWlsKGoub3B0cy5mYWlsKS5hbHdheXMoai5vcHRzLmFsd2F5cyl9bi5BbmltYXRpb249bi5leHRlbmQoWGIse3R3ZWVuZXI6ZnVuY3Rpb24oYSxiKXtuLmlzRnVuY3Rpb24oYSk/KGI9YSxhPVsiKiJdKTphPWEuc3BsaXQoIiAiKTtmb3IodmFyIGMsZD0wLGU9YS5sZW5ndGg7ZT5kO2QrKyljPWFbZF0sUmJbY109UmJbY118fFtdLFJiW2NdLnVuc2hpZnQoYil9LHByZWZpbHRlcjpmdW5jdGlvbihhLGIpe2I/UWIudW5zaGlmdChhKTpRYi5wdXNoKGEpfX0pLG4uc3BlZWQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEmJiJvYmplY3QiPT10eXBlb2YgYT9uLmV4dGVuZCh7fSxhKTp7Y29tcGxldGU6Y3x8IWMmJmJ8fG4uaXNGdW5jdGlvbihhKSYmYSxkdXJhdGlvbjphLGVhc2luZzpjJiZifHxiJiYhbi5pc0Z1bmN0aW9uKGIpJiZifTtyZXR1cm4gZC5kdXJhdGlvbj1uLmZ4Lm9mZj8wOiJudW1iZXIiPT10eXBlb2YgZC5kdXJhdGlvbj9kLmR1cmF0aW9uOmQuZHVyYXRpb24gaW4gbi5meC5zcGVlZHM/bi5meC5zcGVlZHNbZC5kdXJhdGlvbl06bi5meC5zcGVlZHMuX2RlZmF1bHQsKG51bGw9PWQucXVldWV8fGQucXVldWU9PT0hMCkmJihkLnF1ZXVlPSJmeCIpLGQub2xkPWQuY29tcGxldGUsZC5jb21wbGV0ZT1mdW5jdGlvbigpe24uaXNGdW5jdGlvbihkLm9sZCkmJmQub2xkLmNhbGwodGhpcyksZC5xdWV1ZSYmbi5kZXF1ZXVlKHRoaXMsZC5xdWV1ZSl9LGR9LG4uZm4uZXh0ZW5kKHtmYWRlVG86ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIHRoaXMuZmlsdGVyKFMpLmNzcygib3BhY2l0eSIsMCkuc2hvdygpLmVuZCgpLmFuaW1hdGUoe29wYWNpdHk6Yn0sYSxjLGQpfSxhbmltYXRlOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPW4uaXNFbXB0eU9iamVjdChhKSxmPW4uc3BlZWQoYixjLGQpLGc9ZnVuY3Rpb24oKXt2YXIgYj1YYih0aGlzLG4uZXh0ZW5kKHt9LGEpLGYpOyhlfHxMLmdldCh0aGlzLCJmaW5pc2giKSkmJmIuc3RvcCghMCl9O3JldHVybiBnLmZpbmlzaD1nLGV8fGYucXVldWU9PT0hMT90aGlzLmVhY2goZyk6dGhpcy5xdWV1ZShmLnF1ZXVlLGcpfSxzdG9wOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1mdW5jdGlvbihhKXt2YXIgYj1hLnN0b3A7ZGVsZXRlIGEuc3RvcCxiKGMpfTtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGEmJihjPWIsYj1hLGE9dm9pZCAwKSxiJiZhIT09ITEmJnRoaXMucXVldWUoYXx8ImZ4IixbXSksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGI9ITAsZT1udWxsIT1hJiZhKyJxdWV1ZUhvb2tzIixmPW4udGltZXJzLGc9TC5nZXQodGhpcyk7aWYoZSlnW2VdJiZnW2VdLnN0b3AmJmQoZ1tlXSk7ZWxzZSBmb3IoZSBpbiBnKWdbZV0mJmdbZV0uc3RvcCYmUGIudGVzdChlKSYmZChnW2VdKTtmb3IoZT1mLmxlbmd0aDtlLS07KWZbZV0uZWxlbSE9PXRoaXN8fG51bGwhPWEmJmZbZV0ucXVldWUhPT1hfHwoZltlXS5hbmltLnN0b3AoYyksYj0hMSxmLnNwbGljZShlLDEpKTsoYnx8IWMpJiZuLmRlcXVldWUodGhpcyxhKX0pfSxmaW5pc2g6ZnVuY3Rpb24oYSl7cmV0dXJuIGEhPT0hMSYmKGE9YXx8ImZ4IiksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGIsYz1MLmdldCh0aGlzKSxkPWNbYSsicXVldWUiXSxlPWNbYSsicXVldWVIb29rcyJdLGY9bi50aW1lcnMsZz1kP2QubGVuZ3RoOjA7Zm9yKGMuZmluaXNoPSEwLG4ucXVldWUodGhpcyxhLFtdKSxlJiZlLnN0b3AmJmUuc3RvcC5jYWxsKHRoaXMsITApLGI9Zi5sZW5ndGg7Yi0tOylmW2JdLmVsZW09PT10aGlzJiZmW2JdLnF1ZXVlPT09YSYmKGZbYl0uYW5pbS5zdG9wKCEwKSxmLnNwbGljZShiLDEpKTtmb3IoYj0wO2c+YjtiKyspZFtiXSYmZFtiXS5maW5pc2gmJmRbYl0uZmluaXNoLmNhbGwodGhpcyk7ZGVsZXRlIGMuZmluaXNofSl9fSksbi5lYWNoKFsidG9nZ2xlIiwic2hvdyIsImhpZGUiXSxmdW5jdGlvbihhLGIpe3ZhciBjPW4uZm5bYl07bi5mbltiXT1mdW5jdGlvbihhLGQsZSl7cmV0dXJuIG51bGw9PWF8fCJib29sZWFuIj09dHlwZW9mIGE/Yy5hcHBseSh0aGlzLGFyZ3VtZW50cyk6dGhpcy5hbmltYXRlKFRiKGIsITApLGEsZCxlKX19KSxuLmVhY2goe3NsaWRlRG93bjpUYigic2hvdyIpLHNsaWRlVXA6VGIoImhpZGUiKSxzbGlkZVRvZ2dsZTpUYigidG9nZ2xlIiksZmFkZUluOntvcGFjaXR5OiJzaG93In0sZmFkZU91dDp7b3BhY2l0eToiaGlkZSJ9LGZhZGVUb2dnbGU6e29wYWNpdHk6InRvZ2dsZSJ9fSxmdW5jdGlvbihhLGIpe24uZm5bYV09ZnVuY3Rpb24oYSxjLGQpe3JldHVybiB0aGlzLmFuaW1hdGUoYixhLGMsZCl9fSksbi50aW1lcnM9W10sbi5meC50aWNrPWZ1bmN0aW9uKCl7dmFyIGEsYj0wLGM9bi50aW1lcnM7Zm9yKExiPW4ubm93KCk7YjxjLmxlbmd0aDtiKyspYT1jW2JdLGEoKXx8Y1tiXSE9PWF8fGMuc3BsaWNlKGItLSwxKTtjLmxlbmd0aHx8bi5meC5zdG9wKCksTGI9dm9pZCAwfSxuLmZ4LnRpbWVyPWZ1bmN0aW9uKGEpe24udGltZXJzLnB1c2goYSksYSgpP24uZnguc3RhcnQoKTpuLnRpbWVycy5wb3AoKX0sbi5meC5pbnRlcnZhbD0xMyxuLmZ4LnN0YXJ0PWZ1bmN0aW9uKCl7TWJ8fChNYj1zZXRJbnRlcnZhbChuLmZ4LnRpY2ssbi5meC5pbnRlcnZhbCkpfSxuLmZ4LnN0b3A9ZnVuY3Rpb24oKXtjbGVhckludGVydmFsKE1iKSxNYj1udWxsfSxuLmZ4LnNwZWVkcz17c2xvdzo2MDAsZmFzdDoyMDAsX2RlZmF1bHQ6NDAwfSxuLmZuLmRlbGF5PWZ1bmN0aW9uKGEsYil7cmV0dXJuIGE9bi5meD9uLmZ4LnNwZWVkc1thXXx8YTphLGI9Ynx8ImZ4Iix0aGlzLnF1ZXVlKGIsZnVuY3Rpb24oYixjKXt2YXIgZD1zZXRUaW1lb3V0KGIsYSk7Yy5zdG9wPWZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KGQpfX0pfSxmdW5jdGlvbigpe3ZhciBhPWwuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSxiPWwuY3JlYXRlRWxlbWVudCgic2VsZWN0IiksYz1iLmFwcGVuZENoaWxkKGwuY3JlYXRlRWxlbWVudCgib3B0aW9uIikpO2EudHlwZT0iY2hlY2tib3giLGsuY2hlY2tPbj0iIiE9PWEudmFsdWUsay5vcHRTZWxlY3RlZD1jLnNlbGVjdGVkLGIuZGlzYWJsZWQ9ITAsay5vcHREaXNhYmxlZD0hYy5kaXNhYmxlZCxhPWwuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSxhLnZhbHVlPSJ0IixhLnR5cGU9InJhZGlvIixrLnJhZGlvVmFsdWU9InQiPT09YS52YWx1ZX0oKTt2YXIgWWIsWmIsJGI9bi5leHByLmF0dHJIYW5kbGU7bi5mbi5leHRlbmQoe2F0dHI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gSih0aGlzLG4uYXR0cixhLGIsYXJndW1lbnRzLmxlbmd0aD4xKX0scmVtb3ZlQXR0cjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7bi5yZW1vdmVBdHRyKHRoaXMsYSl9KX19KSxuLmV4dGVuZCh7YXR0cjpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmPWEubm9kZVR5cGU7aWYoYSYmMyE9PWYmJjghPT1mJiYyIT09ZilyZXR1cm4gdHlwZW9mIGEuZ2V0QXR0cmlidXRlPT09VT9uLnByb3AoYSxiLGMpOigxPT09ZiYmbi5pc1hNTERvYyhhKXx8KGI9Yi50b0xvd2VyQ2FzZSgpLGQ9bi5hdHRySG9va3NbYl18fChuLmV4cHIubWF0Y2guYm9vbC50ZXN0KGIpP1piOlliKSksdm9pZCAwPT09Yz9kJiYiZ2V0ImluIGQmJm51bGwhPT0oZT1kLmdldChhLGIpKT9lOihlPW4uZmluZC5hdHRyKGEsYiksbnVsbD09ZT92b2lkIDA6ZSk6bnVsbCE9PWM/ZCYmInNldCJpbiBkJiZ2b2lkIDAhPT0oZT1kLnNldChhLGMsYikpP2U6KGEuc2V0QXR0cmlidXRlKGIsYysiIiksYyk6dm9pZCBuLnJlbW92ZUF0dHIoYSxiKSkKfSxyZW1vdmVBdHRyOmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlPTAsZj1iJiZiLm1hdGNoKEUpO2lmKGYmJjE9PT1hLm5vZGVUeXBlKXdoaWxlKGM9ZltlKytdKWQ9bi5wcm9wRml4W2NdfHxjLG4uZXhwci5tYXRjaC5ib29sLnRlc3QoYykmJihhW2RdPSExKSxhLnJlbW92ZUF0dHJpYnV0ZShjKX0sYXR0ckhvb2tzOnt0eXBlOntzZXQ6ZnVuY3Rpb24oYSxiKXtpZighay5yYWRpb1ZhbHVlJiYicmFkaW8iPT09YiYmbi5ub2RlTmFtZShhLCJpbnB1dCIpKXt2YXIgYz1hLnZhbHVlO3JldHVybiBhLnNldEF0dHJpYnV0ZSgidHlwZSIsYiksYyYmKGEudmFsdWU9YyksYn19fX19KSxaYj17c2V0OmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYj09PSExP24ucmVtb3ZlQXR0cihhLGMpOmEuc2V0QXR0cmlidXRlKGMsYyksY319LG4uZWFjaChuLmV4cHIubWF0Y2guYm9vbC5zb3VyY2UubWF0Y2goL1x3Ky9nKSxmdW5jdGlvbihhLGIpe3ZhciBjPSRiW2JdfHxuLmZpbmQuYXR0cjskYltiXT1mdW5jdGlvbihhLGIsZCl7dmFyIGUsZjtyZXR1cm4gZHx8KGY9JGJbYl0sJGJbYl09ZSxlPW51bGwhPWMoYSxiLGQpP2IudG9Mb3dlckNhc2UoKTpudWxsLCRiW2JdPWYpLGV9fSk7dmFyIF9iPS9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbikkL2k7bi5mbi5leHRlbmQoe3Byb3A6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gSih0aGlzLG4ucHJvcCxhLGIsYXJndW1lbnRzLmxlbmd0aD4xKX0scmVtb3ZlUHJvcDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZGVsZXRlIHRoaXNbbi5wcm9wRml4W2FdfHxhXX0pfX0pLG4uZXh0ZW5kKHtwcm9wRml4OnsiZm9yIjoiaHRtbEZvciIsImNsYXNzIjoiY2xhc3NOYW1lIn0scHJvcDpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmLGc9YS5ub2RlVHlwZTtpZihhJiYzIT09ZyYmOCE9PWcmJjIhPT1nKXJldHVybiBmPTEhPT1nfHwhbi5pc1hNTERvYyhhKSxmJiYoYj1uLnByb3BGaXhbYl18fGIsZT1uLnByb3BIb29rc1tiXSksdm9pZCAwIT09Yz9lJiYic2V0ImluIGUmJnZvaWQgMCE9PShkPWUuc2V0KGEsYyxiKSk/ZDphW2JdPWM6ZSYmImdldCJpbiBlJiZudWxsIT09KGQ9ZS5nZXQoYSxiKSk/ZDphW2JdfSxwcm9wSG9va3M6e3RhYkluZGV4OntnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuaGFzQXR0cmlidXRlKCJ0YWJpbmRleCIpfHxfYi50ZXN0KGEubm9kZU5hbWUpfHxhLmhyZWY/YS50YWJJbmRleDotMX19fX0pLGsub3B0U2VsZWN0ZWR8fChuLnByb3BIb29rcy5zZWxlY3RlZD17Z2V0OmZ1bmN0aW9uKGEpe3ZhciBiPWEucGFyZW50Tm9kZTtyZXR1cm4gYiYmYi5wYXJlbnROb2RlJiZiLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCxudWxsfX0pLG4uZWFjaChbInRhYkluZGV4IiwicmVhZE9ubHkiLCJtYXhMZW5ndGgiLCJjZWxsU3BhY2luZyIsImNlbGxQYWRkaW5nIiwicm93U3BhbiIsImNvbFNwYW4iLCJ1c2VNYXAiLCJmcmFtZUJvcmRlciIsImNvbnRlbnRFZGl0YWJsZSJdLGZ1bmN0aW9uKCl7bi5wcm9wRml4W3RoaXMudG9Mb3dlckNhc2UoKV09dGhpc30pO3ZhciBhYz0vW1x0XHJcblxmXS9nO24uZm4uZXh0ZW5kKHthZGRDbGFzczpmdW5jdGlvbihhKXt2YXIgYixjLGQsZSxmLGcsaD0ic3RyaW5nIj09dHlwZW9mIGEmJmEsaT0wLGo9dGhpcy5sZW5ndGg7aWYobi5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYil7bih0aGlzKS5hZGRDbGFzcyhhLmNhbGwodGhpcyxiLHRoaXMuY2xhc3NOYW1lKSl9KTtpZihoKWZvcihiPShhfHwiIikubWF0Y2goRSl8fFtdO2o+aTtpKyspaWYoYz10aGlzW2ldLGQ9MT09PWMubm9kZVR5cGUmJihjLmNsYXNzTmFtZT8oIiAiK2MuY2xhc3NOYW1lKyIgIikucmVwbGFjZShhYywiICIpOiIgIikpe2Y9MDt3aGlsZShlPWJbZisrXSlkLmluZGV4T2YoIiAiK2UrIiAiKTwwJiYoZCs9ZSsiICIpO2c9bi50cmltKGQpLGMuY2xhc3NOYW1lIT09ZyYmKGMuY2xhc3NOYW1lPWcpfXJldHVybiB0aGlzfSxyZW1vdmVDbGFzczpmdW5jdGlvbihhKXt2YXIgYixjLGQsZSxmLGcsaD0wPT09YXJndW1lbnRzLmxlbmd0aHx8InN0cmluZyI9PXR5cGVvZiBhJiZhLGk9MCxqPXRoaXMubGVuZ3RoO2lmKG4uaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe24odGhpcykucmVtb3ZlQ2xhc3MoYS5jYWxsKHRoaXMsYix0aGlzLmNsYXNzTmFtZSkpfSk7aWYoaClmb3IoYj0oYXx8IiIpLm1hdGNoKEUpfHxbXTtqPmk7aSsrKWlmKGM9dGhpc1tpXSxkPTE9PT1jLm5vZGVUeXBlJiYoYy5jbGFzc05hbWU/KCIgIitjLmNsYXNzTmFtZSsiICIpLnJlcGxhY2UoYWMsIiAiKToiIikpe2Y9MDt3aGlsZShlPWJbZisrXSl3aGlsZShkLmluZGV4T2YoIiAiK2UrIiAiKT49MClkPWQucmVwbGFjZSgiICIrZSsiICIsIiAiKTtnPWE/bi50cmltKGQpOiIiLGMuY2xhc3NOYW1lIT09ZyYmKGMuY2xhc3NOYW1lPWcpfXJldHVybiB0aGlzfSx0b2dnbGVDbGFzczpmdW5jdGlvbihhLGIpe3ZhciBjPXR5cGVvZiBhO3JldHVybiJib29sZWFuIj09dHlwZW9mIGImJiJzdHJpbmciPT09Yz9iP3RoaXMuYWRkQ2xhc3MoYSk6dGhpcy5yZW1vdmVDbGFzcyhhKTp0aGlzLmVhY2gobi5pc0Z1bmN0aW9uKGEpP2Z1bmN0aW9uKGMpe24odGhpcykudG9nZ2xlQ2xhc3MoYS5jYWxsKHRoaXMsYyx0aGlzLmNsYXNzTmFtZSxiKSxiKX06ZnVuY3Rpb24oKXtpZigic3RyaW5nIj09PWMpe3ZhciBiLGQ9MCxlPW4odGhpcyksZj1hLm1hdGNoKEUpfHxbXTt3aGlsZShiPWZbZCsrXSllLmhhc0NsYXNzKGIpP2UucmVtb3ZlQ2xhc3MoYik6ZS5hZGRDbGFzcyhiKX1lbHNlKGM9PT1VfHwiYm9vbGVhbiI9PT1jKSYmKHRoaXMuY2xhc3NOYW1lJiZMLnNldCh0aGlzLCJfX2NsYXNzTmFtZV9fIix0aGlzLmNsYXNzTmFtZSksdGhpcy5jbGFzc05hbWU9dGhpcy5jbGFzc05hbWV8fGE9PT0hMT8iIjpMLmdldCh0aGlzLCJfX2NsYXNzTmFtZV9fIil8fCIiKX0pfSxoYXNDbGFzczpmdW5jdGlvbihhKXtmb3IodmFyIGI9IiAiK2ErIiAiLGM9MCxkPXRoaXMubGVuZ3RoO2Q+YztjKyspaWYoMT09PXRoaXNbY10ubm9kZVR5cGUmJigiICIrdGhpc1tjXS5jbGFzc05hbWUrIiAiKS5yZXBsYWNlKGFjLCIgIikuaW5kZXhPZihiKT49MClyZXR1cm4hMDtyZXR1cm4hMX19KTt2YXIgYmM9L1xyL2c7bi5mbi5leHRlbmQoe3ZhbDpmdW5jdGlvbihhKXt2YXIgYixjLGQsZT10aGlzWzBdO3tpZihhcmd1bWVudHMubGVuZ3RoKXJldHVybiBkPW4uaXNGdW5jdGlvbihhKSx0aGlzLmVhY2goZnVuY3Rpb24oYyl7dmFyIGU7MT09PXRoaXMubm9kZVR5cGUmJihlPWQ/YS5jYWxsKHRoaXMsYyxuKHRoaXMpLnZhbCgpKTphLG51bGw9PWU/ZT0iIjoibnVtYmVyIj09dHlwZW9mIGU/ZSs9IiI6bi5pc0FycmF5KGUpJiYoZT1uLm1hcChlLGZ1bmN0aW9uKGEpe3JldHVybiBudWxsPT1hPyIiOmErIiJ9KSksYj1uLnZhbEhvb2tzW3RoaXMudHlwZV18fG4udmFsSG9va3NbdGhpcy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSxiJiYic2V0ImluIGImJnZvaWQgMCE9PWIuc2V0KHRoaXMsZSwidmFsdWUiKXx8KHRoaXMudmFsdWU9ZSkpfSk7aWYoZSlyZXR1cm4gYj1uLnZhbEhvb2tzW2UudHlwZV18fG4udmFsSG9va3NbZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSxiJiYiZ2V0ImluIGImJnZvaWQgMCE9PShjPWIuZ2V0KGUsInZhbHVlIikpP2M6KGM9ZS52YWx1ZSwic3RyaW5nIj09dHlwZW9mIGM/Yy5yZXBsYWNlKGJjLCIiKTpudWxsPT1jPyIiOmMpfX19KSxuLmV4dGVuZCh7dmFsSG9va3M6e29wdGlvbjp7Z2V0OmZ1bmN0aW9uKGEpe3ZhciBiPW4uZmluZC5hdHRyKGEsInZhbHVlIik7cmV0dXJuIG51bGwhPWI/YjpuLnRyaW0obi50ZXh0KGEpKX19LHNlbGVjdDp7Z2V0OmZ1bmN0aW9uKGEpe2Zvcih2YXIgYixjLGQ9YS5vcHRpb25zLGU9YS5zZWxlY3RlZEluZGV4LGY9InNlbGVjdC1vbmUiPT09YS50eXBlfHwwPmUsZz1mP251bGw6W10saD1mP2UrMTpkLmxlbmd0aCxpPTA+ZT9oOmY/ZTowO2g+aTtpKyspaWYoYz1kW2ldLCEoIWMuc2VsZWN0ZWQmJmkhPT1lfHwoay5vcHREaXNhYmxlZD9jLmRpc2FibGVkOm51bGwhPT1jLmdldEF0dHJpYnV0ZSgiZGlzYWJsZWQiKSl8fGMucGFyZW50Tm9kZS5kaXNhYmxlZCYmbi5ub2RlTmFtZShjLnBhcmVudE5vZGUsIm9wdGdyb3VwIikpKXtpZihiPW4oYykudmFsKCksZilyZXR1cm4gYjtnLnB1c2goYil9cmV0dXJuIGd9LHNldDpmdW5jdGlvbihhLGIpe3ZhciBjLGQsZT1hLm9wdGlvbnMsZj1uLm1ha2VBcnJheShiKSxnPWUubGVuZ3RoO3doaWxlKGctLSlkPWVbZ10sKGQuc2VsZWN0ZWQ9bi5pbkFycmF5KGQudmFsdWUsZik+PTApJiYoYz0hMCk7cmV0dXJuIGN8fChhLnNlbGVjdGVkSW5kZXg9LTEpLGZ9fX19KSxuLmVhY2goWyJyYWRpbyIsImNoZWNrYm94Il0sZnVuY3Rpb24oKXtuLnZhbEhvb2tzW3RoaXNdPXtzZXQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbi5pc0FycmF5KGIpP2EuY2hlY2tlZD1uLmluQXJyYXkobihhKS52YWwoKSxiKT49MDp2b2lkIDB9fSxrLmNoZWNrT258fChuLnZhbEhvb2tzW3RoaXNdLmdldD1mdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09PWEuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpPyJvbiI6YS52YWx1ZX0pfSksbi5lYWNoKCJibHVyIGZvY3VzIGZvY3VzaW4gZm9jdXNvdXQgbG9hZCByZXNpemUgc2Nyb2xsIHVubG9hZCBjbGljayBkYmxjbGljayBtb3VzZWRvd24gbW91c2V1cCBtb3VzZW1vdmUgbW91c2VvdmVyIG1vdXNlb3V0IG1vdXNlZW50ZXIgbW91c2VsZWF2ZSBjaGFuZ2Ugc2VsZWN0IHN1Ym1pdCBrZXlkb3duIGtleXByZXNzIGtleXVwIGVycm9yIGNvbnRleHRtZW51Ii5zcGxpdCgiICIpLGZ1bmN0aW9uKGEsYil7bi5mbltiXT1mdW5jdGlvbihhLGMpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjA/dGhpcy5vbihiLG51bGwsYSxjKTp0aGlzLnRyaWdnZXIoYil9fSksbi5mbi5leHRlbmQoe2hvdmVyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMubW91c2VlbnRlcihhKS5tb3VzZWxlYXZlKGJ8fGEpfSxiaW5kOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gdGhpcy5vbihhLG51bGwsYixjKX0sdW5iaW5kOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMub2ZmKGEsbnVsbCxiKX0sZGVsZWdhdGU6ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIHRoaXMub24oYixhLGMsZCl9LHVuZGVsZWdhdGU6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD90aGlzLm9mZihhLCIqKiIpOnRoaXMub2ZmKGIsYXx8IioqIixjKX19KTt2YXIgY2M9bi5ub3coKSxkYz0vXD8vO24ucGFyc2VKU09OPWZ1bmN0aW9uKGEpe3JldHVybiBKU09OLnBhcnNlKGErIiIpfSxuLnBhcnNlWE1MPWZ1bmN0aW9uKGEpe3ZhciBiLGM7aWYoIWF8fCJzdHJpbmciIT10eXBlb2YgYSlyZXR1cm4gbnVsbDt0cnl7Yz1uZXcgRE9NUGFyc2VyLGI9Yy5wYXJzZUZyb21TdHJpbmcoYSwidGV4dC94bWwiKX1jYXRjaChkKXtiPXZvaWQgMH1yZXR1cm4oIWJ8fGIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInBhcnNlcmVycm9yIikubGVuZ3RoKSYmbi5lcnJvcigiSW52YWxpZCBYTUw6ICIrYSksYn07dmFyIGVjLGZjLGdjPS8jLiokLyxoYz0vKFs/Jl0pXz1bXiZdKi8saWM9L14oLio/KTpbIFx0XSooW15cclxuXSopJC9nbSxqYz0vXig/OmFib3V0fGFwcHxhcHAtc3RvcmFnZXwuKy1leHRlbnNpb258ZmlsZXxyZXN8d2lkZ2V0KTokLyxrYz0vXig/OkdFVHxIRUFEKSQvLGxjPS9eXC9cLy8sbWM9L14oW1x3ListXSs6KSg/OlwvXC8oPzpbXlwvPyNdKkB8KShbXlwvPyM6XSopKD86OihcZCspfCl8KS8sbmM9e30sb2M9e30scGM9IiovIi5jb25jYXQoIioiKTt0cnl7ZmM9bG9jYXRpb24uaHJlZn1jYXRjaChxYyl7ZmM9bC5jcmVhdGVFbGVtZW50KCJhIiksZmMuaHJlZj0iIixmYz1mYy5ocmVmfWVjPW1jLmV4ZWMoZmMudG9Mb3dlckNhc2UoKSl8fFtdO2Z1bmN0aW9uIHJjKGEpe3JldHVybiBmdW5jdGlvbihiLGMpeyJzdHJpbmciIT10eXBlb2YgYiYmKGM9YixiPSIqIik7dmFyIGQsZT0wLGY9Yi50b0xvd2VyQ2FzZSgpLm1hdGNoKEUpfHxbXTtpZihuLmlzRnVuY3Rpb24oYykpd2hpbGUoZD1mW2UrK10pIisiPT09ZFswXT8oZD1kLnNsaWNlKDEpfHwiKiIsKGFbZF09YVtkXXx8W10pLnVuc2hpZnQoYykpOihhW2RdPWFbZF18fFtdKS5wdXNoKGMpfX1mdW5jdGlvbiBzYyhhLGIsYyxkKXt2YXIgZT17fSxmPWE9PT1vYztmdW5jdGlvbiBnKGgpe3ZhciBpO3JldHVybiBlW2hdPSEwLG4uZWFjaChhW2hdfHxbXSxmdW5jdGlvbihhLGgpe3ZhciBqPWgoYixjLGQpO3JldHVybiJzdHJpbmciIT10eXBlb2Yganx8Znx8ZVtqXT9mPyEoaT1qKTp2b2lkIDA6KGIuZGF0YVR5cGVzLnVuc2hpZnQoaiksZyhqKSwhMSl9KSxpfXJldHVybiBnKGIuZGF0YVR5cGVzWzBdKXx8IWVbIioiXSYmZygiKiIpfWZ1bmN0aW9uIHRjKGEsYil7dmFyIGMsZCxlPW4uYWpheFNldHRpbmdzLmZsYXRPcHRpb25zfHx7fTtmb3IoYyBpbiBiKXZvaWQgMCE9PWJbY10mJigoZVtjXT9hOmR8fChkPXt9KSlbY109YltjXSk7cmV0dXJuIGQmJm4uZXh0ZW5kKCEwLGEsZCksYX1mdW5jdGlvbiB1YyhhLGIsYyl7dmFyIGQsZSxmLGcsaD1hLmNvbnRlbnRzLGk9YS5kYXRhVHlwZXM7d2hpbGUoIioiPT09aVswXSlpLnNoaWZ0KCksdm9pZCAwPT09ZCYmKGQ9YS5taW1lVHlwZXx8Yi5nZXRSZXNwb25zZUhlYWRlcigiQ29udGVudC1UeXBlIikpO2lmKGQpZm9yKGUgaW4gaClpZihoW2VdJiZoW2VdLnRlc3QoZCkpe2kudW5zaGlmdChlKTticmVha31pZihpWzBdaW4gYylmPWlbMF07ZWxzZXtmb3IoZSBpbiBjKXtpZighaVswXXx8YS5jb252ZXJ0ZXJzW2UrIiAiK2lbMF1dKXtmPWU7YnJlYWt9Z3x8KGc9ZSl9Zj1mfHxnfXJldHVybiBmPyhmIT09aVswXSYmaS51bnNoaWZ0KGYpLGNbZl0pOnZvaWQgMH1mdW5jdGlvbiB2YyhhLGIsYyxkKXt2YXIgZSxmLGcsaCxpLGo9e30saz1hLmRhdGFUeXBlcy5zbGljZSgpO2lmKGtbMV0pZm9yKGcgaW4gYS5jb252ZXJ0ZXJzKWpbZy50b0xvd2VyQ2FzZSgpXT1hLmNvbnZlcnRlcnNbZ107Zj1rLnNoaWZ0KCk7d2hpbGUoZilpZihhLnJlc3BvbnNlRmllbGRzW2ZdJiYoY1thLnJlc3BvbnNlRmllbGRzW2ZdXT1iKSwhaSYmZCYmYS5kYXRhRmlsdGVyJiYoYj1hLmRhdGFGaWx0ZXIoYixhLmRhdGFUeXBlKSksaT1mLGY9ay5zaGlmdCgpKWlmKCIqIj09PWYpZj1pO2Vsc2UgaWYoIioiIT09aSYmaSE9PWYpe2lmKGc9altpKyIgIitmXXx8alsiKiAiK2ZdLCFnKWZvcihlIGluIGopaWYoaD1lLnNwbGl0KCIgIiksaFsxXT09PWYmJihnPWpbaSsiICIraFswXV18fGpbIiogIitoWzBdXSkpe2c9PT0hMD9nPWpbZV06altlXSE9PSEwJiYoZj1oWzBdLGsudW5zaGlmdChoWzFdKSk7YnJlYWt9aWYoZyE9PSEwKWlmKGcmJmFbInRocm93cyJdKWI9ZyhiKTtlbHNlIHRyeXtiPWcoYil9Y2F0Y2gobCl7cmV0dXJue3N0YXRlOiJwYXJzZXJlcnJvciIsZXJyb3I6Zz9sOiJObyBjb252ZXJzaW9uIGZyb20gIitpKyIgdG8gIitmfX19cmV0dXJue3N0YXRlOiJzdWNjZXNzIixkYXRhOmJ9fW4uZXh0ZW5kKHthY3RpdmU6MCxsYXN0TW9kaWZpZWQ6e30sZXRhZzp7fSxhamF4U2V0dGluZ3M6e3VybDpmYyx0eXBlOiJHRVQiLGlzTG9jYWw6amMudGVzdChlY1sxXSksZ2xvYmFsOiEwLHByb2Nlc3NEYXRhOiEwLGFzeW5jOiEwLGNvbnRlbnRUeXBlOiJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9VVRGLTgiLGFjY2VwdHM6eyIqIjpwYyx0ZXh0OiJ0ZXh0L3BsYWluIixodG1sOiJ0ZXh0L2h0bWwiLHhtbDoiYXBwbGljYXRpb24veG1sLCB0ZXh0L3htbCIsanNvbjoiYXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZhc2NyaXB0In0sY29udGVudHM6e3htbDoveG1sLyxodG1sOi9odG1sLyxqc29uOi9qc29uL30scmVzcG9uc2VGaWVsZHM6e3htbDoicmVzcG9uc2VYTUwiLHRleHQ6InJlc3BvbnNlVGV4dCIsanNvbjoicmVzcG9uc2VKU09OIn0sY29udmVydGVyczp7IiogdGV4dCI6U3RyaW5nLCJ0ZXh0IGh0bWwiOiEwLCJ0ZXh0IGpzb24iOm4ucGFyc2VKU09OLCJ0ZXh0IHhtbCI6bi5wYXJzZVhNTH0sZmxhdE9wdGlvbnM6e3VybDohMCxjb250ZXh0OiEwfX0sYWpheFNldHVwOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGI/dGModGMoYSxuLmFqYXhTZXR0aW5ncyksYik6dGMobi5hamF4U2V0dGluZ3MsYSl9LGFqYXhQcmVmaWx0ZXI6cmMobmMpLGFqYXhUcmFuc3BvcnQ6cmMob2MpLGFqYXg6ZnVuY3Rpb24oYSxiKXsib2JqZWN0Ij09dHlwZW9mIGEmJihiPWEsYT12b2lkIDApLGI9Ynx8e307dmFyIGMsZCxlLGYsZyxoLGksaixrPW4uYWpheFNldHVwKHt9LGIpLGw9ay5jb250ZXh0fHxrLG09ay5jb250ZXh0JiYobC5ub2RlVHlwZXx8bC5qcXVlcnkpP24obCk6bi5ldmVudCxvPW4uRGVmZXJyZWQoKSxwPW4uQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLHE9ay5zdGF0dXNDb2RlfHx7fSxyPXt9LHM9e30sdD0wLHU9ImNhbmNlbGVkIix2PXtyZWFkeVN0YXRlOjAsZ2V0UmVzcG9uc2VIZWFkZXI6ZnVuY3Rpb24oYSl7dmFyIGI7aWYoMj09PXQpe2lmKCFmKXtmPXt9O3doaWxlKGI9aWMuZXhlYyhlKSlmW2JbMV0udG9Mb3dlckNhc2UoKV09YlsyXX1iPWZbYS50b0xvd2VyQ2FzZSgpXX1yZXR1cm4gbnVsbD09Yj9udWxsOmJ9LGdldEFsbFJlc3BvbnNlSGVhZGVyczpmdW5jdGlvbigpe3JldHVybiAyPT09dD9lOm51bGx9LHNldFJlcXVlc3RIZWFkZXI6ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLnRvTG93ZXJDYXNlKCk7cmV0dXJuIHR8fChhPXNbY109c1tjXXx8YSxyW2FdPWIpLHRoaXN9LG92ZXJyaWRlTWltZVR5cGU6ZnVuY3Rpb24oYSl7cmV0dXJuIHR8fChrLm1pbWVUeXBlPWEpLHRoaXN9LHN0YXR1c0NvZGU6ZnVuY3Rpb24oYSl7dmFyIGI7aWYoYSlpZigyPnQpZm9yKGIgaW4gYSlxW2JdPVtxW2JdLGFbYl1dO2Vsc2Ugdi5hbHdheXMoYVt2LnN0YXR1c10pO3JldHVybiB0aGlzfSxhYm9ydDpmdW5jdGlvbihhKXt2YXIgYj1hfHx1O3JldHVybiBjJiZjLmFib3J0KGIpLHgoMCxiKSx0aGlzfX07aWYoby5wcm9taXNlKHYpLmNvbXBsZXRlPXAuYWRkLHYuc3VjY2Vzcz12LmRvbmUsdi5lcnJvcj12LmZhaWwsay51cmw9KChhfHxrLnVybHx8ZmMpKyIiKS5yZXBsYWNlKGdjLCIiKS5yZXBsYWNlKGxjLGVjWzFdKyIvLyIpLGsudHlwZT1iLm1ldGhvZHx8Yi50eXBlfHxrLm1ldGhvZHx8ay50eXBlLGsuZGF0YVR5cGVzPW4udHJpbShrLmRhdGFUeXBlfHwiKiIpLnRvTG93ZXJDYXNlKCkubWF0Y2goRSl8fFsiIl0sbnVsbD09ay5jcm9zc0RvbWFpbiYmKGg9bWMuZXhlYyhrLnVybC50b0xvd2VyQ2FzZSgpKSxrLmNyb3NzRG9tYWluPSEoIWh8fGhbMV09PT1lY1sxXSYmaFsyXT09PWVjWzJdJiYoaFszXXx8KCJodHRwOiI9PT1oWzFdPyI4MCI6IjQ0MyIpKT09PShlY1szXXx8KCJodHRwOiI9PT1lY1sxXT8iODAiOiI0NDMiKSkpKSxrLmRhdGEmJmsucHJvY2Vzc0RhdGEmJiJzdHJpbmciIT10eXBlb2Ygay5kYXRhJiYoay5kYXRhPW4ucGFyYW0oay5kYXRhLGsudHJhZGl0aW9uYWwpKSxzYyhuYyxrLGIsdiksMj09PXQpcmV0dXJuIHY7aT1rLmdsb2JhbCxpJiYwPT09bi5hY3RpdmUrKyYmbi5ldmVudC50cmlnZ2VyKCJhamF4U3RhcnQiKSxrLnR5cGU9ay50eXBlLnRvVXBwZXJDYXNlKCksay5oYXNDb250ZW50PSFrYy50ZXN0KGsudHlwZSksZD1rLnVybCxrLmhhc0NvbnRlbnR8fChrLmRhdGEmJihkPWsudXJsKz0oZGMudGVzdChkKT8iJiI6Ij8iKStrLmRhdGEsZGVsZXRlIGsuZGF0YSksay5jYWNoZT09PSExJiYoay51cmw9aGMudGVzdChkKT9kLnJlcGxhY2UoaGMsIiQxXz0iK2NjKyspOmQrKGRjLnRlc3QoZCk/IiYiOiI/IikrIl89IitjYysrKSksay5pZk1vZGlmaWVkJiYobi5sYXN0TW9kaWZpZWRbZF0mJnYuc2V0UmVxdWVzdEhlYWRlcigiSWYtTW9kaWZpZWQtU2luY2UiLG4ubGFzdE1vZGlmaWVkW2RdKSxuLmV0YWdbZF0mJnYuc2V0UmVxdWVzdEhlYWRlcigiSWYtTm9uZS1NYXRjaCIsbi5ldGFnW2RdKSksKGsuZGF0YSYmay5oYXNDb250ZW50JiZrLmNvbnRlbnRUeXBlIT09ITF8fGIuY29udGVudFR5cGUpJiZ2LnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsay5jb250ZW50VHlwZSksdi5zZXRSZXF1ZXN0SGVhZGVyKCJBY2NlcHQiLGsuZGF0YVR5cGVzWzBdJiZrLmFjY2VwdHNbay5kYXRhVHlwZXNbMF1dP2suYWNjZXB0c1trLmRhdGFUeXBlc1swXV0rKCIqIiE9PWsuZGF0YVR5cGVzWzBdPyIsICIrcGMrIjsgcT0wLjAxIjoiIik6ay5hY2NlcHRzWyIqIl0pO2ZvcihqIGluIGsuaGVhZGVycyl2LnNldFJlcXVlc3RIZWFkZXIoaixrLmhlYWRlcnNbal0pO2lmKGsuYmVmb3JlU2VuZCYmKGsuYmVmb3JlU2VuZC5jYWxsKGwsdixrKT09PSExfHwyPT09dCkpcmV0dXJuIHYuYWJvcnQoKTt1PSJhYm9ydCI7Zm9yKGogaW57c3VjY2VzczoxLGVycm9yOjEsY29tcGxldGU6MX0pdltqXShrW2pdKTtpZihjPXNjKG9jLGssYix2KSl7di5yZWFkeVN0YXRlPTEsaSYmbS50cmlnZ2VyKCJhamF4U2VuZCIsW3Ysa10pLGsuYXN5bmMmJmsudGltZW91dD4wJiYoZz1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7di5hYm9ydCgidGltZW91dCIpfSxrLnRpbWVvdXQpKTt0cnl7dD0xLGMuc2VuZChyLHgpfWNhdGNoKHcpe2lmKCEoMj50KSl0aHJvdyB3O3goLTEsdyl9fWVsc2UgeCgtMSwiTm8gVHJhbnNwb3J0Iik7ZnVuY3Rpb24geChhLGIsZixoKXt2YXIgaixyLHMsdSx3LHg9YjsyIT09dCYmKHQ9MixnJiZjbGVhclRpbWVvdXQoZyksYz12b2lkIDAsZT1ofHwiIix2LnJlYWR5U3RhdGU9YT4wPzQ6MCxqPWE+PTIwMCYmMzAwPmF8fDMwND09PWEsZiYmKHU9dWMoayx2LGYpKSx1PXZjKGssdSx2LGopLGo/KGsuaWZNb2RpZmllZCYmKHc9di5nZXRSZXNwb25zZUhlYWRlcigiTGFzdC1Nb2RpZmllZCIpLHcmJihuLmxhc3RNb2RpZmllZFtkXT13KSx3PXYuZ2V0UmVzcG9uc2VIZWFkZXIoImV0YWciKSx3JiYobi5ldGFnW2RdPXcpKSwyMDQ9PT1hfHwiSEVBRCI9PT1rLnR5cGU/eD0ibm9jb250ZW50IjozMDQ9PT1hP3g9Im5vdG1vZGlmaWVkIjooeD11LnN0YXRlLHI9dS5kYXRhLHM9dS5lcnJvcixqPSFzKSk6KHM9eCwoYXx8IXgpJiYoeD0iZXJyb3IiLDA+YSYmKGE9MCkpKSx2LnN0YXR1cz1hLHYuc3RhdHVzVGV4dD0oYnx8eCkrIiIsaj9vLnJlc29sdmVXaXRoKGwsW3IseCx2XSk6by5yZWplY3RXaXRoKGwsW3YseCxzXSksdi5zdGF0dXNDb2RlKHEpLHE9dm9pZCAwLGkmJm0udHJpZ2dlcihqPyJhamF4U3VjY2VzcyI6ImFqYXhFcnJvciIsW3YsayxqP3I6c10pLHAuZmlyZVdpdGgobCxbdix4XSksaSYmKG0udHJpZ2dlcigiYWpheENvbXBsZXRlIixbdixrXSksLS1uLmFjdGl2ZXx8bi5ldmVudC50cmlnZ2VyKCJhamF4U3RvcCIpKSl9cmV0dXJuIHZ9LGdldEpTT046ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBuLmdldChhLGIsYywianNvbiIpfSxnZXRTY3JpcHQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbi5nZXQoYSx2b2lkIDAsYiwic2NyaXB0Iil9fSksbi5lYWNoKFsiZ2V0IiwicG9zdCJdLGZ1bmN0aW9uKGEsYil7bltiXT1mdW5jdGlvbihhLGMsZCxlKXtyZXR1cm4gbi5pc0Z1bmN0aW9uKGMpJiYoZT1lfHxkLGQ9YyxjPXZvaWQgMCksbi5hamF4KHt1cmw6YSx0eXBlOmIsZGF0YVR5cGU6ZSxkYXRhOmMsc3VjY2VzczpkfSl9fSksbi5lYWNoKFsiYWpheFN0YXJ0IiwiYWpheFN0b3AiLCJhamF4Q29tcGxldGUiLCJhamF4RXJyb3IiLCJhamF4U3VjY2VzcyIsImFqYXhTZW5kIl0sZnVuY3Rpb24oYSxiKXtuLmZuW2JdPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLm9uKGIsYSl9fSksbi5fZXZhbFVybD1mdW5jdGlvbihhKXtyZXR1cm4gbi5hamF4KHt1cmw6YSx0eXBlOiJHRVQiLGRhdGFUeXBlOiJzY3JpcHQiLGFzeW5jOiExLGdsb2JhbDohMSwidGhyb3dzIjohMH0pfSxuLmZuLmV4dGVuZCh7d3JhcEFsbDpmdW5jdGlvbihhKXt2YXIgYjtyZXR1cm4gbi5pc0Z1bmN0aW9uKGEpP3RoaXMuZWFjaChmdW5jdGlvbihiKXtuKHRoaXMpLndyYXBBbGwoYS5jYWxsKHRoaXMsYikpfSk6KHRoaXNbMF0mJihiPW4oYSx0aGlzWzBdLm93bmVyRG9jdW1lbnQpLmVxKDApLmNsb25lKCEwKSx0aGlzWzBdLnBhcmVudE5vZGUmJmIuaW5zZXJ0QmVmb3JlKHRoaXNbMF0pLGIubWFwKGZ1bmN0aW9uKCl7dmFyIGE9dGhpczt3aGlsZShhLmZpcnN0RWxlbWVudENoaWxkKWE9YS5maXJzdEVsZW1lbnRDaGlsZDtyZXR1cm4gYX0pLmFwcGVuZCh0aGlzKSksdGhpcyl9LHdyYXBJbm5lcjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKG4uaXNGdW5jdGlvbihhKT9mdW5jdGlvbihiKXtuKHRoaXMpLndyYXBJbm5lcihhLmNhbGwodGhpcyxiKSl9OmZ1bmN0aW9uKCl7dmFyIGI9bih0aGlzKSxjPWIuY29udGVudHMoKTtjLmxlbmd0aD9jLndyYXBBbGwoYSk6Yi5hcHBlbmQoYSl9KX0sd3JhcDpmdW5jdGlvbihhKXt2YXIgYj1uLmlzRnVuY3Rpb24oYSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihjKXtuKHRoaXMpLndyYXBBbGwoYj9hLmNhbGwodGhpcyxjKTphKX0pfSx1bndyYXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJlbnQoKS5lYWNoKGZ1bmN0aW9uKCl7bi5ub2RlTmFtZSh0aGlzLCJib2R5Iil8fG4odGhpcykucmVwbGFjZVdpdGgodGhpcy5jaGlsZE5vZGVzKX0pLmVuZCgpfX0pLG4uZXhwci5maWx0ZXJzLmhpZGRlbj1mdW5jdGlvbihhKXtyZXR1cm4gYS5vZmZzZXRXaWR0aDw9MCYmYS5vZmZzZXRIZWlnaHQ8PTB9LG4uZXhwci5maWx0ZXJzLnZpc2libGU9ZnVuY3Rpb24oYSl7cmV0dXJuIW4uZXhwci5maWx0ZXJzLmhpZGRlbihhKX07dmFyIHdjPS8lMjAvZyx4Yz0vXFtcXSQvLHljPS9ccj9cbi9nLHpjPS9eKD86c3VibWl0fGJ1dHRvbnxpbWFnZXxyZXNldHxmaWxlKSQvaSxBYz0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxrZXlnZW4pL2k7ZnVuY3Rpb24gQmMoYSxiLGMsZCl7dmFyIGU7aWYobi5pc0FycmF5KGIpKW4uZWFjaChiLGZ1bmN0aW9uKGIsZSl7Y3x8eGMudGVzdChhKT9kKGEsZSk6QmMoYSsiWyIrKCJvYmplY3QiPT10eXBlb2YgZT9iOiIiKSsiXSIsZSxjLGQpfSk7ZWxzZSBpZihjfHwib2JqZWN0IiE9PW4udHlwZShiKSlkKGEsYik7ZWxzZSBmb3IoZSBpbiBiKUJjKGErIlsiK2UrIl0iLGJbZV0sYyxkKX1uLnBhcmFtPWZ1bmN0aW9uKGEsYil7dmFyIGMsZD1bXSxlPWZ1bmN0aW9uKGEsYil7Yj1uLmlzRnVuY3Rpb24oYik/YigpOm51bGw9PWI/IiI6YixkW2QubGVuZ3RoXT1lbmNvZGVVUklDb21wb25lbnQoYSkrIj0iK2VuY29kZVVSSUNvbXBvbmVudChiKX07aWYodm9pZCAwPT09YiYmKGI9bi5hamF4U2V0dGluZ3MmJm4uYWpheFNldHRpbmdzLnRyYWRpdGlvbmFsKSxuLmlzQXJyYXkoYSl8fGEuanF1ZXJ5JiYhbi5pc1BsYWluT2JqZWN0KGEpKW4uZWFjaChhLGZ1bmN0aW9uKCl7ZSh0aGlzLm5hbWUsdGhpcy52YWx1ZSl9KTtlbHNlIGZvcihjIGluIGEpQmMoYyxhW2NdLGIsZSk7cmV0dXJuIGQuam9pbigiJiIpLnJlcGxhY2Uod2MsIisiKX0sbi5mbi5leHRlbmQoe3NlcmlhbGl6ZTpmdW5jdGlvbigpe3JldHVybiBuLnBhcmFtKHRoaXMuc2VyaWFsaXplQXJyYXkoKSl9LHNlcmlhbGl6ZUFycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7dmFyIGE9bi5wcm9wKHRoaXMsImVsZW1lbnRzIik7cmV0dXJuIGE/bi5tYWtlQXJyYXkoYSk6dGhpc30pLmZpbHRlcihmdW5jdGlvbigpe3ZhciBhPXRoaXMudHlwZTtyZXR1cm4gdGhpcy5uYW1lJiYhbih0aGlzKS5pcygiOmRpc2FibGVkIikmJkFjLnRlc3QodGhpcy5ub2RlTmFtZSkmJiF6Yy50ZXN0KGEpJiYodGhpcy5jaGVja2VkfHwhVC50ZXN0KGEpKX0pLm1hcChmdW5jdGlvbihhLGIpe3ZhciBjPW4odGhpcykudmFsKCk7cmV0dXJuIG51bGw9PWM/bnVsbDpuLmlzQXJyYXkoYyk/bi5tYXAoYyxmdW5jdGlvbihhKXtyZXR1cm57bmFtZTpiLm5hbWUsdmFsdWU6YS5yZXBsYWNlKHljLCJcclxuIil9fSk6e25hbWU6Yi5uYW1lLHZhbHVlOmMucmVwbGFjZSh5YywiXHJcbiIpfX0pLmdldCgpfX0pLG4uYWpheFNldHRpbmdzLnhocj1mdW5jdGlvbigpe3RyeXtyZXR1cm4gbmV3IFhNTEh0dHBSZXF1ZXN0fWNhdGNoKGEpe319O3ZhciBDYz0wLERjPXt9LEVjPXswOjIwMCwxMjIzOjIwNH0sRmM9bi5hamF4U2V0dGluZ3MueGhyKCk7YS5BY3RpdmVYT2JqZWN0JiZuKGEpLm9uKCJ1bmxvYWQiLGZ1bmN0aW9uKCl7Zm9yKHZhciBhIGluIERjKURjW2FdKCl9KSxrLmNvcnM9ISFGYyYmIndpdGhDcmVkZW50aWFscyJpbiBGYyxrLmFqYXg9RmM9ISFGYyxuLmFqYXhUcmFuc3BvcnQoZnVuY3Rpb24oYSl7dmFyIGI7cmV0dXJuIGsuY29yc3x8RmMmJiFhLmNyb3NzRG9tYWluP3tzZW5kOmZ1bmN0aW9uKGMsZCl7dmFyIGUsZj1hLnhocigpLGc9KytDYztpZihmLm9wZW4oYS50eXBlLGEudXJsLGEuYXN5bmMsYS51c2VybmFtZSxhLnBhc3N3b3JkKSxhLnhockZpZWxkcylmb3IoZSBpbiBhLnhockZpZWxkcylmW2VdPWEueGhyRmllbGRzW2VdO2EubWltZVR5cGUmJmYub3ZlcnJpZGVNaW1lVHlwZSYmZi5vdmVycmlkZU1pbWVUeXBlKGEubWltZVR5cGUpLGEuY3Jvc3NEb21haW58fGNbIlgtUmVxdWVzdGVkLVdpdGgiXXx8KGNbIlgtUmVxdWVzdGVkLVdpdGgiXT0iWE1MSHR0cFJlcXVlc3QiKTtmb3IoZSBpbiBjKWYuc2V0UmVxdWVzdEhlYWRlcihlLGNbZV0pO2I9ZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKCl7YiYmKGRlbGV0ZSBEY1tnXSxiPWYub25sb2FkPWYub25lcnJvcj1udWxsLCJhYm9ydCI9PT1hP2YuYWJvcnQoKToiZXJyb3IiPT09YT9kKGYuc3RhdHVzLGYuc3RhdHVzVGV4dCk6ZChFY1tmLnN0YXR1c118fGYuc3RhdHVzLGYuc3RhdHVzVGV4dCwic3RyaW5nIj09dHlwZW9mIGYucmVzcG9uc2VUZXh0P3t0ZXh0OmYucmVzcG9uc2VUZXh0fTp2b2lkIDAsZi5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSkpfX0sZi5vbmxvYWQ9YigpLGYub25lcnJvcj1iKCJlcnJvciIpLGI9RGNbZ109YigiYWJvcnQiKTt0cnl7Zi5zZW5kKGEuaGFzQ29udGVudCYmYS5kYXRhfHxudWxsKX1jYXRjaChoKXtpZihiKXRocm93IGh9fSxhYm9ydDpmdW5jdGlvbigpe2ImJmIoKX19OnZvaWQgMH0pLG4uYWpheFNldHVwKHthY2NlcHRzOntzY3JpcHQ6InRleHQvamF2YXNjcmlwdCwgYXBwbGljYXRpb24vamF2YXNjcmlwdCwgYXBwbGljYXRpb24vZWNtYXNjcmlwdCwgYXBwbGljYXRpb24veC1lY21hc2NyaXB0In0sY29udGVudHM6e3NjcmlwdDovKD86amF2YXxlY21hKXNjcmlwdC99LGNvbnZlcnRlcnM6eyJ0ZXh0IHNjcmlwdCI6ZnVuY3Rpb24oYSl7cmV0dXJuIG4uZ2xvYmFsRXZhbChhKSxhfX19KSxuLmFqYXhQcmVmaWx0ZXIoInNjcmlwdCIsZnVuY3Rpb24oYSl7dm9pZCAwPT09YS5jYWNoZSYmKGEuY2FjaGU9ITEpLGEuY3Jvc3NEb21haW4mJihhLnR5cGU9IkdFVCIpfSksbi5hamF4VHJhbnNwb3J0KCJzY3JpcHQiLGZ1bmN0aW9uKGEpe2lmKGEuY3Jvc3NEb21haW4pe3ZhciBiLGM7cmV0dXJue3NlbmQ6ZnVuY3Rpb24oZCxlKXtiPW4oIjxzY3JpcHQ+IikucHJvcCh7YXN5bmM6ITAsY2hhcnNldDphLnNjcmlwdENoYXJzZXQsc3JjOmEudXJsfSkub24oImxvYWQgZXJyb3IiLGM9ZnVuY3Rpb24oYSl7Yi5yZW1vdmUoKSxjPW51bGwsYSYmZSgiZXJyb3IiPT09YS50eXBlPzQwNDoyMDAsYS50eXBlKX0pLGwuaGVhZC5hcHBlbmRDaGlsZChiWzBdKX0sYWJvcnQ6ZnVuY3Rpb24oKXtjJiZjKCl9fX19KTt2YXIgR2M9W10sSGM9Lyg9KVw/KD89JnwkKXxcP1w/LztuLmFqYXhTZXR1cCh7anNvbnA6ImNhbGxiYWNrIixqc29ucENhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIGE9R2MucG9wKCl8fG4uZXhwYW5kbysiXyIrY2MrKztyZXR1cm4gdGhpc1thXT0hMCxhfX0pLG4uYWpheFByZWZpbHRlcigianNvbiBqc29ucCIsZnVuY3Rpb24oYixjLGQpe3ZhciBlLGYsZyxoPWIuanNvbnAhPT0hMSYmKEhjLnRlc3QoYi51cmwpPyJ1cmwiOiJzdHJpbmciPT10eXBlb2YgYi5kYXRhJiYhKGIuY29udGVudFR5cGV8fCIiKS5pbmRleE9mKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKSYmSGMudGVzdChiLmRhdGEpJiYiZGF0YSIpO3JldHVybiBofHwianNvbnAiPT09Yi5kYXRhVHlwZXNbMF0/KGU9Yi5qc29ucENhbGxiYWNrPW4uaXNGdW5jdGlvbihiLmpzb25wQ2FsbGJhY2spP2IuanNvbnBDYWxsYmFjaygpOmIuanNvbnBDYWxsYmFjayxoP2JbaF09YltoXS5yZXBsYWNlKEhjLCIkMSIrZSk6Yi5qc29ucCE9PSExJiYoYi51cmwrPShkYy50ZXN0KGIudXJsKT8iJiI6Ij8iKStiLmpzb25wKyI9IitlKSxiLmNvbnZlcnRlcnNbInNjcmlwdCBqc29uIl09ZnVuY3Rpb24oKXtyZXR1cm4gZ3x8bi5lcnJvcihlKyIgd2FzIG5vdCBjYWxsZWQiKSxnWzBdfSxiLmRhdGFUeXBlc1swXT0ianNvbiIsZj1hW2VdLGFbZV09ZnVuY3Rpb24oKXtnPWFyZ3VtZW50c30sZC5hbHdheXMoZnVuY3Rpb24oKXthW2VdPWYsYltlXSYmKGIuanNvbnBDYWxsYmFjaz1jLmpzb25wQ2FsbGJhY2ssR2MucHVzaChlKSksZyYmbi5pc0Z1bmN0aW9uKGYpJiZmKGdbMF0pLGc9Zj12b2lkIDB9KSwic2NyaXB0Iik6dm9pZCAwfSksbi5wYXJzZUhUTUw9ZnVuY3Rpb24oYSxiLGMpe2lmKCFhfHwic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJuIG51bGw7ImJvb2xlYW4iPT10eXBlb2YgYiYmKGM9YixiPSExKSxiPWJ8fGw7dmFyIGQ9di5leGVjKGEpLGU9IWMmJltdO3JldHVybiBkP1tiLmNyZWF0ZUVsZW1lbnQoZFsxXSldOihkPW4uYnVpbGRGcmFnbWVudChbYV0sYixlKSxlJiZlLmxlbmd0aCYmbihlKS5yZW1vdmUoKSxuLm1lcmdlKFtdLGQuY2hpbGROb2RlcykpfTt2YXIgSWM9bi5mbi5sb2FkO24uZm4ubG9hZD1mdW5jdGlvbihhLGIsYyl7aWYoInN0cmluZyIhPXR5cGVvZiBhJiZJYylyZXR1cm4gSWMuYXBwbHkodGhpcyxhcmd1bWVudHMpO3ZhciBkLGUsZixnPXRoaXMsaD1hLmluZGV4T2YoIiAiKTtyZXR1cm4gaD49MCYmKGQ9bi50cmltKGEuc2xpY2UoaCkpLGE9YS5zbGljZSgwLGgpKSxuLmlzRnVuY3Rpb24oYik/KGM9YixiPXZvaWQgMCk6YiYmIm9iamVjdCI9PXR5cGVvZiBiJiYoZT0iUE9TVCIpLGcubGVuZ3RoPjAmJm4uYWpheCh7dXJsOmEsdHlwZTplLGRhdGFUeXBlOiJodG1sIixkYXRhOmJ9KS5kb25lKGZ1bmN0aW9uKGEpe2Y9YXJndW1lbnRzLGcuaHRtbChkP24oIjxkaXY+IikuYXBwZW5kKG4ucGFyc2VIVE1MKGEpKS5maW5kKGQpOmEpfSkuY29tcGxldGUoYyYmZnVuY3Rpb24oYSxiKXtnLmVhY2goYyxmfHxbYS5yZXNwb25zZVRleHQsYixhXSl9KSx0aGlzfSxuLmV4cHIuZmlsdGVycy5hbmltYXRlZD1mdW5jdGlvbihhKXtyZXR1cm4gbi5ncmVwKG4udGltZXJzLGZ1bmN0aW9uKGIpe3JldHVybiBhPT09Yi5lbGVtfSkubGVuZ3RofTt2YXIgSmM9YS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7ZnVuY3Rpb24gS2MoYSl7cmV0dXJuIG4uaXNXaW5kb3coYSk/YTo5PT09YS5ub2RlVHlwZSYmYS5kZWZhdWx0Vmlld31uLm9mZnNldD17c2V0T2Zmc2V0OmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixrPW4uY3NzKGEsInBvc2l0aW9uIiksbD1uKGEpLG09e307InN0YXRpYyI9PT1rJiYoYS5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiKSxoPWwub2Zmc2V0KCksZj1uLmNzcyhhLCJ0b3AiKSxpPW4uY3NzKGEsImxlZnQiKSxqPSgiYWJzb2x1dGUiPT09a3x8ImZpeGVkIj09PWspJiYoZitpKS5pbmRleE9mKCJhdXRvIik+LTEsaj8oZD1sLnBvc2l0aW9uKCksZz1kLnRvcCxlPWQubGVmdCk6KGc9cGFyc2VGbG9hdChmKXx8MCxlPXBhcnNlRmxvYXQoaSl8fDApLG4uaXNGdW5jdGlvbihiKSYmKGI9Yi5jYWxsKGEsYyxoKSksbnVsbCE9Yi50b3AmJihtLnRvcD1iLnRvcC1oLnRvcCtnKSxudWxsIT1iLmxlZnQmJihtLmxlZnQ9Yi5sZWZ0LWgubGVmdCtlKSwidXNpbmciaW4gYj9iLnVzaW5nLmNhbGwoYSxtKTpsLmNzcyhtKX19LG4uZm4uZXh0ZW5kKHtvZmZzZXQ6ZnVuY3Rpb24oYSl7aWYoYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdm9pZCAwPT09YT90aGlzOnRoaXMuZWFjaChmdW5jdGlvbihiKXtuLm9mZnNldC5zZXRPZmZzZXQodGhpcyxhLGIpfSk7dmFyIGIsYyxkPXRoaXNbMF0sZT17dG9wOjAsbGVmdDowfSxmPWQmJmQub3duZXJEb2N1bWVudDtpZihmKXJldHVybiBiPWYuZG9jdW1lbnRFbGVtZW50LG4uY29udGFpbnMoYixkKT8odHlwZW9mIGQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0IT09VSYmKGU9ZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSksYz1LYyhmKSx7dG9wOmUudG9wK2MucGFnZVlPZmZzZXQtYi5jbGllbnRUb3AsbGVmdDplLmxlZnQrYy5wYWdlWE9mZnNldC1iLmNsaWVudExlZnR9KTplfSxwb3NpdGlvbjpmdW5jdGlvbigpe2lmKHRoaXNbMF0pe3ZhciBhLGIsYz10aGlzWzBdLGQ9e3RvcDowLGxlZnQ6MH07cmV0dXJuImZpeGVkIj09PW4uY3NzKGMsInBvc2l0aW9uIik/Yj1jLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOihhPXRoaXMub2Zmc2V0UGFyZW50KCksYj10aGlzLm9mZnNldCgpLG4ubm9kZU5hbWUoYVswXSwiaHRtbCIpfHwoZD1hLm9mZnNldCgpKSxkLnRvcCs9bi5jc3MoYVswXSwiYm9yZGVyVG9wV2lkdGgiLCEwKSxkLmxlZnQrPW4uY3NzKGFbMF0sImJvcmRlckxlZnRXaWR0aCIsITApKSx7dG9wOmIudG9wLWQudG9wLW4uY3NzKGMsIm1hcmdpblRvcCIsITApLGxlZnQ6Yi5sZWZ0LWQubGVmdC1uLmNzcyhjLCJtYXJnaW5MZWZ0IiwhMCl9fX0sb2Zmc2V0UGFyZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vZmZzZXRQYXJlbnR8fEpjO3doaWxlKGEmJiFuLm5vZGVOYW1lKGEsImh0bWwiKSYmInN0YXRpYyI9PT1uLmNzcyhhLCJwb3NpdGlvbiIpKWE9YS5vZmZzZXRQYXJlbnQ7cmV0dXJuIGF8fEpjfSl9fSksbi5lYWNoKHtzY3JvbGxMZWZ0OiJwYWdlWE9mZnNldCIsc2Nyb2xsVG9wOiJwYWdlWU9mZnNldCJ9LGZ1bmN0aW9uKGIsYyl7dmFyIGQ9InBhZ2VZT2Zmc2V0Ij09PWM7bi5mbltiXT1mdW5jdGlvbihlKXtyZXR1cm4gSih0aGlzLGZ1bmN0aW9uKGIsZSxmKXt2YXIgZz1LYyhiKTtyZXR1cm4gdm9pZCAwPT09Zj9nP2dbY106YltlXTp2b2lkKGc/Zy5zY3JvbGxUbyhkP2EucGFnZVhPZmZzZXQ6ZixkP2Y6YS5wYWdlWU9mZnNldCk6YltlXT1mKX0sYixlLGFyZ3VtZW50cy5sZW5ndGgsbnVsbCl9fSksbi5lYWNoKFsidG9wIiwibGVmdCJdLGZ1bmN0aW9uKGEsYil7bi5jc3NIb29rc1tiXT15YihrLnBpeGVsUG9zaXRpb24sZnVuY3Rpb24oYSxjKXtyZXR1cm4gYz8oYz14YihhLGIpLHZiLnRlc3QoYyk/bihhKS5wb3NpdGlvbigpW2JdKyJweCI6Yyk6dm9pZCAwfSl9KSxuLmVhY2goe0hlaWdodDoiaGVpZ2h0IixXaWR0aDoid2lkdGgifSxmdW5jdGlvbihhLGIpe24uZWFjaCh7cGFkZGluZzoiaW5uZXIiK2EsY29udGVudDpiLCIiOiJvdXRlciIrYX0sZnVuY3Rpb24oYyxkKXtuLmZuW2RdPWZ1bmN0aW9uKGQsZSl7dmFyIGY9YXJndW1lbnRzLmxlbmd0aCYmKGN8fCJib29sZWFuIiE9dHlwZW9mIGQpLGc9Y3x8KGQ9PT0hMHx8ZT09PSEwPyJtYXJnaW4iOiJib3JkZXIiKTtyZXR1cm4gSih0aGlzLGZ1bmN0aW9uKGIsYyxkKXt2YXIgZTtyZXR1cm4gbi5pc1dpbmRvdyhiKT9iLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFsiY2xpZW50IithXTo5PT09Yi5ub2RlVHlwZT8oZT1iLmRvY3VtZW50RWxlbWVudCxNYXRoLm1heChiLmJvZHlbInNjcm9sbCIrYV0sZVsic2Nyb2xsIithXSxiLmJvZHlbIm9mZnNldCIrYV0sZVsib2Zmc2V0IithXSxlWyJjbGllbnQiK2FdKSk6dm9pZCAwPT09ZD9uLmNzcyhiLGMsZyk6bi5zdHlsZShiLGMsZCxnKX0sYixmP2Q6dm9pZCAwLGYsbnVsbCl9fSl9KSxuLmZuLnNpemU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sZW5ndGh9LG4uZm4uYW5kU2VsZj1uLmZuLmFkZEJhY2ssImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZCYmZGVmaW5lKCJqcXVlcnkiLFtdLGZ1bmN0aW9uKCl7cmV0dXJuIG59KTt2YXIgTGM9YS5qUXVlcnksTWM9YS4kO3JldHVybiBuLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oYil7cmV0dXJuIGEuJD09PW4mJihhLiQ9TWMpLGImJmEualF1ZXJ5PT09biYmKGEualF1ZXJ5PUxjKSxufSx0eXBlb2YgYj09PVUmJihhLmpRdWVyeT1hLiQ9biksbn0pOwo='></script id=script_jgg_jquery_end>

<script id=script_jgg_jqgrid_js src='data:/text/plain;base64,LyoqCioKKiBAbGljZW5zZSBHdXJpZGRvIGpxR3JpZCBKUyAtIHY1LjguNSAtIDIwMjMtMTEtMjkKKiBDb3B5cmlnaHQoYykgMjAwOCwgVG9ueSBUb21vdiwgdG9ueUB0cmlyYW5kLmNvbQoqIAoqIExpY2Vuc2U6IGh0dHA6Ly9ndXJpZGRvLm5ldC8/cGFnZV9pZD0xMDMzMzQKKi8KIWZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjsiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShbImpxdWVyeSJdLGUpOmUoalF1ZXJ5KX0oZnVuY3Rpb24oWWUpeyJ1c2Ugc3RyaWN0IjtZZS5qZ3JpZD1ZZS5qZ3JpZHx8e30sWWUuamdyaWQuaGFzT3duUHJvcGVydHkoImRlZmF1bHRzIil8fChZZS5qZ3JpZC5kZWZhdWx0cz17fSksWWUuZXh0ZW5kKFllLmpncmlkLHt2ZXJzaW9uOiI1LjguNSIsaXNOdWxsOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQmJiEwPT09dD9udWxsPT09ZTpudWxsPT1lfSx0cmltOmZ1bmN0aW9uKGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZT9lLnJlcGxhY2UoL15bXHNcdUZFRkZceEEwXSt8W1xzXHVGRUZGXHhBMF0rJC9nLCIiKTplfSxpc0Z1bmN0aW9uOmZ1bmN0aW9uKGUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlfSx0eXBlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ/bnVsbD09PWU/IltvYmplY3QgTnVsbF0iOk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKTpudWxsPT1lPyhlKyIiKS50b0xvd2VyQ2FzZSgpOiJnZW5lcmF0b3JmdW5jdGlvbiI9PT0odD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSkudG9Mb3dlckNhc2UoKSk/ImZ1bmN0aW9uIjp0Lm1hdGNoKC9eKGFycmF5fGJpZ2ludHxkYXRlfGVycm9yfGZ1bmN0aW9ufGdlbmVyYXRvcnxyZWdleHB8c3ltYm9sKSQvKT90OiJvYmplY3QiPT10eXBlb2YgZXx8ImZ1bmN0aW9uIj09dHlwZW9mIGU/Im9iamVjdCI6dHlwZW9mIGV9LGZsb2F0TnVtOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PTApLGU9cGFyc2VGbG9hdChlKSxpc05hTihlKT90OmV9LGh0bWxEZWNvZGU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJigiJm5ic3A7Ij09PWV8fCImIzE2MDsiPT09ZXx8MT09PWUubGVuZ3RoJiYxNjA9PT1lLmNoYXJDb2RlQXQoMCkpPyIiOmUmJlN0cmluZyhlKS5yZXBsYWNlKC8mZ3Q7L2csIj4iKS5yZXBsYWNlKC8mbHQ7L2csIjwiKS5yZXBsYWNlKC8mcXVvdDsvZywnIicpLnJlcGxhY2UoLyZhbXA7L2csIiYiKX0saHRtbEVuY29kZTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmU3RyaW5nKGUpLnJlcGxhY2UoLyYvZywiJmFtcDsiKS5yZXBsYWNlKC9cIi9nLCImcXVvdDsiKS5yZXBsYWNlKC88L2csIiZsdDsiKS5yZXBsYWNlKC8+L2csIiZndDsiKX0sdGVtcGxhdGU6ZnVuY3Rpb24oZSl7dmFyIG8sYT1ZZS5tYWtlQXJyYXkoYXJndW1lbnRzKS5zbGljZSgxKSxuPWEubGVuZ3RoO3JldHVybihlPVllLmpncmlkLmlzTnVsbChlKT8iIjplKS5yZXBsYWNlKC9ceyhbXHdcLV0rKSg/Olw6KFtcd1wuXSopKD86XCgoLio/KT9cKSk/KT9cfS9nLGZ1bmN0aW9uKGUsdCl7aWYoIWlzTmFOKHBhcnNlSW50KHQsMTApKSlyZXR1cm4gYVtwYXJzZUludCh0LDEwKV07Zm9yKG89MDtvPG47bysrKWlmKEFycmF5LmlzQXJyYXkoYVtvXSkpe2Zvcih2YXIgcj1hW29dLGk9ci5sZW5ndGg7aS0tOylpZih0PT09cltpXS5ubSlyZXR1cm4gcltpXS52fWVsc2UgaWYoIm9iamVjdCI9PXR5cGVvZiBhW29dJiZhW29dW3RdKXJldHVybiBZZS5qZ3JpZC5pc0Z1bmN0aW9uKGFbb11bdF0pP2Fbb11bdF0oKTphW29dW3RdfSl9LG1zaWU6ZnVuY3Rpb24oKXtyZXR1cm4gMDxZZS5qZ3JpZC5tc2lldmVyKCl9LG1zaWV2ZXI6ZnVuY3Rpb24oKXt2YXIgZT0wLHQ9d2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQscj10LmluZGV4T2YoIk1TSUUiKTtyZXR1cm4gMDxyP2U9cGFyc2VJbnQodC5zdWJzdHJpbmcocis1LHQuaW5kZXhPZigiLiIscikpKTpuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9UcmlkZW50XC83XC4vKSYmKGU9MTEpLGV9LGdldENlbGxJbmRleDpmdW5jdGlvbihlKXtlPVllKGUpO3JldHVybiBlLmlzKCJ0ciIpPy0xOihlPShlLmlzKCJ0ZCIpfHxlLmlzKCJ0aCIpP2U6ZS5jbG9zZXN0KCJ0ZCx0aCIpKVswXSxZZS5qZ3JpZC5tc2llKCk/WWUuaW5BcnJheShlLGUucGFyZW50Tm9kZS5jZWxscyk6ZS5jZWxsSW5kZXgpfSxzdHJpcEh0bWw6ZnVuY3Rpb24oZSl7cmV0dXJuKGU9U3RyaW5nKGUpKSYmKChlPWUucmVwbGFjZSgvPCgiW14iXSoifCdbXiddKid8W14nIj5dKSo+L2dpLCIiKSkmJiImbmJzcDsiIT09ZSYmIiYjMTYwOyIhPT1lP2UucmVwbGFjZSgvXCIvZywiJyIpOiIiKX0sc3RyaXBQcmVmOmZ1bmN0aW9uKGUsdCl7dmFyIHI9WWUuamdyaWQudHlwZShlKTtyZXR1cm4gdD0ic3RyaW5nIiE9PXImJiJudW1iZXIiIT09cj90OiIiIT09KGU9U3RyaW5nKGUpKT9TdHJpbmcodCkucmVwbGFjZShTdHJpbmcoZSksIiIpOnR9LHN0cmlwU2NyaXB0OmZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoLzxzY3JpcHRcYltePF0qKD86KD8hPFwvc2NyaXB0Pik8W148XSopKjxcL3NjcmlwdD4vZ2ksIiAiKX0sdXNlSlNPTjohMCxydW5Db2RlOmZ1bmN0aW9uKGUpe3JldHVybiBGdW5jdGlvbignInVzZSBzdHJpY3QiO3JldHVybiAoJytlKyIpIikoKX0scGFyc2U6ZnVuY3Rpb24oZSl7ZT0oZT0iLyoiPT09KGU9IndoaWxlKDEpOyI9PT0oZT1lKS5zdWJzdHIoMCw5KT9lLnN1YnN0cig5KTplKS5zdWJzdHIoMCwyKT9lLnN1YnN0cigyLGUubGVuZ3RoLTQpOmUpfHwie30iO3JldHVybiEwPT09WWUuamdyaWQudXNlSlNPTiYmIm9iamVjdCI9PXR5cGVvZiBKU09OJiYiZnVuY3Rpb24iPT10eXBlb2YgSlNPTi5wYXJzZT9KU09OLnBhcnNlKGUpOlllLmpncmlkLnJ1bkNvZGUoZSl9LGRhdGVUb09BRGF0ZTpmdW5jdGlvbihlKXt2YXIgdD1uZXcgRGF0ZShlKTtyZXR1cm4gTWF0aC5yb3VuZCgodC5zZXRIb3VycygwLDAsMCwwKS1uZXcgRGF0ZSgxODk5LDExLDMwKSkvODY0ZTUpKyhNYXRoLmFicygoZS10KSU4NjRlNSkvODY0ZTUpLnRvRml4ZWQoMTApLnN1YnN0cigxKX0scGFyc2VEYXRlOmZ1bmN0aW9uKGUsdCxyLGkpe2Z1bmN0aW9uIG8oZSx0KXtmb3IoZT1TdHJpbmcoZSksdD1wYXJzZUludCh0LDEwKXx8MjtlLmxlbmd0aDx0OyllPSIwIitlO3JldHVybiBlfWZ1bmN0aW9uIGEoZSx0KXtyZXR1cm4gMD09PWU/MTI9PT10JiYodD0wKToxMiE9PXQmJih0Kz0xMiksdH12YXIgbixsLHMsZD1uZXcgUmVnRXhwKCJeL0RhdGVcXCgoKFstK10pP1swLTldKykoKFstK10pKFswLTldezJ9KShbMC05XXsyfSkpP1xcKS8kIiksZD0ic3RyaW5nIj09dHlwZW9mIHQ/dC5tYXRjaChkKTpudWxsLHA9e206MSxkOjEseToxOTcwLGg6MCxpOjAsczowLHU6MH0sYz0wLHU9MDtpZih2b2lkIDA9PT0oaT12b2lkIDA9PT0oaT12b2lkIDA9PT1pP1llLmpncmlkLmdldFJlZ2lvbmFsKHRoaXMsImZvcm1hdHRlci5kYXRlIik6aSk/e306aSkucGFyc2VSZSYmKGkucGFyc2VSZT0vWyMlXFxcLzpfOy4sXHRccy1dLyksdm9pZCAwPT09aS5BbVBtJiYoaS5BbVBtPVsiYW0iLCJwbSIsIkFNIiwiUE0iXSksaS5tYXNrcyYmaS5tYXNrcy5oYXNPd25Qcm9wZXJ0eShlKSYmKGU9aS5tYXNrc1tlXSksdCYmIVllLmpncmlkLmlzTnVsbCh0KSlpZihpc05hTigrdCl8fCJ1IiE9PVN0cmluZyhlKS50b0xvd2VyQ2FzZSgpKWlmKHQuY29uc3RydWN0b3I9PT1EYXRlKWM9dCxpLnZhbGlkYXRlPSExO2Vsc2UgaWYobnVsbCE9PWQpYz1uZXcgRGF0ZShwYXJzZUludChkWzFdLDEwKSksZFszXSYmKHU9NjAqTnVtYmVyKGRbNV0pK051bWJlcihkWzZdKSx1PSh1Kj0iLSI9PT1kWzRdPzE6LTEpLWMuZ2V0VGltZXpvbmVPZmZzZXQoKSxjLnNldFRpbWUoTnVtYmVyKE51bWJlcihjKSs2MCp1KjFlMykpKSxpLnZhbGlkYXRlPSExO2Vsc2V7Zm9yKCJJU084NjAxTG9uZyI9PT1pLnNyY2Zvcm1hdCYmIloiPT09dC5jaGFyQXQodC5sZW5ndGgtMSkmJih1LT0obmV3IERhdGUpLmdldFRpbWV6b25lT2Zmc2V0KCkpLHQ9U3RyaW5nKHQpLnJlcGxhY2UoL1xUL2csIiMiKS5yZXBsYWNlKC9cdC8sIiUiKS5zcGxpdChpLnBhcnNlUmUpLGw9MCxzPShlPWUucmVwbGFjZSgvXFQvZywiIyIpLnJlcGxhY2UoL1x0LywiJSIpLnNwbGl0KGkucGFyc2VSZSkpLmxlbmd0aDtsPHM7bCsrKXtzd2l0Y2goZVtsXSl7Y2FzZSJNIjotMSE9PShuPVllLmluQXJyYXkodFtsXSxpLm1vbnRoTmFtZXMpKSYmbjwxMiYmKHRbbF09bisxLHAubT10W2xdKTticmVhaztjYXNlIkYiOi0xIT09KG49WWUuaW5BcnJheSh0W2xdLGkubW9udGhOYW1lcywxMikpJiYxMTxuJiYodFtsXT1uKzEtMTIscC5tPXRbbF0pO2JyZWFrO2Nhc2UibiI6ZVtsXT0ibSI7YnJlYWs7Y2FzZSJqIjplW2xdPSJkIjticmVhaztjYXNlImEiOi0xIT09KG49WWUuaW5BcnJheSh0W2xdLGkuQW1QbSkpJiZuPDImJnRbbF09PT1pLkFtUG1bbl0mJih0W2xdPW4scC5oPWEodFtsXSxwLmgpKTticmVhaztjYXNlIkEiOi0xIT09KG49WWUuaW5BcnJheSh0W2xdLGkuQW1QbSkpJiYxPG4mJnRbbF09PT1pLkFtUG1bbl0mJih0W2xdPW4tMixwLmg9YSh0W2xdLHAuaCkpO2JyZWFrO2Nhc2UiZyI6cC5oPXBhcnNlSW50KHRbbF0sMTApfXZvaWQgMCE9PXRbbF0mJihwW2VbbF0udG9Mb3dlckNhc2UoKV09cGFyc2VJbnQodFtsXSwxMCkpfWlmKHAuZiYmKHAubT1wLmYpLDA9PT1wLm0mJjA9PT1wLnkmJjA9PT1wLmQpcmV0dXJuIiYjMTYwOyI7cC5tPXBhcnNlSW50KHAubSwxMCktMTtkPXAueTs3MDw9ZCYmZDw9OTk/cC55PTE5MDArcC55OjA8PWQmJmQ8PTY5JiYocC55PTJlMytwLnkpLGM9bmV3IERhdGUocC55LHAubSxwLmQscC5oLHAuaSxwLnMscC51KSwwIT09dSYmYy5zZXRUaW1lKE51bWJlcihOdW1iZXIoYykrNjAqdSoxZTMpKX1lbHNlIGM9bmV3IERhdGUoMWUzKnBhcnNlRmxvYXQodCkpLGkudmFsaWRhdGU9ITE7ZWxzZSBjPW5ldyBEYXRlKHAueSxwLm0scC5kLHAuaCxwLmkscC5zLHAudSk7aWYoaSYmITA9PT1pLnZhbGlkYXRlKXJldHVybiBkPW5ldyBEYXRlKHAueSwrcC5tLHAuZCxwLmgscC5pKSxCb29sZWFuKCtkKSYmZC5nZXREYXRlKCk9PT1wLmQmJmQuZ2V0SG91cnMoKT09PXAuaCYmZC5nZXRNaW51dGVzKCk9PT1wLmk7aWYoaS51c2VyTG9jYWxUaW1lJiYwPT09dSYmMCE9PSh1LT0obmV3IERhdGUpLmdldFRpbWV6b25lT2Zmc2V0KCkpJiZjLnNldFRpbWUoTnVtYmVyKE51bWJlcihjKSs2MCp1KjFlMykpLHZvaWQgMD09PXIpcmV0dXJuIGM7cj1pLm1hc2tzJiZpLm1hc2tzLmhhc093blByb3BlcnR5KHIpP2kubWFza3Nbcl06cnx8IlktbS1kIjt2YXIgZD1jLmdldEhvdXJzKCksdT1jLmdldE1pbnV0ZXMoKSxoPWMuZ2V0RGF0ZSgpLGc9Yy5nZXRNb250aCgpKzEsZj1jLmdldFRpbWV6b25lT2Zmc2V0KCksbT1jLmdldFNlY29uZHMoKSx2PWMuZ2V0TWlsbGlzZWNvbmRzKCksaj1jLmdldERheSgpLGI9Yy5nZXRGdWxsWWVhcigpLHc9KGorNiklNysxLHk9KG5ldyBEYXRlKGIsZy0xLGgpLW5ldyBEYXRlKGIsMCwxKSkvODY0ZTUseD17ZDpvKGgpLEQ6aS5kYXlOYW1lc1tqXSxqOmgsbDppLmRheU5hbWVzW2orN10sTjp3LFM6aS5TKGgpLHc6aix6OnksVzp3PDU/TWF0aC5mbG9vcigoeSt3LTEpLzcpKzE6TWF0aC5mbG9vcigoeSt3LTEpLzcpfHwoKG5ldyBEYXRlKGItMSwwLDEpLmdldERheSgpKzYpJTc8ND81Mzo1MiksRjppLm1vbnRoTmFtZXNbZy0xKzEyXSxtOm8oZyksTTppLm1vbnRoTmFtZXNbZy0xXSxuOmcsdDoiPyIsTDoiPyIsbzoiPyIsWTpiLHk6U3RyaW5nKGIpLnN1YnN0cmluZygyKSxhOmQ8MTI/aS5BbVBtWzBdOmkuQW1QbVsxXSxBOmQ8MTI/aS5BbVBtWzJdOmkuQW1QbVszXSxCOiI/IixnOmQlMTJ8fDEyLEc6ZCxoOm8oZCUxMnx8MTIpLEg6byhkKSxpOm8odSksczpvKG0pLHU6dixlOiI/IixJOiI/IixPOigwPGY/Ii0iOiIrIikrbygxMDAqTWF0aC5mbG9vcihNYXRoLmFicyhmKS82MCkrTWF0aC5hYnMoZiklNjAsNCksUDooMDxmPyItIjoiKyIpKyhoPW8oMTAwKk1hdGguZmxvb3IoTWF0aC5hYnMoZikvNjApK01hdGguYWJzKGYpJTYwLDQpLGo9LTIseT0iOiIsKGg9U3RyaW5nKGgpKS5zbGljZSgwLGopK3kraC5zbGljZShqKSksVDooU3RyaW5nKGMpLm1hdGNoKC9cYig/OltQTUNFQV1bU0RQXVR8KD86UGFjaWZpY3xNb3VudGFpbnxDZW50cmFsfEVhc3Rlcm58QXRsYW50aWMpICg/OlN0YW5kYXJkfERheWxpZ2h0fFByZXZhaWxpbmcpIFRpbWV8KD86R01UfFVUQykoPzpbLStdXGR7NH0pPylcYi9nKXx8WyIiXSkucG9wKCkucmVwbGFjZSgvW14tK1xkQS1aXS9nLCIiKSxaOiI/IixjOiI/IixyOiI/IixVOk1hdGguZmxvb3IoYy8xZTMpfTtyZXR1cm4gci5yZXBsYWNlKC9cXC58W2REamxOU3d6V0ZtTW50TG9ZeWFBQmdHaEhpc3VlSU9QVFpjclVdL2csZnVuY3Rpb24oZSl7cmV0dXJuIHguaGFzT3duUHJvcGVydHkoZSk/eFtlXTplLnN1YnN0cmluZygxKX0pfSxqcUlEOmZ1bmN0aW9uKGUpe3JldHVybiBTdHJpbmcoZSkucmVwbGFjZSgvWyEiIyQlJicoKSorLC5cLzo7IDw9Pj9AXFtcXFxdXF5ge3x9fl0vZywiXFwkJiIpfSxndWlkOjEsdWlkUHJlZjoianFnIixyYW5kSWQ6ZnVuY3Rpb24oZSl7cmV0dXJuKGV8fFllLmpncmlkLnVpZFByZWYpK1llLmpncmlkLmd1aWQrK30sZ2V0QWNjZXNzb3I6ZnVuY3Rpb24oZSx0KXt2YXIgcixpLG89W107aWYoImZ1bmN0aW9uIj09dHlwZW9mIHQpcmV0dXJuIHQoZSk7aWYodm9pZCAwPT09KHI9ZVt0XSkpdHJ5e2lmKGk9KG89InN0cmluZyI9PXR5cGVvZiB0P3Quc3BsaXQoIi4iKTpvKS5sZW5ndGgpZm9yKHI9ZTtyJiZpLS07KXI9cltvLnNoaWZ0KCldfWNhdGNoKGUpe31yZXR1cm4gcn0sZ2V0WG1sRGF0YTpmdW5jdGlvbihlLHQscil7dmFyIGk9InN0cmluZyI9PXR5cGVvZiB0P3QubWF0Y2goL14oLiopXFsoXHcrKVxdJC8pOm51bGw7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQ/dChlKTppJiZpWzJdPyhpWzFdP1llKGlbMV0sZSk6WWUoZSkpLmF0dHIoaVsyXSk6KGk9WWUodCxlKSxyP2k6MDxpLmxlbmd0aD9ZZShpKS50ZXh0KCk6dm9pZCAwKX0sY2VsbFdpZHRoOmZ1bmN0aW9uKCl7dmFyIGU9WWUoIjxkaXYgY2xhc3M9J3VpLWpxZ3JpZCcgc3R5bGU9J2xlZnQ6MTAwMDBweCc+PHRhYmxlIGNsYXNzPSd1aS1qcWdyaWQtYnRhYmxlIHVpLWNvbW1vbi10YWJsZScgc3R5bGU9J3dpZHRoOjVweDsnPjx0ciBjbGFzcz0nanFncm93Jz48dGQgc3R5bGU9J3dpZHRoOjVweDtkaXNwbGF5OmJsb2NrOyc+PC90ZD48L3RyPjwvdGFibGU+PC9kaXY+IiksdD1lLmFwcGVuZFRvKCJib2R5IikuZmluZCgidGQiKS53aWR0aCgpO3JldHVybiBlLnJlbW92ZSgpLC4xPE1hdGguYWJzKHQtNSl9LGlzTG9jYWxTdG9yYWdlOmZ1bmN0aW9uKCl7dHJ5e3JldHVybiJsb2NhbFN0b3JhZ2UiaW4gd2luZG93JiZudWxsIT09d2luZG93LmxvY2FsU3RvcmFnZX1jYXRjaChlKXtyZXR1cm4hMX19LGdldFJlZ2lvbmFsOmZ1bmN0aW9uKGUsdCxyKXt2YXIgaTtyZXR1cm4gdm9pZCAwIT09cj9yOnZvaWQgMD09PShpPWUucCYmZS5wLnJlZ2lvbmFsJiZZZS5qZ3JpZC5yZWdpb25hbD9ZZS5qZ3JpZC5nZXRBY2Nlc3NvcihZZS5qZ3JpZC5yZWdpb25hbFtlLnAucmVnaW9uYWxdfHx7fSx0KTppKT9ZZS5qZ3JpZC5nZXRBY2Nlc3NvcihZZS5qZ3JpZCx0KTppfSxpc01vYmlsZTpmdW5jdGlvbigpe3RyeXtyZXR1cm4vQW5kcm9pZHx3ZWJPU3xpUGhvbmV8aVBhZHxpUG9kfHBvY2tldHxwc3B8a2luZGxlfGF2YW50Z298YmxhemVyfG1pZG9yaXxUYWJsZXR8UGFsbXxtYWVtb3xwbHVja2VyfHBob25lfEJsYWNrQmVycnl8c3ltYmlhbnxJRU1vYmlsZXxtb2JpbGV8WnVuZVdQN3xXaW5kb3dzIFBob25lfE9wZXJhIE1pbmkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpPyEwOiExfWNhdGNoKGUpe3JldHVybiExfX0sY2VsbF93aWR0aDohMCxzY3JvbGxiYXJXaWR0aDpmdW5jdGlvbigpe3ZhciBlPVllKCc8ZGl2IHN0eWxlPSJ3aWR0aDo1MHB4O2hlaWdodDo1MHB4O292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6LTIwMHB4O2xlZnQ6LTIwMHB4OyI+PGRpdiBzdHlsZT0iaGVpZ2h0OjEwMHB4OyI+PC9kaXY+JyksdD0oWWUoImJvZHkiKS5hcHBlbmQoZSksWWUoImRpdiIsZSkuaW5uZXJXaWR0aCgpKSxyPShlLmNzcygib3ZlcmZsb3cteSIsInNjcm9sbCIpLFllKCJkaXYiLGUpLmlubmVyV2lkdGgoKSk7cmV0dXJuIFllKGUpLnJlbW92ZSgpLHQtcjwwPzE4OnQtcn0sc2Nyb2xsYmFySGVpZ2h0OmZ1bmN0aW9uKCl7dmFyIGU9WWUoJzxkaXYgc3R5bGU9IndpZHRoOjUwcHg7b3ZlcmZsb3cteDpzY3JvbGw7cG9zaXRpb246YWJzb2x1dGU7dG9wOi0yMDBweDtsZWZ0Oi0yMDBweDsiPHNwYW4+MTIzNDU2Nzg5MDwvc3Bhbj48L2Rpdj4nKSx0PShZZSgiYm9keSIpLmFwcGVuZChlKSxZZShlKS5vdXRlckhlaWdodCgpKSxyPVllKGUpWzBdLnNjcm9sbEhlaWdodDtyZXR1cm4gWWUoZSkucmVtb3ZlKCksdC1yPDA/MTg6dC1yfSxhamF4T3B0aW9uczp7fSxmcm9tOmZ1bmN0aW9uKGUpe3ZhciB2PXRoaXM7cmV0dXJuIG5ldyBmdW5jdGlvbihlLHQpeyJzdHJpbmciPT10eXBlb2YgZSYmKGU9WWUuZGF0YShlKSk7dmFyIGc9dGhpcyxvPWUsZj0hMCxpPSExLHI9dCxtPS9bXCQsJV0vZyxhPW51bGwsbj1udWxsLGw9MCxzPSExLGQ9IiIsdT1bXSxwPSEwO2lmKCJvYmplY3QiPT10eXBlb2YgZSYmZS5wdXNoKXJldHVybiAwPGUubGVuZ3RoJiYocD0ib2JqZWN0Ij09dHlwZW9mIGVbMF0pLHRoaXMuX2hhc0RhdGE9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbCE9PW8mJjAhPT1vLmxlbmd0aH0sdGhpcy5fZ2V0U3RyPWZ1bmN0aW9uKGUpe3ZhciB0PVtdO3JldHVybiBpJiZ0LnB1c2goImpRdWVyeS50cmltKCIpLHQucHVzaCgiU3RyaW5nKCIrZSsiKSIpLGkmJnQucHVzaCgiKSIpLGZ8fHQucHVzaCgiLnRvTG93ZXJDYXNlKCkiKSx0LmpvaW4oIiIpfSx0aGlzLl9zdHJDb21wPWZ1bmN0aW9uKGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZT8iLnRvU3RyaW5nKCkiOiIifSx0aGlzLl9ncm91cD1mdW5jdGlvbihlLHQpe3JldHVybntmaWVsZDplLnRvU3RyaW5nKCksdW5pcXVlOnQsaXRlbXM6W119fSx0aGlzLl90b1N0cj1mdW5jdGlvbihlKXtyZXR1cm4gZT0oZT1pP1llLmpncmlkLnRyaW0oZSk6ZSkudG9TdHJpbmcoKS5yZXBsYWNlKC9cXC9nLCJcXFxcIikucmVwbGFjZSgvXCIvZywnXFwiJyksZj9lOmUudG9Mb3dlckNhc2UoKX0sdGhpcy5fZnVuY0xvb3A9ZnVuY3Rpb24ocil7dmFyIGk9W107cmV0dXJuIFllLmVhY2gobyxmdW5jdGlvbihlLHQpe2kucHVzaChyKHQpKX0pLGl9LHRoaXMuX2FwcGVuZD1mdW5jdGlvbihlKXt2YXIgdDtmb3IobnVsbD09PXI/cj0iIjpyKz0iIj09PWQ/IiAmJiAiOmQsdD0wO3Q8bDt0Kyspcis9IigiO3MmJihyKz0iISIpLHIrPSIoIitlKyIpIixzPSExLGQ9IiIsbD0wfSx0aGlzLl9zZXRDb21tYW5kPWZ1bmN0aW9uKGUsdCl7YT1lLG49dH0sdGhpcy5fcmVzZXROZWdhdGU9ZnVuY3Rpb24oKXtzPSExfSx0aGlzLl9yZXBlYXRDb21tYW5kPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG51bGw9PT1hP2c6bnVsbCE9PWUmJm51bGwhPT10P2EoZSx0KTpudWxsIT09biYmcD9hKG4sZSk6YShlKX0sdGhpcy5fZXF1YWxzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIDA9PT1nLl9jb21wYXJlKGUsdCwxKX0sdGhpcy5fY29tcGFyZT1mdW5jdGlvbihlLHQscil7dmFyIGk9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztyZXR1cm4gdm9pZCAwPT09ciYmKHI9MSksdm9pZCAwPT09dCYmKHQ9bnVsbCksbnVsbD09PShlPXZvaWQgMD09PWU/bnVsbDplKSYmbnVsbD09PXQ/MDpudWxsPT09ZSYmbnVsbCE9PXQ/MTpudWxsIT09ZSYmbnVsbD09PXQ/LTE6IltvYmplY3QgRGF0ZV0iPT09aS5jYWxsKGUpJiYiW29iamVjdCBEYXRlXSI9PT1pLmNhbGwodCl8fCJudW1iZXIiPT10eXBlb2YgZSYmIm51bWJlciI9PXR5cGVvZiB0P3Q8ZT9yOmU8dD8tcjowOihpPVN0cmluZyhlKS5sb2NhbGVDb21wYXJlKFN0cmluZyh0KSkpPDA/LXI6MDxpP3I6MH0sdGhpcy5fcGVyZm9ybVNvcnQ9ZnVuY3Rpb24oKXswIT09dS5sZW5ndGgmJihvPWcuX2RvU29ydChvLDApKX0sdGhpcy5fZG9Tb3J0PWZ1bmN0aW9uKGUsdCl7dmFyIHI9dVt0XS5ieSxpPXVbdF0uZGlyLG89dVt0XS50eXBlLGE9dVt0XS5kYXRlZm10LG49dVt0XS5zZnVuYztpZih0PT09dS5sZW5ndGgtMSlyZXR1cm4gZy5fZ2V0T3JkZXIoZSxyLGksbyxhLG4pO3QrKztmb3IodmFyIGwscyxkPWcuX2dldEdyb3VwKGUscixpLG8sYSkscD1bXSxjPTA7YzxkLmxlbmd0aDtjKyspZm9yKHM9Zy5fZG9Tb3J0KGRbY10uaXRlbXMsdCksbD0wO2w8cy5sZW5ndGg7bCsrKXAucHVzaChzW2xdKTtyZXR1cm4gcH0sdGhpcy5fZ2V0T3JkZXI9ZnVuY3Rpb24oZSxyLHQsaSxvLGEpe2Zvcih2YXIgbixsLHMsZCxwPVtdLGM9W10sdT0iYSI9PT10PzE6LTEsaD0oZD0iZmxvYXQiPT09KGk9dm9pZCAwPT09aT8idGV4dCI6aSl8fCJudW1iZXIiPT09aXx8ImN1cnJlbmN5Ij09PWl8fCJudW1lcmljIj09PWk/ZnVuY3Rpb24oZSl7ZT1wYXJzZUZsb2F0KFN0cmluZyhlKS5yZXBsYWNlKG0sIiIpKTtyZXR1cm4gaXNOYU4oZSk/TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZOmV9OiJpbnQiPT09aXx8ImludGVnZXIiPT09aT9mdW5jdGlvbihlKXtyZXR1cm4gZT9wYXJzZUZsb2F0KFN0cmluZyhlKS5yZXBsYWNlKG0sIiIpKTpOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFl9OiJkYXRlIj09PWl8fCJkYXRldGltZSI9PT1pP2Z1bmN0aW9uKGUpe3JldHVybiBZZS5qZ3JpZC5wYXJzZURhdGUuY2FsbCh2LG8sZSkuZ2V0VGltZSgpfTpZZS5qZ3JpZC5pc0Z1bmN0aW9uKGkpP2k6ZnVuY3Rpb24oZSl7cmV0dXJuIGU9ZT9ZZS5qZ3JpZC50cmltKFN0cmluZyhlKSk6IiIsZj9lOmUudG9Mb3dlckNhc2UoKX0sWWUuZWFjaChlLGZ1bmN0aW9uKGUsdCl7bD0iIiE9PXI/WWUuamdyaWQuZ2V0QWNjZXNzb3IodCxyKTp0LGw9ZChsPXZvaWQgMD09PWw/IiI6bCx0KSxjLnB1c2goe3ZTb3J0OmwsaW5kZXg6ZX0pfSksWWUuamdyaWQuaXNGdW5jdGlvbihhKT9jLnNvcnQoZnVuY3Rpb24oZSx0KXtyZXR1cm4gYS5jYWxsKHRoaXMsZS52U29ydCx0LnZTb3J0LHUsZSx0KX0pOmMuc29ydChmdW5jdGlvbihlLHQpe3JldHVybiBnLl9jb21wYXJlKGUudlNvcnQsdC52U29ydCx1KX0pLHM9MCxlLmxlbmd0aCk7czxoOyluPWNbc10uaW5kZXgscC5wdXNoKGVbbl0pLHMrKztyZXR1cm4gcH0sdGhpcy5fZ2V0R3JvdXA9ZnVuY3Rpb24oZSxyLHQsaSxvKXt2YXIgYSxuPVtdLGw9bnVsbCxzPW51bGw7cmV0dXJuIFllLmVhY2goZy5fZ2V0T3JkZXIoZSxyLHQsaSxvKSxmdW5jdGlvbihlLHQpe2E9WWUuamdyaWQuZ2V0QWNjZXNzb3IodCxyKSxZZS5qZ3JpZC5pc051bGwoYSkmJihhPSIiKSxnLl9lcXVhbHMocyxhKXx8KHM9YSxudWxsIT09bCYmbi5wdXNoKGwpLGw9Zy5fZ3JvdXAocixhKSksbC5pdGVtcy5wdXNoKHQpfSksbnVsbCE9PWwmJm4ucHVzaChsKSxufSx0aGlzLmlnbm9yZUNhc2U9ZnVuY3Rpb24oKXtyZXR1cm4gZj0hMSxnfSx0aGlzLnVzZUNhc2U9ZnVuY3Rpb24oKXtyZXR1cm4gZj0hMCxnfSx0aGlzLnRyaW09ZnVuY3Rpb24oKXtyZXR1cm4gaT0hMCxnfSx0aGlzLm5vVHJpbT1mdW5jdGlvbigpe3JldHVybiBpPSExLGd9LHRoaXMuZXhlY3V0ZT1mdW5jdGlvbigpe3ZhciBlPXIsdD1bXTtyZXR1cm4gbnVsbCE9PWUmJihZZS5lYWNoKG8sZnVuY3Rpb24oKXtZZS5qZ3JpZC5ydW5Db2RlLmNhbGwodixlLnJlcGxhY2UoL3RoaXMvZyxKU09OLnN0cmluZ2lmeSh0aGlzKSkpJiZ0LnB1c2godGhpcyl9KSxvPXQpLGd9LHRoaXMuZGF0YT1mdW5jdGlvbigpe3JldHVybiBvfSx0aGlzLnNlbGVjdD1mdW5jdGlvbihyKXt2YXIgaTtyZXR1cm4gZy5fcGVyZm9ybVNvcnQoKSxnLl9oYXNEYXRhKCk/KGcuZXhlY3V0ZSgpLFllLmpncmlkLmlzRnVuY3Rpb24ocik/KGk9W10sWWUuZWFjaChvLGZ1bmN0aW9uKGUsdCl7aS5wdXNoKHIodCkpfSksaSk6byk6W119LHRoaXMuaGFzTWF0Y2g9ZnVuY3Rpb24oKXtyZXR1cm4hIWcuX2hhc0RhdGEoKSYmKGcuZXhlY3V0ZSgpLDA8by5sZW5ndGgpfSx0aGlzLmFuZE5vdD1mdW5jdGlvbihlLHQscil7cmV0dXJuIHM9IXMsZy5hbmQoZSx0LHIpfSx0aGlzLm9yTm90PWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gcz0hcyxnLm9yKGUsdCxyKX0sdGhpcy5ub3Q9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBnLmFuZE5vdChlLHQscil9LHRoaXMuYW5kPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZD0iICYmICIsdm9pZCAwPT09ZT9nOmcuX3JlcGVhdENvbW1hbmQoZSx0LHIpfSx0aGlzLm9yPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZD0iIHx8ICIsdm9pZCAwPT09ZT9nOmcuX3JlcGVhdENvbW1hbmQoZSx0LHIpfSx0aGlzLm9yQmVnaW49ZnVuY3Rpb24oKXtyZXR1cm4gbCsrLGd9LHRoaXMub3JFbmQ9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbCE9PXImJihyKz0iKSIpLGd9LHRoaXMuaXNOb3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIHM9IXMsZy5pcyhlKX0sdGhpcy5pcz1mdW5jdGlvbihlKXtyZXR1cm4gZy5fYXBwZW5kKCJ0aGlzLiIrZSksZy5fcmVzZXROZWdhdGUoKSxnfSx0aGlzLl9jb21wYXJlVmFsdWVzPWZ1bmN0aW9uKGUsdCxyLGksbyl7dmFyIGE9cD8ialF1ZXJ5LmpncmlkLmdldEFjY2Vzc29yKHRoaXMsJyIrdCsiJykiOiJ0aGlzIixuPXI9dm9pZCAwPT09cj9udWxsOnIsbD12b2lkIDA9PT1vLnN0eXBlPyJ0ZXh0IjpvLnN0eXBlO2lmKG51bGwhPT1yKXN3aXRjaChsKXtjYXNlImludCI6Y2FzZSJpbnRlZ2VyIjphPSJwYXJzZUludCgiK2ErIiwxMCkiLG49InBhcnNlSW50KCIrKG49aXNOYU4oTnVtYmVyKG4pKXx8IiI9PT1uP051bWJlci5ORUdBVElWRV9JTkZJTklUWTpuKSsiLDEwKSI7YnJlYWs7Y2FzZSJmbG9hdCI6Y2FzZSJudW1iZXIiOmNhc2UibnVtZXJpYyI6bj1TdHJpbmcobikucmVwbGFjZShtLCIiKSxhPSJwYXJzZUZsb2F0KCIrYSsiKSIsbj0icGFyc2VGbG9hdCgiKyhuPWlzTmFOKE51bWJlcihuKSl8fCIiPT09bj9OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFk6TnVtYmVyKG4pKSsiKSI7YnJlYWs7Y2FzZSJkYXRlIjpjYXNlImRhdGV0aW1lIjpuPVN0cmluZyhZZS5qZ3JpZC5wYXJzZURhdGUuY2FsbCh2LG8uc3JjZm10fHwiWS1tLWQiLG4pLmdldFRpbWUoKSksYT0nalF1ZXJ5LmpncmlkLnBhcnNlRGF0ZS5jYWxsKGpRdWVyeSgiIycrWWUuamdyaWQuanFJRCh2LnAuaWQpKyciKVswXSwiJytvLnNyY2ZtdCsnIiwnK2ErIikuZ2V0VGltZSgpIjticmVhaztkZWZhdWx0OmE9Zy5fZ2V0U3RyKGEpLG49Zy5fZ2V0U3RyKCciJytnLl90b1N0cihuKSsnIicpfXJldHVybiBnLl9hcHBlbmQoYSsiICIraSsiICIrbiksZy5fc2V0Q29tbWFuZChlLHQpLGcuX3Jlc2V0TmVnYXRlKCksZ30sdGhpcy5lcXVhbHM9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBnLl9jb21wYXJlVmFsdWVzKGcuZXF1YWxzLGUsdCwiPT0iLHIpfSx0aGlzLm5vdEVxdWFscz1mdW5jdGlvbihlLHQscil7cmV0dXJuIGcuX2NvbXBhcmVWYWx1ZXMoZy5lcXVhbHMsZSx0LCIhPT0iLHIpfSx0aGlzLmlzTnVsbD1mdW5jdGlvbihlLHQscil7cmV0dXJuIGcuX2NvbXBhcmVWYWx1ZXMoZy5lcXVhbHMsZSxudWxsLCI9PT0iLHIpfSx0aGlzLmdyZWF0ZXI9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBnLl9jb21wYXJlVmFsdWVzKGcuZ3JlYXRlcixlLHQsIj4iLHIpfSx0aGlzLmxlc3M9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBnLl9jb21wYXJlVmFsdWVzKGcubGVzcyxlLHQsIjwiLHIpfSx0aGlzLmdyZWF0ZXJPckVxdWFscz1mdW5jdGlvbihlLHQscil7cmV0dXJuIGcuX2NvbXBhcmVWYWx1ZXMoZy5ncmVhdGVyT3JFcXVhbHMsZSx0LCI+PSIscil9LHRoaXMubGVzc09yRXF1YWxzPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZy5fY29tcGFyZVZhbHVlcyhnLmxlc3NPckVxdWFscyxlLHQsIjw9IixyKX0sdGhpcy5zdGFydHNXaXRoPWZ1bmN0aW9uKGUsdCl7dmFyIHI9WWUuamdyaWQuaXNOdWxsKHQpP2U6dCxyPShpP1llLmpncmlkLnRyaW0oci50b1N0cmluZygpKTpyLnRvU3RyaW5nKCkpLmxlbmd0aDtyZXR1cm4gcD9nLl9hcHBlbmQoZy5fZ2V0U3RyKCJqUXVlcnkuamdyaWQuZ2V0QWNjZXNzb3IodGhpcywnIitlKyInKSIpKyIuc3Vic3RyKDAsIityKyIpID09ICIrZy5fZ2V0U3RyKCciJytnLl90b1N0cih0KSsnIicpKTooWWUuamdyaWQuaXNOdWxsKHQpfHwocj0oaT9ZZS5qZ3JpZC50cmltKHQudG9TdHJpbmcoKSk6dC50b1N0cmluZygpKS5sZW5ndGgpLGcuX2FwcGVuZChnLl9nZXRTdHIoInRoaXMiKSsiLnN1YnN0cigwLCIrcisiKSA9PSAiK2cuX2dldFN0cignIicrZy5fdG9TdHIoZSkrJyInKSkpLGcuX3NldENvbW1hbmQoZy5zdGFydHNXaXRoLGUpLGcuX3Jlc2V0TmVnYXRlKCksZ30sdGhpcy5lbmRzV2l0aD1mdW5jdGlvbihlLHQpe3ZhciByPVllLmpncmlkLmlzTnVsbCh0KT9lOnQscj0oaT9ZZS5qZ3JpZC50cmltKHIudG9TdHJpbmcoKSk6ci50b1N0cmluZygpKS5sZW5ndGg7cmV0dXJuIHA/Zy5fYXBwZW5kKGcuX2dldFN0cigialF1ZXJ5LmpncmlkLmdldEFjY2Vzc29yKHRoaXMsJyIrZSsiJykiKSsiLnN1YnN0cigiK2cuX2dldFN0cigialF1ZXJ5LmpncmlkLmdldEFjY2Vzc29yKHRoaXMsJyIrZSsiJykiKSsiLmxlbmd0aC0iK3IrIiwiK3IrJykgPT0gIicrZy5fdG9TdHIodCkrJyInKTpnLl9hcHBlbmQoZy5fZ2V0U3RyKCJ0aGlzIikrIi5zdWJzdHIoIitnLl9nZXRTdHIoInRoaXMiKSsnLmxlbmd0aC0iJytnLl90b1N0cihlKSsnIi5sZW5ndGgsIicrZy5fdG9TdHIoZSkrJyIubGVuZ3RoKSA9PSAiJytnLl90b1N0cihlKSsnIicpLGcuX3NldENvbW1hbmQoZy5lbmRzV2l0aCxlKSxnLl9yZXNldE5lZ2F0ZSgpLGd9LHRoaXMuY29udGFpbnM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gcD9nLl9hcHBlbmQoZy5fZ2V0U3RyKCJqUXVlcnkuamdyaWQuZ2V0QWNjZXNzb3IodGhpcywnIitlKyInKSIpKycuaW5kZXhPZigiJytnLl90b1N0cih0KSsnIiwwKSA+IC0xJyk6Zy5fYXBwZW5kKGcuX2dldFN0cigidGhpcyIpKycuaW5kZXhPZigiJytnLl90b1N0cihlKSsnIiwwKSA+IC0xJyksZy5fc2V0Q29tbWFuZChnLmNvbnRhaW5zLGUpLGcuX3Jlc2V0TmVnYXRlKCksZ30sdGhpcy51c2VyPWZ1bmN0aW9uKGUsdCxyKXt2YXIgaT0nJCgiIycrdi5wLmlkKyciKVswXSc7cmV0dXJuIGcuX2FwcGVuZChpKyIucC5jdXN0b21GaWx0ZXJEZWYuIitlKyIuYWN0aW9uLmNhbGwoIitpKycgLHtyb3dJdGVtOiB0aGlzLCBzZWFyY2hOYW1lOiInK3QrJyIsc2VhcmNoVmFsdWU6IicrcisnIn0pJyksZy5fc2V0Q29tbWFuZChnLnVzZXIsdCksZy5fcmVzZXROZWdhdGUoKSxnfSx0aGlzLmluRGF0YT1mdW5jdGlvbihlLHQscil7dD12b2lkIDA9PT10PyIiOmcuX2dldFN0cignIicrZy5fdG9TdHIodCkrJyInKTtyZXR1cm4gcD9nLl9hcHBlbmQodCsiLnNwbGl0KCcsJykuaW5kZXhPZiggalF1ZXJ5LmpncmlkLmdldEFjY2Vzc29yKHRoaXMsJyIrZSsiJykgKSA+IC0xIik6Zy5fYXBwZW5kKHQrIi5zcGxpdCgnLCcpLmluZGV4T2YodGhpcy4iK2UrIikgPiAtMSIpLGcuX3NldENvbW1hbmQoZy5pbkRhdGEsZSksZy5fcmVzZXROZWdhdGUoKSxnfSx0aGlzLmdyb3VwQnk9ZnVuY3Rpb24oZSx0LHIsaSl7cmV0dXJuIGcuX2hhc0RhdGEoKT9nLl9nZXRHcm91cChvLGUsdCxyLGkpOm51bGx9LHRoaXMub3JkZXJCeT1mdW5jdGlvbihlLHQscixpLG8pe3JldHVybiB0PVllLmpncmlkLmlzTnVsbCh0KT8iYSI6WWUuamdyaWQudHJpbSh0LnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSksWWUuamdyaWQuaXNOdWxsKHIpJiYocj0idGV4dCIpLFllLmpncmlkLmlzTnVsbChpKSYmKGk9IlktbS1kIiksWWUuamdyaWQuaXNOdWxsKG8pJiYobz0hMSksdS5wdXNoKHtieTplLGRpcjp0PSJhc2MiIT09KHQ9ImRlc2MiIT09dCYmImRlc2NlbmRpbmciIT09dD90OiJkIikmJiJhc2NlbmRpbmciIT09dD90OiJhIix0eXBlOnIsZGF0ZWZtdDppLHNmdW5jOm99KSxnfSxnO3Rocm93ImRhdGEgcHJvdmlkZXMgaXMgbm90IGFuIGFycmF5In0oZSxudWxsKX0sZ2V0TWV0aG9kOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmdldEFjY2Vzc29yKFllLmZuLmpxR3JpZCxlKX0sZXh0ZW5kOmZ1bmN0aW9uKGUpe1llLmV4dGVuZChZZS5mbi5qcUdyaWQsZSksdGhpcy5ub19sZWdhY3lfYXBpfHxZZS5mbi5leHRlbmQoZSl9LGNsZWFyQmVmb3JlVW5sb2FkOmZ1bmN0aW9uKGUpe3ZhciB0LHI9WWUoIiMiK1llLmpncmlkLmpxSUQoZSkpWzBdO2lmKHIuZ3JpZCl7dD1yLmdyaWQsWWUuamdyaWQuaXNGdW5jdGlvbih0LmVtcHR5Um93cykmJnQuZW1wdHlSb3dzLmNhbGwociwhMCwhMCksWWUoZG9jdW1lbnQpLm9mZigibW91c2V1cC5qcUdyaWQiK3IucC5pZCksWWUodC5oRGl2KS5vZmYoIm1vdXNlbW92ZSIpLFllKHIpLm9mZigpO2Zvcih2YXIgaT10LmhlYWRlcnMubGVuZ3RoLG89WyJmb3JtYXRDb2wiLCJzb3J0RGF0YSIsInVwZGF0ZXBhZ2VyIiwicmVmcmVzaEluZGV4Iiwic2V0SGVhZENoZWNrQm94IiwiY29uc3RydWN0VHIiLCJmb3JtYXR0ZXIiLCJhZGRYbWxEYXRhIiwiYWRkSlNPTkRhdGEiLCJncmlkIiwicCIsImFkZExvY2FsRGF0YSJdLGE9MDthPGk7YSsrKXQuaGVhZGVyc1thXS5lbD1udWxsO2ZvcihhIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShhKSYmKHRbYV09bnVsbCk7Zm9yKGEgaW4gci5wKXIucC5oYXNPd25Qcm9wZXJ0eShhKSYmKHIucFthXT1BcnJheS5pc0FycmF5KHIucFthXSk/W106bnVsbCk7Zm9yKGk9by5sZW5ndGgsYT0wO2E8aTthKyspci5oYXNPd25Qcm9wZXJ0eShvW2FdKSYmKHJbb1thXV09bnVsbCxkZWxldGUgcltvW2FdXSl9fSxncmlkVW5sb2FkOmZ1bmN0aW9uKGUpe3ZhciB0LHIsaSxvO2UmJigwPT09KGU9WWUuamdyaWQudHJpbShlKSkuaW5kZXhPZigiIyIpJiYoZT1lLnN1YnN0cmluZygxKSksKHQ9WWUoIiMiK1llLmpncmlkLmpxSUQoZSkpWzBdKS5ncmlkKSYmKHI9e2lkOlllKHQpLmF0dHIoImlkIiksY2w6WWUodCkuYXR0cigiY2xhc3MiKX0sdC5wLnBhZ2VyJiZZZSh0LnAucGFnZXIpLm9mZigpLmVtcHR5KCkucmVtb3ZlQ2xhc3MoInVpLXN0YXRlLWRlZmF1bHQgdWktanFncmlkLXBhZ2VyIHVpLWNvcm5lci1ib3R0b20iKSwoaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0YWJsZSIpKS5jbGFzc05hbWU9ci5jbCxvPVllLmpncmlkLmpxSUQodC5pZCksWWUoaSkucmVtb3ZlQ2xhc3MoInVpLWpxZ3JpZC1idGFibGUgdWktY29tbW9uLXRhYmxlIikuaW5zZXJ0QmVmb3JlKCIjZ2JveF8iK28pLDE9PT1ZZSh0LnAucGFnZXIpLnBhcmVudHMoIiNnYm94XyIrbykubGVuZ3RoJiZZZSh0LnAucGFnZXIpLmluc2VydEJlZm9yZSgiI2dib3hfIitvKSxZZS5qZ3JpZC5jbGVhckJlZm9yZVVubG9hZChlKSxZZSgiI2dib3hfIitvKS5yZW1vdmUoKSxZZShpKS5hdHRyKHtpZDpyLmlkfSksWWUoIiNhbGVydG1vZF8iK1llLmpncmlkLmpxSUQoZSkpLnJlbW92ZSgpKX0sZ3JpZERlc3Ryb3k6ZnVuY3Rpb24oZSl7aWYoZSl7MD09PShlPVllLmpncmlkLnRyaW0oZSkpLmluZGV4T2YoIiMiKSYmKGU9ZS5zdWJzdHJpbmcoMSkpO3ZhciB0PVllKCIjIitZZS5qZ3JpZC5qcUlEKGUpKVswXTtpZih0LmdyaWQpe3QucC5wYWdlciYmWWUodC5wLnBhZ2VyKS5yZW1vdmUoKTt0cnl7WWUuamdyaWQuY2xlYXJCZWZvcmVVbmxvYWQoZSksWWUoIiNnYm94XyIrWWUuamdyaWQuanFJRChlKSkucmVtb3ZlKCl9Y2F0Y2goZSl7fX19fSxpc0VsZW1lbnRJblZpZXdwb3J0OmZ1bmN0aW9uKGUpe2U9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm4gMDw9ZS5sZWZ0JiZlLnJpZ2h0PD0od2luZG93LmlubmVyV2lkdGh8fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCl9LGdldFRleHRXaWR0aDpmdW5jdGlvbihlLHQpe3ZhciByO3JldHVybiBqUXVlcnkuX2NhY2hlQ2FudmFzfHwocj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKSxkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkuYXBwZW5kQ2hpbGQociksalF1ZXJ5Ll9jYWNoZUNhbnZhcz1yLmdldENvbnRleHQoIjJkIikpLHQmJihqUXVlcnkuX2NhY2hlQ2FudmFzLmZvbnQ9dCksalF1ZXJ5Ll9jYWNoZUNhbnZhcy5tZWFzdXJlVGV4dChZZS5qZ3JpZC5zdHJpcEh0bWwoZSkpLndpZHRofSxnZXRGb250OmZ1bmN0aW9uKGUpe2U9d2luZG93LmdldENvbXB1dGVkU3R5bGUoZSxudWxsKTtyZXR1cm4gZS5nZXRQcm9wZXJ0eVZhbHVlKCJmb250LXN0eWxlIikrIiAiK2UuZ2V0UHJvcGVydHlWYWx1ZSgiZm9udC12YXJpYW50IikrIiAiK2UuZ2V0UHJvcGVydHlWYWx1ZSgiZm9udC13ZWlnaHQiKSsiICIrZS5nZXRQcm9wZXJ0eVZhbHVlKCJmb250LXNpemUiKSsiICIrZS5nZXRQcm9wZXJ0eVZhbHVlKCJmb250LWZhbWlseSIpfSxzZXRTZWxOYXZJbmRleDpmdW5jdGlvbihyLGkpe3ZhciBlPVllKCIudWktcGctYnV0dG9uIixyLnAucGFnZXIpO1llLmVhY2goZSxmdW5jdGlvbihlLHQpe2lmKGk9PT10KXJldHVybiByLnAubmF2SW5kZXg9ZSwhMX0pLFllKGkpLmF0dHIoInRhYmluZGV4IiwiMCIpfSxzcGxpdFNlYXJjaDpmdW5jdGlvbihlKXt2YXIgdCxyPSd7Imdyb3VwT3AiOiInK2UubWVyZ2VPcGVyKyciLCJncm91cHMiOlsnO2Zvcih0IGluIGUpZS5oYXNPd25Qcm9wZXJ0eSh0KSYmIm1lcmdlT3BlciIhPT10JiYocis9bnVsbCE9PWVbdF0mJiIiIT09ZVt0XSYmImJvb2xlYW4iIT10eXBlb2YgZVt0XT9lW3RdKyIsIjoiIiwwKTtyZXR1cm4tMT09PXIuaW5kZXhPZigiWyIsci5sZW5ndGgtIlsiLmxlbmd0aCkmJihyPXIuc2xpY2UoMCwtMSkpLHIrPSJdfSJ9LGdldEVsZW1CeUF0dHJWYWw6ZnVuY3Rpb24oZSx0LHIsaSl7ImJvb2xlYW4iIT10eXBlb2YgaSYmKGk9ITEpO3ZhciBvPUFycmF5LmlzQXJyYXkoZSk/ZS5sZW5ndGg6MCxhPTAsbj17fSxsPS0xO2lmKDA8bylmb3IoO2E8bzspe2lmKGVbYV1bdF09PT1yKXtuPWVbYV0sbD1hO2JyZWFrfWErK31yZXR1cm4gaT9sOm59LHNlYXJjaENvbE9uRW50ZXI6ZnVuY3Rpb24oZSx0LHIsaSl7dmFyIG8sbj1ZZSgiIyIrZSlbMF07aWYobi5ncmlkKXt2YXIgbCxzLGQ9bi5wLnNlYXJjaENvbE9wdGlvbnMsZT0hMTt0cnl7cz1yLnZhbHVlfWNhdGNoKGUpe3M9IiJ9aWYobi5wLmZyb3plbkNvbHVtbnMmJihZZShuLmdyaWQuYkRpdikuZmluZCgiLmpxZ3JpZC1zZWFyY2hjb2wgPmlucHV0I2pxc18iK24ucC5pZCsiXyIrdCkuZm9jdXMoKS52YWwocyksZT0hMCksIW4ucC5fZnRzYyl7Zm9yKG4ucC5fZnRzYz0hMCxuLnAuX2Z0aGM9W10sbi5wLl9hdmM9W10sbz0wO288bi5wLmNvbE1vZGVsLmxlbmd0aDtvKyspKG4ucC5jb2xNb2RlbFtvXS5oaWRkZW4/bi5wLl9mdGhjOm4ucC5fYXZjKS5wdXNoKG4ucC5jb2xNb2RlbFtvXS5uYW1lKTtuLnAuX3Jlc3VsdHM9e319dmFyIGE9Wy4uLm5ldyBTZXQoWy4uLmQuX2NudGgsLi4uZC52aXNpYmxlQ29sdW1uc10pXSxwPW5ldyBTZXQoWy4uLmEsLi4ubi5wLl9mdGhjXSk7aWYoWWUobikuanFHcmlkKCJoaWRlQ29sIixuLnAuX2F2Yy5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWEuaW5jbHVkZXMoZSl9KSksbi5ncmlkJiZudWxsPT10KWZvcih2YXIgYyBpbiBuLnAuX3Jlc3VsdHMpbi5wLl9yZXN1bHRzLmhhc093blByb3BlcnR5KGMpJiYocz1uLnAuX3Jlc3VsdHNbY10udixnKGMpKTtlbHNlIW4uZ3JpZHx8bnVsbD09PXQmJnZvaWQgMD09PXR8fGcodCk7dmFyIHU9W10saD0wO2ZvcihvIGluIG4ucC5fcmVzdWx0cykiT1IiPT09ZC5zZWFyY2hPcC50b1VwcGVyQ2FzZSgpP3U9Wy4uLm5ldyBTZXQoWy4uLnUsLi4ubi5wLl9yZXN1bHRzW29dLnJdKV06IkFORCI9PT1kLnNlYXJjaE9wLnRvVXBwZXJDYXNlKCkmJih1PTA9PT1oP24ucC5fcmVzdWx0c1tvXS5yOnUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBuLnAuX3Jlc3VsdHNbb10uci5pbmNsdWRlcyhlKX0pLGgrKyk7cj0odT1ZZS5pc0VtcHR5T2JqZWN0KG4ucC5fcmVzdWx0cyk/bi5wLl9hdmM6dSkuY29uY2F0KGEpO1llKG4pLmpxR3JpZCgic2hvd0NvbCIsciksbi5wLmZyb3plbkNvbHVtbnMmJlllKG4uZ3JpZC5mYkRpdikuZmluZCgiLmpxZ3JpZC1zZWFyY2hjb2wgPmlucHV0I2pxc18iK24ucC5pZCsiXyIrdCkudmFsKCIiKS5mb2N1cygpLnZhbChzKSxuLnAuZnJvemVuUm93cyYmKGUmJihuLnAuZnJvemVuQ29sdW1ucz0hMSksWWUobikudHJpZ2dlcigianFHcmlkQWZ0ZXJHcmlkQ29tcGxldGUuc2V0RnJvemVuUm93cyIpLGUpJiYobi5wLmZyb3plbkNvbHVtbnM9ITApfWZ1bmN0aW9uIGcoZSl7dmFyIHQscj1ZZShuKS5qcUdyaWQoImdldFJvd0RhdGEiLGUpLGk9W107aWYociYmcyl7Zm9yKHZhciBvIGluIHIpaWYoIXAuaGFzKG8pJiZyLmhhc093blByb3BlcnR5KG8pKXtpZih0PXMsZC51c2VDYXNlfHwocltvXT1yW29dLnRvTG93ZXJDYXNlKCksdD1zLnRvTG93ZXJDYXNlKCkpLGQuYU9wZXJhbmRzLmluY2x1ZGVzKGQub3BlcmFuZCkpc3dpdGNoKGQub3BlcmFuZCl7Y2FzZSJjbiI6bD0tMSE9PXJbb10uc2VhcmNoKHQpO2JyZWFrO2Nhc2UiZXEiOmw9cltvXT09PXQ7YnJlYWs7Y2FzZSJuZSI6bD1yW29dIT09dDticmVhaztjYXNlImJ3IjpsPXJbb10uc3Vic3RyaW5nKDAsdC5sZW5ndGgpPT09dDticmVhaztjYXNlImV3Ijp2YXIgYT1yW29dLmxlbmd0aDtsPXJbb10uc3Vic3RyaW5nKGEtdC5sZW5ndGgsYSk9PT10fWwmJmkucHVzaChvKX1uLnAuX3Jlc3VsdHNbZV09e3Y6cyxyOml9fWVsc2UgciYmIiI9PT1zJiZuLnAuX3Jlc3VsdHNbZV0mJmRlbGV0ZSBuLnAuX3Jlc3VsdHNbZV19fSxzZWFyY2hDb2xPbktleTpmdW5jdGlvbihlLHQscixpKXtzd2l0Y2goaS5rZXkpe2Nhc2UiQXJyb3dSaWdodCI6Y2FzZSJBcnJvd0Rvd24iOmNhc2UiQXJyb3dVcCI6Y2FzZSJBcnJvd0xlZnQiOmNhc2UiUGFnZVVwIjpjYXNlIlBhZ2VEb3duIjpjYXNlIkFsdCI6Y2FzZSJDb250cm9sIjpjYXNlIlRhYiI6Y2FzZSJFc2NhcGUiOmNhc2UiU2hpZnQiOnJldHVybn1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7WWUuamdyaWQuc2VhcmNoQ29sT25FbnRlcihlLHQscixpKX0sNTApfSxjb21ib0dyaWQ6ZnVuY3Rpb24obCxzLGUpe3ZhciB0PVllLmpncmlkLnJhbmRJZCgiY29tYm8iKSxyPSJkaXYiK3QsaT1lLmRhdGF0eXBlLGQ9KGUuZGF0YXR5cGU9ImxvY2FsIixlLm9uU2VsZWN0Um93PWZ1bmN0aW9uKGUpe3ZhciBlPVllKCIjIit0KS5qcUdyaWQoImdldFJvd0RhdGEiLGUpO1llLmlzRW1wdHlPYmplY3QoZSl8fChlPVllLmpncmlkLmlzRnVuY3Rpb24ocy5yZXR1cm5fZmxkKT9zLnJldHVybl9mbGQuY2FsbCh0aGlzLGUpOmVbcy5yZXR1cm5fZmxkXSxZZSgiIyIrbCkudmFsKGUpLFllKCIjIityKS5oaWRlKCkpfSxlLmRhdGE9W10sZS5zY3JvbGxyb3dzPSEwLFllKCJib2R5IikuYXBwZW5kKCI8ZGl2IGlkPSciK3IrIic+PHRhYmxlIGlkPSciK3QrIic+PC90YWJsZT4iKSxlLnBhZ2VyJiZZZSgiYm9keSIpLmFwcGVuZCgiPGRpdiBpZD0nIitlLnBhZ2VyKyInPjwvZGl2PiIpLFllKCJib2R5IikuYXBwZW5kKCI8L2Rpdj4iKSxZZSgiIyIrdCkuanFHcmlkKGUpLFllKCIjIit0KS5qcUdyaWQoImJpbmRLZXlzIix7b25TZWxlY3RSb3c6ITF9KSxZZSgiIyIrbCkuYXR0cigiYXV0b2NvbXBsZXRlIiwib2ZmIikuZGF0YSgiY29tYm9HcmlkIix7Z3JpZDp0LGRpdmdyaWQ6cn0pLGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGwpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTtZZSgiIyIrcikuY3NzKHsiYmFja2dyb3VuZC1jb2xvciI6ImluaGVyaXQiLHBvc2l0aW9uOiJhYnNvbHV0ZSIsdG9wOmQudG9wKzUwKyJweCIsbGVmdDpkLmxlZnQrMTArInB4Iix6SW5kZXg6MmU0fSkuaGlkZSgpLFllKCIjIitsKS5vbigia2V5ZG93biIsZnVuY3Rpb24oZSl7dmFyIHQscj1ZZSh0aGlzKS5kYXRhKCJjb21ib0dyaWQiKS5ncmlkLGk9WWUodGhpcykuZGF0YSgiY29tYm9HcmlkIikuZGl2Z3JpZCxvPXRoaXM7aWYoWWUoIiMiK2kpLmlzKCI6aGlkZGVuIikmJihkPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGwpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLFllKCIjIitpKS5zaG93KCkuY3NzKHt0b3A6ZC50b3ArNTArInB4IixsZWZ0OmQubGVmdCsxMCsicHgifSkpLC0xPFllLmluQXJyYXkoZS5rZXksWyJFbnRlciIsIkVzY2FwZSIsIkFycm93VXAiLCJBcnJvd0Rvd24iLCJBcnJvd0xlZnQiLCJBcnJvd1JpZ2h0Il0pKXt2YXIgYT1ZZS5FdmVudCgia2V5ZG93biIpO3N3aXRjaChlLmtleSl7Y2FzZSJFbnRlciI6dmFyIG49WWUoIiMiK3IpLmpxR3JpZCgiZ2V0Um93RGF0YSIsWWUoIiMiK3IpWzBdLnAuc2Vscm93KTtZZS5pc0VtcHR5T2JqZWN0KG4pfHwodGhpcy52YWx1ZT1uW3MucmV0dXJuX2ZsZF0sWWUoIiMiK2kpLmhpZGUoKSk7YnJlYWs7Y2FzZSJFc2NhcGUiOlllKCIjIitpKS5oaWRlKCk7YnJlYWs7Y2FzZSJBcnJvd1VwIjphLmtleUNvZGU9MzgsWWUoIiMiK3IpLnRyaWdnZXIoYSk7YnJlYWs7Y2FzZSJBcnJvd0Rvd24iOmEua2V5Q29kZT00MCxZZSgiIyIrcikudHJpZ2dlcihhKX19ZWxzZSB0JiZjbGVhclRpbWVvdXQodCksc2V0VGltZW91dChmdW5jdGlvbigpe1llKCIjIityKS5qcUdyaWQoImZpbHRlcklucHV0IixvLnZhbHVlLHtkZWZhdWx0U2VhcmNoOnMuZGVmYXVsdFNlYXJjaHx8ImJ3IixzZWxlY3RGaXJzdEZvdW5kOiEwfSl9LDEwMCl9KSxzLmRhdGEmJigic3RyaW5nIj09dHlwZW9mIHMuZGF0YT9ZZSgiIyIrdCkuanFHcmlkKCJzZXRHcmlkUGFyYW0iLHt1cmw6cy5kYXRhfSk6QXJyYXkuaXNBcnJheShzLmRhdGEpJiZZZSgiIyIrdCkuanFHcmlkKCJzZXRHcmlkUGFyYW0iLHtkYXRhOnMuZGF0YX0pKSxZZSgiIyIrdCkuanFHcmlkKCJzZXRHcmlkUGFyYW0iLHtkYXRhdHlwZTppfSl9LGluQ29sdW1uSGVhZGVyOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPXQubGVuZ3RoLGk9MDtpPHI7aSsrKWlmKHRbaV0uc3RhcnRDb2x1bW5OYW1lPT09ZSlyZXR1cm4gaTtyZXR1cm4tMX0saXNTZXJ2aWNlQ29sOmZ1bmN0aW9uKGUpe3JldHVyblsiY2IiLCJybiIsInN1YmdyaWQiLCJzYyJdLmluY2x1ZGVzKGUpfSxub3JtYWxpemVEYkRhdGE6ZnVuY3Rpb24ocixpKXtBcnJheS5pc0FycmF5KHIpfHwocj1bcl0pO2ZvcihsZXQgdD0wO3Q8ci5sZW5ndGg7dCsrKWZvcihsZXQgZT0wO2U8aS5sZW5ndGg7ZSsrKXt2YXIgbz1pW2VdO2lmKCFZZS5qZ3JpZC5pc1NlcnZpY2VDb2woby5uYW1lKSYmclt0XS5oYXNPd25Qcm9wZXJ0eShvLm5hbWUpKXN3aXRjaChvLnNvcnR0eXBlfHxvLnN0eXBlfHxvLmZvcm1hdHRlcnx8InRleHQiKXtjYXNlImludCI6Y2FzZSJpbnRlZ2VyIjpyW3RdW28ubmFtZV09cGFyc2VJbnQoclt0XVtvLm5hbWVdLDEwKTticmVhaztjYXNlImZsb2F0IjpjYXNlIm51bWJlciI6Y2FzZSJudW1lcmljIjpjYXNlImN1cnJlbmN5IjpyW3RdW28ubmFtZV09cGFyc2VGbG9hdChyW3RdW28ubmFtZV0pO2JyZWFrO2Nhc2UiZGF0ZSI6Y2FzZSJkYXRldGltZSI6by5mb3JtYXRvcHRpb25zLnJlZm9ybWF0QWZ0ZXJFZGl0PSEwLHJbdF1bby5uYW1lXT1ZZS5qZ3JpZC5wYXJzZURhdGUuY2FsbCh0aGlzLG8uZm9ybWF0b3B0aW9ucy5uZXdmb3JtYXQsclt0XVtvLm5hbWVdLG8uZm9ybWF0b3B0aW9ucy5zcmNmb3JtYXR8fCJZLW0tZCIpfX1yZXR1cm4gcn0sc3R5bGVVSTp7alF1ZXJ5VUk6e2NvbW1vbjp7ZGlzYWJsZWQ6InVpLXN0YXRlLWRpc2FibGVkIixoaWdobGlnaHQ6InVpLXN0YXRlLWhpZ2hsaWdodCIsaG92ZXI6InVpLXN0YXRlLWhvdmVyIixjb3JuZXJhbGw6InVpLWNvcm5lci1hbGwiLGNvcm5lcnRvcDoidWktY29ybmVyLXRvcCIsY29ybmVyYm90dG9tOiJ1aS1jb3JuZXItYm90dG9tIixoaWRkZW46InVpLWhlbHBlci1oaWRkZW4iLGljb25fYmFzZToidWktaWNvbiIsb3ZlcmxheToidWktd2lkZ2V0LW92ZXJsYXkiLGFjdGl2ZToidWktc3RhdGUtYWN0aXZlIixlcnJvcjoidWktc3RhdGUtZXJyb3IiLGJ1dHRvbjoidWktc3RhdGUtZGVmYXVsdCB1aS1jb3JuZXItYWxsIixjb250ZW50OiJ1aS13aWRnZXQtY29udGVudCJ9LGJhc2U6e2VudHJpZUJveDoidWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1hbGwiLHZpZXdCb3g6IiIsaGVhZGVyVGFibGU6IiIsaGVhZGVyQm94OiJ1aS1zdGF0ZS1kZWZhdWx0Iixyb3dUYWJsZToiIixyb3dCb3g6InVpLXdpZGdldC1jb250ZW50IixzdHJpcGVkVGFibGU6InVpLWpxZ3JpZC10YWJsZS1zdHJpcGVkIixmb290ZXJUYWJsZToiIixmb290ZXJCb3g6InVpLXdpZGdldC1jb250ZW50IixoZWFkZXJSb3dUYWJsZToiIixoZWFkZXJSb3dCb3g6InVpLXdpZGdldC1jb250ZW50IixoZWFkZXJEaXY6InVpLXN0YXRlLWRlZmF1bHQiLGdyaWR0aXRsZUJveDoidWktd2lkZ2V0LWhlYWRlciB1aS1jb3JuZXItdG9wIHVpLWhlbHBlci1jbGVhcmZpeCIsY3VzdG9tdG9vbGJhckJveDoidWktc3RhdGUtZGVmYXVsdCIsbG9hZGluZ0JveDoidWktc3RhdGUtZGVmYXVsdCB1aS1zdGF0ZS1hY3RpdmUiLHJvd251bUJveDoidWktc3RhdGUtZGVmYXVsdCIsc2Nyb2xsQm94OiJ1aS13aWRnZXQtY29udGVudCIsbXVsdGlCb3g6IiIsc2VhcmNoQm94OiJ1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYWxsIixzZWFyY2hTZWxlY3Q6InVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1hbGwiLHBhZ2VyQm94OiJ1aS1zdGF0ZS1kZWZhdWx0IHVpLWNvcm5lci1ib3R0b20iLHBhZ2VyVGFibGU6IiIsdG9wcGFnZXJCb3g6InVpLXN0YXRlLWRlZmF1bHQiLHBnSW5wdXQ6InVpLWNvcm5lci1hbGwiLHBnU2VsZWN0Qm94OiJ1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYWxsIixwZ0J1dHRvbkJveDoidWktY29ybmVyLWFsbCIsaWNvbl9maXJzdDoidWktaWNvbi1zZWVrLWZpcnN0IixpY29uX3ByZXY6InVpLWljb24tc2Vlay1wcmV2IixpY29uX25leHQ6InVpLWljb24tc2Vlay1uZXh0IixpY29uX2VuZDoidWktaWNvbi1zZWVrLWVuZCIsaWNvbl9hc2M6InVpLWljb24tdHJpYW5nbGUtMS1uIixpY29uX2Rlc2M6InVpLWljb24tdHJpYW5nbGUtMS1zIixpY29uX2NhcHRpb25fb3BlbjoidWktaWNvbi1jaXJjbGUtdHJpYW5nbGUtbiIsaWNvbl9jYXB0aW9uX2Nsb3NlOiJ1aS1pY29uLWNpcmNsZS10cmlhbmdsZS1zIn0sbW9kYWw6e21vZGFsOiJ1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWFsbCB1aS1kaWFsb2ciLGhlYWRlcjoidWktd2lkZ2V0LWhlYWRlciB1aS1jb3JuZXItYWxsIHVpLWhlbHBlci1jbGVhcmZpeCIsY29udGVudDoidWktd2lkZ2V0LWNvbnRlbnQiLHJlc2l6YWJsZToidWktcmVzaXphYmxlLWhhbmRsZSB1aS1yZXNpemFibGUtc2UiLGljb25fY2xvc2U6InVpLWljb24tY2xvc2V0aGljayIsaWNvbl9yZXNpemFibGU6InVpLWljb24tZ3JpcHNtYWxsLWRpYWdvbmFsLXNlIn0sY2VsbGVkaXQ6e2lucHV0Q2xhc3M6InVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1hbGwiLHNlbGVjdENsYXNzOiJ1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYWxsIn0saW5saW5lZGl0OntpbnB1dENsYXNzOiJ1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYWxsIixzZWxlY3RDbGFzczoidWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWFsbCIsaWNvbl9lZGl0X25hdjoidWktaWNvbi1wZW5jaWwiLGljb25fYWRkX25hdjoidWktaWNvbi1wbHVzIixpY29uX3NhdmVfbmF2OiJ1aS1pY29uLWRpc2siLGljb25fY2FuY2VsX25hdjoidWktaWNvbi1jYW5jZWwifSxmb3JtZWRpdDp7aW5wdXRDbGFzczoidWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWFsbCIsc2VsZWN0Q2xhc3M6InVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1hbGwiLGljb25fcHJldjoidWktaWNvbi10cmlhbmdsZS0xLXciLGljb25fbmV4dDoidWktaWNvbi10cmlhbmdsZS0xLWUiLGljb25fc2F2ZToidWktaWNvbi1kaXNrIixpY29uX2Nsb3NlOiJ1aS1pY29uLWNsb3NlIixpY29uX2RlbDoidWktaWNvbi1zY2lzc29ycyIsaWNvbl9jYW5jZWw6InVpLWljb24tY2FuY2VsIn0sbmF2aWdhdG9yOntpY29uX2VkaXRfbmF2OiJ1aS1pY29uLXBlbmNpbCIsaWNvbl9hZGRfbmF2OiJ1aS1pY29uLXBsdXMiLGljb25fZGVsX25hdjoidWktaWNvbi10cmFzaCIsaWNvbl9zZWFyY2hfbmF2OiJ1aS1pY29uLXNlYXJjaCIsaWNvbl9yZWZyZXNoX25hdjoidWktaWNvbi1yZWZyZXNoIixpY29uX3ZpZXdfbmF2OiJ1aS1pY29uLWRvY3VtZW50IixpY29uX25ld2J1dHRvbl9uYXY6InVpLWljb24tbmV3d2luIn0sZ3JvdXBpbmc6e2ljb25fcGx1czoidWktaWNvbi1jaXJjbGVzbWFsbC1wbHVzIixpY29uX21pbnVzOiJ1aS1pY29uLWNpcmNsZXNtYWxsLW1pbnVzIn0sZmlsdGVyOnt0YWJsZV93aWRnZXQ6InVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCIsc3JTZWxlY3Q6InVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1hbGwiLHNySW5wdXQ6InVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1hbGwiLG1lbnVfd2lkZ2V0OiJ1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWFsbCIsaWNvbl9zZWFyY2g6InVpLWljb24tc2VhcmNoIixpY29uX3Jlc2V0OiJ1aS1pY29uLWFycm93cmV0dXJudGhpY2stMS13IixpY29uX3F1ZXJ5OiJ1aS1pY29uLWNvbW1lbnQifSxzdWJncmlkOntpY29uX3BsdXM6InVpLWljb24tcGx1cyIsaWNvbl9taW51czoidWktaWNvbi1taW51cyIsaWNvbl9vcGVuOiJ1aS1pY29uLWNhcmF0LTEtc3cifSx0cmVlZ3JpZDp7aWNvbl9wbHVzOiJ1aS1pY29uLXRyaWFuZ2xlLTEtIixpY29uX21pbnVzOiJ1aS1pY29uLXRyaWFuZ2xlLTEtcyIsaWNvbl9sZWFmOiJ1aS1pY29uLXJhZGlvLW9mZiJ9LGZtYXR0ZXI6e2ljb25fZWRpdDoidWktaWNvbi1wZW5jaWwiLGljb25fYWRkOiJ1aS1pY29uLXBsdXMiLGljb25fc2F2ZToidWktaWNvbi1kaXNrIixpY29uX2NhbmNlbDoidWktaWNvbi1jYW5jZWwiLGljb25fZGVsOiJ1aS1pY29uLXRyYXNoIn0sY29sbWVudTp7bWVudV93aWRnZXQ6InVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYWxsIixpbnB1dF9jaGVja2JveDoidWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IixmaWx0ZXJfc2VsZWN0OiJ1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYWxsIixmaWx0ZXJfaW5wdXQ6InVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1hbGwiLGljb25fbWVudToidWktaWNvbi1jb21tZW50IixpY29uX3NlYXJjaF9tZW51OiJ1aS1pY29uLWdyaXAtZG90dGVkLXZlcnRpY2FsIixpY29uX3NvcnRfYXNjOiJ1aS1pY29uLWFycm93LTEtbiIsaWNvbl9zb3J0X2Rlc2M6InVpLWljb24tYXJyb3ctMS1zIixpY29uX2NvbHVtbnM6InVpLWljb24tZXh0bGluayIsaWNvbl9maWx0ZXI6InVpLWljb24tY2FsY3VsYXRvciIsaWNvbl9ncm91cDoidWktaWNvbi1ncmlwLXNvbGlkLWhvcml6b250YWwiLGljb25fZnJlZXplOiJ1aS1pY29uLWdyaXAtc29saWQtdmVydGljYWwiLGljb25fbW92ZToidWktaWNvbi1hcnJvdy00IixpY29uX25ld19pdGVtOiJ1aS1pY29uLW5ld3dpbiIsaWNvbl90b29sYmFyX21lbnU6InVpLWljb24tZG9jdW1lbnQiLGljb25fZ3JvdXBfb3A6InVpLWljb24tYnVsbGV0IixpY29uX29wZXJfb3A6InVpLWljb24tdHJhbnNmZXItZS13IixpY29uX3Jlc2V0OiJ1aS1pY29uLWFycm93cmV0dXJudGhpY2stMS13IixpY29uX2Nsb3NlOiJ1aS1pY29uLWNsb3NlIn19LEJvb3RzdHJhcDp7Y29tbW9uOntkaXNhYmxlZDoidWktZGlzYWJsZWQiLGhpZ2hsaWdodDoic3VjY2VzcyIsaG92ZXI6ImFjdGl2ZSIsY29ybmVyYWxsOiIiLGNvcm5lcnRvcDoiIixjb3JuZXJib3R0b206IiIsaGlkZGVuOiIiLGljb25fYmFzZToiZ2x5cGhpY29uIixvdmVybGF5OiJ1aS1vdmVybGF5IixhY3RpdmU6ImFjdGl2ZSIsZXJyb3I6ImJnLWRhbmdlciIsYnV0dG9uOiJidG4gYnRuLWRlZmF1bHQiLGNvbnRlbnQ6IiJ9LGJhc2U6e2VudHJpZUJveDoiIix2aWV3Qm94OiJ0YWJsZS1yZXNwb25zaXZlIixoZWFkZXJUYWJsZToidGFibGUgdGFibGUtYm9yZGVyZWQiLGhlYWRlckJveDoiIixyb3dUYWJsZToidGFibGUgdGFibGUtYm9yZGVyZWQiLHJvd0JveDoiIixzdHJpcGVkVGFibGU6InRhYmxlLXN0cmlwZWQiLGZvb3RlclRhYmxlOiJ0YWJsZSB0YWJsZS1ib3JkZXJlZCIsZm9vdGVyQm94OiIiLGhlYWRlclJvd1RhYmxlOiJ0YWJsZSB0YWJsZS1ib3JkZXJlZCIsaGVhZGVyUm93Qm94OiIiLGhlYWRlckRpdjoiIixncmlkdGl0bGVCb3g6IiIsY3VzdG9tdG9vbGJhckJveDoiIixsb2FkaW5nQm94OiJyb3ciLHJvd251bUJveDoiYWN0aXZlIixzY3JvbGxCb3g6IiIsbXVsdGlCb3g6ImNoZWNrYm94IixwYWdlckJveDoiIixwYWdlclRhYmxlOiJ0YWJsZSIsdG9wcGFnZXJCb3g6IiIscGdJbnB1dDoiZm9ybS1jb250cm9sIixwZ1NlbGVjdEJveDoiZm9ybS1jb250cm9sIixwZ0J1dHRvbkJveDoiIixpY29uX2ZpcnN0OiJnbHlwaGljb24tc3RlcC1iYWNrd2FyZCIsaWNvbl9wcmV2OiJnbHlwaGljb24tYmFja3dhcmQiLGljb25fbmV4dDoiZ2x5cGhpY29uLWZvcndhcmQiLGljb25fZW5kOiJnbHlwaGljb24tc3RlcC1mb3J3YXJkIixpY29uX2FzYzoiZ2x5cGhpY29uLXRyaWFuZ2xlLXRvcCIsaWNvbl9kZXNjOiJnbHlwaGljb24tdHJpYW5nbGUtYm90dG9tIixpY29uX2NhcHRpb25fb3BlbjoiZ2x5cGhpY29uLWNpcmNsZS1hcnJvdy11cCIsaWNvbl9jYXB0aW9uX2Nsb3NlOiJnbHlwaGljb24tY2lyY2xlLWFycm93LWRvd24ifSxtb2RhbDp7bW9kYWw6Im1vZGFsLWNvbnRlbnQiLGhlYWRlcjoibW9kYWwtaGVhZGVyIix0aXRsZToibW9kYWwtdGl0bGUiLGNvbnRlbnQ6Im1vZGFsLWJvZHkiLHJlc2l6YWJsZToidWktcmVzaXphYmxlLWhhbmRsZSB1aS1yZXNpemFibGUtc2UiLGljb25fY2xvc2U6ImdseXBoaWNvbi1yZW1vdmUtY2lyY2xlIixpY29uX3Jlc2l6YWJsZToiZ2x5cGhpY29uLWltcG9ydCJ9LGNlbGxlZGl0OntpbnB1dENsYXNzOiJmb3JtLWNvbnRyb2wiLHNlbGVjdENsYXNzOiJmb3JtLWNvbnRyb2wifSxpbmxpbmVkaXQ6e2lucHV0Q2xhc3M6ImZvcm0tY29udHJvbCIsc2VsZWN0Q2xhc3M6ImZvcm0tY29udHJvbCIsaWNvbl9lZGl0X25hdjoiZ2x5cGhpY29uLWVkaXQiLGljb25fYWRkX25hdjoiZ2x5cGhpY29uLXBsdXMiLGljb25fc2F2ZV9uYXY6ImdseXBoaWNvbi1zYXZlIixpY29uX2NhbmNlbF9uYXY6ImdseXBoaWNvbi1yZW1vdmUtY2lyY2xlIn0sZm9ybWVkaXQ6e2lucHV0Q2xhc3M6ImZvcm0tY29udHJvbCIsc2VsZWN0Q2xhc3M6ImZvcm0tY29udHJvbCIsaWNvbl9wcmV2OiJnbHlwaGljb24tc3RlcC1iYWNrd2FyZCIsaWNvbl9uZXh0OiJnbHlwaGljb24tc3RlcC1mb3J3YXJkIixpY29uX3NhdmU6ImdseXBoaWNvbi1zYXZlIixpY29uX2Nsb3NlOiJnbHlwaGljb24tcmVtb3ZlLWNpcmNsZSIsaWNvbl9kZWw6ImdseXBoaWNvbi10cmFzaCIsaWNvbl9jYW5jZWw6ImdseXBoaWNvbi1yZW1vdmUtY2lyY2xlIn0sbmF2aWdhdG9yOntpY29uX2VkaXRfbmF2OiJnbHlwaGljb24tZWRpdCIsaWNvbl9hZGRfbmF2OiJnbHlwaGljb24tcGx1cyIsaWNvbl9kZWxfbmF2OiJnbHlwaGljb24tdHJhc2giLGljb25fc2VhcmNoX25hdjoiZ2x5cGhpY29uLXNlYXJjaCIsaWNvbl9yZWZyZXNoX25hdjoiZ2x5cGhpY29uLXJlZnJlc2giLGljb25fdmlld19uYXY6ImdseXBoaWNvbi1pbmZvLXNpZ24iLGljb25fbmV3YnV0dG9uX25hdjoiZ2x5cGhpY29uLW5ldy13aW5kb3cifSxncm91cGluZzp7aWNvbl9wbHVzOiJnbHlwaGljb24tdHJpYW5nbGUtcmlnaHQiLGljb25fbWludXM6ImdseXBoaWNvbi10cmlhbmdsZS1ib3R0b20ifSxmaWx0ZXI6e3RhYmxlX3dpZGdldDoidGFibGUgdGFibGUtY29uZGVuc2VkIixzclNlbGVjdDoiZm9ybS1jb250cm9sIixzcklucHV0OiJmb3JtLWNvbnRyb2wiLG1lbnVfd2lkZ2V0OiIiLGljb25fc2VhcmNoOiJnbHlwaGljb24tc2VhcmNoIixpY29uX3Jlc2V0OiJnbHlwaGljb24tcmVmcmVzaCIsaWNvbl9xdWVyeToiZ2x5cGhpY29uLWNvbW1lbnQifSxzdWJncmlkOntpY29uX3BsdXM6ImdseXBoaWNvbi10cmlhbmdsZS1yaWdodCIsaWNvbl9taW51czoiZ2x5cGhpY29uLXRyaWFuZ2xlLWJvdHRvbSIsaWNvbl9vcGVuOiJnbHlwaGljb24taW5kZW50LWxlZnQifSx0cmVlZ3JpZDp7aWNvbl9wbHVzOiJnbHlwaGljb24tdHJpYW5nbGUtcmlnaHQiLGljb25fbWludXM6ImdseXBoaWNvbi10cmlhbmdsZS1ib3R0b20iLGljb25fbGVhZjoiZ2x5cGhpY29uLXVuY2hlY2tlZCJ9LGZtYXR0ZXI6e2ljb25fZWRpdDoiZ2x5cGhpY29uLWVkaXQiLGljb25fYWRkOiJnbHlwaGljb24tcGx1cyIsaWNvbl9zYXZlOiJnbHlwaGljb24tc2F2ZSIsaWNvbl9jYW5jZWw6ImdseXBoaWNvbi1yZW1vdmUtY2lyY2xlIixpY29uX2RlbDoiZ2x5cGhpY29uLXRyYXNoIn0sY29sbWVudTp7bWVudV93aWRnZXQ6IiIsaW5wdXRfY2hlY2tib3g6IiIsZmlsdGVyX3NlbGVjdDoiZm9ybS1jb250cm9sIixmaWx0ZXJfaW5wdXQ6ImZvcm0tY29udHJvbCIsaWNvbl9tZW51OiJnbHlwaGljb24tbWVudS1oYW1idXJnZXIiLGljb25fc29ydF9hc2M6ImdseXBoaWNvbi1zb3J0LWJ5LWFscGhhYmV0IixpY29uX3NvcnRfZGVzYzoiZ2x5cGhpY29uLXNvcnQtYnktYWxwaGFiZXQtYWx0IixpY29uX2NvbHVtbnM6ImdseXBoaWNvbi1saXN0LWFsdCIsaWNvbl9maWx0ZXI6ImdseXBoaWNvbi1maWx0ZXIiLGljb25fZ3JvdXA6ImdseXBoaWNvbi1hbGlnbi1sZWZ0IixpY29uX2ZyZWV6ZToiZ2x5cGhpY29uLW9iamVjdC1hbGlnbi1ob3Jpem9udGFsIixpY29uX21vdmU6ImdseXBoaWNvbi1tb3ZlIixpY29uX25ld19pdGVtOiJnbHlwaGljb24tbmV3LXdpbmRvdyIsaWNvbl90b29sYmFyX21lbnU6ImdseXBoaWNvbi1tZW51LWhhbWJ1cmdlciJ9fSxCb290c3RyYXA0Ontjb21tb246e2Rpc2FibGVkOiJ1aS1kaXNhYmxlZCIsaGlnaGxpZ2h0OiJ0YWJsZS1zdWNjZXNzIixob3ZlcjoidGFibGUtYWN0aXZlIixjb3JuZXJhbGw6IiIsY29ybmVydG9wOiIiLGNvcm5lcmJvdHRvbToiIixoaWRkZW46IiIsb3ZlcmxheToidWktb3ZlcmxheSIsYWN0aXZlOiJhY3RpdmUiLGVycm9yOiJhbGVydC1kYW5nZXIiLGJ1dHRvbjoiYnRuIGJ0bi1saWdodCIsY29udGVudDoiIn0sYmFzZTp7ZW50cmllQm94OiIiLHZpZXdCb3g6InRhYmxlLXJlc3BvbnNpdmUiLGhlYWRlclRhYmxlOiJ0YWJsZSB0YWJsZS1ib3JkZXJlZCIsaGVhZGVyQm94OiIiLHJvd1RhYmxlOiJ0YWJsZSB0YWJsZS1ib3JkZXJlZCIscm93Qm94OiIiLHN0cmlwZWRUYWJsZToidGFibGUtc3RyaXBlZCIsZm9vdGVyVGFibGU6InRhYmxlIHRhYmxlLWJvcmRlcmVkIixmb290ZXJCb3g6IiIsaGVhZGVyUm93VGFibGU6InRhYmxlIHRhYmxlLWJvcmRlcmVkIixoZWFkZXJSb3dCb3g6IiIsaGVhZGVyRGl2OiIiLGdyaWR0aXRsZUJveDoiIixjdXN0b210b29sYmFyQm94OiIiLGxvYWRpbmdCb3g6InJvdyIscm93bnVtQm94OiJhY3RpdmUiLHNjcm9sbEJveDoiIixtdWx0aUJveDoiY2hlY2tib3giLHNlYXJjaEJveDoiZm9ybS1jb250cm9sIixzZWFyY2hTZWxlY3Q6ImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20iLHBhZ2VyQm94OiIiLHBhZ2VyVGFibGU6InRhYmxlIix0b3BwYWdlckJveDoiIixwZ0lucHV0OiJmb3JtLWNvbnRyb2wiLHBnU2VsZWN0Qm94OiJmb3JtLWNvbnRyb2wiLHBnQnV0dG9uQm94OiIifSxtb2RhbDp7bW9kYWw6Im1vZGFsLWNvbnRlbnQiLGhlYWRlcjoibW9kYWwtaGVhZGVyIix0aXRsZToibW9kYWwtdGl0bGUiLGNvbnRlbnQ6Im1vZGFsLWJvZHkiLHJlc2l6YWJsZToidWktcmVzaXphYmxlLWhhbmRsZSB1aS1yZXNpemFibGUtc2UiLGljb25fY2xvc2U6Im9pLWNpcmNsZS14IixpY29uX3Jlc2l6YWJsZToib2ktY2lyY2xlLXgifSxjZWxsZWRpdDp7aW5wdXRDbGFzczoiZm9ybS1jb250cm9sIixzZWxlY3RDbGFzczoiZm9ybS1jb250cm9sIn0saW5saW5lZGl0OntpbnB1dENsYXNzOiJmb3JtLWNvbnRyb2wiLHNlbGVjdENsYXNzOiJmb3JtLWNvbnRyb2wifSxmb3JtZWRpdDp7aW5wdXRDbGFzczoiZm9ybS1jb250cm9sIixzZWxlY3RDbGFzczoiZm9ybS1jb250cm9sIn0sbmF2aWdhdG9yOnt9LGdyb3VwaW5nOnt9LGZpbHRlcjp7dGFibGVfd2lkZ2V0OiJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiLHNyU2VsZWN0OiJmb3JtLWNvbnRyb2wiLHNySW5wdXQ6ImZvcm0tY29udHJvbCIsbWVudV93aWRnZXQ6IiJ9LHN1YmdyaWQ6e30sdHJlZWdyaWQ6e30sZm1hdHRlcjp7fSxjb2xtZW51OnttZW51X3dpZGdldDoiIixpbnB1dF9jaGVja2JveDoiIixmaWx0ZXJfc2VsZWN0OiJmb3JtLWNvbnRyb2wiLGZpbHRlcl9pbnB1dDoiZm9ybS1jb250cm9sIn19LEJvb3RzdHJhcDU6e2NvbW1vbjp7ZGlzYWJsZWQ6InVpLWRpc2FibGVkIixoaWdobGlnaHQ6InRhYmxlLXN1Y2Nlc3MiLGhvdmVyOiJ0YWJsZS1hY3RpdmUiLGNvcm5lcmFsbDoiIixjb3JuZXJ0b3A6IiIsY29ybmVyYm90dG9tOiIiLGhpZGRlbjoiIixvdmVybGF5OiJ1aS1vdmVybGF5IixhY3RpdmU6ImFjdGl2ZSIsZXJyb3I6ImFsZXJ0IGFsZXJ0LWRhbmdlciIsYnV0dG9uOiJidG4gYnRuLWxpZ2h0Iixjb250ZW50OiIifSxiYXNlOntlbnRyaWVCb3g6IiIsdmlld0JveDoidGFibGUtcmVzcG9uc2l2ZSIsaGVhZGVyVGFibGU6InRhYmxlIHRhYmxlLWJvcmRlcmVkIixoZWFkZXJCb3g6IiIscm93VGFibGU6InRhYmxlIHRhYmxlLWJvcmRlcmVkIixyb3dCb3g6IiIsc3RyaXBlZFRhYmxlOiJ0YWJsZS1zdHJpcGVkIixmb290ZXJUYWJsZToidGFibGUgdGFibGUtYm9yZGVyZWQiLGZvb3RlckJveDoiIixoZWFkZXJSb3dUYWJsZToidGFibGUgdGFibGUtYm9yZGVyZWQiLGhlYWRlclJvd0JveDoiIixoZWFkZXJEaXY6IiIsZ3JpZHRpdGxlQm94OiIiLGN1c3RvbXRvb2xiYXJCb3g6IiIsbG9hZGluZ0JveDoicm93Iixyb3dudW1Cb3g6ImFjdGl2ZSIsc2Nyb2xsQm94OiIiLG11bHRpQm94OiJjaGVja2JveCIsc2VhcmNoQm94OiJmb3JtLWNvbnRyb2wiLHNlYXJjaFNlbGVjdDoiZm9ybS1zZWxlY3QiLHBhZ2VyQm94OiIiLHBhZ2VyVGFibGU6InRhYmxlIix0b3BwYWdlckJveDoiIixwZ0lucHV0OiJmb3JtLWNvbnRyb2wiLHBnU2VsZWN0Qm94OiJmb3JtLXNlbGVjdCIscGdCdXR0b25Cb3g6IiJ9LG1vZGFsOnttb2RhbDoibW9kYWwtY29udGVudCIsaGVhZGVyOiJtb2RhbC1oZWFkZXIiLHRpdGxlOiJtb2RhbC10aXRsZSIsY29udGVudDoibW9kYWwtYm9keSIscmVzaXphYmxlOiJ1aS1yZXNpemFibGUtaGFuZGxlIHVpLXJlc2l6YWJsZS1zZSIsaWNvbl9jbG9zZToib2ktY2lyY2xlLXgiLGljb25fcmVzaXphYmxlOiJvaS1jaXJjbGUteCJ9LGNlbGxlZGl0OntpbnB1dENsYXNzOiJmb3JtLWNvbnRyb2wiLHNlbGVjdENsYXNzOiJmb3JtLXNlbGVjdCJ9LGlubGluZWRpdDp7aW5wdXRDbGFzczoiZm9ybS1jb250cm9sIixzZWxlY3RDbGFzczoiZm9ybS1zZWxlY3QifSxmb3JtZWRpdDp7aW5wdXRDbGFzczoiZm9ybS1jb250cm9sIixzZWxlY3RDbGFzczoiZm9ybS1zZWxlY3QifSxuYXZpZ2F0b3I6e30sZ3JvdXBpbmc6e30sZmlsdGVyOnt0YWJsZV93aWRnZXQ6InRhYmxlIHRhYmxlLXNtIixzclNlbGVjdDoiZm9ybS1zZWxlY3QiLHNySW5wdXQ6ImZvcm0tY29udHJvbCIsbWVudV93aWRnZXQ6IiJ9LHN1YmdyaWQ6e30sdHJlZWdyaWQ6e30sZm1hdHRlcjp7fSxjb2xtZW51OnttZW51X3dpZGdldDoiIixpbnB1dF9jaGVja2JveDoiIixmaWx0ZXJfc2VsZWN0OiJmb3JtLXNlbGVjdCIsZmlsdGVyX2lucHV0OiJmb3JtLWNvbnRyb2wifX19LGljb25TZXQ6e0ljb25pYzp7Y29tbW9uOntpY29uX2Jhc2U6Im9pIn0sYmFzZTp7aWNvbl9maXJzdDoib2ktbWVkaWEtc3RlcC1iYWNrd2FyZCIsaWNvbl9wcmV2OiJvaS1jYXJldC1sZWZ0IixpY29uX25leHQ6Im9pLWNhcmV0LXJpZ2h0IixpY29uX2VuZDoib2ktbWVkaWEtc3RlcC1mb3J3YXJkIixpY29uX2FzYzoib2ktY2FyZXQtdG9wIixpY29uX2Rlc2M6Im9pLWNhcmV0LWJvdHRvbSIsaWNvbl9jYXB0aW9uX29wZW46Im9pLWNvbGxhcHNlLXVwIixpY29uX2NhcHRpb25fY2xvc2U6Im9pLWV4cGFuZC1kb3duIn0sbW9kYWw6e2ljb25fY2xvc2U6Im9pLWNpcmNsZS14IixpY29uX3Jlc2l6YWJsZToib2ktcGx1cyJ9LGlubGluZWRpdDp7aWNvbl9lZGl0X25hdjoib2ktcGVuY2lsIixpY29uX2FkZF9uYXY6Im9pLXBsdXMiLGljb25fc2F2ZV9uYXY6Im9pLWNoZWNrIixpY29uX2NhbmNlbF9uYXY6Im9pLWFjdGlvbi11bmRvIn0sZm9ybWVkaXQ6e2ljb25fcHJldjoib2ktY2hldnJvbi1sZWZ0IixpY29uX25leHQ6Im9pLWNoZXZyb24tcmlnaHQiLGljb25fc2F2ZToib2ktY2hlY2siLGljb25fY2xvc2U6Im9pLWJhbiIsaWNvbl9kZWw6Im9pLWRlbGV0ZSIsaWNvbl9jYW5jZWw6Im9pLWJhbiJ9LG5hdmlnYXRvcjp7aWNvbl9lZGl0X25hdjoib2ktcGVuY2lsIixpY29uX2FkZF9uYXY6Im9pLXBsdXMiLGljb25fZGVsX25hdjoib2ktdHJhc2giLGljb25fc2VhcmNoX25hdjoib2ktem9vbS1pbiIsaWNvbl9yZWZyZXNoX25hdjoib2ktcmVsb2FkIixpY29uX3ZpZXdfbmF2OiJvaS1icm93c2VyIixpY29uX25ld2J1dHRvbl9uYXY6Im9pLWJvb2sifSxncm91cGluZzp7aWNvbl9wbHVzOiJvaS1jYXJldC1yaWdodCIsaWNvbl9taW51czoib2ktY2FyZXQtYm90dG9tIn0sZmlsdGVyOntpY29uX3NlYXJjaDoib2ktbWFnbmlmeWluZy1nbGFzcyIsaWNvbl9yZXNldDoib2ktcmVsb2FkIixpY29uX3F1ZXJ5OiJvaS1jb21tZW50LXNxdWFyZSJ9LHN1YmdyaWQ6e2ljb25fcGx1czoib2ktY2hldnJvbi1yaWdodCIsaWNvbl9taW51czoib2ktY2hldnJvbi1ib3R0b20iLGljb25fb3Blbjoib2ktZXhwYW5kLWxlZnQifSx0cmVlZ3JpZDp7aWNvbl9wbHVzOiJvaS1wbHVzIixpY29uX21pbnVzOiJvaS1taW51cyIsaWNvbl9sZWFmOiJvaS1tZWRpYS1yZWNvcmQifSxmbWF0dGVyOntpY29uX2VkaXQ6Im9pLXBlbmNpbCIsaWNvbl9hZGQ6Im9pLXBsdXMiLGljb25fc2F2ZToib2ktY2hlY2siLGljb25fY2FuY2VsOiJvaS1hY3Rpb24tdW5kbyIsaWNvbl9kZWw6Im9pLXRyYXNoIn0sY29sbWVudTp7aWNvbl9tZW51OiJvaS1saXN0IixpY29uX3NvcnRfYXNjOiJvaS1zb3J0LWFzY2VuZGluZyIsaWNvbl9zb3J0X2Rlc2M6Im9pLXNvcnQtZGVzY2VuZGluZyIsaWNvbl9jb2x1bW5zOiJvaS1wcm9qZWN0IixpY29uX2ZpbHRlcjoib2ktbWFnbmlmeWluZy1nbGFzcyIsaWNvbl9ncm91cDoib2ktbGlzdC1yaWNoIixpY29uX2ZyZWV6ZToib2ktc3ByZWFkc2hlZXQiLGljb25fbW92ZToib2ktbW92ZSIsaWNvbl9uZXdfaXRlbToib2ktZXh0ZXJuYWwtbGluayIsaWNvbl90b29sYmFyX21lbnU6Im9pLW1lbnUiLGljb25fZ3JvdXBfb3A6IiIsaWNvbl9vcGVyX29wOiIiLGljb25fcmVzZXQ6Im9pLXJlbG9hZCIsaWNvbl9jbG9zZToib2ktYmFuIn19LE9jdGljb25zOntjb21tb246e2ljb25fYmFzZToib2N0aWNvbiJ9LGJhc2U6e2ljb25fZmlyc3Q6Im9jdGljb24tdHJpYW5nbGUtbGVmdCIsaWNvbl9wcmV2OiJvY3RpY29uLWNoZXZyb24tbGVmdCIsaWNvbl9uZXh0OiJvY3RpY29uLWNoZXZyb24tcmlnaHQiLGljb25fZW5kOiJvY3RpY29uLXRyaWFuZ2xlLXJpZ2h0IixpY29uX2FzYzoib2N0aWNvbi10cmlhbmdsZS11cCIsaWNvbl9kZXNjOiJvY3RpY29uLXRyaWFuZ2xlLWRvd24iLGljb25fY2FwdGlvbl9vcGVuOiJvY3RpY29uLXRyaWFuZ2xlLXVwIixpY29uX2NhcHRpb25fY2xvc2U6Im9jdGljb24tdHJpYW5nbGUtZG93biJ9LG1vZGFsOntpY29uX2Nsb3NlOiJvY3RpY29uLXgiLGljb25fcmVzaXphYmxlOiJvY3RpY29uLXBsdXMifSxpbmxpbmVkaXQ6e2ljb25fZWRpdF9uYXY6Im9jdGljb24tcGVuY2lsIixpY29uX2FkZF9uYXY6Im9jdGljb24tcGx1cyIsaWNvbl9zYXZlX25hdjoib2N0aWNvbi1jaGVjayIsaWNvbl9jYW5jZWxfbmF2OiJvY3RpY29uLWNpcmNsZS1zbGFzaCJ9LGZvcm1lZGl0OntpY29uX3ByZXY6Im9jdGljb24tY2hldnJvbi1sZWZ0IixpY29uX25leHQ6Im9jdGljb24tY2hldnJvbi1yaWdodCIsaWNvbl9zYXZlOiJvY3RpY29uLWNoZWNrIixpY29uX2Nsb3NlOiJvY3RpY29uLXgiLGljb25fZGVsOiJvY3RpY29uLXRyYXNoY2FuIixpY29uX2NhbmNlbDoib2N0aWNvbi1jaXJjbGUtc2xhc2gifSxuYXZpZ2F0b3I6e2ljb25fZWRpdF9uYXY6Im9jdGljb24tcGVuY2lsIixpY29uX2FkZF9uYXY6Im9jdGljb24tcGx1cyIsaWNvbl9kZWxfbmF2OiJvY3RpY29uLXRyYXNoY2FuIixpY29uX3NlYXJjaF9uYXY6Im9jdGljb24tc2VhcmNoIixpY29uX3JlZnJlc2hfbmF2OiJvY3RpY29uLXN5bmMiLGljb25fdmlld19uYXY6Im9jdGljb24tZmlsZSIsaWNvbl9uZXdidXR0b25fbmF2OiJvY3RpY29uLWxpbmstZXh0ZXJuYWwifSxncm91cGluZzp7aWNvbl9wbHVzOiJvY3RpY29uLXRyaWFuZ2xlLXJpZ2h0IixpY29uX21pbnVzOiJvY3RpY29uLXRyaWFuZ2xlLWRvd24ifSxmaWx0ZXI6e2ljb25fc2VhcmNoOiJvY3RpY29uLXNlYXJjaCIsaWNvbl9yZXNldDoib2N0aWNvbi1zeW5jIixpY29uX3F1ZXJ5OiJvY3RpY29uLWZpbGUtY29kZSJ9LHN1YmdyaWQ6e2ljb25fcGx1czoib2N0aWNvbi10cmlhbmdsZS1yaWdodCIsaWNvbl9taW51czoib2N0aWNvbi10cmlhbmdsZS1kb3duIixpY29uX29wZW46Im9jdGljb24tZ2l0LW1lcmdlIn0sdHJlZWdyaWQ6e2ljb25fcGx1czoib2N0aWNvbi10cmlhbmdsZS1yaWdodCIsaWNvbl9taW51czoib2N0aWNvbi10cmlhbmdsZS1kb3duIixpY29uX2xlYWY6Im9jdGljb24tcHJpbWl0aXZlLWRvdCJ9LGZtYXR0ZXI6e2ljb25fZWRpdDoib2N0aWNvbi1wZW5jaWwiLGljb25fYWRkOiJvY3RpY29uLXBsdXMiLGljb25fc2F2ZToib2N0aWNvbi1jaGVjayIsaWNvbl9jYW5jZWw6Im9jdGljb24tY2lyY2xlLXNsYXNoIixpY29uX2RlbDoib2N0aWNvbi10cmFzaGNhbiJ9LGNvbG1lbnU6e2ljb25fbWVudToib2N0aWNvbi1ncmFiYmVyIixpY29uX3NvcnRfYXNjOiJvY3RpY29uLWFycm93LXVwIixpY29uX3NvcnRfZGVzYzoib2N0aWNvbi1hcnJvdy1kb3duIixpY29uX2NvbHVtbnM6Im9jdGljb24tcmVwbyIsaWNvbl9maWx0ZXI6Im9jdGljb24tc2VhcmNoIixpY29uX2dyb3VwOiJvY3RpY29uLWxpc3QtdW5vcmRlcmVkIixpY29uX2ZyZWV6ZToib2N0aWNvbi1yZXBvIixpY29uX21vdmU6Im9jdGljb24tZ2l0LWNvbXBhcmUiLGljb25fbmV3X2l0ZW06Im9jdGljb24tbGluay1leHRlcm5hbCIsaWNvbl90b29sYmFyX21lbnU6Im9jdGljb24tdGhyZWUtYmFycyIsaWNvbl9ncm91cF9vcDoiIixpY29uX29wZXJfb3A6IiIsaWNvbl9yZXNldDoib2N0aWNvbi1zeW5jIixpY29uX2Nsb3NlOiJvY3RpY29uLXgifX0sZm9udEF3ZXNvbWU6e2NvbW1vbjp7aWNvbl9iYXNlOiJmYXMifSxiYXNlOntpY29uX2ZpcnN0OiJmYS1zdGVwLWJhY2t3YXJkIixpY29uX3ByZXY6ImZhLWJhY2t3YXJkIixpY29uX25leHQ6ImZhLWZvcndhcmQiLGljb25fZW5kOiJmYS1zdGVwLWZvcndhcmQiLGljb25fYXNjOiJmYS1jYXJldC11cCIsaWNvbl9kZXNjOiJmYS1jYXJldC1kb3duIixpY29uX2NhcHRpb25fb3BlbjoiZmEtY2FyZXQtc3F1YXJlLXVwIixpY29uX2NhcHRpb25fY2xvc2U6ImZhLWNhcmV0LXNxdWFyZS1kb3duICJ9LG1vZGFsOntpY29uX2Nsb3NlOiJmYS13aW5kb3ctY2xvc2UiLGljb25fcmVzaXphYmxlOiJmYS1wbHVzIn0saW5saW5lZGl0OntpY29uX2VkaXRfbmF2OiJmYS1lZGl0IixpY29uX2FkZF9uYXY6ImZhLXBsdXMiLGljb25fc2F2ZV9uYXY6ImZhLXNhdmUiLGljb25fY2FuY2VsX25hdjoiZmEtcmVwbGF5In0sZm9ybWVkaXQ6e2ljb25fcHJldjoiZmEtY2hldnJvbi1sZWZ0IixpY29uX25leHQ6ImZhLWNoZXZyb24tcmlnaHQiLGljb25fc2F2ZToiZmEtc2F2ZSIsaWNvbl9jbG9zZToiZmEtd2luZG93LWNsb3NlIixpY29uX2RlbDoiZmEtdHJhc2giLGljb25fY2FuY2VsOiJmYS10aW1lcyJ9LG5hdmlnYXRvcjp7aWNvbl9lZGl0X25hdjoiZmEtZWRpdCIsaWNvbl9hZGRfbmF2OiJmYS1wbHVzIixpY29uX2RlbF9uYXY6ImZhLXRyYXNoIixpY29uX3NlYXJjaF9uYXY6ImZhLXNlYXJjaCIsaWNvbl9yZWZyZXNoX25hdjoiZmEtc3luYyIsaWNvbl92aWV3X25hdjoiZmEtc3RpY2t5LW5vdGUiLGljb25fbmV3YnV0dG9uX25hdjoiZmEtZXh0ZXJuYWwtbGluay1hbHQifSxncm91cGluZzp7aWNvbl9wbHVzOiJmYS1jYXJldC1yaWdodCIsaWNvbl9taW51czoiZmEtY2FyZXQtZG93biJ9LGZpbHRlcjp7aWNvbl9zZWFyY2g6ImZhLXNlYXJjaCIsaWNvbl9yZXNldDoiZmEtcmVwbHkiLGljb25fcXVlcnk6ImZhLXBlbi1zcXVhcmUgIn0sc3ViZ3JpZDp7aWNvbl9wbHVzOiJmYS1hcnJvdy1jaXJjbGUtcmlnaHQiLGljb25fbWludXM6ImZhLWFycm93LWNpcmNsZS1kb3duIixpY29uX29wZW46ImZhLWVsbGlwc2lzLXYifSx0cmVlZ3JpZDp7aWNvbl9wbHVzOiJmYS1wbHVzIixpY29uX21pbnVzOiJmYS1taW51cyIsaWNvbl9sZWFmOiJmYS1jaXJjbGUifSxmbWF0dGVyOntpY29uX2VkaXQ6ImZhLWVkaXQiLGljb25fYWRkOiJmYS1wbHVzIixpY29uX3NhdmU6ImZhLXNhdmUiLGljb25fY2FuY2VsOiJmYS11bmRvIixpY29uX2RlbDoiZmEtdHJhc2gifSxjb2xtZW51OntpY29uX21lbnU6ImZhLWVsbGlwc2lzLXYiLGljb25fc29ydF9hc2M6ImZhLXNvcnQtYW1vdW50LXVwIixpY29uX3NvcnRfZGVzYzoiZmEtc29ydC1hbW91bnQtZG93biIsaWNvbl9jb2x1bW5zOiJmYS1jb2x1bW5zIixpY29uX2ZpbHRlcjoiZmEtZmlsdGVyIixpY29uX2dyb3VwOiJmYS1vYmplY3QtZ3JvdXAiLGljb25fZnJlZXplOiJmYS1zbm93Zmxha2UiLGljb25fbW92ZToiZmEtZXhwYW5kLWFycm93cy1hbHQiLGljb25fbmV3X2l0ZW06ImZhLWV4dGVybmFsLWxpbmstYWx0IixpY29uX3Rvb2xiYXJfbWVudToiZmEtbGlzdCIsaWNvbl9ncm91cF9vcDoiIixpY29uX29wZXJfb3A6IiIsaWNvbl9yZXNldDoiZmEtcmVwbHkiLGljb25fY2xvc2U6ImZhLXdpbmRvdy1jbG9zZSJ9fSxCb290c3RyYXA1Ontjb21tb246e2ljb25fYmFzZToiYmkifSxiYXNlOntpY29uX2ZpcnN0OiJiaS1jaGV2cm9uLWJhci1sZWZ0IixpY29uX3ByZXY6ImJpLWNoZXZyb24tbGVmdCIsaWNvbl9uZXh0OiJiaS1jaGV2cm9uLXJpZ2h0IixpY29uX2VuZDoiYmktY2hldnJvbi1iYXItcmlnaHQiLGljb25fYXNjOiJiaS1jYXJldC11cC1maWxsIixpY29uX2Rlc2M6ImJpLWNhcmV0LWRvd24tZmlsbCIsaWNvbl9jYXB0aW9uX29wZW46ImJpLWFycm93cy1jb2xsYXBzZSIsaWNvbl9jYXB0aW9uX2Nsb3NlOiJiaS1hcnJvd3MtZXhwYW5kIn0sbW9kYWw6e2ljb25fY2xvc2U6ImJpLXgtbGciLGljb25fcmVzaXphYmxlOiJiaS1ib3gtYXJyb3ctaW4tZG93bi1yaWdodCJ9LGlubGluZWRpdDp7aWNvbl9lZGl0X25hdjoiYmktcGVuY2lsLXNxdWFyZSIsaWNvbl9hZGRfbmF2OiJiaS1wbHVzLXNxdWFyZSIsaWNvbl9zYXZlX25hdjoiYmktc2F2ZSIsaWNvbl9jYW5jZWxfbmF2OiJiaS14LXNxdWFyZSJ9LGZvcm1lZGl0OntpY29uX3ByZXY6ImJpLWNoZXZyb24tbGVmdCIsaWNvbl9uZXh0OiJiaS1jaGV2cm9uLXJpZ2h0IixpY29uX3NhdmU6ImJpLXNhdmUiLGljb25fY2xvc2U6ImJpLXgtc3F1YXJlIixpY29uX2RlbDoiYmktdHJhc2giLGljb25fY2FuY2VsOiJiaS14LW9jdGFnb24ifSxuYXZpZ2F0b3I6e2ljb25fZWRpdF9uYXY6ImJpLXBlbmNpbC1zcXVhcmUiLGljb25fYWRkX25hdjoiYmktcGx1cy1zcXVhcmUiLGljb25fZGVsX25hdjoiYmktdHJhc2giLGljb25fc2VhcmNoX25hdjoiYmktc2VhcmNoIixpY29uX3JlZnJlc2hfbmF2OiJiaS1hcnJvdy1jbG9ja3dpc2UiLGljb25fdmlld19uYXY6ImJpLXZpZXctbGlzdCIsaWNvbl9uZXdidXR0b25fbmF2OiJiaS13aW5kb3cifSxncm91cGluZzp7aWNvbl9wbHVzOiJiaS1jYXJldC1yaWdodCIsaWNvbl9taW51czoiYmktY2FyZXQtZG93biJ9LGZpbHRlcjp7aWNvbl9zZWFyY2g6ImJpLXNlYXJjaCIsaWNvbl9yZXNldDoiYmktYXJyb3ctY2xvY2t3aXNlIixpY29uX3F1ZXJ5OiJiaS1qb3VybmFsLWNvZGUifSxzdWJncmlkOntpY29uX3BsdXM6ImJpLWNoZXZyb24tcmlnaHQiLGljb25fbWludXM6ImJpLWNoZXZyb24tZG93biIsaWNvbl9vcGVuOiJiaS1hcnJvdy1iYXItcmlnaHQifSx0cmVlZ3JpZDp7aWNvbl9wbHVzOiJiaS1wbHVzLXNxdWFyZS1kb3R0ZWQiLGljb25fbWludXM6ImJpLWRhc2gtc3F1YXJlLWRvdHRlZCIsaWNvbl9sZWFmOiJiaS1jaXJjbGUifSxmbWF0dGVyOntpY29uX2VkaXQ6ImJpLXBlbmNpbC1zcXVhcmUiLGljb25fYWRkOiJiaS1wbHVzLXNxdWFyZSIsaWNvbl9zYXZlOiJiaS1zYXZlIixpY29uX2NhbmNlbDoiYmkteC1zcXVhcmUiLGljb25fZGVsOiJiaS10cmFzaCJ9LGNvbG1lbnU6e2ljb25fbWVudToiYmktbGlzdCIsaWNvbl9zb3J0X2FzYzoiYmktc29ydC1hbHBoYS1kb3duIixpY29uX3NvcnRfZGVzYzoiYmktc29ydC1hbHBoYS11cCIsaWNvbl9jb2x1bW5zOiJiaS1jb2x1bW5zIixpY29uX2ZpbHRlcjoiYmktc2VhcmNoIixpY29uX2dyb3VwOiJiaS1jb2xsZWN0aW9uLXBsYXkiLGljb25fZnJlZXplOiJiaS1sYXlvdXQtdGV4dC1zaWRlYmFyLXJldmVyc2UiLGljb25fbW92ZToiYmktYXJyb3dzLW1vdmUiLGljb25fbmV3X2l0ZW06ImJpLXdpbmRvdyIsaWNvbl90b29sYmFyX21lbnU6ImJpLWNhcmQtdGV4dCIsaWNvbl9ncm91cF9vcDoiIixpY29uX29wZXJfb3A6IiIsaWNvbl9yZXNldDoiYmktYXJyb3ctY2xvY2t3aXNlIixpY29uX2Nsb3NlOiJiaS14LXNxdWFyZSJ9fX19KSxZZS5mbi5qcUdyaWQ9ZnVuY3Rpb24oJGUpe2lmKCJzdHJpbmciIT10eXBlb2YgJGUpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2lmKCF0aGlzLmdyaWQpe1llLmpncmlkLmlzTnVsbCgkZSl8fHZvaWQgMD09PSRlLmRhdGF8fChOPSRlLmRhdGEsJGUuZGF0YT1bXSk7dmFyIGI9WWUuZXh0ZW5kKCEwLHt1cmw6IiIsaGVpZ2h0OjE1MCxkZWZhdWx0Q29sV2lkdGg6MTUwLHBhZ2U6MSxyb3dOdW06MjAscm93VG90YWw6bnVsbCxyZWNvcmRzOjAscGFnZXI6IiIscGdidXR0b25zOiEwLHBnaW5wdXQ6ITAsY29sTW9kZWw6W10scm93TGlzdDpbXSxjb2xOYW1lczpbXSxzb3J0b3JkZXI6ImFzYyIsc29ydG5hbWU6IiIsZGF0YXR5cGU6InhtbCIsbXR5cGU6IkdFVCIsYWx0Um93czohMSxzZWxhcnJyb3c6W10scHJlc2VydmVTZWxlY3Rpb246ITEsc2F2ZWRSb3c6W10sc2hyaW5rVG9GaXQ6ITAseG1sUmVhZGVyOnt9LGpzb25SZWFkZXI6e30sc3ViR3JpZDohMSxzdWJHcmlkTW9kZWw6W10scmVjY291bnQ6MCxsYXN0cGFnZTowLGxhc3Rzb3J0OjAsc2Vscm93Om51bGwsYmVmb3JlU2VsZWN0Um93Om51bGwsb25TZWxlY3RSb3c6bnVsbCxvblNvcnRDb2w6bnVsbCxvbmRibENsaWNrUm93Om51bGwsb25SaWdodENsaWNrUm93Om51bGwsb25QYWdpbmc6bnVsbCxvblNlbGVjdEFsbDpudWxsLG9uSW5pdEdyaWQ6bnVsbCxsb2FkQ29tcGxldGU6bnVsbCxncmlkQ29tcGxldGU6bnVsbCxsb2FkRXJyb3I6bnVsbCxsb2FkQmVmb3JlU2VuZDpudWxsLGFmdGVySW5zZXJ0Um93Om51bGwsYmVmb3JlUmVxdWVzdDpudWxsLGJlZm9yZVByb2Nlc3Npbmc6bnVsbCxvbkhlYWRlckNsaWNrOm51bGwsdmlld3JlY29yZHM6ITEsbG9hZG9uY2U6ITEsbXVsdGlzZWxlY3Q6ITEsbXVsdGlrZXk6ITEsbXVsdGlib3hvbmx5OiExLG11bHRpbWFpbDohMSxtdWx0aXNlbGVjdFdpZHRoOjMwLGVkaXR1cmw6bnVsbCxzZWFyY2g6ITEsY2FwdGlvbjoiIixoaWRlZ3JpZDohMCxoaWRkZW5ncmlkOiExLHBvc3REYXRhOnt9LHVzZXJEYXRhOnt9LHRyZWVHcmlkOiExLHRyZWVHcmlkTW9kZWw6Im5lc3RlZCIsdHJlZVJlYWRlcjp7fSx0cmVlQU5vZGU6LTEsRXhwYW5kQ29sdW1uOm51bGwsdHJlZV9yb290X2xldmVsOjAscHJtTmFtZXM6e3BhZ2U6InBhZ2UiLHJvd3M6InJvd3MiLHNvcnQ6InNpZHgiLG9yZGVyOiJzb3JkIixzZWFyY2g6Il9zZWFyY2giLG5kOiJuZCIsaWQ6ImlkIixvcGVyOiJvcGVyIixlZGl0b3BlcjoiZWRpdCIsYWRkb3BlcjoiYWRkIixkZWxvcGVyOiJkZWwiLHN1YmdyaWRpZDoiaWQiLG5wYWdlOm51bGwsdG90YWxyb3dzOiJ0b3RhbHJvd3MifSxmb3JjZUZpdDohMSxncmlkc3RhdGU6InZpc2libGUiLGNlbGxFZGl0OiExLGNlbGxzdWJtaXQ6InJlbW90ZSIsbnY6MCxsb2FkdWk6ImVuYWJsZSIsdG9vbGJhcjpbITEsIiJdLHNjcm9sbDohMSxkZXNlbGVjdEFmdGVyU29ydDohMCxzY3JvbGxyb3dzOiExLGF1dG93aWR0aDohMSxzY3JvbGxPZmZzZXQ6WWUuamdyaWQuc2Nyb2xsYmFyV2lkdGgoKSszLGNlbGxMYXlvdXQ6NSxzdWJHcmlkV2lkdGg6MjAsZ3JpZHZpZXc6ITAscm93bnVtV2lkdGg6MzUscm93bnVtYmVyczohMSxwYWdlcnBvczoiY2VudGVyIixyZWNvcmRwb3M6InJpZ2h0Iixmb290ZXJyb3c6ITEsdXNlckRhdGFPbkZvb3RlcjohMSxoZWFkZXJyb3c6ITEsdXNlckRhdGFPbkhlYWRlcjohMSxob3ZlcnJvd3M6ITAsdmlld3NvcnRjb2xzOlshMSwidmVydGljYWwiLCEwXSxyZXNpemVjbGFzczoiIixhdXRvZW5jb2RlOiExLHJlbWFwQ29sdW1uczpbXSxhamF4R3JpZE9wdGlvbnM6e30sZGlyZWN0aW9uOiJsdHIiLHRvcHBhZ2VyOiExLGhlYWRlcnRpdGxlczohMSxzY3JvbGxUaW1lb3V0OjQwLGRhdGE6W10sX2luZGV4Ont9LGdyb3VwaW5nOiExLGdyb3VwaW5nVmlldzp7Z3JvdXBGaWVsZDpbXSxncm91cE9yZGVyOltdLGdyb3VwVGV4dDpbXSxncm91cENvbHVtblNob3c6W10sZ3JvdXBTdW1tYXJ5OltdLHNob3dTdW1tYXJ5T25IaWRlOiExLHNvcnRpdGVtczpbXSxzb3J0bmFtZXM6W10sc3VtbWFyeTpbXSxzdW1tYXJ5dmFsOltdLHBsdXNpY29uOiIiLG1pbnVzaWNvbjoiIixkaXNwbGF5RmllbGQ6W10sZ3JvdXBTdW1tYXJ5UG9zOltdLGZvcm1hdERpc3BsYXlGaWVsZDpbXSxfbG9jZ3I6ITF9LGdyb3VwSGVhZGVyT246ITEsaWdub3JlQ2FzZTohMCxjbVRlbXBsYXRlOnt9LGlkUHJlZml4OiIiLG11bHRpU29ydDohMSxtaW5Db2xXaWR0aDozMyxzY3JvbGxQb3BVcDohMSxzY3JvbGxUb3BPZmZzZXQ6MCxzY3JvbGxMZWZ0T2Zmc2V0OiIxMDAlIixzY3JvbGxNYXhCdWZmZXI6MCxzdG9yZU5hdk9wdGlvbnM6ITEscmVnaW9uYWw6ImVuIixzdHlsZVVJOiJqUXVlcnlVSSIsaWNvblNldDoiSWNvbmljIixyZXNwb25zaXZlOiExLGZvcmNlUGdCdXR0b25zOiExLHJlc3RvcmVDZWxsb25GYWlsOiEwLGVkaXROZXh0Um93Q2VsbDohMSxjb2xGaWx0ZXJzOnt9LGNvbE1lbnU6ITEsY29sTWVudUN1c3RvbTp7fSxjb2xNZW51Q29sdW1uRG9uZTpudWxsLGNvbE1lbnVCZWZvcmVQcm9jZXNzOm51bGwsY29sU3BhbkhlYWRlcjpbXSx0cmVlR3JpZF9iaWdEYXRhOiExLHRyZWVHcmlkX3Jvb3RQYXJhbXM6e290aGVyRGF0YTp7fX0sdHJlZUdyaWRfYmVmb3JlUmVxdWVzdDpudWxsLHRyZWVHcmlkX2FmdGVyTG9hZENvbXBsZXRlOm51bGwsdXNlTmFtZUZvclNlYXJjaDohMSxmb3JtYXRGb290ZXJEYXRhOiExLGZvcm1hdEhlYWRlckRhdGE6ITEsbWVyZ2VTZWFyY2g6ITEsc2VhcmNoTW9kdWxlczp7bWVyZ2VPcGVyOiJBTkQiLGZpbHRlcklucHV0OiEwLGZpbHRlclRvb2xiYXI6ITAsc2VhcmNoR3JpZDohMCxjb2xNZW51U2VhcmNoOiEwfSxlbXB0eVJlY29yZFJvdzohMCxhcmlhQm9keTohMSxzZWFyY2hDb2xzOiExLHNlYXJjaENvbE9wdGlvbnM6e2NvbFdpZHRoOjkwLHNlYXJjaE9wOiJPUiIsb3BlcmFuZDoiY24iLHVzZUNhc2U6ITEsY29sTmFtZToiU2VhcmNoIENvbCIsY29sbWVudTohMCxzZWFyY2hPbkVudGVyOiEwLGFPcGVyYW5kczpbImNuIiwiYnciLCJldyIsImVxIiwibmUiXSxfY250aDpbImNiIiwicm4iLCJzYyIsInN1YmdyaWQiLCJjb2xfbmFtZSJdLHZpc2libGVDb2x1bW5zOltdfSxkYmNvbmZpZzp7ZGJuYW1lOiIiLGRidmVyc2lvbjotMSxkYnRhYmxlOiIiLGxvYWRJZkV4aXN0czohMSxpc0tleUluRGF0YTohMSxkYXRhVXJsOiIiLGJlZm9yZUluc2VydERhdGE6bnVsbCxmZXRjaE9wdGlvbnM6e319fSxZZS5qZ3JpZC5kZWZhdWx0cywkZSksUT0odm9pZCAwIT09TiYmKGIuZGF0YT1OLCRlLmRhdGE9TiksdGhpcyksdz17aGVhZGVyczpbXSxjb2xzOltdLGZvb3RlcnM6W10saHJoZWFkZXJzOltdLGRyYWdTdGFydDpmdW5jdGlvbihlLHQscil7dmFyIGk9WWUodGhpcy5iRGl2KS5vZmZzZXQoKS5sZWZ0LG89cGFyc2VJbnQoYi5jb2xNb2RlbFtlXS5taW5SZXNpemVXaWR0aHx8Yi5taW5Db2xXaWR0aCwxMCk7aXNOYU4obykmJihvPTMzKSx0aGlzLnJlc2l6aW5nPXtpZHg6ZSxzdGFydFg6dC5wYWdlWCxzT0w6dC5wYWdlWC1pLG1pblc6b30sdGhpcy5oRGl2LnN0eWxlLmN1cnNvcj0iY29sLXJlc2l6ZSIsdGhpcy5jdXJHYm94PVllKCIjcnNfbSIrWWUuamdyaWQuanFJRChiLmlkKSwiI2dib3hfIitZZS5qZ3JpZC5qcUlEKGIuaWQpKSx0aGlzLmN1ckdib3guY3NzKHtkaXNwbGF5OiJibG9jayIsbGVmdDp0LnBhZ2VYLWksdG9wOnJbMV0saGVpZ2h0OnJbMl19KSxZZShRKS50cmlnZ2VySGFuZGxlcigianFHcmlkUmVzaXplU3RhcnQiLFt0LGVdKSxZZS5qZ3JpZC5pc0Z1bmN0aW9uKGIucmVzaXplU3RhcnQpJiZiLnJlc2l6ZVN0YXJ0LmNhbGwoUSx0LGUpLGRvY3VtZW50Lm9uc2VsZWN0c3RhcnQ9ZnVuY3Rpb24oKXtyZXR1cm4hMX19LGRyYWdNb3ZlOmZ1bmN0aW9uKGUpe3ZhciB0LHIsaSxvO3RoaXMucmVzaXppbmcmJihlPWUucGFnZVgtdGhpcy5yZXNpemluZy5zdGFydFgsdD10aGlzLmhlYWRlcnNbdGhpcy5yZXNpemluZy5pZHhdLChyPSJsdHIiPT09Yi5kaXJlY3Rpb24/dC53aWR0aCtlOnQud2lkdGgtZSk+dGhpcy5yZXNpemluZy5taW5XKSYmKHRoaXMuY3VyR2JveC5jc3Moe2xlZnQ6dGhpcy5yZXNpemluZy5zT0wrZX0pLCEwPT09Yi5mb3JjZUZpdD8oaT10aGlzLmhlYWRlcnNbdGhpcy5yZXNpemluZy5pZHgrYi5udl0sKG89Imx0ciI9PT1iLmRpcmVjdGlvbj9pLndpZHRoLWU6aS53aWR0aCtlKT50aGlzLnJlc2l6aW5nLm1pblcmJih0Lm5ld1dpZHRoPXIsaS5uZXdXaWR0aD1vKSk6KHRoaXMubmV3V2lkdGg9Imx0ciI9PT1iLmRpcmVjdGlvbj9iLnRibHdpZHRoK2U6Yi50Ymx3aWR0aC1lLHQubmV3V2lkdGg9cikpfSxkcmFnRW5kOmZ1bmN0aW9uKGUsdCl7dmFyIHIsaTt0aGlzLmhEaXYuc3R5bGUuY3Vyc29yPSJkZWZhdWx0Iix2b2lkIDA9PT10JiYodD0hMCksdGhpcy5yZXNpemluZyYmKHI9dGhpcy5yZXNpemluZy5pZHgsaT10aGlzLmhlYWRlcnNbcl0ubmV3V2lkdGh8fHRoaXMuaGVhZGVyc1tyXS53aWR0aCxpPXBhcnNlRmxvYXQoaSksdGhpcy5yZXNpemluZz0hMSxZZSgiI3JzX20iK1llLmpncmlkLmpxSUQoYi5pZCkpLmNzcygiZGlzcGxheSIsIm5vbmUiKSxiLmNvbE1vZGVsW3JdLndpZHRoPWksdGhpcy5oZWFkZXJzW3JdLndpZHRoPWksdGhpcy5oZWFkZXJzW3JdLmVsLnN0eWxlLndpZHRoPWkrInB4Iix0aGlzLmNvbHNbcl0uc3R5bGUud2lkdGg9aSsicHgiLDA8dGhpcy5mb290ZXJzLmxlbmd0aCYmKHRoaXMuZm9vdGVyc1tyXS5zdHlsZS53aWR0aD1pKyJweCIpLDA8dGhpcy5ocmhlYWRlcnMubGVuZ3RoJiYodGhpcy5ocmhlYWRlcnNbcl0uc3R5bGUud2lkdGg9aSsicHgiKSwhMD09PWIuZm9yY2VGaXQ/KGk9dGhpcy5oZWFkZXJzW3IrYi5udl0ubmV3V2lkdGh8fHRoaXMuaGVhZGVyc1tyK2IubnZdLndpZHRoLHRoaXMuaGVhZGVyc1tyK2IubnZdLndpZHRoPWksdGhpcy5oZWFkZXJzW3IrYi5udl0uZWwuc3R5bGUud2lkdGg9aSsicHgiLHRoaXMuY29sc1tyK2IubnZdLnN0eWxlLndpZHRoPWkrInB4IiwwPHRoaXMuZm9vdGVycy5sZW5ndGgmJih0aGlzLmZvb3RlcnNbcitiLm52XS5zdHlsZS53aWR0aD1pKyJweCIpLDA8dGhpcy5ocmhlYWRlcnMubGVuZ3RoJiYodGhpcy5ocmhlYWRlcnNbcitiLm52XS5zdHlsZS53aWR0aD1pKyJweCIpLGIuY29sTW9kZWxbcitiLm52XS53aWR0aD1pKTooYi50Ymx3aWR0aD10aGlzLm5ld1dpZHRofHxiLnRibHdpZHRoLFllKHRoaXMuYkRpdikuZmluZCgidGFibGUiKS5maXJzdCgpLmNzcygid2lkdGgiLGIudGJsd2lkdGgrInB4IiksWWUodGhpcy5oRGl2KS5maW5kKCJ0YWJsZSIpLmZpcnN0KCkuY3NzKCJ3aWR0aCIsYi50Ymx3aWR0aCsicHgiKSx0aGlzLmhEaXYuc2Nyb2xsTGVmdD10aGlzLmJEaXYuc2Nyb2xsTGVmdCxiLmZvb3RlcnJvdyYmKFllKHRoaXMuc0RpdikuZmluZCgidGFibGUiKS5maXJzdCgpLmNzcygid2lkdGgiLGIudGJsd2lkdGgrInB4IiksdGhpcy5zRGl2LnNjcm9sbExlZnQ9dGhpcy5iRGl2LnNjcm9sbExlZnQpLGIuaGVhZGVycm93JiYoWWUodGhpcy5ockRpdikuZmluZCgidGFibGUiKS5maXJzdCgpLmNzcygid2lkdGgiLGIudGJsd2lkdGgrInB4IiksdGhpcy5ockRpdi5zY3JvbGxMZWZ0PXRoaXMuYkRpdi5zY3JvbGxMZWZ0KSksZSYmKFllKFEpLnRyaWdnZXJIYW5kbGVyKCJqcUdyaWRSZXNpemVTdG9wIixbaSxyXSksWWUuamdyaWQuaXNGdW5jdGlvbihiLnJlc2l6ZVN0b3ApKSYmYi5yZXNpemVTdG9wLmNhbGwoUSxpLHIpLGIuZnJvemVuQ29sdW1ucykmJnQmJihZZSgiIyIrWWUuamdyaWQuanFJRChiLmlkKSkuanFHcmlkKCJkZXN0cm95RnJvemVuQ29sdW1ucyIpLFllKCIjIitZZS5qZ3JpZC5qcUlEKGIuaWQpKS5qcUdyaWQoInNldEZyb3plbkNvbHVtbnMiKSksdGhpcy5jdXJHYm94PW51bGwsZG9jdW1lbnQub25zZWxlY3RzdGFydD1mdW5jdGlvbigpe3JldHVybiEwfX0scG9wdWxhdGVWaXNpYmxlOmZ1bmN0aW9uKCl7dy50aW1lciYmY2xlYXJUaW1lb3V0KHcudGltZXIpLHcudGltZXI9bnVsbDt2YXIgZT1ZZSh3LmJEaXYpLmhlaWdodCgpO2lmKGUpe3ZhciB0LHIsaSxvLGEsbixsLHMsZCxwPVllKHcuYkRpdikuZmluZCgidGFibGUiKS5maXJzdCgpO2lmKHBbMF0ucm93cy5sZW5ndGgpdHJ5e3Q9KHI9cFswXS5yb3dzWzFdKSYmWWUocikub3V0ZXJIZWlnaHQoKXx8dy5wcmV2Um93SGVpZ2h0fWNhdGNoKGUpe3Q9dy5wcmV2Um93SGVpZ2h0fXQmJih3LnByZXZSb3dIZWlnaHQ9dCxyPWIucm93TnVtLGk9dy5zY3JvbGxUb3A9dy5iRGl2LnNjcm9sbFRvcCxuPXQqciwoYT0obz1NYXRoLnJvdW5kKHAucG9zaXRpb24oKS50b3ApLWkpK3AuaGVpZ2h0KCkpPGUmJm88PTAmJih2b2lkIDA9PT1iLmxhc3RwYWdlfHwocGFyc2VJbnQoKGEraStuLTEpL24sMTApfHwwKTw9Yi5sYXN0cGFnZSkmJihzPXBhcnNlSW50KChlLWErbi0xKS9uLDEwKXx8MSxvPTA8PWF8fHM8Mnx8ITA9PT1iLnNjcm9sbD8obD0oTWF0aC5yb3VuZCgoYStpKS9uKXx8MCkrMSwtMSk6MSksMDxvJiYobD0ocGFyc2VJbnQoaS9uLDEwKXx8MCkrMSxzPShwYXJzZUludCgoaStlKS9uLDEwKXx8MCkrMi1sLGQ9ITApLCFzfHxiLmxhc3RwYWdlJiYobD5iLmxhc3RwYWdlfHwxPT09Yi5sYXN0cGFnZXx8bD09PWIucGFnZSYmbD09PWIubGFzdHBhZ2UpfHwody5oRGl2LmxvYWRpbmc/dy50aW1lcj1zZXRUaW1lb3V0KHcucG9wdWxhdGVWaXNpYmxlLGIuc2Nyb2xsVGltZW91dCk6KGIucGFnZT1sLChkPTA8Yi5zY3JvbGxNYXhCdWZmZXImJigwPHImJmIuc2Nyb2xsTWF4QnVmZmVyPHImJihiLnNjcm9sbE1heEJ1ZmZlcj1yKzEpLGIucmVjY291bnQ+Yi5zY3JvbGxNYXhCdWZmZXItKDA8cj9yOjApKT8hMDpkKSYmKHcuc2VsZWN0aW9uUHJlc2VydmVyKHBbMF0pLHcuZW1wdHlSb3dzLmNhbGwocFswXSwhMSwhMSkpLHcucG9wdWxhdGUocykpLGIuc2Nyb2xsUG9wVXAmJiFZZS5qZ3JpZC5pc051bGwoYi5sYXN0cGFnZSkmJihZZSgiI3Njcm9sbF9nIitiLmlkKS5zaG93KCkuaHRtbChZZS5qZ3JpZC50ZW1wbGF0ZShZZS5qZ3JpZC5nZXRSZWdpb25hbChRLCJkZWZhdWx0cy5wZ3RleHQiLGIucGd0ZXh0KSxiLnBhZ2UsYi5sYXN0cGFnZSkpLmNzcyh7dG9wOmIuc2Nyb2xsVG9wT2Zmc2V0K2kqKChwYXJzZUludChiLmhlaWdodCwxMCktNDUpLyhwYXJzZUludCh0LDEwKSpwYXJzZUludChiLnJlY29yZHMsMTApKSkrInB4IixsZWZ0OmIuc2Nyb2xsTGVmdE9mZnNldH0pLFllKHRoaXMpLm1vdXNlb3V0KGZ1bmN0aW9uKCl7WWUoIiNzY3JvbGxfZyIrYi5pZCkuaGlkZSgpfSkpKSl9fSxzY3JvbGxHcmlkOmZ1bmN0aW9uKCl7aWYoIXcuYlNjcm9sbCl7dmFyIGU7dy5oU2Nyb2xsPSEwLGIuc2Nyb2xsJiYoZT13LmJEaXYuc2Nyb2xsVG9wLHZvaWQgMD09PXcuc2Nyb2xsVG9wJiYody5zY3JvbGxUb3A9MCksZSE9PXcuc2Nyb2xsVG9wKSYmKHcuc2Nyb2xsVG9wPWUsdy50aW1lciYmY2xlYXJUaW1lb3V0KHcudGltZXIpLHcudGltZXI9c2V0VGltZW91dCh3LnBvcHVsYXRlVmlzaWJsZSxiLnNjcm9sbFRpbWVvdXQpKSx3LmhEaXYuc2Nyb2xsTGVmdD13LmJEaXYuc2Nyb2xsTGVmdCxiLmZvb3RlcnJvdyYmKHcuc0Rpdi5zY3JvbGxMZWZ0PXcuYkRpdi5zY3JvbGxMZWZ0KSxiLmhlYWRlcnJvdyYmKHcuaHJEaXYuc2Nyb2xsTGVmdD13LmJEaXYuc2Nyb2xsTGVmdCksYi5mcm96ZW5Db2x1bW5zJiZZZSh3LmZiRGl2KS5zY3JvbGxUb3Aody5iRGl2LnNjcm9sbFRvcCk7dHJ5e1llKCIjY29sdW1uX21lbnUiKS5yZW1vdmUoKX1jYXRjaChlKXt9fXcuYlNjcm9sbD0hMX0sc2VsZWN0aW9uUHJlc2VydmVyOmZ1bmN0aW9uKHQpe2Z1bmN0aW9uIHIoKXt2YXIgZTtpZihpLm11bHRpc2VsZWN0JiZhJiYwPGEubGVuZ3RoKWZvcihlPTA7ZTxhLmxlbmd0aDtlKyspYVtlXSYmWWUodCkuanFHcmlkKCJzZXRTZWxlY3Rpb24iLGFbZV0sITEsIl9zcF8iKTshaS5tdWx0aXNlbGVjdCYmbyYmWWUodCkuanFHcmlkKCJzZXRTZWxlY3Rpb24iLG8sITEsbnVsbCksdC5ncmlkLmJEaXYuc2Nyb2xsTGVmdD1uLFllKHQpLm9mZigiLnNlbGVjdGlvblByZXNlcnZlciIscil9dmFyIGk9dC5wLG89aS5zZWxyb3csYT1pLnNlbGFycnJvdz9ZZS5tYWtlQXJyYXkoaS5zZWxhcnJyb3cpOm51bGwsbj10LmdyaWQuYkRpdi5zY3JvbGxMZWZ0O1llKHQpLm9uKCJqcUdyaWRHcmlkQ29tcGxldGUuc2VsZWN0aW9uUHJlc2VydmVyIixyKX0saFNjcm9sbDohMSxiU2Nyb2xsOiExfTtpZigiVEFCTEUiIT09dGhpcy50YWdOYW1lLnRvVXBwZXJDYXNlKCl8fFllLmpncmlkLmlzTnVsbCh0aGlzLmlkKSlhbGVydCgiRWxlbWVudCBpcyBub3QgYSB0YWJsZSBvciBoYXMgbm8gaWQhIik7ZWxzZSBpZih2b2lkIDAhPT1kb2N1bWVudC5kb2N1bWVudE1vZGUmJmRvY3VtZW50LmRvY3VtZW50TW9kZTw9NSlhbGVydCgiR3JpZCBjYW4gbm90IGJlIHVzZWQgaW4gdGhpcyAoJ3F1aXJrcycpIG1vZGUhIik7ZWxzZXt2YXIgUyxrLHYsWCxlPTA7Zm9yKGsgaW4gWWUuamdyaWQucmVnaW9uYWwpWWUuamdyaWQucmVnaW9uYWwuaGFzT3duUHJvcGVydHkoaykmJigwPT09ZSYmKFM9ayksZSsrKTtpZigxPT09ZSYmUyE9PWIucmVnaW9uYWwmJihiLnJlZ2lvbmFsPVMpLFllKHRoaXMpLmVtcHR5KCkuYXR0cigidGFiaW5kZXgiLCIwIiksdGhpcy5wPWIsdGhpcy5wLnVzZVByb3A9ISFZZS5mbi5wcm9wLDA9PT10aGlzLnAuY29sTmFtZXMubGVuZ3RoKWZvcihlPTA7ZTx0aGlzLnAuY29sTW9kZWwubGVuZ3RoO2UrKyl0aGlzLnAuY29sTmFtZXNbZV09dGhpcy5wLmNvbE1vZGVsW2VdLmxhYmVsfHx0aGlzLnAuY29sTW9kZWxbZV0ubmFtZTtpZih0aGlzLnAuY29sTmFtZXMubGVuZ3RoIT09dGhpcy5wLmNvbE1vZGVsLmxlbmd0aClhbGVydChZZS5qZ3JpZC5nZXRSZWdpb25hbCh0aGlzLCJlcnJvcnMubW9kZWwiKSk7ZWxzZXsiQm9vdHN0cmFwNCI9PT1RLnAuc3R5bGVVSSYmWWUuamdyaWQuaWNvblNldC5oYXNPd25Qcm9wZXJ0eShRLnAuaWNvblNldCkmJlllLmV4dGVuZCghMCxZZS5qZ3JpZC5zdHlsZVVJLkJvb3RzdHJhcDQsWWUuamdyaWQuaWNvblNldFtRLnAuaWNvblNldF0pLCJCb290c3RyYXA1Ij09PVEucC5zdHlsZVVJJiZZZS5qZ3JpZC5pY29uU2V0Lmhhc093blByb3BlcnR5KFEucC5pY29uU2V0KSYmWWUuZXh0ZW5kKCEwLFllLmpncmlkLnN0eWxlVUkuQm9vdHN0cmFwNSxZZS5qZ3JpZC5pY29uU2V0W1EucC5pY29uU2V0XSk7dmFyIFIsSz1ZZS5qZ3JpZC5nZXRNZXRob2QoImdldFN0eWxlVUkiKSwkPVEucC5zdHlsZVVJKyIuY29tbW9uIixqPUsoJCwiZGlzYWJsZWQiLCEwKSxZPUsoJCwiaGlnaGxpZ2h0IiwhMCkscT1LKCQsImhvdmVyIiwhMCksTj1LKCQsImNvcm5lcmFsbCIsITApLEM9SygkLCJpY29uX2Jhc2UiLCEwKSxJPVllLmpncmlkLnN0eWxlVUlbUS5wLnN0eWxlVUl8fCJqUXVlcnlVSSJdLmNvbG1lbnUsTT1ZZS5qZ3JpZC5tc2llKCksRD1bXSxHPVtdLE89W10sJD1RLnAuc3R5bGVVSSsiLmJhc2UiLHQ9WWUoIjxkaXYgIitLKCQsInZpZXdCb3giLCExLCJ1aS1qcWdyaWQtdmlldyIpKyIgPjwvZGl2PiIpLHI9KFEucC5kaXJlY3Rpb249WWUuamdyaWQudHJpbShRLnAuZGlyZWN0aW9uLnRvTG93ZXJDYXNlKCkpLFEucC5fYWxkPSExLC0xPT09WWUuaW5BcnJheShRLnAuZGlyZWN0aW9uLFsibHRyIiwicnRsIl0pJiYoUS5wLmRpcmVjdGlvbj0ibHRyIiksdj1RLnAuZGlyZWN0aW9uLFllKHQpLmluc2VydEJlZm9yZSh0aGlzKSxZZSh0aGlzKS5hcHBlbmRUbyh0KSxZZSgiPGRpdiAiK0soJCwiZW50cmllQm94IiwhMSwidWktanFncmlkIikrIj48L2Rpdj4iKSksQT0oWWUocikuYXR0cih7aWQ6Imdib3hfIit0aGlzLmlkLGRpcjp2fSkuaW5zZXJ0QmVmb3JlKHQpLFllKHQpLmF0dHIoImlkIiwiZ3ZpZXdfIit0aGlzLmlkKS5hcHBlbmRUbyhyKSxZZSgiPGRpdiAiK0soUS5wLnN0eWxlVUkrIi5jb21tb24iLCJvdmVybGF5IiwhMSwianFncmlkLW92ZXJsYXkiKSsiIGlkPSdsdWlfIit0aGlzLmlkKyInPjwvZGl2PiIpLmluc2VydEJlZm9yZSh0KSxZZSgiPGRpdiAiK0soJCwibG9hZGluZ0JveCIsITEsImxvYWRpbmciKSsiIGlkPSdsb2FkXyIrdGhpcy5pZCsiJz4iK1llLmpncmlkLmdldFJlZ2lvbmFsKFEsImRlZmF1bHRzLmxvYWR0ZXh0Iix0aGlzLnAubG9hZHRleHQpKyI8L2Rpdj4iKS5pbnNlcnRCZWZvcmUodCksWWUodGhpcykuYXR0cih7cm9sZToiZ3JpZCIsImFyaWEtbXVsdGlzZWxlY3RhYmxlIjohIXRoaXMucC5tdWx0aXNlbGVjdCwiYXJpYS1sYWJlbGxlZGJ5IjoiZ2JveF8iK3RoaXMuaWR9KSwiaW5kZXhlZGRiIj09PVEucC5kYXRhdHlwZSYmWWUoUSkuanFHcmlkKCJkYkluaXQiLFEucC5kYXRhdHlwZSksWWUuamdyaWQuZ2V0Rm9udChRKSksSj1mdW5jdGlvbihlLHQpe3JldHVybiB2b2lkIDA9PT10JiYodD0wKSxlPXBhcnNlSW50KGUsMTApLGlzTmFOKGUpP3Q6ZX0sbj1mdW5jdGlvbihlLHQscixpLG8sYSl7dmFyIG49US5wLmNvbE1vZGVsW2VdLGw9bi5hbGlnbixzPSdzdHlsZT0iJyxkPW4uY2xhc3NlcyxwPW4ubmFtZSxjPVtdO3JldHVybiBsJiYocys9InRleHQtYWxpZ246IitsKyI7IiksITA9PT1uLmhpZGRlbiYmKHMrPSJkaXNwbGF5Om5vbmU7IiksMD09PXQ/cys9IndpZHRoOiAiK3cuaGVhZGVyc1tlXS53aWR0aCsicHg7IjooWWUuamdyaWQuaXNGdW5jdGlvbihuLmNlbGxhdHRyKXx8InN0cmluZyI9PXR5cGVvZiBuLmNlbGxhdHRyJiYhWWUuamdyaWQuaXNOdWxsKFllLmpncmlkLmNlbGxhdHRyKSYmWWUuamdyaWQuaXNGdW5jdGlvbihZZS5qZ3JpZC5jZWxsYXR0cltuLmNlbGxhdHRyXSkpJiYobD0oWWUuamdyaWQuaXNGdW5jdGlvbihuLmNlbGxhdHRyKT9uLmNlbGxhdHRyOlllLmpncmlkLmNlbGxhdHRyW24uY2VsbGF0dHJdKS5jYWxsKFEsbyxyLGksbixhKSkmJiJzdHJpbmciPT10eXBlb2YgbCYmKC0xPGwuaW5kZXhPZigidGl0bGUiKSYmKG4udGl0bGU9ITEpLC0xPGwuaW5kZXhPZigiY2xhc3MiKSYmKGQ9dm9pZCAwKSwyPT09KGM9KGw9U3RyaW5nKGwpLnJlcGxhY2UoL1xzK1w9L2csIj0iKSkuc3BsaXQoInN0eWxlPSIpKS5sZW5ndGg/KGNbMV09WWUuamdyaWQudHJpbShjWzFdKSwwIT09Y1sxXS5pbmRleE9mKCInIikmJjAhPT1jWzFdLmluZGV4T2YoJyInKXx8KGNbMV09Y1sxXS5zdWJzdHJpbmcoMSkpLHMrPWNbMV0ucmVwbGFjZSgvJy9naSwnIicpKTpzKz0nIicpLGMubGVuZ3RoPzI8Yy5sZW5ndGgmJihjWzBdPSIiKTooY1swXT0iIixzKz0nIicpLChzPShzKz0odm9pZCAwIT09ZD8nIGNsYXNzPSInK2QrJyInOiIiKSsobi50aXRsZSYmcj8nIHRpdGxlPSInK1llLmpncmlkLnN0cmlwSHRtbChyKSsnIic6IiIpKSsoJyBhcmlhLWRlc2NyaWJlZGJ5PSInK1EucC5pZCsiXyIrcCsnIicpKStjWzBdfSxUPWZ1bmN0aW9uKGUpe3JldHVybiBZZS5qZ3JpZC5pc051bGwoZSl8fCIiPT09ZT8iJiMxNjA7IjpRLnAuYXV0b2VuY29kZT9ZZS5qZ3JpZC5odG1sRW5jb2RlKGUpOlN0cmluZyhlKX0sUD1mdW5jdGlvbihlLHQscixpLG8pe3ZhciBhPVEucC5jb2xNb2RlbFtyXSxlPXtyb3dJZDplPSIiIT09U3RyaW5nKFEucC5pZFByZWZpeCk/WWUuamdyaWQuc3RyaXBQcmVmKFEucC5pZFByZWZpeCxlKTplLGNvbE1vZGVsOmEsZ2lkOlEucC5pZCxwb3M6cixzdHlsZVVJOlEucC5zdHlsZVVJfSxyPXZvaWQgMCE9PWEuZm9ybWF0dGVyP1llLmpncmlkLmlzRnVuY3Rpb24oYS5mb3JtYXR0ZXIpP2EuZm9ybWF0dGVyLmNhbGwoUSx0LGUsaSxvKTpZZS5mbWF0dGVyP1llLmZuLmZtYXR0ZXIuY2FsbChRLGEuZm9ybWF0dGVyLHQsZSxpLG8pOlQodCk6VCh0KTtyZXR1cm4gUS5wLmF1dG9SZXNpemluZyYmYS5hdXRvc2l6ZSYmKGEuX21heHNpemV8fChhLl9tYXhzaXplPWEuY2FudmFzX3dpZHRoKSxhLl9tYXhzaXplPU1hdGgubWF4KFllLmpncmlkLmlzRnVuY3Rpb24oYS5zaXppbmdTdHJpbmdGdW5jKT9hLnNpemluZ1N0cmluZ0Z1bmMuY2FsbChRLHIsQSxlLGkpOlllLmpncmlkLmdldFRleHRXaWR0aChyLEEpLGEuX21heHNpemUpKSxyfSxaPWZ1bmN0aW9uKGUsdCxyLGksbyxhKXt0PVAoZSx0LHIsbywiYWRkIik7cmV0dXJuJzx0ZCByb2xlPSJncmlkY2VsbCIgJytuKHIsaSx0LG8sZSxhKSsiPiIrdCsiPC90ZD4ifSxlZT1mdW5jdGlvbihlLHQscixpLG8pe3ZhciBhPVllLmpncmlkLmdldFJlZ2lvbmFsKFEsImRlZmF1bHRzLnNlbGVjdExpbmUiKSxhPSc8aW5wdXQgcm9sZT0iY2hlY2tib3giIHRpdGxlPVwnJysoYXx8WWUuamdyaWQucmVnaW9uYWwuZW4uZGVmYXVsdHMuc2VsZWN0TGluZSkrJ1wnIHR5cGU9ImNoZWNrYm94IiBpZD0ianFnXycrUS5wLmlkKyJfIitlKyciICcrbysnIG5hbWU9ImpxZ18nK1EucC5pZCsiXyIrZSsnIicrKGk/J2NoZWNrZWQ9ImNoZWNrZWQiJzoiIikrIi8+IjtyZXR1cm4nPHRkIHJvbGU9ImdyaWRjZWxsIiAnK24odCxyLCIiLG51bGwsZSwhMCkrIj4iK2ErIjwvdGQ+In0sdGU9ZnVuY3Rpb24oZSx0LHIsaSxvKXtyPShwYXJzZUludChyLDEwKS0xKSpwYXJzZUludChpLDEwKSsxK3Q7cmV0dXJuJzx0ZCByb2xlPSJncmlkY2VsbCIgJytvKyIgIituKGUsdCxyLG51bGwsdCwhMCkrIj4iK3IrIjwvdGQ+In0scmU9ZnVuY3Rpb24oZSx0LHIsaSl7dmFyIG89US5wLnNlYXJjaENvbE9wdGlvbnMuc2VhcmNoT25FbnRlcj8iIG9uY2hhbmdlPVwiJC5qZ3JpZC5zZWFyY2hDb2xPbkVudGVyKCciK1EucC5pZCsiJywiK2UrJywgdGhpcykiJzoiIG9ua2V5ZG93bj1cIiQuamdyaWQuc2VhcmNoQ29sT25LZXkoJyIrUS5wLmlkKyInLCIrZSsnLHRoaXMsIGV2ZW50KSInLGk9JzxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0ianFzXycrUS5wLmlkKyJfIitlKyciIG5hbWU9Impxc18nK1EucC5pZCsiXyIrZSsnIiAnK2krbysiLz4iO3JldHVybic8dGQgcm9sZT0iZ3JpZGNlbGwiICcrbih0LHIsIiIsbnVsbCxlLCEwKSsiPiIraSsiPC90ZD4ifSxpZT1mdW5jdGlvbihlKXtmb3IodmFyIHQscj1bXSxpPTAsbz0wO288US5wLmNvbE1vZGVsLmxlbmd0aDtvKyspImNiIiE9PSh0PVEucC5jb2xNb2RlbFtvXSkubmFtZSYmInN1YmdyaWQiIT09dC5uYW1lJiYicm4iIT09dC5uYW1lJiYic2MiIT09dC5uYW1lJiYocltpXT0ibG9jYWwiPT09ZT90Lm5hbWU6InhtbCI9PT1lfHwieG1sc3RyaW5nIj09PWU/dC54bWxtYXB8fHQubmFtZTp0Lmpzb25tYXB8fHQubmFtZSwhMSE9PVEucC5rZXlOYW1lJiYhMD09PXQua2V5JiYoUS5wLmtleU5hbWU9cltpXSxRLnAua2V5SW5kZXg9aSksaSsrKTtyZXR1cm4gcn0sb2U9ZnVuY3Rpb24odCl7dmFyIGU9US5wLnJlbWFwQ29sdW1ucztyZXR1cm4gZSYmZS5sZW5ndGh8fChlPVllLm1hcChRLnAuY29sTW9kZWwsZnVuY3Rpb24oZSx0KXtyZXR1cm4gdH0pKSxlPXQ/WWUubWFwKGUsZnVuY3Rpb24oZSl7cmV0dXJuIGU8dD9udWxsOmUtdH0pOmV9LGFlPWZ1bmN0aW9uKGUsdCl7dmFyIHI7dGhpcy5wLmRlZXBlbXB0eT9ZZSh0aGlzLnJvd3MpLnNsaWNlKDEpLnJlbW92ZSgpOihyPTA8dGhpcy5yb3dzLmxlbmd0aD90aGlzLnJvd3NbMF06bnVsbCxZZSh0aGlzLmZpcnN0Q2hpbGQpLmVtcHR5KCkuYXBwZW5kKHIpKSxlJiZ0aGlzLnAuc2Nyb2xsJiYoWWUodGhpcy5ncmlkLmJEaXYuZmlyc3RDaGlsZCkuY3NzKHtoZWlnaHQ6ImF1dG8ifSksWWUodGhpcy5ncmlkLmJEaXYuZmlyc3RDaGlsZC5maXJzdENoaWxkKS5jc3Moe2hlaWdodDoiMHB4IixkaXNwbGF5OiJub25lIn0pLDAhPT10aGlzLmdyaWQuYkRpdi5zY3JvbGxUb3ApJiYodGhpcy5ncmlkLmJEaXYuc2Nyb2xsVG9wPTApLCEwPT09dCYmKHRoaXMucC5kYXRhPVtdLHRoaXMucC5faW5kZXg9e30pfSxCPWZ1bmN0aW9uKCl7dmFyIGUsdCxyLGksbyxhLG4sbCxzLGQscCxjPVEucCx1PWMuZGF0YSxoPXUubGVuZ3RoLGc9Yy5sb2NhbFJlYWRlcixmPWMuY29sTW9kZWwsbT1nLmNlbGwsdj0oITA9PT1jLm11bHRpc2VsZWN0PzE6MCkrKCEwPT09Yy5zdWJHcmlkPzE6MCkrKCEwPT09Yy5yb3dudW1iZXJzPzE6MCkrKCEwPT09Yy5zZWFyY2hDb2xzPzE6MCksaj1jLnNjcm9sbD9ZZS5qZ3JpZC5yYW5kSWQoKToxO2lmKCJsb2NhbCI9PT1jLmRhdGF0eXBlJiYhMD09PWcucmVwZWF0aXRlbXMpZm9yKHM9b2UodiksZD1pZSgibG9jYWwiKSxpPSExPT09Yy5rZXlOYW1lP1llLmpncmlkLmlzRnVuY3Rpb24oZy5pZCk/Zy5pZC5jYWxsKFEsdSk6Zy5pZDpjLmtleU5hbWUsZT0wO2U8aDtlKyspe2ZvcihyPXVbZV0sdm9pZCAwPT09KG89WWUuamdyaWQuZ2V0QWNjZXNzb3IocixpKSkmJnZvaWQgMD09PShvPSJudW1iZXIiIT10eXBlb2YgaXx8WWUuamdyaWQuaXNOdWxsKGZbaSt2XSk/bzpZZS5qZ3JpZC5nZXRBY2Nlc3NvcihyLGZbaSt2XS5uYW1lKSkmJihvPWorZSxtKSYmKGE9WWUuamdyaWQuZ2V0QWNjZXNzb3IocixtKXx8cixvPVllLmpncmlkLmlzTnVsbChhKXx8dm9pZCAwPT09YVtpXT9vOmFbaV0sMCksKGw9e30pW2cuaWRdPW8sbSYmKHI9WWUuamdyaWQuZ2V0QWNjZXNzb3IocixtKXx8cikscD1BcnJheS5pc0FycmF5KHIpP3M6ZCx0PTA7dDxwLmxlbmd0aDt0Kyspbj1ZZS5qZ3JpZC5nZXRBY2Nlc3NvcihyLHBbdF0pLGxbZlt0K3ZdLm5hbWVdPW47dVtlXT1sfX0sbmU9ZnVuY3Rpb24oKXt2YXIgZSx0LHI9US5wLmRhdGEubGVuZ3RoLGk9ITEhPT1RLnAua2V5TmFtZT9RLnAua2V5TmFtZTpRLnAubG9jYWxSZWFkZXIuaWQ7Zm9yKFEucC5faW5kZXg9e30sZT0wO2U8cjtlKyspdm9pZCAwPT09KHQ9WWUuamdyaWQuZ2V0QWNjZXNzb3IoUS5wLmRhdGFbZV0saSkpJiYodD1TdHJpbmcoZSsxKSksUS5wLl9pbmRleFt0XT1lfSxsZT1mdW5jdGlvbihlLHQscixpLG8pe3ZhciBhLG49Ii0xIixsPSIiLHQ9dD8iZGlzcGxheTpub25lOyI6IiIscz1ZZShRKS50cmlnZ2VySGFuZGxlcigianFHcmlkUm93QXR0ciIsW2ksbyxlXSk7aWYoIm9iamVjdCIhPXR5cGVvZiBzJiYocz1ZZS5qZ3JpZC5pc0Z1bmN0aW9uKFEucC5yb3dhdHRyKT9RLnAucm93YXR0ci5jYWxsKFEsaSxvLGUpOiJzdHJpbmciPT10eXBlb2YgUS5wLnJvd2F0dHImJiFZZS5qZ3JpZC5pc051bGwoWWUuamdyaWQucm93YXR0cikmJlllLmpncmlkLmlzRnVuY3Rpb24oWWUuamdyaWQucm93YXR0cltRLnAucm93YXR0cl0pP1llLmpncmlkLnJvd2F0dHJbUS5wLnJvd2F0dHJdLmNhbGwoUSxpLG8sZSk6e30pLCFZZS5pc0VtcHR5T2JqZWN0KHMpKXtzLmhhc093blByb3BlcnR5KCJpZCIpJiYoZT1zLmlkLGRlbGV0ZSBzLmlkKSxzLmhhc093blByb3BlcnR5KCJ0YWJpbmRleCIpJiYobj1zLnRhYmluZGV4LGRlbGV0ZSBzLnRhYmluZGV4KSxzLmhhc093blByb3BlcnR5KCJzdHlsZSIpJiYodCs9cy5zdHlsZSxkZWxldGUgcy5zdHlsZSkscy5oYXNPd25Qcm9wZXJ0eSgiY2xhc3MiKSYmKHIrPSIgIitzLmNsYXNzLGRlbGV0ZSBzLmNsYXNzKTt0cnl7ZGVsZXRlIHMucm9sZX1jYXRjaChlKXt9Zm9yKGEgaW4gcylzLmhhc093blByb3BlcnR5KGEpJiYobCs9IiAiK2ErIj0iK3NbYV0pfXJldHVybic8dHIgcm9sZT0icm93IiBpZD0iJytlKyciIHRhYmluZGV4PSInK24rJyIgY2xhc3M9IicrcisnIicrKCIiPT09dD8iIjonIHN0eWxlPSInK3QrJyInKStsKyI+In0sRT1mdW5jdGlvbihlLHIsdCxpKXt2YXIgQT1uZXcgRGF0ZSxvPSJsb2NhbCIhPT1RLnAuZGF0YXR5cGUmJlEucC5sb2Fkb25jZXx8InhtbHN0cmluZyI9PT1RLnAuZGF0YXR5cGUsYT0iX2lkXyIsbj1RLnAueG1sUmVhZGVyLGw9W10sVD0ibG9jYWwiPT09US5wLmRhdGF0eXBlPyJsb2NhbCI6InhtbCI7aWYobyYmKFEucC5kYXRhPVtdLFEucC5faW5kZXg9e30sUS5wLmxvY2FsUmVhZGVyLmlkPWEpLFEucC5yZWNjb3VudD0wLFllLmlzWE1MRG9jKGUpKXtyPS0xIT09US5wLnRyZWVBTm9kZXx8US5wLnNjcm9sbD8xPHI/cjoxOihhZS5jYWxsKFEsITEsITEpLDEpO3ZhciBzLGQscCxjLHUsaCxnLGYsbSx2LGo9WWUoUSksYj0wLHc9MCx5PVtdLHg9e30sXz1bXSxQPUsoJCwicm93Qm94IiwhMCwianFncm93IHVpLXJvdy0iK1EucC5kaXJlY3Rpb24pLHE9ITA9PT1RLnAucm93bnVtYmVycz8xOjAsQz0hMD09PVEucC5tdWx0aXNlbGVjdD8xOjAsST0hMD09PVEucC5zZWFyY2hDb2xzPzE6MCxEPSghMD09PVEucC5zdWJHcmlkJiYodz0xLGM9WWUuamdyaWQuZ2V0TWV0aG9kKCJhZGRTdWJHcmlkQ2VsbCIpKSxuLnJlcGVhdGl0ZW1zfHwoeT1pZShUKSksdT0hMT09PVEucC5rZXlOYW1lP1llLmpncmlkLmlzRnVuY3Rpb24obi5pZCk/bi5pZC5jYWxsKFEsZSk6bi5pZDpRLnAua2V5TmFtZSxuLnJlcGVhdGl0ZW1zJiZRLnAua2V5TmFtZSYmaXNOYU4odSkmJih1PVEucC5rZXlJbmRleCksaD0tMT09PVN0cmluZyh1KS5pbmRleE9mKCJbIik/eS5sZW5ndGg/ZnVuY3Rpb24oZSx0KXtyZXR1cm4gWWUodSxlKS50ZXh0KCl8fHR9OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIFllKG4uY2VsbCxlKS5lcSh1KS50ZXh0KCl8fHR9OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuZ2V0QXR0cmlidXRlKHUucmVwbGFjZSgvW1xbXF1dL2csIiIpKXx8dH0sUS5wLnVzZXJEYXRhPXt9LFEucC5wYWdlPUooWWUuamdyaWQuZ2V0WG1sRGF0YShlLG4ucGFnZSksUS5wLnBhZ2UpLFEucC5sYXN0cGFnZT1KKFllLmpncmlkLmdldFhtbERhdGEoZSxuLnRvdGFsKSwxKSxRLnAucmVjb3Jkcz1KKFllLmpncmlkLmdldFhtbERhdGEoZSxuLnJlY29yZHMpKSxZZS5qZ3JpZC5pc0Z1bmN0aW9uKG4udXNlcmRhdGEpP1EucC51c2VyRGF0YT1uLnVzZXJkYXRhLmNhbGwoUSxlKXx8e306WWUuamdyaWQuZ2V0WG1sRGF0YShlLG4udXNlcmRhdGEsITApLmVhY2goZnVuY3Rpb24oKXtRLnAudXNlckRhdGFbdGhpcy5nZXRBdHRyaWJ1dGUoIm5hbWUiKV09WWUodGhpcykudGV4dCgpfSksWWUuamdyaWQuZ2V0WG1sRGF0YShlLG4ucm9vdCwhMCkpLEc9KEQ9KEQ9WWUuamdyaWQuZ2V0WG1sRGF0YShELG4ucm93LCEwKSl8fFtdKS5sZW5ndGgsRj0wLFM9W10saz1wYXJzZUludChRLnAucm93TnVtLDEwKSxSPVEucC5zY3JvbGw/WWUuamdyaWQucmFuZElkKCk6MSxOPVllKFEpLmZpbmQoInRib2R5IikuZmlyc3QoKSxNPSExO2lmKFEucC5ncm91cGluZyYmKE09ITA9PT1RLnAuZ3JvdXBpbmdWaWV3Lmdyb3VwQ29sbGFwc2UsbT1ZZS5qZ3JpZC5nZXRNZXRob2QoImdyb3VwaW5nUHJlcGFyZSIpKSwwPEcmJlEucC5wYWdlPD0wJiYoUS5wLnBhZ2U9MSksRCYmRyl7aSYmKGsqPWkrMSk7Zm9yKHZhciBCPVllLmpncmlkLmlzRnVuY3Rpb24oUS5wLmFmdGVySW5zZXJ0Um93KSxFPXE/SygkLCJyb3dudW1Cb3giLCExLCJqcWdyaWQtcm93bnVtIik6IiIsej1JP0soJCwic2VhcmNoQm94IiwhMSwiIik6IiIsSD1DP0soJCwibXVsdGlCb3giLCExLCJjYm94Iik6IiI7RjxHOyl7Zz1EW0ZdLGY9aChnLFIrRiksZj1RLnAuaWRQcmVmaXgrZixRLnAucHJlc2VydmVTZWxlY3Rpb24mJihRLnAubXVsdGlzZWxlY3Q/KHY9LTEhPT1RLnAuc2VsYXJycm93LmluZGV4T2YoZiksWD12P1grMTpYKTp2PWY9PT1RLnAuc2Vscm93KTt2YXIgVT1fLmxlbmd0aDtpZihfLnB1c2goIiIpLHEmJl8ucHVzaCh0ZSgwLEYsUS5wLnBhZ2UsUS5wLnJvd051bSxFKSksQyYmXy5wdXNoKGVlKGYscSxGLHYsSCkpLEkmJl8ucHVzaChyZShmLEMrcSxGLHopKSx3JiZfLnB1c2goYy5jYWxsKGosQytxK0ksRityKSksbi5yZXBlYXRpdGVtcyl7dmFyIE89T3x8b2UoQyt3K3ErSSksTD1ZZS5qZ3JpZC5nZXRYbWxEYXRhKGcsbi5jZWxsLCEwKTtZZS5lYWNoKE8sZnVuY3Rpb24oZSl7dmFyIHQ9TFt0aGlzXTtpZighdClyZXR1cm4hMTtwPXQudGV4dENvbnRlbnR8fHQudGV4dHx8IiIseFtRLnAuY29sTW9kZWxbZStDK3crcStJXS5uYW1lXT1wLF8ucHVzaChaKGYscCxlK0MrdytxK0ksRityLGcseCkpfSl9ZWxzZSBmb3Iocz0wO3M8eS5sZW5ndGg7cysrKXA9WWUuamdyaWQuZ2V0WG1sRGF0YShnLHlbc10pLHhbUS5wLmNvbE1vZGVsW3MrQyt3K3ErSV0ubmFtZV09cCxfLnB1c2goWihmLHAscytDK3crcStJLEYrcixnLHgpKTtpZihfW1VdPWxlKGYsTSxQLHgsZyksXy5wdXNoKCI8L3RyPiIpLFEucC5ncm91cGluZyYmKFMucHVzaChfKSxRLnAuZ3JvdXBpbmdWaWV3Ll9sb2Nncnx8bS5jYWxsKGoseCxGKSxfPVtdKSwob3x8ITA9PT1RLnAudHJlZUdyaWQmJiFRLnAuX2FsZCkmJih4W2FdPVllLmpncmlkLnN0cmlwUHJlZihRLnAuaWRQcmVmaXgsZiksUS5wLmRhdGEucHVzaCh4KSxRLnAuX2luZGV4W3hbYV1dPVEucC5kYXRhLmxlbmd0aC0xLC0xPFEucC50cmVlQU5vZGUpJiYiYWRqYWNlbmN5Ij09PVEucC50cmVlR3JpZE1vZGVsJiZsLnB1c2goeCksITE9PT1RLnAuZ3JpZHZpZXcmJihOLmFwcGVuZChfLmpvaW4oIiIpKSxqLnRyaWdnZXJIYW5kbGVyKCJqcUdyaWRBZnRlckluc2VydFJvdyIsW2YseCxnXSksQiYmUS5wLmFmdGVySW5zZXJ0Um93LmNhbGwoUSxmLHgsZyksXz1bXSkseD17fSxGKyssKytiPT09aylicmVha319aWYoWD1RLnAubXVsdGlzZWxlY3QmJlEucC5wcmVzZXJ2ZVNlbGVjdGlvbiYmYj09PVgsITA9PT1RLnAuZ3JpZHZpZXcmJihkPS0xPFEucC50cmVlQU5vZGU/US5wLnRyZWVBTm9kZTowLFEucC5ncm91cGluZz9vfHwoai5qcUdyaWQoImdyb3VwaW5nUmVuZGVyIixTLFEucC5jb2xNb2RlbC5sZW5ndGgsUS5wLnBhZ2UsayksUz1udWxsKTohMD09PVEucC50cmVlR3JpZCYmMDxkP1llKFEucm93c1tkXSkuYWZ0ZXIoXy5qb2luKCIiKSk6KE4uYXBwZW5kKF8uam9pbigiIikpLFEuZ3JpZC5jb2xzPVEucm93c1swXS5jZWxscykpLFEucC50b3RhbHRpbWU9bmV3IERhdGUtQSxfPW51bGwsMDxiJiYwPT09US5wLnJlY29yZHMmJihRLnAucmVjb3Jkcz1HKSwhMD09PVEucC50cmVlR3JpZCl7dHJ5e2ouanFHcmlkKCJzZXRUcmVlTm9kZSIsZCsxLGIrZCsxKX1jYXRjaChlKXt9aWYoLTE8US5wLnRyZWVBTm9kZSYmImFkamFjZW5jeSI9PT1RLnAudHJlZUdyaWRNb2RlbCYmKHA9US5yb3dzW1EucC50cmVlQU5vZGVdLmlkLDE8PShwPVEucC5faW5kZXhbcF0rMSkpKXtmb3IoUS5wLmRhdGEuc3BsaWNlKC1HLEcpLHM9MDtzPEc7cysrKVEucC5kYXRhLnNwbGljZShwK3MsMCxsW3NdKTtuZSgpfX1pZihRLnAucmVjY291bnQ9YixRLnAudHJlZUFOb2RlPS0xLFEucC51c2VyRGF0YU9uRm9vdGVyJiZqLmpxR3JpZCgiZm9vdGVyRGF0YSIsInNldCIsUS5wLnVzZXJEYXRhLFEucC5mb3JtYXRGb290ZXJEYXRhLDAsITEpLFEucC51c2VyRGF0YU9uSGVhZGVyJiZqLmpxR3JpZCgiaGVhZGVyRGF0YSIsInNldCIsUS5wLnVzZXJEYXRhLFEucC5mb3JtYXRIZWFkZXJEYXRhLDAsITEpLG8mJihRLnAucmVjb3Jkcz1HLFEucC5sYXN0cGFnZT1NYXRoLmNlaWwoRy9rKSksdHx8US51cGRhdGVwYWdlcighMSwhMCksWCYmc2UoITApLG8pe2Zvcig7YjxHOyl7aWYoZz1EW2JdLGY9aChnLGIrUiksZj1RLnAuaWRQcmVmaXgrZixuLnJlcGVhdGl0ZW1zKXtPPU98fG9lKEMrdytxK0kpO3ZhciBWPVllLmpncmlkLmdldFhtbERhdGEoZyxuLmNlbGwsITApO1llLmVhY2goTyxmdW5jdGlvbihlKXt2YXIgdD1WW3RoaXNdO2lmKCF0KXJldHVybiExO3A9dC50ZXh0Q29udGVudHx8dC50ZXh0fHwiIix4W1EucC5jb2xNb2RlbFtlK0MrdytxK0ldLm5hbWVdPXB9KX1lbHNlIGZvcihzPTA7czx5Lmxlbmd0aDtzKyspcD1ZZS5qZ3JpZC5nZXRYbWxEYXRhKGcseVtzXSkseFtRLnAuY29sTW9kZWxbcytDK3crcStJXS5uYW1lXT1wO3hbYV09WWUuamdyaWQuc3RyaXBQcmVmKFEucC5pZFByZWZpeCxmKSxRLnAuZ3JvdXBpbmcmJm0uY2FsbChqLHgsYiksUS5wLmRhdGEucHVzaCh4KSxRLnAuX2luZGV4W3hbYV1dPVEucC5kYXRhLmxlbmd0aC0xLHg9e30sYisrfVEucC5ncm91cGluZyYmKFEucC5ncm91cGluZ1ZpZXcuX2xvY2dyPSEwLGouanFHcmlkKCJncm91cGluZ1JlbmRlciIsUyxRLnAuY29sTW9kZWwubGVuZ3RoLFEucC5wYWdlLGspLFM9bnVsbCl9aWYoITA9PT1RLnAuc3ViR3JpZCl0cnl7ai5qcUdyaWQoImFkZFN1YkdyaWQiLEMrcSl9Y2F0Y2goZSl7fX19LHo9ZnVuY3Rpb24oZSx0LEEscil7dmFyIFQ9bmV3IERhdGU7aWYoZSl7dD0tMSE9PVEucC50cmVlQU5vZGV8fFEucC5zY3JvbGw/MTx0P3Q6MTooYWUuY2FsbChRLCExLCExKSwxKSxvPSJsb2NhbCI9PT1RLnAuZGF0YXR5cGU/KGk9US5wLmxvY2FsUmVhZGVyLCJsb2NhbCIpOihpPVEucC5qc29uUmVhZGVyLCJqc29uIik7dmFyIGksbyxhLG4sbCxzLGQscCxjLHUsaCxnLGYsbSx2PSJfaWRfIixqPSJsb2NhbCIhPT1RLnAuZGF0YXR5cGUmJlEucC5sb2Fkb25jZXx8Impzb25zdHJpbmciPT09US5wLmRhdGF0eXBlLGI9WWUoUSksdz0wLHk9W10seD1RLnAubXVsdGlzZWxlY3Q/MTowLF89ITA9PT1RLnAuc3ViR3JpZD8xOjAscT0hMD09PVEucC5yb3dudW1iZXJzPzE6MCxDPSEwPT09US5wLnNlYXJjaENvbHM/MTowLEk9US5wLnNjcm9sbCYmImxvY2FsIiE9PVEucC5kYXRhdHlwZT9ZZS5qZ3JpZC5yYW5kSWQoKToxLEQ9cGFyc2VJbnQoUS5wLnJvd051bSwxMCksRz0hMSxGPW9lKHgrXytxK0MpLFA9aWUobyksUz17fSxrPVtdLEI9W10sRT1LKCQsInJvd0JveCIsITAsImpxZ3JvdyB1aS1yb3ctIitRLnAuZGlyZWN0aW9uKSx6PVllLmpncmlkLmlzRnVuY3Rpb24oUS5wLmFmdGVySW5zZXJ0Um93KSxSPVtdLEg9ITEsVT1ZZShRKS5maW5kKCJ0Ym9keSIpLmZpcnN0KCksTD1xP0soJCwicm93bnVtQm94IiwhMSwianFncmlkLXJvd251bSIpOiIiLFY9Qz9LKCQsInNlYXJjaEJveCIsITEsIiIpOiIiLFc9eD9LKCQsIm11bHRpQm94IiwhMSwiY2JveCIpOiIiO2ZvcihqJiYoUS5wLmRhdGE9W10sUS5wLl9pbmRleD17fSxRLnAubG9jYWxSZWFkZXIuaWQ9diksUS5wLnJlY2NvdW50PTAsUS5wLnBhZ2U9SihZZS5qZ3JpZC5nZXRBY2Nlc3NvcihlLGkucGFnZSksUS5wLnBhZ2UpLFEucC5sYXN0cGFnZT1KKFllLmpncmlkLmdldEFjY2Vzc29yKGUsaS50b3RhbCksMSksUS5wLnJlY29yZHM9SihZZS5qZ3JpZC5nZXRBY2Nlc3NvcihlLGkucmVjb3JkcykpLFEucC51c2VyRGF0YT1ZZS5qZ3JpZC5nZXRBY2Nlc3NvcihlLGkudXNlcmRhdGEpfHx7fSxfJiYocz1ZZS5qZ3JpZC5nZXRNZXRob2QoImFkZFN1YkdyaWRDZWxsIikpLGg9ITE9PT1RLnAua2V5TmFtZT9ZZS5qZ3JpZC5pc0Z1bmN0aW9uKGkuaWQpP2kuaWQuY2FsbChRLGUpOmkuaWQ6US5wLmtleU5hbWUsaS5yZXBlYXRpdGVtcyYmUS5wLmtleU5hbWUmJmlzTmFOKGgpJiYoaD1RLnAua2V5SW5kZXgpLHU9WWUuamdyaWQuZ2V0QWNjZXNzb3IoZSxpLnJvb3QpLChuPTApPChjPSh1PSh1PVllLmpncmlkLmlzTnVsbCh1KSYmQXJyYXkuaXNBcnJheShlKT9lOnUpfHxbXSkubGVuZ3RoKSYmUS5wLnBhZ2U8PTAmJihRLnAucGFnZT0xKSxyJiYoRCo9cisxKSwibG9jYWwiIT09US5wLmRhdGF0eXBlfHxRLnAuZGVzZWxlY3RBZnRlclNvcnR8fChHPSEwKSxRLnAuZ3JvdXBpbmcmJihIPSEwPT09US5wLmdyb3VwaW5nVmlldy5ncm91cENvbGxhcHNlLGY9WWUuamdyaWQuZ2V0TWV0aG9kKCJncm91cGluZ1ByZXBhcmUiKSk7bjxjOyl7dmFyIE4sTT11W25dLE89KHZvaWQgMD09PShOPVllLmpncmlkLmdldEFjY2Vzc29yKE0saCkpJiZ2b2lkIDA9PT0oTj0ibnVtYmVyIiE9dHlwZW9mIGh8fFllLmpncmlkLmlzTnVsbChRLnAuY29sTW9kZWxbaCt4K18rcStDXSk/TjpZZS5qZ3JpZC5nZXRBY2Nlc3NvcihNLFEucC5jb2xNb2RlbFtoK3grXytxK0NdLm5hbWUpKSYmKE49SStuLDA9PT15Lmxlbmd0aCkmJmkuY2VsbCYmKE89WWUuamdyaWQuZ2V0QWNjZXNzb3IoTSxpLmNlbGwpfHxNLE49WWUuamdyaWQuaXNOdWxsKE8pfHx2b2lkIDA9PT1PW2hdP046T1toXSxPPW51bGwpLE49US5wLmlkUHJlZml4K04sKEd8fFEucC5wcmVzZXJ2ZVNlbGVjdGlvbikmJihRLnAubXVsdGlzZWxlY3Q/KGQ9LTEhPT1RLnAuc2VsYXJycm93LmluZGV4T2YoTiksWD1kP1grMTpYKTpkPU49PT1RLnAuc2Vscm93KSxrLmxlbmd0aCk7Zm9yKGsucHVzaCgiIikscSYmay5wdXNoKHRlKDAsbixRLnAucGFnZSxRLnAucm93TnVtLEwpKSx4JiZrLnB1c2goZWUoTixxLG4sZCxXKSksQyYmay5wdXNoKHJlKE4seCtxLG4sVikpLF8mJmsucHVzaChzLmNhbGwoYix4K3ErQyxuK3QpKSxwPVAsaS5yZXBlYXRpdGVtcyYmKGkuY2VsbCYmKE09WWUuamdyaWQuZ2V0QWNjZXNzb3IoTSxpLmNlbGwpfHxNKSxBcnJheS5pc0FycmF5KE0pKSYmKHA9RiksbD0wO2w8cC5sZW5ndGg7bCsrKWE9WWUuamdyaWQuZ2V0QWNjZXNzb3IoTSxwW2xdKSxTW1EucC5jb2xNb2RlbFtsK3grXytxK0NdLm5hbWVdPWEsay5wdXNoKFooTixhLGwreCtfK3ErQyxuK3QsTSxTKSk7aWYoa1tPXT1sZShOLEgsZD9FKyIgIitZOkUsUyxNKSxrLnB1c2goIjwvdHI+IiksUS5wLmdyb3VwaW5nJiYoUi5wdXNoKGspLFEucC5ncm91cGluZ1ZpZXcuX2xvY2dyfHxmLmNhbGwoYixTLG4pLGs9W10pLChqfHwhMD09PVEucC50cmVlR3JpZCYmIVEucC5fYWxkKSYmKFNbdl09WWUuamdyaWQuc3RyaXBQcmVmKFEucC5pZFByZWZpeCxOKSxRLnAuZGF0YS5wdXNoKFMpLFEucC5faW5kZXhbU1t2XV09US5wLmRhdGEubGVuZ3RoLTEsLTE8US5wLnRyZWVBTm9kZSkmJiJhZGphY2VuY3kiPT09US5wLnRyZWVHcmlkTW9kZWwmJkIucHVzaChTKSwhMT09PVEucC5ncmlkdmlldyYmKFUuYXBwZW5kKGsuam9pbigiIikpLGIudHJpZ2dlckhhbmRsZXIoImpxR3JpZEFmdGVySW5zZXJ0Um93IixbTixTLE1dKSx6JiZRLnAuYWZ0ZXJJbnNlcnRSb3cuY2FsbChRLE4sUyxNKSxrPVtdKSxTPXt9LG4rKywrK3c9PT1EKWJyZWFrfWlmKFg9US5wLm11bHRpc2VsZWN0JiYoUS5wLnByZXNlcnZlU2VsZWN0aW9ufHxHKSYmdz09PVgsITA9PT1RLnAuZ3JpZHZpZXcmJihnPS0xPFEucC50cmVlQU5vZGU/US5wLnRyZWVBTm9kZTowLFEucC5ncm91cGluZz9qfHwoYi5qcUdyaWQoImdyb3VwaW5nUmVuZGVyIixSLFEucC5jb2xNb2RlbC5sZW5ndGgsUS5wLnBhZ2UsRCksUj1udWxsKTohMD09PVEucC50cmVlR3JpZCYmMDxnP1llKFEucm93c1tnXSkuYWZ0ZXIoay5qb2luKCIiKSk6KFUuYXBwZW5kKGsuam9pbigiIikpLFEuZ3JpZC5jb2xzPVEucm93c1swXS5jZWxscykpLFEucC50b3RhbHRpbWU9bmV3IERhdGUtVCxrPW51bGwsMDx3JiYwPT09US5wLnJlY29yZHMmJihRLnAucmVjb3Jkcz1jKSwhMD09PVEucC50cmVlR3JpZCl7dHJ5e2IuanFHcmlkKCJzZXRUcmVlTm9kZSIsZysxLHcrZysxKX1jYXRjaChlKXt9aWYoLTE8US5wLnRyZWVBTm9kZSYmImFkamFjZW5jeSI9PT1RLnAudHJlZUdyaWRNb2RlbCYmKGE9US5yb3dzW1EucC50cmVlQU5vZGVdLmlkLDE8PShhPVEucC5faW5kZXhbYV0rMSkpKXtmb3IoUS5wLmRhdGEuc3BsaWNlKC1jLGMpLG49MDtuPGM7bisrKVEucC5kYXRhLnNwbGljZShhK24sMCxCW25dKTtuZSgpfX1pZihRLnAucmVjY291bnQ9dyxRLnAudHJlZUFOb2RlPS0xLFEucC51c2VyRGF0YU9uRm9vdGVyJiZiLmpxR3JpZCgiZm9vdGVyRGF0YSIsInNldCIsUS5wLnVzZXJEYXRhLFEucC5mb3JtYXRGb290ZXJEYXRhLDAsITEpLFEucC51c2VyRGF0YU9uSGVhZGVyJiZiLmpxR3JpZCgiaGVhZGVyRGF0YSIsInNldCIsUS5wLnVzZXJEYXRhLFEucC5mb3JtYXRIZWFkZXJEYXRhLDAsITEpLGomJihRLnAucmVjb3Jkcz1jLFEucC5sYXN0cGFnZT1NYXRoLmNlaWwoYy9EKSksQXx8US51cGRhdGVwYWdlcighMSwhMCksWCYmc2UoITApLGope2Zvcig7dzxjJiZ1W3ddOyl7aWYoTT11W3ddLHZvaWQgMD09PShOPVllLmpncmlkLmdldEFjY2Vzc29yKE0saCkpJiZ2b2lkIDA9PT0oTj0ibnVtYmVyIiE9dHlwZW9mIGh8fFllLmpncmlkLmlzTnVsbChRLnAuY29sTW9kZWxbaCt4K18rcStDXSk/TjpZZS5qZ3JpZC5nZXRBY2Nlc3NvcihNLFEucC5jb2xNb2RlbFtoK3grXytxK0NdLm5hbWUpKSYmKE49SSt3LDA9PT15Lmxlbmd0aCkmJmkuY2VsbCYmKG09WWUuamdyaWQuZ2V0QWNjZXNzb3IoTSxpLmNlbGwpfHxNLE49WWUuamdyaWQuaXNOdWxsKG0pfHx2b2lkIDA9PT1tW2hdP046bVtoXSxtPW51bGwpLE0pe2ZvcihOPVEucC5pZFByZWZpeCtOLHA9UCxpLnJlcGVhdGl0ZW1zJiYoaS5jZWxsJiYoTT1ZZS5qZ3JpZC5nZXRBY2Nlc3NvcihNLGkuY2VsbCl8fE0pLEFycmF5LmlzQXJyYXkoTSkpJiYocD1GKSxsPTA7bDxwLmxlbmd0aDtsKyspU1tRLnAuY29sTW9kZWxbbCt4K18rcStDXS5uYW1lXT1ZZS5qZ3JpZC5nZXRBY2Nlc3NvcihNLHBbbF0pO1Nbdl09WWUuamdyaWQuc3RyaXBQcmVmKFEucC5pZFByZWZpeCxOKSxRLnAuZ3JvdXBpbmcmJmYuY2FsbChiLFMsdyksUS5wLmRhdGEucHVzaChTKSxRLnAuX2luZGV4W1Nbdl1dPVEucC5kYXRhLmxlbmd0aC0xLFM9e319dysrfVEucC5ncm91cGluZyYmKFEucC5ncm91cGluZ1ZpZXcuX2xvY2dyPSEwLGIuanFHcmlkKCJncm91cGluZ1JlbmRlciIsUixRLnAuY29sTW9kZWwubGVuZ3RoLFEucC5wYWdlLEQpLFI9bnVsbCl9aWYoITA9PT1RLnAuc3ViR3JpZCl0cnl7Yi5qcUdyaWQoImFkZFN1YkdyaWQiLHgrcStDKX1jYXRjaChlKXt9fX0sSD1hc3luYyBmdW5jdGlvbihlKXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oYSxuKXtsZXQgbD1RLnAuc29ydG5hbWUscz1RLnAuc29ydG9yZGVyLnRvTG93ZXJDYXNlKCksZD1wYXJzZUludChRLnAucm93TnVtLDEwKSxwPTAsYyx1PXBhcnNlSW50KFEucC5wYWdlLDEwKSxoLGc9ImV2ZXJ5Ijtjb25zdCBmPVEucC5pZ25vcmVDYXNlO2UmJih1PTEsZD0xZTYpLGw9bHx8KFEucC5zb3J0bmFtZT1RLnAuY29sTW9kZWxbMF0uaW5kZXh8fFEucC5jb2xNb2RlbFswXS5uYW1lKSwhMD09PVEucC5zZWFyY2gmJihoPVEucC5wb3N0RGF0YS5maWx0ZXJzKSYmKCJPUiI9PT0oaD0ic3RyaW5nIj09dHlwZW9mIGg/WWUuamdyaWQucGFyc2UoaCk6aCkuZ3JvdXBPcCYmKGc9InNvbWUiKSxoLnJ1bGVzLm1hcChlPT57ZiYmKGUuZGF0YT1lLmRhdGEudG9Mb3dlckNhc2UoKSksZS50eXBlPSJ0ZXh0Ijt2YXIgdD1ZZShRKS5qcUdyaWQoImdldENvbFByb3AiLGUuZmllbGQpLHQ9dC5zb3J0dHlwZXx8dC5zdHlwZSxyPSEoImJ0Ij09PWUub3B8fCJpbiI9PT1lLm9wfHwibmkiPT09ZS5vcCk7c3dpdGNoKHQpe2Nhc2UiaW50IjpjYXNlImludGVnZXIiOnImJihlLmRhdGE9cGFyc2VJbnQoZS5kYXRhLDEwKSksZS50eXBlPSJudW0iO2JyZWFrO2Nhc2UiZmxvYXQiOmNhc2UibnVtYmVyIjpjYXNlIm51bWVyaWMiOnImJihlLmRhdGE9cGFyc2VGbG9hdChlLmRhdGEpKSxlLnR5cGU9Im51bSJ9fSkpO3ZhciBtPXtlcTpmdW5jdGlvbihlLHQscil7cmV0dXJuKHI/dFtlLmZpZWxkXS50b0xvd2VyQ2FzZSgpOnRbZS5maWVsZF0pPT09ZS5kYXRhfSxuZTpmdW5jdGlvbihlLHQscil7cmV0dXJuKHI/dFtlLmZpZWxkXS50b0xvd2VyQ2FzZSgpOnRbZS5maWVsZF0pIT09ZS5kYXRhfSxsdDpmdW5jdGlvbihlLHQscil7cmV0dXJuKHI/dFtlLmZpZWxkXS50b0xvd2VyQ2FzZSgpOnRbZS5maWVsZF0pPGUuZGF0YX0sbGU6ZnVuY3Rpb24oZSx0LHIpe3JldHVybihyP3RbZS5maWVsZF0udG9Mb3dlckNhc2UoKTp0W2UuZmllbGRdKTw9ZS5kYXRhfSxndDpmdW5jdGlvbihlLHQscil7cmV0dXJuKHI/dFtlLmZpZWxkXS50b0xvd2VyQ2FzZSgpOnRbZS5maWVsZF0pPmUuZGF0YX0sZ2U6ZnVuY3Rpb24oZSx0LHIpe3JldHVybihyP3RbZS5maWVsZF0udG9Mb3dlckNhc2UoKTp0W2UuZmllbGRdKT49ZS5kYXRhfSxidzpmdW5jdGlvbihlLHQscil7cmV0dXJuIDA9PT0ocj90W2UuZmllbGRdLnRvTG93ZXJDYXNlKCk6dFtlLmZpZWxkXSkuaW5kZXhPZihlLmRhdGEpfSxibjpmdW5jdGlvbihlLHQscil7cmV0dXJuISgwPT09KHI/dFtlLmZpZWxkXS50b0xvd2VyQ2FzZSgpOnRbZS5maWVsZF0pLmluZGV4T2YoZS5kYXRhKSl9LGV3OmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4ocj90W2UuZmllbGRdLnRvTG93ZXJDYXNlKCk6dFtlLmZpZWxkXSkuZW5kc1dpdGgoZS5kYXRhKX0sZW46ZnVuY3Rpb24oZSx0LHIpe3JldHVybiEocj90W2UuZmllbGRdLnRvTG93ZXJDYXNlKCk6dFtlLmZpZWxkXSkuZW5kc1dpdGgoZS5kYXRhKX0sY246ZnVuY3Rpb24oZSx0LHIpe3JldHVybi0xPChyP3RbZS5maWVsZF0udG9Mb3dlckNhc2UoKTp0W2UuZmllbGRdKS5pbmRleE9mKGUuZGF0YSl9LG5jOmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4tMTwhKHI/dFtlLmZpZWxkXS50b0xvd2VyQ2FzZSgpOnRbZS5maWVsZF0pfSxpbjpmdW5jdGlvbihlLHQscil7cmV0dXJuLTE8ZS5kYXRhLnNwbGl0KCIsIikubWFwKGU9PnI/ZS50cmltKCkudG9Mb3dlckNhc2UoKTplLnRyaW0oKSkuaW5kZXhPZih0W2UuZmllbGRdKX0sbmk6ZnVuY3Rpb24oZSx0LHIpe3JldHVybi0xPT09ZS5kYXRhLnNwbGl0KCIsIikubWFwKGU9PnI/ZS50cmltKCkudG9Mb3dlckNhc2UoKTplLnRyaW0oKSkuaW5kZXhPZih0W2UuZmllbGRdLnRyaW0oKSl9LG51OmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gbnVsbD09PXRbZS5maWVsZF19LG5uOmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gbnVsbCE9PXRbZS5maWVsZF19LGJ0OmZ1bmN0aW9uKHQsZSxyKXt2YXIgaT10LmRhdGEuc3BsaXQoIi4uLiIpLm1hcChlPT4ibnVtIj09PXQudHlwZT8rZTplLnRyaW0oKSk7dHJ5e3ZhciBvPXI/ZVt0LmZpZWxkXS50b0xvd2VyQ2FzZSgpOmVbdC5maWVsZF07cmV0dXJuIG8+PWlbMF0mJm88PWlbMV19Y2F0Y2goZSl7cmV0dXJuITF9fX07Y29uc3Qgdj13aW5kb3cuaW5kZXhlZERCLm9wZW4oUS5wLmRiY29uZmlnLmRibmFtZSk7di5vbnN1Y2Nlc3M9ZnVuY3Rpb24oZSl7dmFyIHQ9di5yZXN1bHQudHJhbnNhY3Rpb24oUS5wLmRiY29uZmlnLmRidGFibGUsInJlYWRvbmx5Iik7bGV0IGk9e307aVtRLnAubG9jYWxSZWFkZXIucm9vdF09W10sdC5vbmNvbXBsZXRlPWZ1bmN0aW9uKGUpeyJkZXNjIiE9PXMmJiFRLnAuZ3JvdXBpbmd8fGlbUS5wLmxvY2FsUmVhZGVyLnJvb3RdLnNvcnQoZnVuY3Rpb24odCxyKXt2YXIgaT1bXSxvPVtdO2lmKFEucC5ncm91cGluZyl7Zm9yKGxldCBlPTA7ZTxRLnAuZ3JvdXBpbmdWaWV3Lmdyb3VwRmllbGQubGVuZ3RoO2UrKykiYXNjIj09PVEucC5ncm91cGluZ1ZpZXcuZ3JvdXBPcmRlcltlXT8oaS5wdXNoKHRbUS5wLmdyb3VwaW5nVmlldy5ncm91cEZpZWxkW2VdXSksby5wdXNoKHJbUS5wLmdyb3VwaW5nVmlldy5ncm91cEZpZWxkW2VdXSkpOihpLnB1c2gocltRLnAuZ3JvdXBpbmdWaWV3Lmdyb3VwRmllbGRbZV1dKSxvLnB1c2godFtRLnAuZ3JvdXBpbmdWaWV3Lmdyb3VwRmllbGRbZV1dKSk7ImFzYyI9PT1zPyhpLnB1c2godFtsXSksby5wdXNoKHJbbF0pKTooaS5wdXNoKHJbbF0pLG8ucHVzaCh0W2xdKSl9ZWxzZSBpPVtyW2xdXSxvPVt0W2xdXTtyZXR1cm4gaW5kZXhlZERCLmNtcChpLG8pfSksaVtRLnAubG9jYWxSZWFkZXIucm9vdF09aVtRLnAubG9jYWxSZWFkZXIucm9vdF0uc2xpY2UoKHUtMSkqZCx1KmQpLGM9TWF0aC5jZWlsKHAvZCksaVtRLnAubG9jYWxSZWFkZXIudG90YWxdPWMsaVtRLnAubG9jYWxSZWFkZXIucGFnZV09dSxpW1EucC5sb2NhbFJlYWRlci5yZWNvcmRzXT1wLGlbUS5wLmxvY2FsUmVhZGVyLnVzZXJkYXRhXT1RLnAudXNlckRhdGEsYShpKX0sdC5vbmVycm9yPWZ1bmN0aW9uKGUpe3koKSxuKGUudGFyZ2V0KX07dmFyIHQ9dC5vYmplY3RTdG9yZShRLnAuZGJjb25maWcuZGJ0YWJsZSkuaW5kZXgobCkscj0odC5jb3VudChudWxsKS5vbnN1Y2Nlc3M9ZT0+e3A9US5wLnNlYXJjaCYmaC5ydWxlcy5sZW5ndGg/MDplLnRhcmdldC5yZXN1bHR9LE1hdGgucG93KDIsMzIpLTEpLG89KCExIT09US5wLnNlYXJjaHx8ImFzYyIhPT1zfHxRLnAuZ3JvdXBpbmd8fChyPXUqZCksdC5nZXRBbGwobnVsbCxyKSk7by5vbnN1Y2Nlc3M9ZT0+e2lmKCEwPT09US5wLnNlYXJjaCYmaC5oYXNPd25Qcm9wZXJ0eSgicnVsZXMiKSYmaC5ydWxlcy5sZW5ndGgpZm9yKHZhciB0PW8ucmVzdWx0Lmxlbmd0aCxyPTA7cjx0OyloLnJ1bGVzW2ddKGZ1bmN0aW9uKGUpe3JldHVybiBtW2Uub3BdKGUsby5yZXN1bHRbcl0sZiYmInRleHQiPT09ZS50eXBlKX0pJiYocCsrLGlbUS5wLmxvY2FsUmVhZGVyLnJvb3RdLnB1c2goby5yZXN1bHRbcl0pKSxyKys7ZWxzZSBpW1EucC5sb2NhbFJlYWRlci5yb290XT1vLnJlc3VsdH0sby5vbmVycm9yPWZ1bmN0aW9uKGUpe2NvbnNvbGUubG9nKGUpfX19KX0sVT1mdW5jdGlvbihlKXt2YXIgdCxyLGksbz1RLnAubXVsdGlTb3J0P1tdOiIiLGE9W10sbj0hMSxwPXt9LGw9W10scz1bXTtpZihBcnJheS5pc0FycmF5KFEucC5kYXRhKSl7dmFyIGQsYyx1LGg9ISFRLnAuZ3JvdXBpbmcmJlEucC5ncm91cGluZ1ZpZXc7aWYoWWUuZWFjaChRLnAuY29sTW9kZWwsZnVuY3Rpb24oKXtpZigiY2IiPT09dGhpcy5uYW1lfHwic3ViZ3JpZCI9PT10aGlzLm5hbWV8fCJybiI9PT10aGlzLm5hbWV8fCJzYyI9PT10aGlzLm5hbWUpcmV0dXJuITA7aWYocj10aGlzLnNvcnR0eXBlfHwidGV4dCIsdT10aGlzLmluZGV4fHx0aGlzLm5hbWUsImRhdGUiPT09cnx8ImRhdGV0aW1lIj09PXI/KHRoaXMuZm9ybWF0dGVyJiYic3RyaW5nIj09dHlwZW9mIHRoaXMuZm9ybWF0dGVyJiYiZGF0ZSI9PT10aGlzLmZvcm1hdHRlcj8odD10aGlzLmZvcm1hdG9wdGlvbnMmJnRoaXMuZm9ybWF0b3B0aW9ucy5zcmNmb3JtYXQ/dGhpcy5mb3JtYXRvcHRpb25zLnNyY2Zvcm1hdDpZZS5qZ3JpZC5nZXRSZWdpb25hbChRLCJmb3JtYXR0ZXIuZGF0ZS5zcmNmb3JtYXQiKSxpPXRoaXMuZm9ybWF0b3B0aW9ucyYmdGhpcy5mb3JtYXRvcHRpb25zLm5ld2Zvcm1hdD90aGlzLmZvcm1hdG9wdGlvbnMubmV3Zm9ybWF0OlllLmpncmlkLmdldFJlZ2lvbmFsKFEsImZvcm1hdHRlci5kYXRlLm5ld2Zvcm1hdCIpKTp0PWk9dGhpcy5kYXRlZm10fHwiWS1tLWQiLHBbdV09e3N0eXBlOnIsc3JjZm10OnQsbmV3Zm10Omksc2Z1bmM6dGhpcy5zb3J0ZnVuY3x8bnVsbCxuYW1lOnRoaXMubmFtZX0pOnBbdV09e3N0eXBlOnIsc3JjZm10OiIiLG5ld2ZtdDoiIixzZnVuYzp0aGlzLnNvcnRmdW5jfHxudWxsLG5hbWU6dGhpcy5uYW1lfSxRLnAuZ3JvdXBpbmcpZm9yKGM9MCxkPWguZ3JvdXBGaWVsZC5sZW5ndGg7YzxkO2MrKyl0aGlzLm5hbWU9PT1oLmdyb3VwRmllbGRbY10mJihsW2NdPXBbdV0sc1tjXT11KTtRLnAubXVsdGlTb3J0fHxufHx1IT09US5wLnNvcnRuYW1lfHwobz11LG49ITApfSksUS5wLm11bHRpU29ydCYmKG89RCxhPUcpLCFRLnAudHJlZUdyaWR8fCFRLnAuX3NvcnQpe3ZhciBnPXtlcTpmdW5jdGlvbihlKXtyZXR1cm4gZS5lcXVhbHN9LG5lOmZ1bmN0aW9uKGUpe3JldHVybiBlLm5vdEVxdWFsc30sbHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUubGVzc30sbGU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUubGVzc09yRXF1YWxzfSxndDpmdW5jdGlvbihlKXtyZXR1cm4gZS5ncmVhdGVyfSxnZTpmdW5jdGlvbihlKXtyZXR1cm4gZS5ncmVhdGVyT3JFcXVhbHN9LGNuOmZ1bmN0aW9uKGUpe3JldHVybiBlLmNvbnRhaW5zfSxuYzpmdW5jdGlvbihlLHQpe3JldHVybigiT1IiPT09dD9lLm9yTm90KCk6ZS5hbmROb3QoKSkuY29udGFpbnN9LGJ3OmZ1bmN0aW9uKGUpe3JldHVybiBlLnN0YXJ0c1dpdGh9LGJuOmZ1bmN0aW9uKGUsdCl7cmV0dXJuKCJPUiI9PT10P2Uub3JOb3QoKTplLmFuZE5vdCgpKS5zdGFydHNXaXRofSxlbjpmdW5jdGlvbihlLHQpe3JldHVybigiT1IiPT09dD9lLm9yTm90KCk6ZS5hbmROb3QoKSkuZW5kc1dpdGh9LGV3OmZ1bmN0aW9uKGUpe3JldHVybiBlLmVuZHNXaXRofSxuaTpmdW5jdGlvbihlLHQpe3JldHVybigiT1IiPT09dD9lLm9yTm90KCk6ZS5hbmROb3QoKSkuaW5EYXRhfSxpbjpmdW5jdGlvbihlKXtyZXR1cm4gZS5pbkRhdGF9LG51OmZ1bmN0aW9uKGUpe3JldHVybiBlLmlzTnVsbH0sbm46ZnVuY3Rpb24oZSx0KXtyZXR1cm4oIk9SIj09PXQ/ZS5vck5vdCgpOmUuYW5kTm90KCkpLmlzTnVsbH19LGY9WWUuamdyaWQuZnJvbS5jYWxsKFEsUS5wLmRhdGEpO2lmKFEucC5pZ25vcmVDYXNlJiYoZj1mLmlnbm9yZUNhc2UoKSksITA9PT1RLnAuc2VhcmNoKXt2YXIgbT1RLnAucG9zdERhdGEuZmlsdGVycztpZihtKSFmdW5jdGlvbiBlKHQpe3ZhciByLGksbyxhLG4sbCxzLGQ9MDtpZighWWUuamdyaWQuaXNOdWxsKHQuZ3JvdXBzKSl7Zm9yKChpPXQuZ3JvdXBzLmxlbmd0aCYmIk9SIj09PXQuZ3JvdXBPcC50b1N0cmluZygpLnRvVXBwZXJDYXNlKCkpJiZmLm9yQmVnaW4oKSxyPTA7cjx0Lmdyb3Vwcy5sZW5ndGg7cisrKXswPGQmJmkmJmYub3IoKTt0cnl7ZSh0Lmdyb3Vwc1tyXSl9Y2F0Y2goZSl7YWxlcnQoZSl9ZCsrfWkmJmYub3JFbmQoKX1pZighWWUuamdyaWQuaXNOdWxsKHQucnVsZXMpKXRyeXtmb3IoKHM9dC5ydWxlcy5sZW5ndGgmJiJPUiI9PT10Lmdyb3VwT3AudG9TdHJpbmcoKS50b1VwcGVyQ2FzZSgpKSYmZi5vckJlZ2luKCkscj0wO3I8dC5ydWxlcy5sZW5ndGg7cisrKXtpZihhPXQucnVsZXNbcl0sbz10Lmdyb3VwT3AudG9TdHJpbmcoKS50b1VwcGVyQ2FzZSgpLGdbYS5vcF0mJmEuZmllbGQpezA8ZCYmbyYmIk9SIj09PW8mJihmPWYub3IoKSksbD1hLmZpZWxkLFEucC51c2VOYW1lRm9yU2VhcmNoJiZwLmhhc093blByb3BlcnR5KGEuZmllbGQpJiYobD1wW2EuZmllbGRdLm5hbWUpO3RyeXsiZGF0ZSI9PT0obj1wW2EuZmllbGRdKS5zdHlwZSYmInN0cmluZyI9PXR5cGVvZiBuLnNyY2ZtdCYmInN0cmluZyI9PXR5cGVvZiBuLm5ld2ZtdCYmKGEuZGF0YT1ZZS5qZ3JpZC5wYXJzZURhdGUuY2FsbChRLG4ubmV3Zm10LGEuZGF0YSxuLnNyY2ZtdCkpLGY9Z1thLm9wXShmLG8pKGwsYS5kYXRhLG4pfWNhdGNoKGUpe319ZWxzZSB2b2lkIDAhPT1RLnAuY3VzdG9tRmlsdGVyRGVmJiZ2b2lkIDAhPT1RLnAuY3VzdG9tRmlsdGVyRGVmW2Eub3BdJiZZZS5qZ3JpZC5pc0Z1bmN0aW9uKFEucC5jdXN0b21GaWx0ZXJEZWZbYS5vcF0uYWN0aW9uKSYmKGY9Zi51c2VyLmNhbGwoUSxhLm9wLGEuZmllbGQsYS5kYXRhKSk7ZCsrfXMmJmYub3JFbmQoKX1jYXRjaChlKXthbGVydChlKX19KG09InN0cmluZyI9PXR5cGVvZiBtP1llLmpncmlkLnBhcnNlKG0pOm0pO2Vsc2UgdHJ5eyJkYXRlIj09PSh3PXBbUS5wLnBvc3REYXRhLnNlYXJjaEZpZWxkXSkuc3R5cGUmJncuc3JjZm10JiZ3Lm5ld2ZtdCYmdy5zcmNmbXQhPT13Lm5ld2ZtdCYmKFEucC5wb3N0RGF0YS5zZWFyY2hTdHJpbmc9WWUuamdyaWQucGFyc2VEYXRlLmNhbGwoUSx3Lm5ld2ZtdCxRLnAucG9zdERhdGEuc2VhcmNoU3RyaW5nLHcuc3JjZm10KSksZ1tRLnAucG9zdERhdGEuc2VhcmNoT3Blcl0/Zj1nW1EucC5wb3N0RGF0YS5zZWFyY2hPcGVyXShmKShRLnAucG9zdERhdGEuc2VhcmNoRmllbGQsUS5wLnBvc3REYXRhLnNlYXJjaFN0cmluZyxwW1EucC5wb3N0RGF0YS5zZWFyY2hGaWVsZF0pOnZvaWQgMCE9PVEucC5jdXN0b21GaWx0ZXJEZWYmJnZvaWQgMCE9PVEucC5jdXN0b21GaWx0ZXJEZWZbUS5wLnBvc3REYXRhLnNlYXJjaE9wZXJdJiZZZS5qZ3JpZC5pc0Z1bmN0aW9uKFEucC5jdXN0b21GaWx0ZXJEZWZbUS5wLnBvc3REYXRhLnNlYXJjaE9wZXJdLmFjdGlvbikmJihmPWYudXNlci5jYWxsKFEsUS5wLnBvc3REYXRhLnNlYXJjaE9wZXIsUS5wLnBvc3REYXRhLnNlYXJjaEZpZWxkLFEucC5wb3N0RGF0YS5zZWFyY2hTdHJpbmcpKX1jYXRjaChlKXt9fWlmKFEucC50cmVlR3JpZCYmIm5lc3RlZCI9PT1RLnAudHJlZUdyaWRNb2RlbCYmZi5vcmRlckJ5KFEucC50cmVlUmVhZGVyLmxlZnRfZmllbGQsImFzYyIsImludGVnZXIiLCIiLG51bGwpLFEucC50cmVlR3JpZCYmImFkamFjZW5jeSI9PT1RLnAudHJlZUdyaWRNb2RlbCYmKGQ9MCxvPW51bGwpLFEucC5ncm91cGluZylmb3IoYz0wO2M8ZDtjKyspZi5vcmRlckJ5KHNbY10saC5ncm91cE9yZGVyW2NdLGxbY10uc3R5cGUsbFtjXS5zcmNmbXQpO1EucC5tdWx0aVNvcnQ/WWUuZWFjaChvLGZ1bmN0aW9uKGUpe2Yub3JkZXJCeSh0aGlzLGFbZV0scFt0aGlzXS5zdHlwZSxwW3RoaXNdLnNyY2ZtdCxwW3RoaXNdLnNmdW5jKX0pOm8mJlEucC5zb3J0b3JkZXImJm4mJigiREVTQyI9PT1RLnAuc29ydG9yZGVyLnRvVXBwZXJDYXNlKCk/Zi5vcmRlckJ5KFEucC5zb3J0bmFtZSwiZCIscFtvXS5zdHlwZSxwW29dLnNyY2ZtdCxwW29dLnNmdW5jKTpmLm9yZGVyQnkoUS5wLnNvcnRuYW1lLCJhIixwW29dLnN0eXBlLHBbb10uc3JjZm10LHBbb10uc2Z1bmMpKTt2YXIgdj1mLnNlbGVjdCgpLGo9cGFyc2VJbnQoUS5wLnJvd051bSwxMCksYj12Lmxlbmd0aCxtPXBhcnNlSW50KFEucC5wYWdlLDEwKSx3PU1hdGguY2VpbChiL2opLHk9e307aWYoKFEucC5zZWFyY2h8fFEucC5yZXNldHNlYXJjaCkmJlEucC5ncm91cGluZyYmUS5wLmdyb3VwaW5nVmlldy5fbG9jZ3Ipe1EucC5ncm91cGluZ1ZpZXcuZ3JvdXBzPVtdO3ZhciB4LF8scSxDPVllLmpncmlkLmdldE1ldGhvZCgiZ3JvdXBpbmdQcmVwYXJlIik7aWYoUS5wLmZvb3RlcnJvdyYmUS5wLnVzZXJEYXRhT25Gb290ZXIpe2ZvcihfIGluIFEucC51c2VyRGF0YSlRLnAudXNlckRhdGEuaGFzT3duUHJvcGVydHkoXykmJihRLnAudXNlckRhdGFbX109MCk7cT0hMH1mb3IoeD0wO3g8Yjt4Kyspe2lmKHEpZm9yKF8gaW4gUS5wLnVzZXJEYXRhKVEucC51c2VyRGF0YS5oYXNPd25Qcm9wZXJ0eShfKSYmKFEucC51c2VyRGF0YVtfXSs9cGFyc2VGbG9hdCh2W3hdW19dfHwwKSk7Qy5jYWxsKFllKFEpLHZbeF0seCxqKX19cmV0dXJuIGU/djoodj1RLnAudHJlZUdyaWQmJlEucC5zZWFyY2g/WWUoUSkuanFHcmlkKCJzZWFyY2hUcmVlIix2KTp2LnNsaWNlKChtLTEpKmosbSpqKSxwPWY9bnVsbCx5W1EucC5sb2NhbFJlYWRlci50b3RhbF09dyx5W1EucC5sb2NhbFJlYWRlci5wYWdlXT1tLHlbUS5wLmxvY2FsUmVhZGVyLnJlY29yZHNdPWIseVtRLnAubG9jYWxSZWFkZXIucm9vdF09dix5W1EucC5sb2NhbFJlYWRlci51c2VyZGF0YV09US5wLnVzZXJEYXRhLHY9bnVsbCx5KX1ZZShRKS5qcUdyaWQoIlNvcnRUcmVlIixvLFEucC5zb3J0b3JkZXIscFtvXS5zdHlwZXx8InRleHQiLHBbb10uc3JjZm10fHwiIil9fSxMPWZ1bmN0aW9uKCl7US5ncmlkLmhEaXYubG9hZGluZz0hMCxRLnAuaGlkZGVuZ3JpZHx8WWUoUSkuanFHcmlkKCJwcm9ncmVzc0JhciIse21ldGhvZDoic2hvdyIsbG9hZHR5cGU6US5wLmxvYWR1aSxodG1sY29udGVudDpZZS5qZ3JpZC5nZXRSZWdpb25hbChRLCJkZWZhdWx0cy5sb2FkdGV4dCIsUS5wLmxvYWR0ZXh0KX0pfSx5PWZ1bmN0aW9uKCl7US5ncmlkLmhEaXYubG9hZGluZz0hMSxZZShRKS5qcUdyaWQoInByb2dyZXNzQmFyIix7bWV0aG9kOiJoaWRlIixsb2FkdHlwZTpRLnAubG9hZHVpfSl9LFY9ZnVuY3Rpb24oZSx0LHIpe3ZhciBpPXZvaWQgMD09PShpPVllKFEpLnRyaWdnZXJIYW5kbGVyKCJqcUdyaWRCZWZvcmVQcm9jZXNzaW5nIixbZSx0LHJdKSl8fCJib29sZWFuIiE9dHlwZW9mIGl8fGk7cmV0dXJuIGk9WWUuamdyaWQuaXNGdW5jdGlvbihRLnAuYmVmb3JlUHJvY2Vzc2luZykmJiExPT09US5wLmJlZm9yZVByb2Nlc3NpbmcuY2FsbChRLGUsdCxyKT8hMTppfSxXPWZ1bmN0aW9uKGUsdCl7WWUoUSkudHJpZ2dlckhhbmRsZXIoImpxR3JpZExvYWRDb21wbGV0ZSIsW2VdKSx0JiZRLnAubG9hZENvbXBsZXRlLmNhbGwoUSxlKSxZZShRKS50cmlnZ2VySGFuZGxlcigianFHcmlkQWZ0ZXJMb2FkQ29tcGxldGUiLFtlXSksUS5wLmRhdGF0eXBlPSJsb2NhbCIsUS5wLmRhdGFzdHI9bnVsbCx5KCl9LHg9ZnVuY3Rpb24oaSl7aWYoIVEuZ3JpZC5oRGl2LmxvYWRpbmcpe3ZhciBvLGE9US5wLnNjcm9sbCYmITE9PT1pLGU9e30sdD1RLnAucHJtTmFtZXMscj0oWD0wLFEucC5wYWdlPD0wJiYoUS5wLnBhZ2U9TWF0aC5taW4oMSxRLnAubGFzdHBhZ2UpKSxZZS5qZ3JpZC5pc051bGwodC5zZWFyY2gsITApfHwoZVt0LnNlYXJjaF09US5wLnNlYXJjaCksWWUuamdyaWQuaXNOdWxsKHQubmQsITApfHwoZVt0Lm5kXT0obmV3IERhdGUpLmdldFRpbWUoKSksWWUuamdyaWQuaXNOdWxsKHQucm93cywhMCl8fChlW3Qucm93c109US5wLnJvd051bSksWWUuamdyaWQuaXNOdWxsKHQucGFnZSwhMCl8fChlW3QucGFnZV09US5wLnBhZ2UpLFllLmpncmlkLmlzTnVsbCh0LnNvcnQsITApfHwoZVt0LnNvcnRdPVEucC5zb3J0bmFtZSksWWUuamdyaWQuaXNOdWxsKHQub3JkZXIsITApfHwoZVt0Lm9yZGVyXT1RLnAuc29ydG9yZGVyKSxZZS5qZ3JpZC5pc051bGwoUS5wLnJvd1RvdGFsLCEwKXx8WWUuamdyaWQuaXNOdWxsKHQudG90YWxyb3dzLCEwKXx8KGVbdC50b3RhbHJvd3NdPVEucC5yb3dUb3RhbCksWWUuamdyaWQuaXNGdW5jdGlvbihRLnAubG9hZENvbXBsZXRlKSksbj1yP1EucC5sb2FkQ29tcGxldGU6bnVsbCxsPTA7aWYoMTwoaT1pfHwxKT9ZZS5qZ3JpZC5pc051bGwodC5ucGFnZSwhMCk/bj1mdW5jdGlvbihlKXtRLnAucGFnZSsrLFEuZ3JpZC5oRGl2LmxvYWRpbmc9ITEsciYmUS5wLmxvYWRDb21wbGV0ZS5jYWxsKFEsZSkseChpLTEpfTooZVt0Lm5wYWdlXT1pLGw9aS0xLGk9MSk6WWUuamdyaWQuaXNOdWxsKHQubnBhZ2UsITApfHxkZWxldGUgUS5wLnBvc3REYXRhW3QubnBhZ2VdLFEucC5ncm91cGluZyl7WWUoUSkuanFHcmlkKCJncm91cGluZ1NldHVwIik7Zm9yKHZhciBzPVEucC5ncm91cGluZ1ZpZXcsZD1bXSxwPTA7cDxzLmdyb3VwRmllbGQubGVuZ3RoO3ArKyl7dmFyIGM9cy5ncm91cEZpZWxkW3BdO1llLmVhY2goUS5wLmNvbE1vZGVsLGZ1bmN0aW9uKGUsdCl7dC5uYW1lPT09YyYmdC5pbmRleCYmKGM9dC5pbmRleCl9KSxkLnB1c2goYysiICIrcy5ncm91cE9yZGVyW3BdKX1oPWQuam9pbigpLCIiIT09WWUuamdyaWQudHJpbShlW3Quc29ydF0pP2VbdC5zb3J0XT0iIiE9PWg/aCsiICwiK2VbdC5zb3J0XTplW3Quc29ydF06KGVbdC5zb3J0XT1oLGVbdC5vcmRlcl09IiIpLCJsb2NhbCIhPT1RLnAuZGF0YXR5cGV8fHMuX2xvY2dyfHwoUS5wLmRhdGF0eXBlPSJqc29uc3RyaW5nIixRLnAuZGF0YXN0cj1RLnAuZGF0YSl9WWUuZXh0ZW5kKFEucC5wb3N0RGF0YSxlKTt2YXIgdT1RLnAuc2Nyb2xsP1Eucm93cy5sZW5ndGgtMToxO2lmKFllLmpncmlkLmlzRnVuY3Rpb24oUS5wLmRhdGF0eXBlKSlRLnAuZGF0YXR5cGUuY2FsbChRLFEucC5wb3N0RGF0YSwibG9hZF8iK1EucC5pZCx1LGksbCk7ZWxzZXt2YXIgaD1ZZShRKS50cmlnZ2VySGFuZGxlcigianFHcmlkQmVmb3JlUmVxdWVzdCIpO2lmKCExIT09aCYmInN0b3AiIT09aCYmKCFZZS5qZ3JpZC5pc0Z1bmN0aW9uKFEucC5iZWZvcmVSZXF1ZXN0KXx8ITEhPT0oaD1RLnAuYmVmb3JlUmVxdWVzdC5jYWxsKFEpKSYmInN0b3AiIT09aCkpe3N3aXRjaChZZS5qZ3JpZC5pc0Z1bmN0aW9uKFEudHJlZUdyaWRfYmVmb3JlUmVxdWVzdCkmJlEudHJlZUdyaWRfYmVmb3JlUmVxdWVzdC5jYWxsKFEpLG89US5wLmRhdGF0eXBlLnRvTG93ZXJDYXNlKCkpe2Nhc2UianNvbiI6Y2FzZSJqc29ucCI6Y2FzZSJ4bWwiOmNhc2Uic2NyaXB0IjpZZS5hamF4KFllLmV4dGVuZCh7dXJsOlEucC51cmwsdHlwZTpRLnAubXR5cGUsZGF0YVR5cGU6byxkYXRhOlllLmpncmlkLmlzRnVuY3Rpb24oUS5wLnNlcmlhbGl6ZUdyaWREYXRhKT9RLnAuc2VyaWFsaXplR3JpZERhdGEuY2FsbChRLFEucC5wb3N0RGF0YSk6US5wLnBvc3REYXRhLHN1Y2Nlc3M6ZnVuY3Rpb24oZSx0LHIpe1YoZSx0LHIpPygoInhtbCI9PT1vP0U6eikoZSx1LDE8aSxsKSxZZShRKS50cmlnZ2VySGFuZGxlcigianFHcmlkTG9hZENvbXBsZXRlIixbZV0pLG4mJm4uY2FsbChRLGUpLFllKFEpLnRyaWdnZXJIYW5kbGVyKCJqcUdyaWRBZnRlckxvYWRDb21wbGV0ZSIsW2VdKSxhJiZRLmdyaWQucG9wdWxhdGVWaXNpYmxlKCksUS5wLnRyZWVHcmlkX2JpZ0RhdGE/US5wLmxvYWRvbmNlJiYoUS5wLmRhdGF0eXBlPSJsb2NhbCIpOihRLnAubG9hZG9uY2V8fFEucC50cmVlR3JpZCkmJihRLnAuZGF0YXR5cGU9ImxvY2FsIiksZT1udWxsLDE9PT1pJiZ5KCksWWUuamdyaWQuaXNGdW5jdGlvbihRLnRyZWVHcmlkX2FmdGVyTG9hZENvbXBsZXRlKSYmUS50cmVlR3JpZF9hZnRlckxvYWRDb21wbGV0ZS5jYWxsKFEpKTp5KCl9LGVycm9yOmZ1bmN0aW9uKGUsdCxyKXtZZShRKS50cmlnZ2VySGFuZGxlcigianFHcmlkTG9hZEVycm9yIixbZSx0LHJdKSxZZS5qZ3JpZC5pc0Z1bmN0aW9uKFEucC5sb2FkRXJyb3IpJiZRLnAubG9hZEVycm9yLmNhbGwoUSxlLHQsciksMT09PWkmJnkoKX0sYmVmb3JlU2VuZDpmdW5jdGlvbihlLHQpe3ZhciByPSEwLHI9WWUoUSkudHJpZ2dlckhhbmRsZXIoImpxR3JpZExvYWRCZWZvcmVTZW5kIixbZSx0XSk7aWYoITE9PT0ocj12b2lkIDA9PT0ocj1ZZS5qZ3JpZC5pc0Z1bmN0aW9uKFEucC5sb2FkQmVmb3JlU2VuZCk/US5wLmxvYWRCZWZvcmVTZW5kLmNhbGwoUSxlLHQpOnIpPyEwOnIpKXJldHVybiExO0woKX19LFllLmpncmlkLmFqYXhPcHRpb25zLFEucC5hamF4R3JpZE9wdGlvbnMpKTticmVhaztjYXNlInhtbHN0cmluZyI6aWYoTCgpLGc9InN0cmluZyIhPXR5cGVvZiBRLnAuZGF0YXN0cj9RLnAuZGF0YXN0cjpZZS5wYXJzZVhNTChRLnAuZGF0YXN0ciksIVYoZywyMDAsbnVsbCkpcmV0dXJuIHZvaWQgeSgpO0UoZyksVyhnLHIpO2JyZWFrO2Nhc2UianNvbnN0cmluZyI6aWYoTCgpLGc9InN0cmluZyI9PXR5cGVvZiBRLnAuZGF0YXN0cj9ZZS5qZ3JpZC5wYXJzZShRLnAuZGF0YXN0cik6US5wLmRhdGFzdHIsIVYoZywyMDAsbnVsbCkpcmV0dXJuIHZvaWQgeSgpO3ooZyksUS5wLmdyb3VwaW5nJiZRLnAuZ3JvdXBpbmdWaWV3Ll9sb2NnciYmKFEucC5kYXRhPWcpLFcoZyxyKTticmVhaztjYXNlImxvY2FsIjpjYXNlImNsaWVudHNpZGUiOkwoKSxRLnAuZGF0YXR5cGU9ImxvY2FsIixRLnAuX2FsZD0hMDt2YXIgZz1VKCExKTtpZighVihnLDIwMCxudWxsKSlyZXR1cm4gdm9pZCB5KCk7eihnLHUsMTxpLGwpLFllKFEpLnRyaWdnZXJIYW5kbGVyKCJqcUdyaWRMb2FkQ29tcGxldGUiLFtnXSksbiYmbi5jYWxsKFEsZyksWWUoUSkudHJpZ2dlckhhbmRsZXIoImpxR3JpZEFmdGVyTG9hZENvbXBsZXRlIixbZ10pLGEmJlEuZ3JpZC5wb3B1bGF0ZVZpc2libGUoKSx5KCksUS5wLl9hbGQ9ITE7YnJlYWs7Y2FzZSJpbmRleGVkZGIiOmlmKCFRLnAuZGJjb25maWcucmVhZHlfcmVxKXJldHVybjtMKCksSCghMSkudGhlbihmdW5jdGlvbihlKXtWKGUsMjAwLG51bGwpPyh6KGUsdSwxPGksbCksWWUoUSkudHJpZ2dlckhhbmRsZXIoImpxR3JpZExvYWRDb21wbGV0ZSIsW2VdKSxuJiZuLmNhbGwoUSxlKSxZZShRKS50cmlnZ2VySGFuZGxlcigianFHcmlkQWZ0ZXJMb2FkQ29tcGxldGUiLFtlXSksYSYmUS5ncmlkLnBvcHVsYXRlVmlzaWJsZSgpLHkoKSxRLnAuX2FsZD0hMSk6eSgpfSl9US5wLl9zb3J0PSExfX19fSxzZT1mdW5jdGlvbihlKXtZZSgiI2NiXyIrWWUuamdyaWQuanFJRChRLnAuaWQpLFEuZ3JpZC5oRGl2KVtRLnAudXNlUHJvcD8icHJvcCI6ImF0dHIiXSgiY2hlY2tlZCIsZSksKFEucC5mcm96ZW5Db2x1bW5zP1EucC5pZCsiX2Zyb3plbiI6IiIpJiZZZSgiI2NiXyIrWWUuamdyaWQuanFJRChRLnAuaWQpLFEuZ3JpZC5maERpdilbUS5wLnVzZVByb3A/InByb3AiOiJhdHRyIl0oImNoZWNrZWQiLGUpfSxkZT1mdW5jdGlvbihlLGwpe2Z1bmN0aW9uIHMoZSx0KXt2YXIgcj1ZZShRKS50cmlnZ2VySGFuZGxlcigianFHcmlkUGFnaW5nIixbZSx0XSk7cmV0dXJuInN0b3AiIT09ciYmInN0b3AiIT09KHI9WWUuamdyaWQuaXNGdW5jdGlvbihRLnAub25QYWdpbmcpP1EucC5vblBhZ2luZy5jYWxsKFEsZSx0KTpyKSYmKFEucC5zZWxyb3c9bnVsbCxRLnAubXVsdGlzZWxlY3QmJihRLnAucHJlc2VydmVTZWxlY3Rpb258fChRLnAuc2VsYXJycm93PVtdKSxzZSghMSkpLFEucC5zYXZlZFJvdz1bXSl9dmFyIHQscixpLG89Ijx0ZCBjbGFzcz0ndWktcGctYnV0dG9uICIraisiJz48c3BhbiBjbGFzcz0ndWktc2VwYXJhdG9yJz48L3NwYW4+PC90ZD4iLGE9IiIsbj0iPHRhYmxlIGNsYXNzPSd1aS1wZy10YWJsZSB1aS1jb21tb24tdGFibGUgdWktcGFnaW5nLXBhZ2VyJz48dGJvZHk+PHRyPiIsZD0iIjtpZihsKz0iXyIrZSx0PSJwZ18iK2UsbT1lKyJfbGVmdCIsZz1lKyJfY2VudGVyIixmPWUrIl9yaWdodCIsWWUoIiMiK1llLmpncmlkLmpxSUQoZSkpLmFwcGVuZCgiPGRpdiBpZD0nIit0KyInIGNsYXNzPSd1aS1wYWdlci1jb250cm9sJyByb2xlPSdncm91cCc+PHRhYmxlICIrSygkLCJwYWdlclRhYmxlIiwhMSwidWktcGctdGFibGUgdWktY29tbW9uLXRhYmxlIHVpLXBhZ2VyLXRhYmxlIikrIj48dGJvZHk+PHRyPjx0ZCBpZD0nIittKyInIGFsaWduPSdsZWZ0Jz48L3RkPjx0ZCBpZD0nIitnKyInIGFsaWduPSdjZW50ZXInIHN0eWxlPSd3aGl0ZS1zcGFjZTpwcmU7Jz48L3RkPjx0ZCBpZD0nIitmKyInIGFsaWduPSdyaWdodCc+PC90ZD48L3RyPjwvdGJvZHk+PC90YWJsZT48L2Rpdj4iKS5hdHRyKCJkaXIiLHYpLDA8US5wLnJvd0xpc3QubGVuZ3RoKXt2YXIgcCxkPSc8dGQgZGlyPSInK3YrJyI+Jztmb3IoZCs9IjxzZWxlY3QgIitLKCQsInBnU2VsZWN0Qm94IiwhMSwidWktcGctc2VsYm94IikrJyBzaXplPSIxIiByb2xlPSJsaXN0Ym94IiB0aXRsZT0iJysoWWUuamdyaWQuZ2V0UmVnaW9uYWwoUSwiZGVmYXVsdHMucGdyZWNzIixRLnAucGdyZWNzKXx8IiIpKyciPicscj0wO3I8US5wLnJvd0xpc3QubGVuZ3RoO3IrKykxPT09KHA9US5wLnJvd0xpc3Rbcl0udG9TdHJpbmcoKS5zcGxpdCgiOiIpKS5sZW5ndGgmJihwWzFdPXBbMF0pLDA9PXBbMV0ubGVuZ3RoP2QrPSc8b3B0aW9uIHJvbGU9Im9wdGlvbiIgdmFsdWU9IicrcFswXSsnIicrKEooUS5wLnJvd051bSwwKT09PUoocFswXSwwKT8nIGFyaWEtbGFiZWw9IicrcFsxXSsnIiBzZWxlY3RlZD0ic2VsZWN0ZWQiJzoiIikrIj4iK3BbMV0rIjwvb3B0aW9uPiI6ZCs9JzxvcHRpb24gcm9sZT0ib3B0aW9uIiB2YWx1ZT0iJytwWzBdKyciJysoSihRLnAucm93TnVtLDApPT09SihwWzBdLDApPycgc2VsZWN0ZWQ9InNlbGVjdGVkIic6IiIpKyI+IitwWzFdKyI8L29wdGlvbj4iO2QrPSI8L3NlbGVjdD48L3RkPiJ9InJ0bCI9PT12JiYobis9ZCxZZSgiIyIrZikuYXR0cigiYWxpZ24iLCJsZWZ0IikpLCEwPT09US5wLnBnaW5wdXQmJihhPSI8dGQgaWQ9J2lucHV0IitsKyInIGRpcj0nIit2KyInPiIrWWUuamdyaWQudGVtcGxhdGUoWWUuamdyaWQuZ2V0UmVnaW9uYWwoUSwiZGVmYXVsdHMucGd0ZXh0IixRLnAucGd0ZXh0KXx8IiIsIjxpbnB1dCAiK0soJCwicGdJbnB1dCIsITEsInVpLXBnLWlucHV0IikrIiB0eXBlPSd0ZXh0JyBzaXplPScyJyBtYXhsZW5ndGg9JzcnIHZhbHVlPScwJyByb2xlPSd0ZXh0Ym94Jy8+IiwiPHNwYW4gaWQ9J3NwXzFfIitZZS5qZ3JpZC5qcUlEKGUpKyInPjwvc3Bhbj4iKSsiPC90ZD4iKTt2YXIgYyx1LGgsZyxmLG09WyJmaXJzdCIrbCwicHJldiIrbCwibmV4dCIrbCwibGFzdCIrbF07ITA9PT1RLnAucGdidXR0b25zPyhnPUsoJCwicGdCdXR0b25Cb3giLCEwLCJ1aS1wZy1idXR0b24iKSxmPVtZZS5qZ3JpZC5nZXRSZWdpb25hbChRLCJkZWZhdWx0cy5wZ2ZpcnN0IixRLnAucGdmaXJzdCl8fCIiLFllLmpncmlkLmdldFJlZ2lvbmFsKFEsImRlZmF1bHRzLnBncHJldiIsUS5wLnBncHJldil8fCIiLFllLmpncmlkLmdldFJlZ2lvbmFsKFEsImRlZmF1bHRzLnBnbmV4dCIsUS5wLnBnbmV4dCl8fCIiLFllLmpncmlkLmdldFJlZ2lvbmFsKFEsImRlZmF1bHRzLnBnbGFzdCIsUS5wLnBnbGFzdCl8fCIiXSwicnRsIj09PXYmJihtLnJldmVyc2UoKSxmLnJldmVyc2UoKSksYz0iPHRkIGlkPSciK21bMF0rIicgY2xhc3M9JyIrZysiJyB0aXRsZT0nIitmWzBdKyInPjxzcGFuICIrSygkLCJpY29uX2ZpcnN0IiwhMSxDKSsiPjwvc3Bhbj48L3RkPiIsdT0iPHRkIGlkPSciK21bMV0rIicgY2xhc3M9JyIrZysiJyAgdGl0bGU9JyIrZlsxXSsiJz48c3BhbiAiK0soJCwiaWNvbl9wcmV2IiwhMSxDKSsiPjwvc3Bhbj48L3RkPiIsaD0iPHRkIGlkPSciK21bMl0rIicgY2xhc3M9JyIrZysiJyB0aXRsZT0nIitmWzJdKyInPjxzcGFuICIrSygkLCJpY29uX25leHQiLCExLEMpKyI+PC9zcGFuPjwvdGQ+IixnPSI8dGQgaWQ9JyIrbVszXSsiJyBjbGFzcz0nIitnKyInIHRpdGxlPSciK2ZbM10rIic+PHNwYW4gIitLKCQsImljb25fZW5kIiwhMSxDKSsiPjwvc3Bhbj48L3RkPiIsZj0iIiE9PWE/bythK286IiIsbis9Imx0ciI9PT12P2MrdStmK2grZzpnK2grZit1K2MpOiIiIT09YSYmKG4rPWEpLCJsdHIiPT09diYmKG4rPWQpLG4rPSI8L3RyPjwvdGJvZHk+PC90YWJsZT4iLGU9WWUuamdyaWQuanFJRChlKSx0PVllLmpncmlkLmpxSUQodCksITA9PT1RLnAudmlld3JlY29yZHMmJlllKCJ0ZCMiK2UrIl8iK1EucC5yZWNvcmRwb3MsIiMiK3QpLmFwcGVuZCgiPGRpdiBkaXI9JyIrdisiJyBzdHlsZT0ndGV4dC1hbGlnbjoiK1EucC5yZWNvcmRwb3MrIicgY2xhc3M9J3VpLXBhZ2luZy1pbmZvJz48L2Rpdj4iKSxZZSgidGQjIitlKyJfIitRLnAucGFnZXJwb3MsIiMiK3QpLmFwcGVuZChuKSxvPVllKCIjZ2JveF8iK1llLmpncmlkLmpxSUQoUS5wLmlkKSkuY3NzKCJmb250LXNpemUiKXx8IjExcHgiLFllKCIjZ2JveF8iK1llLmpncmlkLmpxSUQoUS5wLmlkKSkuYXBwZW5kKCI8ZGl2IGlkPSd0ZXN0cGcnICIrSygkLCJlbnRyaWVCb3giLCExLCJ1aS1qcWdyaWQiKSsiIHN0eWxlPSdmb250LXNpemU6IitvKyI7dmlzaWJpbGl0eTpoaWRkZW47JyA+PC9kaXY+IiksZz1ZZShuKS5jbG9uZSgpLmFwcGVuZFRvKCIjdGVzdHBnIikud2lkdGgoKSxZZSgiI3Rlc3RwZyIpLnJlbW92ZSgpLDA8ZyYmKCIiIT09YSYmKGcrPTUwKSxpPWc+WWUoInRkIyIrZSsiXyIrUS5wLnBhZ2VycG9zLCIjIit0KS5pbm5lcldpZHRoKCksWWUoInRkIyIrZSsiXyIrUS5wLnBhZ2VycG9zLCIjIit0KS53aWR0aChnKSksUS5wLl9udnRkPVtdLFEucC5fbnZ0ZFswXT1nP01hdGguZmxvb3IoKFEucC53aWR0aC1nKS8yKTpNYXRoLmZsb29yKFEucC53aWR0aC8zKSxRLnAuX252dGRbMV09MCxuPW51bGwsWWUoIi51aS1wZy1zZWxib3giLCIjIit0KS5vbigiY2hhbmdlIixmdW5jdGlvbigpe3JldHVybiBzKCJyZWNvcmRzIix0aGlzKSYmKFEucC5wYWdlPU1hdGgucm91bmQoUS5wLnJvd051bSooUS5wLnBhZ2UtMSkvdGhpcy52YWx1ZS0uNSkrMSxRLnAucm93TnVtPXRoaXMudmFsdWUsUS5wLnBhZ2VyJiZZZSgiLnVpLXBnLXNlbGJveCIsUS5wLnBhZ2VyKS52YWwodGhpcy52YWx1ZSksUS5wLnRvcHBhZ2VyJiZZZSgiLnVpLXBnLXNlbGJveCIsUS5wLnRvcHBhZ2VyKS52YWwodGhpcy52YWx1ZSkseCgpKSwhMX0pLCEwPT09US5wLnBnYnV0dG9ucyYmKFllKCIudWktcGctYnV0dG9uIiwiIyIrdCkuaG92ZXIoZnVuY3Rpb24oKXtZZSh0aGlzKS5oYXNDbGFzcyhqKT90aGlzLnN0eWxlLmN1cnNvcj0iZGVmYXVsdCI6KFllKHRoaXMpLmFkZENsYXNzKHEpLHRoaXMuc3R5bGUuY3Vyc29yPSJwb2ludGVyIil9LGZ1bmN0aW9uKCl7WWUodGhpcykuaGFzQ2xhc3Moail8fChZZSh0aGlzKS5yZW1vdmVDbGFzcyhxKSx0aGlzLnN0eWxlLmN1cnNvcj0iZGVmYXVsdCIpfSksWWUoIiNmaXJzdCIrWWUuamdyaWQuanFJRChsKSsiLCAjcHJldiIrWWUuamdyaWQuanFJRChsKSsiLCAjbmV4dCIrWWUuamdyaWQuanFJRChsKSsiLCAjbGFzdCIrWWUuamdyaWQuanFJRChsKSkuY2xpY2soZnVuY3Rpb24oKXt2YXIgZSx0LHIsaSxvLGEsbjtyZXR1cm4gWWUodGhpcykuaGFzQ2xhc3Moail8fChlPUooUS5wLnBhZ2UsMSksbj1hPW89aT0hKHI9ITEpLDA9PT0odD1KKFEucC5sYXN0cGFnZSwxKSl8fDE9PT10P249YT1vPWk9ITE6MTx0JiYxPD1lPzE9PT1lP289aT0hMTplPT09dCYmKG49YT0hMSk6MTx0JiYwPT09ZSYmKG49YT0hMSxlPXQtMSkscyh0aGlzLmlkLnNwbGl0KCJfIilbMF0sdGhpcykmJih0aGlzLmlkPT09ImZpcnN0IitsJiZpJiYoUS5wLnBhZ2U9MSxyPSEwKSx0aGlzLmlkPT09InByZXYiK2wmJm8mJihRLnAucGFnZT1lLTEscj0hMCksdGhpcy5pZD09PSJuZXh0IitsJiZhJiYoUS5wLnBhZ2U9ZSsxLHI9ITApLHRoaXMuaWQ9PT0ibGFzdCIrbCYmbiYmKFEucC5wYWdlPXQscj0hMCksciYmeCgpLFllLmpncmlkLnNldFNlbE5hdkluZGV4KFEsdGhpcykpKSwhMX0pKSwhMD09PVEucC5wZ2lucHV0JiZZZSgiIyIrdCkub24oImtleXByZXNzIiwiaW5wdXQudWktcGctaW5wdXQiLGZ1bmN0aW9uKGUpe3JldHVybiAxMz09PShlLmNoYXJDb2RlfHxlLmtleUNvZGV8fDApPyhzKCJ1c2VyIix0aGlzKSYmKFllKHRoaXMpLnZhbChKKFllKHRoaXMpLnZhbCgpLDEpKSxRLnAucGFnZT0wPFllKHRoaXMpLnZhbCgpP1llKHRoaXMpLnZhbCgpOlEucC5wYWdlLHgoKSksITEpOnRoaXN9KSxpJiZRLnAucmVzcG9uc2l2ZSYmIVEucC5mb3JjZVBnQnV0dG9ucyYmKFllKCIjIittWzBdKyIsIyIrbVszXSsiLCNpbnB1dCIrWWUuamdyaWQuanFJRChsKSkuaGlkZSgpLFllKCIudWktcGFnaW5nLWluZm8iLCJ0ZCMiK2UrIl8iK1EucC5yZWNvcmRwb3MpLmhpZGUoKSxZZSgiLnVpLXBnLXNlbGJveCIsInRkIyIrZSsiXyIrUS5wLnBhZ2VycG9zKS5oaWRlKCkpfSxwZT1mdW5jdGlvbihlLHQscil7dmFyIGk9US5wLmNvbE1vZGVsLG89W10sYT0iIixpPShvLnB1c2goUS5ncmlkLmhlYWRlcnNbZV0uZWwpLFEucC5mcm96ZW5Db2x1bW5zJiZvLnB1c2godCksWWUoInNwYW4udWktZ3JpZC1pY28tc29ydCIsbykuYWRkQ2xhc3MoaiksWWUobykuYXR0cih7ImFyaWEtc2VsZWN0ZWQiOiJmYWxzZSIsImFyaWEtc29ydCI6Im5vbmUifSksdD1pW2VdLmluZGV4fHxpW2VdLm5hbWUsdm9pZCAwPT09cj9pW2VdLmxzbz8iYXNjIj09PWlbZV0ubHNvPyhpW2VdLmxzbys9Ii1kZXNjIixhPSJkZXNjIik6ImRlc2MiPT09aVtlXS5sc28/KGlbZV0ubHNvKz0iLWFzYyIsYT0iYXNjIik6ImFzYy1kZXNjIiE9PWlbZV0ubHNvJiYiZGVzYy1hc2MiIT09aVtlXS5sc298fChpW2VdLmxzbz0iIik6aVtlXS5sc289YT1pW2VdLmZpcnN0c29ydG9yZGVyfHwiYXNjIjppW2VdLmxzbz1hPXIsYT8oWWUoInNwYW4ucy1pY28iLG8pLnNob3coKSxZZSgic3Bhbi51aS1pY29uLSIrYSxvKS5yZW1vdmVDbGFzcyhqKSxZZShvKS5hdHRyKHsiYXJpYS1zZWxlY3RlZCI6InRydWUiLCJhcmlhLXNvcnQiOmErImVuZGluZyJ9KSk6US5wLnZpZXdzb3J0Y29sc1swXXx8WWUoInNwYW4ucy1pY28iLG8pLmhpZGUoKSxELmluZGV4T2YodCkpOy0xPT09aT8oRC5wdXNoKHQpLEcucHVzaChhKSk6YT9HW2ldPWE6KEcuc3BsaWNlKGksMSksRC5zcGxpY2UoaSwxKSksUS5wLnNvcnRvcmRlcj0iIixRLnAuc29ydG5hbWU9IiI7Zm9yKHZhciBuPTAsbD1ELmxlbmd0aDtuPGw7bisrKTA8biYmKFEucC5zb3J0bmFtZSs9IiwgIiksUS5wLnNvcnRuYW1lKz1EW25dLG4hPT1sLTEmJihRLnAuc29ydG5hbWUrPSIgIitHW25dKTtRLnAuc29ydG9yZGVyPUdbbC0xXX0sY2U9ZnVuY3Rpb24oZSx0LHIsaSxvKXtpZihRLnAuY29sTW9kZWxbdF0uc29ydGFibGUmJiEoMDxRLnAuc2F2ZWRSb3cubGVuZ3RoKSl7aWYocnx8KFEucC5sYXN0c29ydD09PXQmJiIiIT09US5wLnNvcnRuYW1lPyJhc2MiPT09US5wLnNvcnRvcmRlcj9RLnAuc29ydG9yZGVyPSJkZXNjIjoiZGVzYyI9PT1RLnAuc29ydG9yZGVyJiYoUS5wLnNvcnRvcmRlcj0iYXNjIik6US5wLnNvcnRvcmRlcj1RLnAuY29sTW9kZWxbdF0uZmlyc3Rzb3J0b3JkZXJ8fCJhc2MiLFEucC5wYWdlPTEpLFEucC5tdWx0aVNvcnQpcGUodCxvLGkpO2Vsc2V7aWYoaSl7aWYoUS5wLmxhc3Rzb3J0PT09dCYmUS5wLnNvcnRvcmRlcj09PWkmJiFyKXJldHVybjtRLnAuc29ydG9yZGVyPWl9dmFyIHI9US5ncmlkLmhlYWRlcnNbUS5wLmxhc3Rzb3J0XT9RLmdyaWQuaGVhZGVyc1tRLnAubGFzdHNvcnRdLmVsOm51bGwsaT1RLmdyaWQuaGVhZGVyc1t0XS5lbCxvPVEucC5mcm96ZW5Db2x1bW5zP286bnVsbCxhPSJzaW5nbGUiPT09US5wLnZpZXdzb3J0Y29sc1sxXSxuPVllKHIpLmZpbmQoInNwYW4udWktZ3JpZC1pY28tc29ydCIpO24uYWRkQ2xhc3MoaiksYSYmWWUobikuY3NzKCJkaXNwbGF5Iiwibm9uZSIpLFllKHIpLmF0dHIoeyJhcmlhLXNlbGVjdGVkIjoiZmFsc2UiLCJhcmlhLXNvcnQiOiJub25lIn0pLFEucC5mcm96ZW5Db2x1bW5zJiYoKG49US5ncmlkLmZoRGl2LmZpbmQoInNwYW4udWktZ3JpZC1pY28tc29ydCIpKS5hZGRDbGFzcyhqKSxhJiZuLmNzcygiZGlzcGxheSIsIm5vbmUiKSxRLmdyaWQuZmhEaXYuZmluZCgidGgiKS5hdHRyKHsiYXJpYS1zZWxlY3RlZCI6ImZhbHNlIiwiYXJpYS1zb3J0Ijoibm9uZSJ9KSksKG49WWUoaSkuZmluZCgic3Bhbi51aS1pY29uLSIrUS5wLnNvcnRvcmRlcikpLnJlbW92ZUNsYXNzKGopLGEmJm4uY3NzKCJkaXNwbGF5IiwiIiksWWUoaSkuYXR0cih7ImFyaWEtc2VsZWN0ZWQiOiJ0cnVlIiwiYXJpYS1zb3J0IjpRLnAuc29ydG9yZGVyKyJlbmRpbmcifSksUS5wLmZyb3plbkNvbHVtbnMmJigobj1ZZShvKS5maW5kKCJzcGFuLnVpLWljb24tIitRLnAuc29ydG9yZGVyKSkucmVtb3ZlQ2xhc3MoaiksYSYmbi5jc3MoImRpc3BsYXkiLCIiKSxZZShvKS5hdHRyKHsiYXJpYS1zZWxlY3RlZCI6InRydWUiLCJhcmlhLXNvcnQiOlEucC5zb3J0b3JkZXIrImVuZGluZyJ9KSksUS5wLnZpZXdzb3J0Y29sc1swXXx8KFEucC5sYXN0c29ydCE9PXQ/KFEucC5mcm96ZW5Db2x1bW5zJiZRLmdyaWQuZmhEaXYuZmluZCgic3Bhbi5zLWljbyIpLmhpZGUoKSxZZSgic3Bhbi5zLWljbyIscikuaGlkZSgpLFllKCJzcGFuLnMtaWNvIixpKS5zaG93KCksbyYmWWUoInNwYW4ucy1pY28iLG8pLnNob3coKSk6IiI9PT1RLnAuc29ydG5hbWUmJlllKCJzcGFuLnMtaWNvIixpKS5zaG93KCkpLGU9ZS5zdWJzdHJpbmcoNStRLnAuaWQubGVuZ3RoKzEpLFEucC5zb3J0bmFtZT1RLnAuY29sTW9kZWxbdF0uaW5kZXh8fGV9KCJzdG9wIj09PVllKFEpLnRyaWdnZXJIYW5kbGVyKCJqcUdyaWRTb3J0Q29sIixbUS5wLnNvcnRuYW1lLHQsUS5wLnNvcnRvcmRlcl0pfHxZZS5qZ3JpZC5pc0Z1bmN0aW9uKFEucC5vblNvcnRDb2wpJiYic3RvcCI9PT1RLnAub25Tb3J0Q29sLmNhbGwoUSxRLnAuc29ydG5hbWUsdCxRLnAuc29ydG9yZGVyKXx8KHNlKCExKSwibG9jYWwiPT09US5wLmRhdGF0eXBlP1EucC5kZXNlbGVjdEFmdGVyU29ydCYmIVEucC5wcmVzZXJ2ZVNlbGVjdGlvbiYmWWUoUSkuanFHcmlkKCJyZXNldFNlbGVjdGlvbiIpOihRLnAuc2Vscm93PW51bGwsUS5wLm11bHRpc2VsZWN0JiYhUS5wLnByZXNlcnZlU2VsZWN0aW9uJiYoUS5wLnNlbGFycnJvdz1bXSksUS5wLnNhdmVkUm93PVtdKSxRLnAuc2Nyb2xsJiYoYT1RLmdyaWQuYkRpdi5zY3JvbGxMZWZ0LGFlLmNhbGwoUSwhMCwhMSksUS5ncmlkLmhEaXYuc2Nyb2xsTGVmdD1hKSxRLnAuc3ViR3JpZCYmImxvY2FsIj09PVEucC5kYXRhdHlwZSYmWWUoInRkLnNnZXhwYW5kZWQiLCIjIitZZS5qZ3JpZC5qcUlEKFEucC5pZCkpLmVhY2goZnVuY3Rpb24oKXtZZSh0aGlzKS50cmlnZ2VyKCJjbGljayIpfSksUS5wLl9zb3J0PSEwLHgoKSxRLnAubGFzdHNvcnQ9dCxRLnAuc29ydG5hbWUhPT1lJiZ0KSkmJihRLnAubGFzdHNvcnQ9dCl9fSx1ZT1mdW5jdGlvbihlKXtmb3IodmFyIHQ9US5ncmlkLmhlYWRlcnMscj1ZZS5qZ3JpZC5nZXRDZWxsSW5kZXgoZSksaT0wO2k8dC5sZW5ndGg7aSsrKWlmKGU9PT10W2ldLmVsKXtyPWk7YnJlYWt9cmV0dXJuIHJ9LGhlPWZ1bmN0aW9uKGUsdCxyLGkpe3ZhciBvLGE9US5wLmNvbE1vZGVsLG49YS5sZW5ndGgsbD1bXSxzPSEwLGQ9W10scD1ZZS5leHRlbmQoW10sUS5wLmNvbE5hbWVzKSxjPVllLmpncmlkLmdldFJlZ2lvbmFsKFEsImNvbG1lbnUiKSx1PVtdLGg9Jzx1bCBpZD0iY29sX21lbnUiIGNsYXNzPSJ1aS1zZWFyY2gtbWVudSAgdWktY29sLW1lbnUgbW9kYWwtY29udGVudCIgcm9sZT0ibWVudSIgdGFiaW5kZXg9IjAiIHN0eWxlPSJsZWZ0OicrdCsncHg7Ij4nO2lmKGkuY29sdW1uc19zZWxlY3RBbGwmJihoKz0nPGxpIGNsYXNzPSJ1aS1tZW51LWl0ZW0gZGlzYWJsZWQiIHJvbGU9InByZXNlbnRhdGlvbiIgZHJhZ2dhYmxlPSJmYWxzZSI+PGEgY2xhc3M9ImctbWVudS1pdGVtIiB0YWJpbmRleD0iMCIgcm9sZT0ibWVudWl0ZW0iID48dGFibGUgY2xhc3M9InVpLWNvbW1vbi10YWJsZSIgPjx0cj48dGQgY2xhc3M9Im1lbnVfaWNvbiIgdGl0bGU9IicrYy5yZW9yZGVyKyciPjxzcGFuIGNsYXNzPSInK0MrIiAiK0kuaWNvbl9tb3ZlKycgbm90Y2xpY2siIHN0eWxlPSJ2aXNpYmlsaXR5OmhpZGRlbiI+PC9zcGFuPjwvdGQ+PHRkIGNsYXNzPSJtZW51X2ljb24iPjxpbnB1dCBpZD0iY2hrX2FsbCIgY2xhc3M9IicrSS5pbnB1dF9jaGVja2JveCsnIiB0eXBlPSJjaGVja2JveCIgbmFtZT0iY2hlY2tfYWxsIj48L3RkPjx0ZCBjbGFzcz0ibWVudV90ZXh0Ij5DaGVjay9VbmNoZWNrPC90ZD48L3RyPjwvdGFibGU+PC9hPjwvbGk+JyksUS5wLmNvbFNwYW5IZWFkZXIubGVuZ3RoKWZvcih2YXIgZz0wO2c8US5wLmNvbFNwYW5IZWFkZXIubGVuZ3RoO2crKyl7dmFyIGYsbT1RLnAuY29sU3BhbkhlYWRlcltnXTswPD0oZj1ZZS5qZ3JpZC5nZXRFbGVtQnlBdHRyVmFsKGEsIm5hbWUiLG0uc3RhcnRDb2x1bW5OYW1lLCEwKSkmJih1LnB1c2goZikscFtmXT1tLnRpdGxlVGV4dCl9aWYoWWUoUSkuanFHcmlkKCJpc0dyb3VwSGVhZGVyT24iKSlmb3IodmFyIHQ9US5wLmdyb3VwSGVhZGVyLmxlbmd0aCx2PVEucC5ncm91cEhlYWRlclt0LTFdLGo9MDtqPHAubGVuZ3RoO2orKylpZigwPD0oZj1ZZS5qZ3JpZC5pbkNvbHVtbkhlYWRlcihhW2pdLm5hbWUsdi5ncm91cEhlYWRlcnMpKSl7cFtqXT12Lmdyb3VwSGVhZGVyc1tmXS50aXRsZVRleHQrIjo6IitwW2pdO2Zvcih2YXIgYj0xO2I8PXYuZ3JvdXBIZWFkZXJzW2ZdLm51bWJlck9mQ29sdW1ucy0xO2IrKylwW2orYl09di5ncm91cEhlYWRlcnNbZl0udGl0bGVUZXh0KyI6OiIrcFtqK2JdO2o9ait2Lmdyb3VwSGVhZGVyc1tmXS5udW1iZXJPZkNvbHVtbnMtMX1mb3Iobz0wO288bjtvKyspe3ZhciB3LHk9YVtvXS5oaWRkZW4/IiI6ImNoZWNrZWQiLHg9YVtvXS5uYW1lLF89cFtvXTtoKz0iPGxpICIrKHc9ImNiIj09PXh8fCJzdWJncmlkIj09PXh8fCJybiI9PT14fHwic2MiPT09eHx8YVtvXS5oaWRlZGxnPyJzdHlsZT0nZGlzcGxheTpub25lJyI6IiIpKycgY2xhc3M9InVpLW1lbnUtaXRlbSIgcm9sZT0icHJlc2VudGF0aW9uIiBkcmFnZ2FibGU9InRydWUiPjxhIGNsYXNzPSJnLW1lbnUtaXRlbSIgdGFiaW5kZXg9IjAiIHJvbGU9Im1lbnVpdGVtIiA+PHRhYmxlIGNsYXNzPSJ1aS1jb21tb24tdGFibGUiID48dHI+PHRkIGNsYXNzPSJtZW51X2ljb24iIHRpdGxlPSInK2MucmVvcmRlcisnIj48c3BhbiBjbGFzcz0iJytDKyIgIitJLmljb25fbW92ZSsnIG5vdGNsaWNrIj48L3NwYW4+PC90ZD48dGQgY2xhc3M9Im1lbnVfaWNvbiI+PGlucHV0IGNsYXNzPSInK0kuaW5wdXRfY2hlY2tib3grJyBjaGtfc2VsZWN0ZWQiIHR5cGU9ImNoZWNrYm94IiBuYW1lPSInK3grJyIgJyt5Kyc+PC90ZD48dGQgY2xhc3M9Im1lbnVfdGV4dCI+JytfKyI8L3RkPjwvdHI+PC90YWJsZT48L2E+PC9saT4iLGwucHVzaChvKSx3fHxkLnB1c2goeCkscyYmIXkmJihzPSExKX1oKz0iPC91bD4iLFllKHIpLmFwcGVuZChoKSxZZSgiI2NvbF9tZW51IikuYWRkQ2xhc3MoInVpLW1lbnUgIitJLm1lbnVfd2lkZ2V0KSxZZSgiI2Noa19hbGwiLCIjY29sX21lbnUiKS5wcm9wKCJjaGVja2VkIixzKSxZZS5qZ3JpZC5pc0VsZW1lbnRJblZpZXdwb3J0KFllKCIjY29sX21lbnUiKVswXSl8fFllKCIjY29sX21lbnUiKS5jc3MoImxlZnQiLC1wYXJzZUludChZZSgiI2NvbHVtbl9tZW51IikuaW5uZXJXaWR0aCgpLDEwKSsicHgiKSxZZS5mbi5odG1sNXNvcnRhYmxlKCkmJlllKCIjY29sX21lbnUiKS5odG1sNXNvcnRhYmxlKHtoYW5kbGU6InNwYW4iLGl0ZW1zOiI6bm90KC5kaXNhYmxlZCkiLGZvcmNlUGxhY2Vob2xkZXJTaXplOiEwfSkub24oInNvcnR1cGRhdGUiLGZ1bmN0aW9uKGUsdCl7Zm9yKGwuc3BsaWNlKHQuc3RhcnRpbmRleCwxKSxsLnNwbGljZSh0LmVuZGluZGV4LDAsdC5zdGFydGluZGV4KSxZZShRKS5qcUdyaWQoImRlc3Ryb3lGcm96ZW5Db2x1bW5zIiksWWUoUSkuanFHcmlkKCJyZW1hcENvbHVtbnMiLGwsITApLFllKFEpLnRyaWdnZXJIYW5kbGVyKCJqcUdyaWRDb2xNZW51Q29sdW1uRG9uZSIsW2wsbnVsbCxudWxsXSksWWUuamdyaWQuaXNGdW5jdGlvbihRLnAuY29sTWVudUNvbHVtbkRvbmUpJiZRLnAuY29sTWVudUNvbHVtbkRvbmUuY2FsbChRLGwsbnVsbCxudWxsKSxZZShRKS5qcUdyaWQoInNldEZyb3plbkNvbHVtbnMiKSxvPTA7bzxuO28rKylsW29dPW99KSxZZSgiI2NvbF9tZW51ID4gbGkgPiBhIikub24oImNsaWNrIixmdW5jdGlvbihlKXt2YXIgdDtZZShlLnRhcmdldCkuaGFzQ2xhc3MoIm5vdGNsaWNrIil8fChZZShlLnRhcmdldCkuaXMoIjppbnB1dCIpP3Q9WWUoZS50YXJnZXQpLmlzKCI6Y2hlY2tlZCIpOih0PSFZZSgiaW5wdXQiLHRoaXMpLmlzKCI6Y2hlY2tlZCIpLFllKCJpbnB1dCIsdGhpcykucHJvcCgiY2hlY2tlZCIsdCkpLCJjaGVja19hbGwiPT09KGU9WWUoImlucHV0Iix0aGlzKS5hdHRyKCJuYW1lIikpP3Q/KFllKCJpbnB1dCIsIiNjb2xfbWVudSIpLnByb3AoImNoZWNrZWQiLCEwKSxZZShRKS5qcUdyaWQoInNob3dDb2wiLGQpKTooWWUoImlucHV0IiwiI2NvbF9tZW51IikucHJvcCgiY2hlY2tlZCIsITEpLFllKFEpLmpxR3JpZCgiaGlkZUNvbCIsZCkpOihZZShRKS50cmlnZ2VySGFuZGxlcigianFHcmlkQ29sTWVudUNvbHVtbkRvbmUiLFtsLGUsdF0pLFllLmpncmlkLmlzRnVuY3Rpb24oUS5wLmNvbE1lbnVDb2x1bW5Eb25lKSYmUS5wLmNvbE1lbnVDb2x1bW5Eb25lLmNhbGwoUSxsLGUsdCksdD8oWWUoUSkuanFHcmlkKCJzaG93Q29sIixlKSxZZSh0aGlzKS5wYXJlbnQoKS5hdHRyKCJkcmFnZ2FibGUiLCJ0cnVlIikpOihZZShRKS5qcUdyaWQoImhpZGVDb2wiLGUpLFllKHRoaXMpLnBhcmVudCgpLmF0dHIoImRyYWdnYWJsZSIsImZhbHNlIikpLGkuY29sdW1uc19zZWxlY3RBbGwmJlllKCIjY2hrX2FsbCIsIiNjb2xfbWVudSIpLnByb3AoImNoZWNrZWQiLFllKCIuY2hrX3NlbGVjdGVkOmNoZWNrZWQiLCIjY29sX21lbnUiKS5sZW5ndGg9PT1ZZSgiLmNoa19zZWxlY3RlZCIsIiNjb2xfbWVudSIpLmxlbmd0aCksWWUoIiNjb2x1bW5fbWVudSIpLnJlbW92ZSgpKSl9KS5ob3ZlcihmdW5jdGlvbigpe1llKHRoaXMpLmFkZENsYXNzKHEpfSxmdW5jdGlvbigpe1llKHRoaXMpLnJlbW92ZUNsYXNzKHEpfSl9LGdlPWZ1bmN0aW9uKGUsdCxyLGkpe3ZhciBvLGEsbixsLHMsZCxwPVEucC5jb2xNb2RlbFtlXSxjPSIiLGU9IiIsdT0iIixoPSIiLGc9IiIsZj0iIixtPVllLmpncmlkLmdldFJlZ2lvbmFsKFEsInNlYXJjaCIpLHY9WWUuamdyaWQuc3R5bGVVSVtRLnAuc3R5bGVVSXx8ImpRdWVyeVVJIl0uY29tbW9uLGo9WWUuamdyaWQuc3R5bGVVSVtiLnN0eWxlVUl8fCJqUXVlcnlVSSJdLm1vZGFsO3AmJigobj0hKCFRLnAuY29sRmlsdGVyc3x8IVEucC5jb2xGaWx0ZXJzW3AubmFtZV0pJiZRLnAuY29sRmlsdGVyc1twLm5hbWVdKSYmIVllLmlzRW1wdHlPYmplY3QobikmJihjPW4ub3BlcjEsZT1uLnZhbHVlMSx1PW4ucnVsZSxoPW4ub3BlcjIsZz1uLnZhbHVlMikscC5zZWFyY2hvcHRpb25zfHwocC5zZWFyY2hvcHRpb25zPXt9KSxhPXAuc2VhcmNob3B0aW9ucy5zb3B0fHwoLTEhPT1ZZS5pbkFycmF5KHAuc29ydHR5cGUsWyJ0ZXh0Iiwic3RyaW5nIiwiYmxvYiJdKT9bImVxIiwibmUiLCJidyIsImJuIiwiZXciLCJlbiIsImNuIiwibmMiLCJudSIsIm5uIiwiaW4iLCJuaSJdOlsiZXEiLCJuZSIsImx0IiwibGUiLCJndCIsImdlIiwibnUiLCJubiIsImluIiwibmkiXSksbj1wLnNlYXJjaG9wdGlvbnMuZ3JvdXBPcHN8fG0uZ3JvdXBPcHMsbD1ZZSgiPGZvcm0+PC9mb3JtPiIpLHM9IjxhIGlkPSdic19jbG9zZScgYXJpYS1sYWJlbD0nQ2xvc2UnPjxzcGFuIGNsYXNzPSciK0MrIiAiK2ouaWNvbl9jbG9zZSsiJz48L3NwYW4+PC9hPiIscz0ocys9IjxkaXY+IitZZS5qZ3JpZC5nZXRSZWdpb25hbChRLCJjb2xtZW51LnNlYXJjaFRpdGxlIikrIjwvZGl2PiIpKyc8ZGl2PjxzZWxlY3Qgc2l6ZT0iMSIgaWQ9Im9wZXIxIiBjbGFzcz0iJytJLmZpbHRlcl9zZWxlY3QrJyI+JyxZZS5lYWNoKG0ub2RhdGEsZnVuY3Rpb24oZSx0KXtvPXQub3Blcj09PWM/J3NlbGVjdGVkPSJzZWxlY3RlZCInOiIiLC0xIT09WWUuaW5BcnJheSh0Lm9wZXIsYSkmJihmKz0nPG9wdGlvbiB2YWx1ZT0iJyt0Lm9wZXIrJyIgIGFyaWEtbGFiZWw9IicrdC50ZXh0KyciICcrbysiPiIrdC50ZXh0KyI8L29wdGlvbj4iKX0pLHM9cytmKyI8L3NlbGVjdD48L2Rpdj4iLGwuYXBwZW5kKHMpLGQ9IiIscC5zZWFyY2hvcHRpb25zLmRlZmF1bHRWYWx1ZSYmKGQ9WWUuamdyaWQuaXNGdW5jdGlvbihwLnNlYXJjaG9wdGlvbnMuZGVmYXVsdFZhbHVlKT9wLnNlYXJjaG9wdGlvbnMuZGVmYXVsdFZhbHVlLmNhbGwoUSk6cC5zZWFyY2hvcHRpb25zLmRlZmF1bHRWYWx1ZSksZSYmKGQ9ZSksaj1ZZS5leHRlbmQocC5zZWFyY2hvcHRpb25zLHtuYW1lOnAuaW5kZXh8fHAubmFtZSxpZDoic3ZhbDFfIitRLnAuaWRQcmVmaXgrcC5uYW1lLG9wZXI6InNlYXJjaCJ9KSxlPVllLmpncmlkLmNyZWF0ZUVsLmNhbGwoUSxwLnN0eXBlLGosZCwhMSxZZS5leHRlbmQoe30sWWUuamdyaWQuYWpheE9wdGlvbnMsUS5wLmFqYXhTZWxlY3RPcHRpb25zfHx7fSkpLFllKGUpLmFkZENsYXNzKEkuZmlsdGVyX2lucHV0KSxzPVllKCI8ZGl2PjwvZGl2PiIpLmFwcGVuZChlKSxsLmFwcGVuZChzKSxzPSc8ZGl2PjxzZWxlY3Qgc2l6ZT0iMSIgaWQ9Im9wZXJhbmQiIGNsYXNzPSInK0kuZmlsdGVyX3NlbGVjdCsnIj4nLFllLmVhY2gobixmdW5jdGlvbihlLHQpe289dC5vcD09PXU/J3NlbGVjdGVkPSJzZWxlY3RlZCInOiIiLHMrPSI8b3B0aW9uIHZhbHVlPSciK3Qub3ArIicgIitvKyI+Iit0LnRleHQrIjwvb3B0aW9uPiJ9KSxzKz0iPC9zZWxlY3Q+PC9kaXY+IixsLmFwcGVuZChzKSxmPSIiLFllLmVhY2gobS5vZGF0YSxmdW5jdGlvbihlLHQpe289dC5vcGVyPT09aD8nc2VsZWN0ZWQ9InNlbGVjdGVkIic6IiIsLTEhPT1ZZS5pbkFycmF5KHQub3BlcixhKSYmKGYrPSc8b3B0aW9uIHZhbHVlPSInK3Qub3BlcisnIiAnK28rIj4iK3QudGV4dCsiPC9vcHRpb24+Iil9KSxzPSc8ZGl2PjxzZWxlY3Qgc2l6ZT0iMSIgaWQ9Im9wZXIyIiBjbGFzcz0iJytJLmZpbHRlcl9zZWxlY3QrJyI+JytmKyI8L3NlbGVjdD48L2Rpdj4iLGwuYXBwZW5kKHMpLGQ9Z3x8IiIsaj1ZZS5leHRlbmQocC5zZWFyY2hvcHRpb25zLHtuYW1lOnAuaW5kZXh8fHAubmFtZSxpZDoic3ZhbDJfIitRLnAuaWRQcmVmaXgrcC5uYW1lLG9wZXI6InNlYXJjaCJ9KSxlPVllLmpncmlkLmNyZWF0ZUVsLmNhbGwoUSxwLnN0eXBlLGosZCwhMSxZZS5leHRlbmQoe30sWWUuamdyaWQuYWpheE9wdGlvbnMsUS5wLmFqYXhTZWxlY3RPcHRpb25zfHx7fSkpLFllKGUpLmFkZENsYXNzKEkuZmlsdGVyX2lucHV0KSxzPVllKCI8ZGl2PjwvZGl2PiIpLmFwcGVuZChlKSxsLmFwcGVuZChzKSxzPSI8ZGl2PiIscz0ocys9IjxkaXYgY2xhc3M9J3NlYXJjaF9idXR0b25zJz48YSB0YWJpbmRleD0nMCcgaWQ9J2JzX3Jlc2V0JyBjbGFzcz0nZm0tYnV0dG9uICIrdi5idXR0b24rIiB1aS1yZXNldCc+IittLlJlc2V0KyI8L2E+PC9kaXY+IikrIjxkaXYgY2xhc3M9J3NlYXJjaF9idXR0b25zJz48YSB0YWJpbmRleD0nMCcgaWQ9J2JzX3NlYXJjaCcgY2xhc3M9J2ZtLWJ1dHRvbiAiK3YuYnV0dG9uKyIgdWktc2VhcmNoJz4iK20uRmluZCsiPC9hPjwvZGl2PjwvZGl2PiIsbC5hcHBlbmQocyksbD1ZZSgnPGxpIGNsYXNzPSJ1aS1tZW51LWl0ZW0iIHJvbGU9InByZXNlbnRhdGlvbiI+PC9saT4nKS5hcHBlbmQobCksbD1ZZSgnPHVsIGlkPSJzZWFyY2hfbWVudSIgY2xhc3M9InVpLXNlYXJjaC1tZW51IG1vZGFsLWNvbnRlbnQiIHJvbGU9Im1lbnUiIHRhYmluZGV4PSIwIiBzdHlsZT0ibGVmdDonK3IrJ3B4OyI+PC91bD4nKS5hcHBlbmQobCksWWUoaSkuYXBwZW5kKGwpLFllKCIjc2VhcmNoX21lbnUiKS5hZGRDbGFzcygidWktbWVudSAiK0kubWVudV93aWRnZXQpLFllLmpncmlkLmlzRWxlbWVudEluVmlld3BvcnQoWWUoIiNzZWFyY2hfbWVudSIpWzBdKXx8WWUoIiNzZWFyY2hfbWVudSIpLmNzcygibGVmdCIsLXBhcnNlSW50KFllKCIjY29sdW1uX21lbnUiKS5pbm5lcldpZHRoKCksMTApKyJweCIpLFllKCIjYnNfcmVzZXQsICNic19zZWFyY2giLCIjc2VhcmNoX21lbnUiLCIjYnNfY2xvc2UiKS5ob3ZlcihmdW5jdGlvbigpe1llKHRoaXMpLmFkZENsYXNzKHEpfSxmdW5jdGlvbigpe1llKHRoaXMpLnJlbW92ZUNsYXNzKHEpfSksWWUoIiNic19yZXNldCIsbCkub24oImNsaWNrIixmdW5jdGlvbihlKXtRLnAuY29sRmlsdGVyc1twLm5hbWVdPXt9LCEwPT09US5wLm1lcmdlU2VhcmNoJiZRLnAuc2VhcmNoTW9kdWxlcy5oYXNPd25Qcm9wZXJ0eSgiY29sTWVudVNlYXJjaCIpJiYhMSE9PVEucC5zZWFyY2hNb2R1bGVzLmNvbE1lbnVTZWFyY2g/KFEucC5zZWFyY2hNb2R1bGVzLmNvbE1lbnVTZWFyY2g9ZmUoKSxZZS5leHRlbmQoUS5wLnBvc3REYXRhLHtmaWx0ZXJzOlllLmpncmlkLnNwbGl0U2VhcmNoKFEucC5zZWFyY2hNb2R1bGVzKX0pLFEucC5zZWFyY2g9ITApOihRLnAucG9zdERhdGEuZmlsdGVycz1mZSgpLFEucC5zZWFyY2g9ITEsUS5wLnJlc2V0c2VhcmNoPSEwKSxkPSIiLHAuc2VhcmNob3B0aW9ucy5kZWZhdWx0VmFsdWUmJihkPVllLmpncmlkLmlzRnVuY3Rpb24ocC5zZWFyY2hvcHRpb25zLmRlZmF1bHRWYWx1ZSk/cC5zZWFyY2hvcHRpb25zLmRlZmF1bHRWYWx1ZS5jYWxsKFEpOnAuc2VhcmNob3B0aW9ucy5kZWZhdWx0VmFsdWUpLFllKCIjc3ZhbDFfIitRLnAuaWRQcmVmaXgrcC5uYW1lLCIjc2VhcmNoX21lbnUiKS52YWwoZCksWWUoIiNzdmFsMl8iK1EucC5pZFByZWZpeCtwLm5hbWUsIiNzZWFyY2hfbWVudSIpLnZhbCgiIiksWWUuamdyaWQuaXNGdW5jdGlvbihRLnAuY29sTWVudUJlZm9yZVByb2Nlc3MpJiZRLnAuY29sTWVudUJlZm9yZVByb2Nlc3MuY2FsbChRLHttb2R1bGU6ImZpbHRlcmluZyIsYWN0aW9uOiJyZXNldCIsY29sdW1uOnAubmFtZX0pLFllKFEpLnRyaWdnZXIoInJlbG9hZEdyaWQiKX0pLFllKCIjYnNfc2VhcmNoIixsKS5vbigiY2xpY2siLGZ1bmN0aW9uKGUpe1EucC5jb2xGaWx0ZXJzW3AubmFtZV09e29wZXIxOlllKCIjb3BlcjEiLCIjc2VhcmNoX21lbnUiKS52YWwoKSx2YWx1ZTE6WWUoIiNzdmFsMV8iK1EucC5pZFByZWZpeCtwLm5hbWUsIiNzZWFyY2hfbWVudSIpLnZhbCgpLHJ1bGU6WWUoIiNvcGVyYW5kIiwiI3NlYXJjaF9tZW51IikudmFsKCksb3BlcjI6WWUoIiNvcGVyMiIsIiNzZWFyY2hfbWVudSIpLnZhbCgpLHZhbHVlMjpZZSgiI3N2YWwyXyIrUS5wLmlkUHJlZml4K3AubmFtZSwiI3NlYXJjaF9tZW51IikudmFsKCl9LCEwPT09US5wLm1lcmdlU2VhcmNoJiZRLnAuc2VhcmNoTW9kdWxlcy5oYXNPd25Qcm9wZXJ0eSgiY29sTWVudVNlYXJjaCIpJiYhMSE9PVEucC5zZWFyY2hNb2R1bGVzLmNvbE1lbnVTZWFyY2g/KFEucC5zZWFyY2hNb2R1bGVzLmNvbE1lbnVTZWFyY2g9ZmUoKSxZZS5leHRlbmQoUS5wLnBvc3REYXRhLHtmaWx0ZXJzOlllLmpncmlkLnNwbGl0U2VhcmNoKFEucC5zZWFyY2hNb2R1bGVzKX0pKTpRLnAucG9zdERhdGEuZmlsdGVycz1mZSgpLFEucC5zZWFyY2g9ITAsWWUuamdyaWQuaXNGdW5jdGlvbihRLnAuY29sTWVudUJlZm9yZVByb2Nlc3MpJiZRLnAuY29sTWVudUJlZm9yZVByb2Nlc3MuY2FsbChRLHttb2R1bGU6ImZpbHRlcmluZyIsYWN0aW9uOiJzZWFyY2giLGNvbHVtbjpwLm5hbWV9KSxZZShRKS50cmlnZ2VyKCJyZWxvYWRHcmlkIiksWWUoIiNjb2x1bW5fbWVudSIpLnJlbW92ZSgpfSksWWUoIiNic19jbG9zZSIsbCkub24oImNsaWNrIixmdW5jdGlvbigpe1llKCIjY29sdW1uX21lbnUiKS5yZW1vdmUoKX0pKX0sZmU9ZnVuY3Rpb24oKXt2YXIgZSx0PSIiLHI9MDtmb3IoZSBpbiBRLnAuY29sRmlsdGVycylpZihRLnAuY29sRmlsdGVycy5oYXNPd25Qcm9wZXJ0eShlKSl7dmFyIGk9US5wLmNvbEZpbHRlcnNbZV07aWYoIVllLmlzRW1wdHlPYmplY3QoaSkpe2lmKCIiPT09aS52YWx1ZTEmJiIiPT09aS52YWx1ZTIpYnJlYWs7MDxyJiYodCs9IiwiKSx0PSh0PXQrKCd7Imdyb3VwT3AiOiInK2kucnVsZSsnIiwicnVsZXMiOlsnKSsoJ3siZmllbGQiOiInK2UrJyIsJykpKygnIm9wIjoiJytpLm9wZXIxKyciLCcpLGkudmFsdWUxKz0iIix0Kz0nImRhdGEiOiInK2kudmFsdWUxLnJlcGxhY2UoL1xcL2csIlxcXFwiKS5yZXBsYWNlKC9cIi9nLCdcXCInKSsnIn0nLGkudmFsdWUyJiYodD0odCs9Jyx7ImZpZWxkIjoiJytlKyciLCcpKycib3AiOiInK2kub3BlcjIrJyIsJyxpLnZhbHVlMis9IiIsdCs9JyJkYXRhIjoiJytpLnZhbHVlMi5yZXBsYWNlKC9cXC9nLCJcXFxcIikucmVwbGFjZSgvXCIvZywnXFwiJykrJyJ9JyksdCs9Il0iLHIrK319cmV0dXJuIHQrPSJ9Iix0PTA9PT1yPyIiOnR9LG1lPWZ1bmN0aW9uKGUsdCl7dmFyIGU9US5wLmNvbE1vZGVsW2VdLHI9US5wLmdyb3VwaW5nVmlldzstMSE9PXQ/ci5ncm91cEZpZWxkLnNwbGljZSh0LDEpOnIuZ3JvdXBGaWVsZC5wdXNoKGUubmFtZSksWWUuamdyaWQuaXNGdW5jdGlvbihRLnAuY29sTWVudUJlZm9yZVByb2Nlc3MpJiZRLnAuY29sTWVudUJlZm9yZVByb2Nlc3MuY2FsbChRLHttb2R1bGU6Imdyb3VwaW5nIixhY3Rpb246LTEhPT10PyJ1bmdyb3VwIjoiZ3JvdXAiLGNvbHVtbjplLm5hbWV9KSxZZShRKS5qcUdyaWQoImdyb3VwaW5nR3JvdXBCeSIsci5ncm91cEZpZWxkKSxRLnAuZnJvemVuQ29sdW1ucyYmKFllKFEpLmpxR3JpZCgiZGVzdHJveUZyb3plbkNvbHVtbnMiKSxZZShRKS5qcUdyaWQoInNldEZyb3plbkNvbHVtbnMiKSl9LHZlPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPVtdLGk9US5wLmNvbE1vZGVsLmxlbmd0aCxvPS0xLGE9US5wLmNvbE1vZGVsLG49MDtuPGk7bisrKWFbbl0uZnJvemVuJiYobz1uKSxyLnB1c2gobik7ci5zcGxpY2UoZSwxKSxyLnNwbGljZShvKyh0PzE6MCksMCxlKSxhW2VdLmZyb3plbj10LFllLmpncmlkLmlzRnVuY3Rpb24oUS5wLmNvbE1lbnVCZWZvcmVQcm9jZXNzKSYmUS5wLmNvbE1lbnVCZWZvcmVQcm9jZXNzLmNhbGwoUSx7bW9kdWxlOiJmcmVlemUiLGFjdGlvbjp0PyJmcmVlemUiOiJ1bmZyZWV6ZSIsY29sdW1uOmFbZV0ubmFtZX0pLFllKFEpLmpxR3JpZCgiZGVzdHJveUZyb3plbkNvbHVtbnMiKSxZZShRKS5qcUdyaWQoInJlbWFwQ29sdW1ucyIsciwhMCksWWUoUSkuanFHcmlkKCJzZXRGcm96ZW5Db2x1bW5zIil9O2ZvcigoUS5wLmNvbE1lbnV8fFEucC5tZW51YmFyKSYmWWUoImJvZHkiKS5vbigiY2xpY2siLGZ1bmN0aW9uKGUpe2lmKCFZZShlLnRhcmdldCkuY2xvc2VzdCgiI2NvbHVtbl9tZW51IikubGVuZ3RoKXRyeXtZZSgiI2NvbHVtbl9tZW51IikucmVtb3ZlKCl9Y2F0Y2goZSl7fWlmKCFZZShlLnRhcmdldCkuY2xvc2VzdCgiLnVpLWpxZ3JpZC1tZW51YmFyIikubGVuZ3RoKXRyeXtZZSgiIyIrUS5wLmlkKyJfbWVudWJhciIpLmhpZGUoKX1jYXRjaChlKXt9fSksdGhpcy5wLmlkPXRoaXMuaWQsLTE9PT1ZZS5pbkFycmF5KFEucC5tdWx0aWtleSxbInNoaWZ0S2V5IiwiYWx0S2V5IiwiY3RybEtleSJdKSYmKFEucC5tdWx0aWtleT0hMSksUS5wLmtleU5hbWU9ITEsZT0wO2U8US5wLmNvbE1vZGVsLmxlbmd0aDtlKyspUj0ic3RyaW5nIj09dHlwZW9mIFEucC5jb2xNb2RlbFtlXS50ZW1wbGF0ZT9ZZS5qZ3JpZC5pc051bGwoWWUuamdyaWQuY21UZW1wbGF0ZSl8fCJvYmplY3QiIT10eXBlb2YgWWUuamdyaWQuY21UZW1wbGF0ZVtRLnAuY29sTW9kZWxbZV0udGVtcGxhdGVdP3t9OlllLmpncmlkLmNtVGVtcGxhdGVbUS5wLmNvbE1vZGVsW2VdLnRlbXBsYXRlXTpRLnAuY29sTW9kZWxbZV0udGVtcGxhdGUsUS5wLmNvbE1vZGVsW2VdPVllLmV4dGVuZCghMCx7fSxRLnAuY21UZW1wbGF0ZSxSfHx7fSxRLnAuY29sTW9kZWxbZV0pLCExPT09US5wLmtleU5hbWUmJiEwPT09US5wLmNvbE1vZGVsW2VdLmtleSYmKFEucC5rZXlOYW1lPVEucC5jb2xNb2RlbFtlXS5uYW1lLFEucC5rZXlJbmRleD1lKTtRLnAuc29ydG9yZGVyPVEucC5zb3J0b3JkZXIudG9Mb3dlckNhc2UoKSxZZS5qZ3JpZC5jZWxsX3dpZHRoPVllLmpncmlkLmNlbGxXaWR0aCgpO3ZhciBqZT1ZZSgiPHRhYmxlIHN0eWxlPSd2aXNpYmlsaXR5OmhpZGRlbic+PHRyIGNsYXNzPSdqcWdyb3cnPjx0ZD4xPC90ZD48L3RyPjwvdGFibGUpIikuYWRkQ2xhc3MoSygkLCJyb3dUYWJsZSIsITAsInVpLWpxZ3JpZC1idGFibGUgdWktY29tbW9uLXRhYmxlIikpO2lmKFllKHIpLmFwcGVuZChqZSksUS5wLmNlbGxMYXlvdXQ9WWUuamdyaWQuZmxvYXROdW0oWWUoInRkIixqZSkuY3NzKCJwYWRkaW5nLWxlZnQiKSkrWWUuamdyaWQuZmxvYXROdW0oWWUoInRkIixqZSkuY3NzKCJwYWRkaW5nLXJpZ2h0IiksMTApKzEsUS5wLmNlbGxMYXlvdXQ8PTAmJihRLnAuY2VsbExheW91dD01KSxZZShqZSkucmVtb3ZlKCksIW51bGw9PT1RLnAuZ3JvdXBpbmcmJihRLnAuc2Nyb2xsPSExLFEucC5yb3dudW1iZXJzPSExLFEucC50cmVlR3JpZD0hMSxRLnAuZ3JpZHZpZXc9ITApLCEwPT09dGhpcy5wLnRyZWVHcmlkKXt0cnl7WWUodGhpcykuanFHcmlkKCJzZXRUcmVlR3JpZCIpfWNhdGNoKGUpe30ibG9jYWwiIT09US5wLmRhdGF0eXBlP1EucC5sb2NhbFJlYWRlcj17aWQ6Il9pZF8ifTohMSE9PVEucC5rZXlOYW1lJiYoUS5wLmxvY2FsUmVhZGVyPXtpZDpRLnAua2V5TmFtZX0pfWlmKHRoaXMucC5zdWJHcmlkKXRyeXtZZShRKS5qcUdyaWQoInNldFN1YkdyaWQiKX1jYXRjaChlKXt9dGhpcy5wLnNlYXJjaENvbHMmJih0aGlzLnAuY29sTmFtZXMudW5zaGlmdChRLnAuc2VhcmNoQ29sT3B0aW9ucy5jb2xOYW1lKSx0aGlzLnAuY29sTW9kZWwudW5zaGlmdCh7bmFtZToic2MiLHdpZHRoOlEucC5zZWFyY2hDb2xPcHRpb25zLmNvbFdpZHRoLHNvcnRhYmxlOiExLGhpZGVkbGc6ITAsc2VhcmNoOiExLGFsaWduOiJsZWZ0IixmaXhlZDohMCxmcm96ZW46ITAsY29sbWVudTpRLnAuc2VhcmNoQ29sT3B0aW9ucy5jb2xtZW51LGNsYXNzZXM6ImpxZ3JpZC1zZWFyY2hjb2wiLGxhYmVsQ2xhc3NlczoianFncmlkLXNlYXJjaGNvbHVtbiIsY29sb3B0aW9uczp7c29ydGluZzohMSxjb2x1bW5zOiExLGZpbHRlcmluZzohMSxzZXJhY2hpbmc6ITEsZ3JvdXBpbmc6ITEsZnJlZXplOiExfX0pKSx0aGlzLnAubXVsdGlzZWxlY3QmJihvPShvPVllLmpncmlkLmdldFJlZ2lvbmFsKFEsImRlZmF1bHRzLnNlbGVjdEFsbExpbmVzIikpfHxZZS5qZ3JpZC5yZWdpb25hbC5lbi5kZWZhdWx0cy5zZWxlY3RBbGxMaW5lcyx0aGlzLnAuY29sTmFtZXMudW5zaGlmdCgiPGlucHV0IHJvbGU9J2NoZWNrYm94JyBpZD0nY2JfIit0aGlzLnAuaWQrIicgY2xhc3M9J2Nib3gnIHR5cGU9J2NoZWNrYm94JyB0aXRsZT0nIitvKyInLz4iKSx0aGlzLnAuY29sTW9kZWwudW5zaGlmdCh7bmFtZToiY2IiLHdpZHRoOlllLmpncmlkLmNlbGxfd2lkdGg/US5wLm11bHRpc2VsZWN0V2lkdGgrUS5wLmNlbGxMYXlvdXQ6US5wLm11bHRpc2VsZWN0V2lkdGgsc29ydGFibGU6ITEscmVzaXphYmxlOiExLGhpZGVkbGc6ITAsc2VhcmNoOiExLGFsaWduOiJjZW50ZXIiLGZpeGVkOiEwLGZyb3plbjohMCxjbGFzc2VzOiJqcWdyaWQtbXVsdGlib3giLGxhYmVsQ2xhc3NlczoianFncmlkLW11bHRpYm94In0pKSx0aGlzLnAucm93bnVtYmVycyYmKHRoaXMucC5jb2xOYW1lcy51bnNoaWZ0KCIiKSx0aGlzLnAuY29sTW9kZWwudW5zaGlmdCh7bmFtZToicm4iLHdpZHRoOlEucC5yb3dudW1XaWR0aCxzb3J0YWJsZTohMSxyZXNpemFibGU6ITEsaGlkZWRsZzohMCxzZWFyY2g6ITEsYWxpZ246ImNlbnRlciIsZml4ZWQ6ITAsZnJvemVuOiEwLGxhYmVsQ2xhc3NlczoianFncmlkLXJvd251bWJlciJ9KSksUS5wLnhtbFJlYWRlcj1ZZS5leHRlbmQoITAse3Jvb3Q6InJvd3MiLHJvdzoicm93IixwYWdlOiJyb3dzPnBhZ2UiLHRvdGFsOiJyb3dzPnRvdGFsIixyZWNvcmRzOiJyb3dzPnJlY29yZHMiLHJlcGVhdGl0ZW1zOiEwLGNlbGw6ImNlbGwiLGlkOiJbaWRdIix1c2VyZGF0YToidXNlcmRhdGEiLHN1YmdyaWQ6e3Jvb3Q6InJvd3MiLHJvdzoicm93IixyZXBlYXRpdGVtczohMCxjZWxsOiJjZWxsIn19LFEucC54bWxSZWFkZXIpLFEucC5qc29uUmVhZGVyPVllLmV4dGVuZCghMCx7cm9vdDoicm93cyIscGFnZToicGFnZSIsdG90YWw6InRvdGFsIixyZWNvcmRzOiJyZWNvcmRzIixyZXBlYXRpdGVtczohMCxjZWxsOiJjZWxsIixpZDoiaWQiLHVzZXJkYXRhOiJ1c2VyZGF0YSIsc3ViZ3JpZDp7cm9vdDoicm93cyIscmVwZWF0aXRlbXM6ITAsY2VsbDoiY2VsbCJ9fSxRLnAuanNvblJlYWRlciksUS5wLmxvY2FsUmVhZGVyPVllLmV4dGVuZCghMCx7cm9vdDoicm93cyIscGFnZToicGFnZSIsdG90YWw6InRvdGFsIixyZWNvcmRzOiJyZWNvcmRzIixyZXBlYXRpdGVtczohMSxjZWxsOiJjZWxsIixpZDoiaWQiLHVzZXJkYXRhOiJ1c2VyZGF0YSIsc3ViZ3JpZDp7cm9vdDoicm93cyIscmVwZWF0aXRlbXM6ITAsY2VsbDoiY2VsbCJ9fSxRLnAubG9jYWxSZWFkZXIpLFEucC5zY3JvbGwmJihRLnAucGdidXR0b25zPSExLFEucC5wZ2lucHV0PSExLFEucC5yb3dMaXN0PVtdKSxRLnAuZGF0YS5sZW5ndGgmJihCKCksbmUoKSk7dmFyIGJlLHdlLHllLHAsYyx4ZSxfZSxxZSxpPSI8dGhlYWQgcm9sZT0ncm93Z3JvdXAnPjx0ciBjbGFzcz0ndWktanFncmlkLWxhYmVscycgcm9sZT0ncm93Jz4iLENlPSIiLG89IiIsYT0iIjtpZighMD09PVEucC5zaHJpbmtUb0ZpdCYmITA9PT1RLnAuZm9yY2VGaXQpZm9yKGU9US5wLmNvbE1vZGVsLmxlbmd0aC0xOzA8PWU7ZS0tKWlmKCFRLnAuY29sTW9kZWxbZV0uaGlkZGVuKXtRLnAuY29sTW9kZWxbZV0ucmVzaXphYmxlPSExO2JyZWFrfWlmKCJob3Jpem9udGFsIj09PVEucC52aWV3c29ydGNvbHNbMV0/KG89IiB1aS1pLWFzYyIsYT0iIHVpLWktZGVzYyIpOiJzaW5nbGUiPT09US5wLnZpZXdzb3J0Y29sc1sxXSYmKG89IiB1aS1zaW5nbGUtc29ydC1hc2MiLENlPSIgc3R5bGU9J2Rpc3BsYXk6bm9uZSciLFEucC52aWV3c29ydGNvbHNbMF09IShhPSIgdWktc2luZ2xlLXNvcnQtZGVzYyIpKSxiZT1NPyJjbGFzcz0ndWktdGgtZGl2LWllJyI6IiIseGU9IjxzcGFuIGNsYXNzPSdzLWljbycgc3R5bGU9J2Rpc3BsYXk6bm9uZSc+Iix4ZT0oeGUrPSI8c3BhbiBzb3J0PSdhc2MnICBjbGFzcz0ndWktZ3JpZC1pY28tc29ydCB1aS1pY29uLWFzYyIrbysiIHVpLXNvcnQtIit2KyIgIitqKyIgIitDKyIgIitLKCQsImljb25fYXNjIiwhMCkrIiciK0NlKyIgYXJpYS1sYWJlbD0nZW1wdHknPjxzcGFuIHN0eWxlPSdkaXNwbGF5Om5vbmUnPmVtcHR5PC9zcGFuPjwvc3Bhbj4iKSsoIjxzcGFuIHNvcnQ9J2Rlc2MnIGNsYXNzPSd1aS1ncmlkLWljby1zb3J0IHVpLWljb24tZGVzYyIrYSsiIHVpLXNvcnQtIit2KyIgIitqKyIgIitDKyIgIitLKCQsImljb25fZGVzYyIsITApKyInIitDZSsiIGFyaWEtbGFiZWw9J2VtcHR5Jz48c3BhbiBzdHlsZT0nZGlzcGxheTpub25lJz5lbXB0eTwvc3Bhbj48L3NwYW4+PC9zcGFuPiIpLFEucC5tdWx0aVNvcnQmJlEucC5zb3J0bmFtZSlmb3IoRD1RLnAuc29ydG5hbWUuc3BsaXQoIiwiKSxlPTA7ZTxELmxlbmd0aDtlKyspTz1ZZS5qZ3JpZC50cmltKERbZV0pLnNwbGl0KCIgIiksRFtlXT1ZZS5qZ3JpZC50cmltKE9bMF0pLEdbZV09T1sxXT9ZZS5qZ3JpZC50cmltKE9bMV0pOlEucC5zb3J0b3JkZXJ8fCJhc2MiO2ZvcihlPTA7ZTx0aGlzLnAuY29sTmFtZXMubGVuZ3RoO2UrKyl7dmFyIGwsSWU9US5wLmhlYWRlcnRpdGxlcz8nIHRpdGxlPSInKyhRLnAuY29sTW9kZWxbZV0udG9vbHRpcHx8WWUuamdyaWQuc3RyaXBIdG1sKFEucC5jb2xOYW1lc1tlXSkpKyciJzoiIjsobD1RLnAuY29sTW9kZWxbZV0pLmhhc093blByb3BlcnR5KCJjb2xtZW51Iil8fChsLmNvbG1lbnU9InJuIiE9PWwubmFtZSYmImNiIiE9PWwubmFtZSYmInN1YmdyaWQiIT09bC5uYW1lKSxpKz0iPHRoIGlkPSciK1EucC5pZCsiXyIrbC5uYW1lKyInIHJvbGU9J2NvbHVtbmhlYWRlcicgIitLKCQsImhlYWRlckJveCIsITEsInVpLXRoLWNvbHVtbiB1aS10aC0iK3YrIiAiKyhsLmxhYmVsQ2xhc3Nlc3x8IiIpKStJZSsiPiIsSWU9bC5pbmRleHx8bC5uYW1lLGkrPSI8ZGl2IGNsYXNzPSd1aS10aC1kaXYnIGlkPSdqcWdoXyIrUS5wLmlkKyJfIitsLm5hbWUrIicgIitiZSsiPiIrUS5wLmNvbE5hbWVzW2VdLGwud2lkdGg/bC53aWR0aD1wYXJzZUludChsLndpZHRoLDEwKTpsLndpZHRoPVEucC5kZWZhdWx0Q29sV2lkdGgsImJvb2xlYW4iIT10eXBlb2YgbC50aXRsZSYmKGwudGl0bGU9ITApLGwubHNvPSIiLEllPT09US5wLnNvcnRuYW1lJiYoUS5wLmxhc3Rzb3J0PWUpLFEucC5tdWx0aVNvcnQmJi0xIT09KE89WWUuaW5BcnJheShJZSxEKSkmJihsLmxzbz1HW09dKSxpKz14ZSxRLnAuY29sTWVudSYmbC5jb2xtZW51JiYoaSs9IjxhIHRpdGxlPSciK1llLmpncmlkLmdldFJlZ2lvbmFsKFEsImNvbG1lbnUuaG92ZXJtZW51IikrIicgY2xhc3M9JyIrKCJsdHIiPT09US5wLmRpcmVjdGlvbj8iY29sbWVudSI6ImNvbG1lbnUtcnRsIikrIic+PHNwYW4gY2xhc3M9J2NvbG1lbnVzcGFuICIrQysiICIrSS5pY29uX21lbnUrIic+PC9zcGFuPjwvYT4iKSxpKz0iPC9kaXY+PC90aD4ifWkrPSI8L3RyPjwvdGhlYWQ+IixsPXhlPW51bGwsWWUodGhpcykuYXBwZW5kKGkpLFllKCJ0aGVhZCB0ciIsdGhpcykuZmlyc3QoKS5maW5kKCJ0aCIpLmhvdmVyKGZ1bmN0aW9uKCl7WWUodGhpcykuYWRkQ2xhc3MocSl9LGZ1bmN0aW9uKCl7WWUodGhpcykucmVtb3ZlQ2xhc3MocSl9KSx0aGlzLnAubXVsdGlzZWxlY3QmJihfZT1bXSxZZSgiI2NiXyIrWWUuamdyaWQuanFJRChRLnAuaWQpLHRoaXMpLm9uKCJjbGljayIsZnVuY3Rpb24oKXtRLnAucHJlc2VydmVTZWxlY3Rpb258fChRLnAuc2VsYXJycm93PVtdKTt2YXIgdD0hMD09PVEucC5mcm96ZW5Db2x1bW5zP1EucC5pZCsiX2Zyb3plbiI6IiI7dGhpcy5jaGVja2VkPyhZZShRLnJvd3MpLmVhY2goZnVuY3Rpb24oZSl7MDxlJiYoWWUodGhpcykuaGFzQ2xhc3MoInVpLXN1YmdyaWQiKXx8WWUodGhpcykuaGFzQ2xhc3MoImpxZ3JvdXAiKXx8WWUodGhpcykuaGFzQ2xhc3Moail8fFllKHRoaXMpLmhhc0NsYXNzKCJqcWZvb3QiKXx8KFllKCIjanFnXyIrWWUuamdyaWQuanFJRChRLnAuaWQpKyJfIitZZS5qZ3JpZC5qcUlEKHRoaXMuaWQpKVtRLnAudXNlUHJvcD8icHJvcCI6ImF0dHIiXSgiY2hlY2tlZCIsITApLFllKHRoaXMpLmFkZENsYXNzKFkpLmF0dHIoImFyaWEtc2VsZWN0ZWQiLCJ0cnVlIiksUS5wLnByZXNlcnZlU2VsZWN0aW9uJiYtMSE9PVEucC5zZWxhcnJyb3cuaW5kZXhPZih0aGlzLmlkKXx8US5wLnNlbGFycnJvdy5wdXNoKHRoaXMuaWQpLFEucC5zZWxyb3c9dGhpcy5pZCx0JiYoWWUoIiNqcWdfIitZZS5qZ3JpZC5qcUlEKFEucC5pZCkrIl8iK1llLmpncmlkLmpxSUQodGhpcy5pZCksUS5ncmlkLmZiRGl2KVtRLnAudXNlUHJvcD8icHJvcCI6ImF0dHIiXSgiY2hlY2tlZCIsITApLFllKCIjIitZZS5qZ3JpZC5qcUlEKHRoaXMuaWQpLFEuZ3JpZC5mYkRpdikuYWRkQ2xhc3MoWSkpKSl9KSxxZT0hMCxfZT1bXSk6KFllKFEucm93cykuZWFjaChmdW5jdGlvbihlKXswPGUmJihZZSh0aGlzKS5oYXNDbGFzcygidWktc3ViZ3JpZCIpfHxZZSh0aGlzKS5oYXNDbGFzcygianFncm91cCIpfHxZZSh0aGlzKS5oYXNDbGFzcyhqKXx8WWUodGhpcykuaGFzQ2xhc3MoImpxZm9vdCIpfHwoWWUoIiNqcWdfIitZZS5qZ3JpZC5qcUlEKFEucC5pZCkrIl8iK1llLmpncmlkLmpxSUQodGhpcy5pZCkpW1EucC51c2VQcm9wPyJwcm9wIjoiYXR0ciJdKCJjaGVja2VkIiwhMSksWWUodGhpcykucmVtb3ZlQ2xhc3MoWSkuYXR0cigiYXJpYS1zZWxlY3RlZCIsImZhbHNlIiksX2UucHVzaCh0aGlzLmlkKSxRLnAucHJlc2VydmVTZWxlY3Rpb24mJi0xPChlPVEucC5zZWxhcnJyb3cuaW5kZXhPZih0aGlzLmlkKSkmJlEucC5zZWxhcnJyb3cuc3BsaWNlKGUsMSksdCYmKFllKCIjanFnXyIrWWUuamdyaWQuanFJRChRLnAuaWQpKyJfIitZZS5qZ3JpZC5qcUlEKHRoaXMuaWQpLFEuZ3JpZC5mYkRpdilbUS5wLnVzZVByb3A/InByb3AiOiJhdHRyIl0oImNoZWNrZWQiLCExKSxZZSgiIyIrWWUuamdyaWQuanFJRCh0aGlzLmlkKSxRLmdyaWQuZmJEaXYpLnJlbW92ZUNsYXNzKFkpKSkpfSksUS5wLnNlbHJvdz1udWxsLHFlPSExKSxZZShRKS50cmlnZ2VySGFuZGxlcigianFHcmlkU2VsZWN0QWxsIixbcWU/US5wLnNlbGFycnJvdzpfZSxxZV0pLFllLmpncmlkLmlzRnVuY3Rpb24oUS5wLm9uU2VsZWN0QWxsKSYmUS5wLm9uU2VsZWN0QWxsLmNhbGwoUSxxZT9RLnAuc2VsYXJycm93Ol9lLHFlKX0pKSwhMD09PVEucC5hdXRvd2lkdGgmJihvPVllKHIpLnBhcmVudCgpLndpZHRoKCksbD1ZZSh3aW5kb3cpLndpZHRoKCksUS5wLndpZHRoPTM8bC1vP286bC0xKTt2YXIgRGUscyxHZSxGZSxTZSxrZT0iIixSZT0iIixhPS0xPT09US5wLnN0eWxlVUkuc2VhcmNoKCJCb290c3RyYXAiKXx8aXNOYU4oUS5wLmhlaWdodCk/MDoyLGQ9MCx1PVllLmpncmlkLmNlbGxfd2lkdGg/MDpKKFEucC5jZWxsTGF5b3V0LDApLGg9MCxvPUooUS5wLnNjcm9sbE9mZnNldCwwKSxOZT0hMSxnPTA7aWYoWWUuZWFjaChRLnAuY29sTW9kZWwsZnVuY3Rpb24oKXt2YXIgZTt2b2lkIDA9PT10aGlzLmhpZGRlbiYmKHRoaXMuaGlkZGVuPSExKSxRLnAuZ3JvdXBpbmcmJlEucC5hdXRvd2lkdGgmJjA8PShlPVllLmluQXJyYXkodGhpcy5uYW1lLFEucC5ncm91cGluZ1ZpZXcuZ3JvdXBGaWVsZCkpJiZRLnAuZ3JvdXBpbmdWaWV3Lmdyb3VwQ29sdW1uU2hvdy5sZW5ndGg+ZSYmKHRoaXMuaGlkZGVuPSFRLnAuZ3JvdXBpbmdWaWV3Lmdyb3VwQ29sdW1uU2hvd1tlXSksdGhpcy53aWR0aE9yZz1KKHRoaXMud2lkdGgsMCksdGhpcy5tYXhXaWR0aCYmSih0aGlzLndpZHRoLDApPkoodGhpcy5tYXhXaWR0aCwwKSYmKHRoaXMud2lkdGg9dGhpcy5tYXhXaWR0aCkscz1KKHRoaXMud2lkdGgsMCksITE9PT10aGlzLmhpZGRlbiYmKGQrPXMrdSx0aGlzLmZpeGVkP2crPXMrdTpoKyspfSksaXNOYU4oUS5wLndpZHRoKSYmKFEucC53aWR0aD1kKyghMSE9PVEucC5zaHJpbmtUb0ZpdHx8aXNOYU4oUS5wLmhlaWdodCk/MDpvKSksdy53aWR0aD1wYXJzZUludChRLnAud2lkdGgsMTApLFEucC50Ymx3aWR0aD1kLCExPT09US5wLnNocmlua1RvRml0JiYhMD09PVEucC5mb3JjZUZpdCYmKFEucC5mb3JjZUZpdD0hMSksITA9PT1RLnAuc2hyaW5rVG9GaXQmJjA8aCl7R2U9dy53aWR0aC11KmgtZyxpc05hTihRLnAuaGVpZ2h0KXx8KEdlLT1vLE5lPSEwKTt2YXIgZD0wLE1lPTAsT2U9MCxBZT1bXSxUZT0wLGY9KFllLmVhY2goUS5wLmNvbE1vZGVsLGZ1bmN0aW9uKGUpeyExIT09dGhpcy5oaWRkZW58fHRoaXMuZml4ZWR8fChzPU1hdGgucm91bmQoR2UqdGhpcy53aWR0aC8oUS5wLnRibHdpZHRoLXUqaC1nKSksdGhpcy5tYXhXaWR0aCYmcz50aGlzLm1heFdpZHRoPyhNZSsrLE9lKz1zLHRoaXMud2lkdGg9dGhpcy5tYXhXaWR0aCxTZT1lKToodGhpcy53aWR0aD1zLFRlKz1zLEFlLnB1c2goZSsiIikpLGQrPXRoaXMud2lkdGgsRGU9ZSl9KSxGZT0oVmU9MCk9PT1hPy0xOjAsZCs9T2UsLTEpO2lmKDA8TWUmJjA8aCl7Zm9yKHZhciBQZT0wLEJlPTA7QmU8QWUubGVuZ3RoO0JlKyspZj1wYXJzZUludChBZVtCZV0sMTApLFBlKz1NYXRoLnJvdW5kKFEucC5jb2xNb2RlbFtmXS53aWR0aCpPZS9UZSksUS5wLmNvbE1vZGVsW2ZdLndpZHRoPVEucC5jb2xNb2RlbFtmXS53aWR0aCtNYXRoLnJvdW5kKFEucC5jb2xNb2RlbFtmXS53aWR0aCpPZS9UZSk7UGUhPT1PZSYmKFEucC5jb2xNb2RlbFtmXS53aWR0aCs9T2UtUGUpfU5lP3cud2lkdGgtZy0oZCt1KmgpIT09byYmKFZlPXcud2lkdGgtZy0oZCt1KmgpLW8pOjAhPT1NYXRoLmFicyh3LndpZHRoLWctKGQrdSpoKSkmJihWZT13LndpZHRoLWctKGQrdSpoKS1hKSwtMTxmJiZEZT09PVNlJiYoRGU9ZiksUS5wLmNvbE1vZGVsW0RlXS53aWR0aCs9VmUrRmUsUS5wLnRibHdpZHRoPWQrVmUrdSpoK2csUS5wLnRibHdpZHRoPlEucC53aWR0aCYmKFEucC5jb2xNb2RlbFtEZV0ud2lkdGgtPVEucC50Ymx3aWR0aC1wYXJzZUludChRLnAud2lkdGgsMTApLFEucC50Ymx3aWR0aD1RLnAud2lkdGgpfWplPS0xIT09US5wLnN0eWxlVUkuc2VhcmNoKCJCb290c3RyYXAiKSxZZShyKS5jc3MoIndpZHRoIix3LndpZHRoKyJweCIpLmFwcGVuZCgiPGRpdiBjbGFzcz0ndWktanFncmlkLXJlc2l6ZS1tYXJrJyBpZD0ncnNfbSIrUS5wLmlkKyInPiYjMTYwOzwvZGl2PiIpLFEucC5zY3JvbGxQb3BVcCYmWWUocikuYXBwZW5kKCI8ZGl2ICIrSygkLCJzY3JvbGxCb3giLCExLCJsb2FkaW5nIHVpLXNjcm9sbC1wb3B1cCIpKyIgaWQ9J3Njcm9sbF9nIitRLnAuaWQrIic+PC9kaXY+IiksWWUodCkuY3NzKCJ3aWR0aCIsdy53aWR0aCsicHgiKSxpPVllKFEpLmZpbmQoInRoZWFkIikuZmlyc3QoKS5nZXQoMCksUS5wLmZvb3RlcnJvdyYmKGtlKz0iPHRhYmxlIHJvbGU9J3ByZXNlbnRhdGlvbicgc3R5bGU9J3dpZHRoOiIrUS5wLnRibHdpZHRoKyJweCcgIitLKCQsImZvb3RlclRhYmxlIiwhMSwidWktanFncmlkLWZ0YWJsZSB1aS1jb21tb24tdGFibGUiKSsiPjx0Ym9keT48dHIgcm9sZT0ncm93JyAiK0soJCwiZm9vdGVyQm94IiwhMSwiZm9vdHJvdyBmb290cm93LSIrdikrIj4iKSxRLnAuaGVhZGVycm93JiYoUmUrPSI8dGFibGUgcm9sZT0ncHJlc2VudGF0aW9uJyBzdHlsZT0nd2lkdGg6IitRLnAudGJsd2lkdGgrInB4JyAiK0soJCwiaGVhZGVyUm93VGFibGUiLCExLCJ1aS1qcWdyaWQtaHJ0YWJsZSB1aS1jb21tb24tdGFibGUiKSsiPjx0Ym9keT48dHIgcm9sZT0ncm93JyAiK0soJCwiaGVhZGVyUm93Qm94IiwhMSwiaHJoZWFkcm93IGhyaGVhZHJvdy0iK3YpKyI+Iik7dmFyIE5lPVllKGkpLmZpbmQoInRyIikuZmlyc3QoKSxFZT0iPHRyIGNsYXNzPSdqcWdmaXJzdHJvdyAiKygicnRsIj09PVEucC5kaXJlY3Rpb24/InVpLXJvdy1ydGwnIjoiJyIpKyIgcm9sZT0ncm93Jz4iLHplPTAsSGU9WWUuamdyaWQuZ2V0Rm9udChZZSgidGgiLE5lKS5maXJzdCgpWzBdKTtpZihRLnAuZGlzYWJsZUNsaWNrPSExLFllKCJ0aCIsTmUpLmVhY2goZnVuY3Rpb24oZSl7bD1RLnAuY29sTW9kZWxbZV0sd2U9bC53aWR0aCx2b2lkIDA9PT1sLnJlc2l6YWJsZSYmKGwucmVzaXphYmxlPSEwKSxsLnJlc2l6YWJsZT8oeWU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpLFllKHllKS5odG1sKCImIzE2MDsiKS5hZGRDbGFzcygidWktanFncmlkLXJlc2l6ZSB1aS1qcWdyaWQtcmVzaXplLSIrdikuY3NzKCJjdXJzb3IiLCJjb2wtcmVzaXplIiksWWUodGhpcykuYWRkQ2xhc3MoUS5wLnJlc2l6ZWNsYXNzKSk6eWU9IiIsWWUodGhpcykuY3NzKCJ3aWR0aCIsd2UrInB4IikucHJlcGVuZCh5ZSkseWU9bnVsbDt2YXIgdD0iIixyPSIiLHI9KGwuaGlkZGVuJiYoWWUodGhpcykuY3NzKCJkaXNwbGF5Iiwibm9uZSIpLHQ9ImRpc3BsYXk6bm9uZTsiKSxsLmxhYmVsQ2xhc3NlcyYmKHI9ImNsYXNzPSciK2wubGFiZWxDbGFzc2VzKyInIiksRWUrPSI8dGQgIityKyIgcm9sZT0nZ3JpZGNlbGwnIHN0eWxlPSdoZWlnaHQ6MHB4O3dpZHRoOiIrd2UrInB4OyIrdCsiJz48L3RkPiIsdy5oZWFkZXJzW2VdPXt3aWR0aDp3ZSxlbDp0aGlzfSwiYm9vbGVhbiIhPXR5cGVvZihDZT1sLnNvcnRhYmxlKSYmKGwuc29ydGFibGU9ITAsQ2U9ITApLGwubmFtZSk7ImNiIiE9PXImJiJzdWJncmlkIiE9PXImJiJybiIhPT1yJiYic2MiIT09ciYmUS5wLnZpZXdzb3J0Y29sc1syXSYmWWUoIj5kaXYiLHRoaXMpLmFkZENsYXNzKCJ1aS1qcWdyaWQtc29ydGFibGUiKSxsLmNhbnZhc193aWR0aD1sLmF1dG9zaXplX2hlYWRlcnM/WWUuamdyaWQuZ2V0VGV4dFdpZHRoKFllKCJkaXYiLHRoaXMpWzBdLm91dGVyVGV4dCxIZSkrKGwuY29sbWVudT9ZZS5qZ3JpZC5mbG9hdE51bShZZSgiLmNvbG1lbnVzcGFuIix0aGlzKS5wYXJlbnQoKS53aWR0aCgpKTowKStZZS5qZ3JpZC5mbG9hdE51bShZZSgiZGl2Iix0aGlzKS5jc3MoInBhZGRpbmctbGVmdCIpKStZZS5qZ3JpZC5mbG9hdE51bShZZSgiZGl2Iix0aGlzKS5jc3MoInBhZGRpbmctcmlnaHQiKSkrWWUuamdyaWQuZmxvYXROdW0oWWUoIi51aS1qcWdyaWQtcmVzaXplIix0aGlzKS53aWR0aCgpKTowLENlJiYoUS5wLm11bHRpU29ydD9RLnAudmlld3NvcnRjb2xzWzBdPyhZZSgiZGl2IHNwYW4ucy1pY28iLHRoaXMpLnNob3coKSxsLmxzbyYmWWUoImRpdiBzcGFuLnVpLWljb24tIitsLmxzbyx0aGlzKS5yZW1vdmVDbGFzcyhqKS5jc3MoImRpc3BsYXkiLCIiKSk6bC5sc28mJihZZSgiZGl2IHNwYW4ucy1pY28iLHRoaXMpLnNob3coKSxZZSgiZGl2IHNwYW4udWktaWNvbi0iK2wubHNvLHRoaXMpLnJlbW92ZUNsYXNzKGopLmNzcygiZGlzcGxheSIsIiIpKTpRLnAudmlld3NvcnRjb2xzWzBdPyhZZSgiZGl2IHNwYW4ucy1pY28iLHRoaXMpLnNob3coKSxlPT09US5wLmxhc3Rzb3J0JiZZZSgiZGl2IHNwYW4udWktaWNvbi0iK1EucC5zb3J0b3JkZXIsdGhpcykucmVtb3ZlQ2xhc3MoaikuY3NzKCJkaXNwbGF5IiwiIikpOmU9PT1RLnAubGFzdHNvcnQmJiIiIT09US5wLnNvcnRuYW1lJiYoWWUoImRpdiBzcGFuLnMtaWNvIix0aGlzKS5zaG93KCksWWUoImRpdiBzcGFuLnVpLWljb24tIitRLnAuc29ydG9yZGVyLHRoaXMpLnJlbW92ZUNsYXNzKGopLmNzcygiZGlzcGxheSIsIiIpKSksUS5wLmZvb3RlcnJvdyYmKGtlKz0iPHRkIHJvbGU9J2dyaWRjZWxsJyAiK24oZSwwLCIiLG51bGwsIiIsITEpKyI+JiMxNjA7PC90ZD4iKSxRLnAuaGVhZGVycm93JiYoUmUrPSI8dGQgcm9sZT0nZ3JpZGNlbGwnICIrbihlLDAsIiIsbnVsbCwiIiwhMSkrIj4mIzE2MDs8L3RkPiIpfSkubW91c2Vkb3duKGZ1bmN0aW9uKGUpe2lmKDE9PT1ZZShlLnRhcmdldCkuY2xvc2VzdCgidGg+c3Bhbi51aS1qcWdyaWQtcmVzaXplIikubGVuZ3RoKXt2YXIgdCxyPXVlKHRoaXMpO2lmKGUucHJldmVudERlZmF1bHQoKSx6ZSsrLHNldFRpbWVvdXQoZnVuY3Rpb24oKXt6ZT0wfSw0MDApLDIhPT16ZSlyZXR1cm4hMD09PVEucC5mb3JjZUZpdCYmKFEucC5udj1mdW5jdGlvbihlKXtmb3IodmFyIHQ9ZSxyPWUsaT1lKzE7aTxRLnAuY29sTW9kZWwubGVuZ3RoO2krKylpZighMCE9PVEucC5jb2xNb2RlbFtpXS5oaWRkZW4pe3I9aTticmVha31yZXR1cm4gci10fShyKSksdy5kcmFnU3RhcnQocixlLGZ1bmN0aW9uKGUpe2U9WWUoUS5ncmlkLmhlYWRlcnNbZV0uZWwpLGU9W2UucG9zaXRpb24oKS5sZWZ0K2Uub3V0ZXJXaWR0aCgpXTtyZXR1cm4icnRsIj09PVEucC5kaXJlY3Rpb24mJihlWzBdPVEucC53aWR0aC1lWzBdKSxlWzBdLT1RLmdyaWQuYkRpdi5zY3JvbGxMZWZ0LGUucHVzaChZZShRLmdyaWQuaERpdikucG9zaXRpb24oKS50b3ApLGUucHVzaChZZShRLmdyaWQuYkRpdikub2Zmc2V0KCkudG9wLVllKFEuZ3JpZC5oRGl2KS5vZmZzZXQoKS50b3ArWWUoUS5ncmlkLmJEaXYpLmhlaWdodCgpKSxlfShyKSksITE7dHJ5eyEwPT09US5wLmNvbE1vZGVsW3JdLmF1dG9zaXplJiYodD1ZZShRKS5qcUdyaWQoImdldENvbCIsciwhMSwibWF4d2lkdGgiKSxZZShRKS5qcUdyaWQoInJlc2l6ZUNvbHVtbiIscix0KyhqZT9RLnAuY2VsbExheW91dDowKSkuanFHcmlkKCJyZWZyZXNoR3JvdXBIZWFkZXJzIikpfWNhdGNoKGUpe31maW5hbGx5e3plPTB9fX0pLmNsaWNrKGZ1bmN0aW9uKGUpe2lmKFEucC5kaXNhYmxlQ2xpY2spcmV0dXJuIFEucC5kaXNhYmxlQ2xpY2s9ITE7dmFyIHQscixpLG89InRoPmRpdi51aS10aC1kaXYiLG89KFEucC52aWV3c29ydGNvbHNbMl18fChvPSJ0aD5kaXY+c3Bhbj5zcGFuLnVpLWdyaWQtaWNvLXNvcnQiKSxZZShlLnRhcmdldCkuY2xvc2VzdChvKSk7aWYoMT09PW8ubGVuZ3RoKWlmKGk9US5wLmZyb3plbkNvbHVtbnM/KGk9WWUodGhpcylbMF0uaWQuc3Vic3RyaW5nKFEucC5pZC5sZW5ndGgrMSksWWUuamdyaWQuZ2V0RWxlbUJ5QXR0clZhbChRLnAuY29sTW9kZWwsIm5hbWUiLGksITApKTp1ZSh0aGlzKSxZZShlLnRhcmdldCkuaGFzQ2xhc3MoImNvbG1lbnVzcGFuIikpe2lmKFllLmpncmlkLmlzTnVsbChZZSgiI2NvbHVtbl9tZW51IilbMF0pfHxZZSgiI2NvbHVtbl9tZW51IikucmVtb3ZlKCksdm9pZCAwIT09aSl7dmFyIGEsbixsLHMsZCxwPVllKCIjZ2JveF8iK1EucC5pZCkub2Zmc2V0KCkscD1ZZSh0aGlzKS5vZmZzZXQoKS5sZWZ0LXAubGVmdCxjPSgibHRyIj09PVEucC5kaXJlY3Rpb24mJihwKz1ZZSh0aGlzKS5vdXRlcldpZHRoKCkpLGkpLHU9dm9pZCAwLGg9WWUody5oRGl2KS5oZWlnaHQoKSxnPShZZSgiLnVpLXNlYXJjaC10b29sYmFyIix3LmhEaXYpWzBdJiYhaXNOYU4oWWUoIi51aS1zZWFyY2gtdG9vbGJhciIsdy5oRGl2KS5oZWlnaHQoKSkmJihoLT1ZZSgiLnVpLXNlYXJjaC10b29sYmFyIix3LmhEaXYpLmhlaWdodCgpKSxZZSh3LmNEaXYpLmlzKCI6aGlkZGVuIil8fChoKz1ZZSh3LmNEaXYpLm91dGVySGVpZ2h0KCkpLFEucC50b29sYmFyWzFdJiYiYm90dG9tIiE9PVEucC50b29sYmFyWzJdJiYhWWUuamdyaWQuaXNOdWxsKFllKHcudURpdiksITApJiYoaCs9WWUody51RGl2KS5vdXRlckhlaWdodCgpKSxRLnAudG9wcGFnZXImJihoKz1ZZSgiIyIrWWUuamdyaWQuanFJRChRLnAuaWQpKyJfdG9wcGFnZXIiKS5vdXRlckhlaWdodCgpKSxwPXBhcnNlSW50KHAsMTApLHU9aCwiIiksZj1RLnAuY29sTW9kZWxbY10sbT1ZZS5leHRlbmQoe3NvcnRpbmc6ITAsY29sdW1uczohMCxmaWx0ZXJpbmc6ITAsc2VyYWNoaW5nOiEwLGdyb3VwaW5nOiEwLGZyZWV6ZTohMH0sZi5jb2xvcHRpb25zKSxoPVllLmpncmlkLmdldFJlZ2lvbmFsKFEsImNvbG1lbnUiKSx2PVEucC5jb2xOYW1lc1tjXSxqPVtdLGI9WWUuamdyaWQudHJpbShmLm5hbWUpO2ZvcihsIGluIGoucHVzaChnKSxmLnNvcnRhYmxlJiZtLnNvcnRpbmcmJihnPSc8bGkgY2xhc3M9InVpLW1lbnUtaXRlbSIgcm9sZT0icHJlc2VudGF0aW9uIj48YSBjbGFzcz0iZy1tZW51LWl0ZW0iIHRhYmluZGV4PSIwIiByb2xlPSJtZW51aXRlbSIgZGF0YS12YWx1ZT0ic29ydGFzYyI+PHRhYmxlIGNsYXNzPSJ1aS1jb21tb24tdGFibGUiPjx0cj48dGQgY2xhc3M9Im1lbnVfaWNvbiI+PHNwYW4gY2xhc3M9IicrQysiICIrSS5pY29uX3NvcnRfYXNjKyciPjwvc3Bhbj48L3RkPjx0ZCBjbGFzcz0ibWVudV90ZXh0Ij4nK2guc29ydGFzYysiPC90ZD48L3RyPjwvdGFibGU+PC9hPjwvbGk+IixnKz0nPGxpIGNsYXNzPSJ1aS1tZW51LWl0ZW0iIHJvbGU9InByZXNlbnRhdGlvbiI+PGEgY2xhc3M9ImctbWVudS1pdGVtIiB0YWJpbmRleD0iMCIgcm9sZT0ibWVudWl0ZW0iIGRhdGEtdmFsdWU9InNvcnRkZXNjIj48dGFibGUgY2xhc3M9InVpLWNvbW1vbi10YWJsZSI+PHRyPjx0ZCBjbGFzcz0ibWVudV9pY29uIj48c3BhbiBjbGFzcz0iJytDKyIgIitJLmljb25fc29ydF9kZXNjKyciPjwvc3Bhbj48L3RkPjx0ZCBjbGFzcz0ibWVudV90ZXh0Ij4nK2guc29ydGRlc2MrIjwvdGQ+PC90cj48L3RhYmxlPjwvYT48L2xpPiIsai5wdXNoKGcpKSxtLmNvbHVtbnMmJihnPSc8bGkgY2xhc3M9InVpLW1lbnUtaXRlbSBkaXZpZGVyIiByb2xlPSJzZXBhcmF0b3IiPjwvbGk+JyxnKz0nPGxpIGNsYXNzPSJ1aS1tZW51LWl0ZW0iIHJvbGU9InByZXNlbnRhdGlvbiI+PGEgY2xhc3M9ImctbWVudS1pdGVtIiB0YWJpbmRleD0iMCIgcm9sZT0ibWVudWl0ZW0iIGRhdGEtdmFsdWU9ImNvbHVtbnMiPjx0YWJsZSBjbGFzcz0idWktY29tbW9uLXRhYmxlIj48dHI+PHRkIGNsYXNzPSJtZW51X2ljb24iPjxzcGFuIGNsYXNzPSInK0MrIiAiK0kuaWNvbl9jb2x1bW5zKyciPjwvc3Bhbj48L3RkPjx0ZCBjbGFzcz0ibWVudV90ZXh0Ij4nK2guY29sdW1ucysiPC90ZD48L3RyPjwvdGFibGU+PC9hPjwvbGk+IixqLnB1c2goZykpLG0uZmlsdGVyaW5nJiYoZz0nPGxpIGNsYXNzPSJ1aS1tZW51LWl0ZW0gZGl2aWRlciIgcm9sZT0ic2VwYXJhdG9yIj48L2xpPicsZys9JzxsaSBjbGFzcz0idWktbWVudS1pdGVtIiByb2xlPSJwcmVzZW50YXRpb24iPjxhIGNsYXNzPSJnLW1lbnUtaXRlbSIgdGFiaW5kZXg9IjAiIHJvbGU9Im1lbnVpdGVtIiBkYXRhLXZhbHVlPSJmaWx0ZXJpbmciPjx0YWJsZSBjbGFzcz0idWktY29tbW9uLXRhYmxlIj48dHI+PHRkIGNsYXNzPSJtZW51X2ljb24iPjxzcGFuIGNsYXNzPSInK0MrIiAiK0kuaWNvbl9maWx0ZXIrJyI+PC9zcGFuPjwvdGQ+PHRkIGNsYXNzPSJtZW51X3RleHQiPicraC5maWx0ZXIrIiAiK3YrIjwvdGQ+PC90cj48L3RhYmxlPjwvYT48L2xpPiIsai5wdXNoKGcpKSxtLmdyb3VwaW5nJiYoYT1ZZS5pbkFycmF5KGYubmFtZSxRLnAuZ3JvdXBpbmdWaWV3Lmdyb3VwRmllbGQpLGc9JzxsaSBjbGFzcz0idWktbWVudS1pdGVtIGRpdmlkZXIiIHJvbGU9InNlcGFyYXRvciI+PC9saT4nLGcrPSc8bGkgY2xhc3M9InVpLW1lbnUtaXRlbSIgcm9sZT0icHJlc2VudGF0aW9uIj48YSBjbGFzcz0iZy1tZW51LWl0ZW0iIHRhYmluZGV4PSIwIiByb2xlPSJtZW51aXRlbSIgZGF0YS12YWx1ZT0iZ3JvdXBpbmciPjx0YWJsZSBjbGFzcz0idWktY29tbW9uLXRhYmxlIj48dHI+PHRkIGNsYXNzPSJtZW51X2ljb24iPjxzcGFuIGNsYXNzPSInK0MrIiAiK0kuaWNvbl9ncm91cCsnIj48L3NwYW4+PC90ZD48dGQgY2xhc3M9Im1lbnVfdGV4dCI+JysoLTEhPT1hP2gudW5ncm91cGluZzpoLmdyb3VwaW5nKyIgIit2KSsiPC90ZD48L3RyPjwvdGFibGU+PC9hPjwvbGk+IixqLnB1c2goZykpLCFtLmZyZWV6ZXx8US5wLnN1YkdyaWR8fFEucC50cmVlR3JpZHx8US5wLmNlbGxFZGl0fHwobj0hZi5mcm96ZW58fCFRLnAuZnJvemVuQ29sdW1ucyxnPSc8bGkgY2xhc3M9InVpLW1lbnUtaXRlbSBkaXZpZGVyIiByb2xlPSJzZXBhcmF0b3IiPjwvbGk+JyxnKz0nPGxpIGNsYXNzPSJ1aS1tZW51LWl0ZW0iIHJvbGU9InByZXNlbnRhdGlvbiI+PGEgY2xhc3M9ImctbWVudS1pdGVtIiB0YWJpbmRleD0iMCIgcm9sZT0ibWVudWl0ZW0iIGRhdGEtdmFsdWU9ImZyZWV6ZSI+PHRhYmxlIGNsYXNzPSJ1aS1jb21tb24tdGFibGUiPjx0cj48dGQgY2xhc3M9Im1lbnVfaWNvbiI+PHNwYW4gY2xhc3M9IicrQysiICIrSS5pY29uX2ZyZWV6ZSsnIj48L3NwYW4+PC90ZD48dGQgY2xhc3M9Im1lbnVfdGV4dCI+Jysobj9oLmZyZWV6ZSsiICIrdjpoLnVuZnJlZXplKSsiPC90ZD48L3RyPjwvdGFibGU+PC9hPjwvbGk+IixqLnB1c2goZykpLFEucC5jb2xNZW51Q3VzdG9tKVEucC5jb2xNZW51Q3VzdG9tLmhhc093blByb3BlcnR5KGwpJiYocz1RLnAuY29sTWVudUN1c3RvbVtsXSxZZS5qZ3JpZC5pc0Z1bmN0aW9uKFEucC5jb2xNZW51QmVmb3JlUHJvY2VzcykmJlEucC5jb2xNZW51QmVmb3JlUHJvY2Vzcy5jYWxsKFEse21vZHVsZToiY3VzdG9tIixhY3Rpb246cyxjb2x1bW46cy5jb2xuYW1lfSksWWUoUSkudHJpZ2dlckhhbmRsZXIoImpxR3JpZGNvbE1lbnVCZWZvcmVQcm9jZXNzIixbe21vZHVsZToiY3VzdG9tIixhY3Rpb246cyxjb2x1bW46cy5jb2xuYW1lfV0pLGQ9cy5leGNsdWRlLnNwbGl0KCIsIiksZD1ZZS5tYXAoZCxmdW5jdGlvbihlKXtyZXR1cm4gWWUuamdyaWQudHJpbShlKX0pLHMuY29sbmFtZT09PWJ8fCJfYWxsXyI9PT1zLmNvbG5hbWUmJi0xPT09WWUuaW5BcnJheShiLGQpKSYmKGQ9JzxsaSBjbGFzcz0idWktbWVudS1pdGVtIGRpdmlkZXIiIHJvbGU9InNlcGFyYXRvciI+PC9saT4nLGc9JzxsaSBjbGFzcz0idWktbWVudS1pdGVtIiByb2xlPSJwcmVzZW50YXRpb24iPjxhIGNsYXNzPSJnLW1lbnUtaXRlbSIgdGFiaW5kZXg9IjAiIHJvbGU9Im1lbnVpdGVtIiBkYXRhLXZhbHVlPSInK3MuaWQrJyI+PHRhYmxlIGNsYXNzPSJ1aS1jb21tb24tdGFibGUiPjx0cj48dGQgY2xhc3M9Im1lbnVfaWNvbiI+PHNwYW4gY2xhc3M9IicrQysiICIrcy5pY29uKyciPjwvc3Bhbj48L3RkPjx0ZCBjbGFzcz0ibWVudV90ZXh0Ij4nK3MudGl0bGUrIjwvdGQ+PC90cj48L3RhYmxlPjwvYT48L2xpPiIsImxhc3QiPT09cy5wb3NpdGlvbj8ocy5zZXBhcmF0b3ImJmoucHVzaChkKSxqLnB1c2goZykpOiJmaXJzdCI9PT1zLnBvc2l0aW9uJiYocy5zZXBhcmF0b3ImJmoudW5zaGlmdChkKSxqLnVuc2hpZnQoZykpKTtqLnVuc2hpZnQoJzx1bCBpZD0iY29sdW1uX21lbnUiIHJvbGU9Im1lbnUiIHRhYmluZGV4PSIwIj4nKSxqLnB1c2goIjwvdWw+IiksWWUoIiNnYm94XyIrUS5wLmlkKS5hcHBlbmQoai5qb2luKCIiKSksWWUoIiNjb2x1bW5fbWVudSIpLmFkZENsYXNzKCJ1aS1zZWFyY2gtbWVudSBtb2RhbC1jb250ZW50IGNvbHVtbi1tZW51IGpxZ3JpZC1jb2x1bW4tbWVudSB1aS1tZW51ICIrSS5tZW51X3dpZGdldCkuY3NzKHtsZWZ0OnAsdG9wOnV9KSwibHRyIj09PVEucC5kaXJlY3Rpb24mJih2PVllKCIjY29sdW1uX21lbnUiKS53aWR0aCgpKzI2LFllKCIjY29sdW1uX21lbnUiKS5jc3MoImxlZnQiLHAtdisicHgiKSksWWUoIiNjb2x1bW5fbWVudSA+IGxpID4gYSIpLmhvdmVyKGZ1bmN0aW9uKCl7dmFyIGUsdDtZZSgiI2NvbF9tZW51IikucmVtb3ZlKCksWWUoIiNzZWFyY2hfbWVudSIpLnJlbW92ZSgpLCJjb2x1bW5zIj09PVllKHRoaXMpLmF0dHIoImRhdGEtdmFsdWUiKSYmKGU9WWUodGhpcykucGFyZW50KCkud2lkdGgoKSs4LHQ9WWUodGhpcykucGFyZW50KCkucG9zaXRpb24oKS50b3AtNSxoZSh0LGUsWWUodGhpcykucGFyZW50KCksbSkpLCJmaWx0ZXJpbmciPT09WWUodGhpcykuYXR0cigiZGF0YS12YWx1ZSIpJiYoZT1ZZSh0aGlzKS5wYXJlbnQoKS53aWR0aCgpKzgsdD1ZZSh0aGlzKS5wYXJlbnQoKS5wb3NpdGlvbigpLnRvcC01LGdlKGMsdCxlLFllKHRoaXMpLnBhcmVudCgpKSksWWUodGhpcykuYWRkQ2xhc3MocSl9LGZ1bmN0aW9uKCl7WWUodGhpcykucmVtb3ZlQ2xhc3MocSl9KS5jbGljayhmdW5jdGlvbigpe3ZhciBlPVllKHRoaXMpLmF0dHIoImRhdGEtdmFsdWUiKSx0PVEuZ3JpZC5oZWFkZXJzW2NdLmVsOyJzb3J0YXNjIj09PWV8fCJzb3J0ZGVzYyI9PT1lPyhZZS5qZ3JpZC5pc0Z1bmN0aW9uKFEucC5jb2xNZW51QmVmb3JlUHJvY2VzcykmJlEucC5jb2xNZW51QmVmb3JlUHJvY2Vzcy5jYWxsKFEse21vZHVsZToic29ydGluZyIsYWN0aW9uOiJzb3J0YXNjIj09PWU/ImFzYyI6ImRlc2MiLGNvbHVtbjpmLm5hbWV9KSxjZSgianFnaF8iK1EucC5pZCsiXyIrZi5uYW1lLGMsITAsInNvcnRhc2MiPT09ZT8iYXNjIjoiZGVzYyIsdCkpOiJncm91cGluZyI9PT1lP21lKGMsYSk6ImZyZWV6ZSI9PT1lJiZ2ZShjLG4pLCJncm91cGluZyIhPT1lJiYiZnJlZXplIiE9PWV8fFllKHRoaXMpLnJlbW92ZSgpLFEucC5jb2xNZW51Q3VzdG9tLmhhc093blByb3BlcnR5KGUpJiYodD1RLnAuY29sTWVudUN1c3RvbVtlXSxZZS5qZ3JpZC5pc0Z1bmN0aW9uKHQuZnVuY25hbWUpKSYmKHQuZnVuY25hbWUuY2FsbChRLGIpLHQuY2xvc2VPblJ1bikmJlllKHRoaXMpLnJlbW92ZSgpfSkscGFyc2VGbG9hdChZZSgiI2NvbHVtbl9tZW51IikuY3NzKCJsZWZ0IikpPDAmJlllKCIjY29sdW1uX21lbnUiKS5jc3MoImxlZnQiLFllKFEpLmNzcygibGVmdCIpKSwhMD09PVEucC5tZW51YmFyJiZZZSgiIyIrUS5wLmlkKyJfbWVudWJhciIpLmhpZGUoKSxlLnN0b3BQcm9wYWdhdGlvbigpfX1lbHNlIFEucC52aWV3c29ydGNvbHNbMl18fCh0PSEwLHI9by5hdHRyKCJzb3J0IikpLFllLmpncmlkLmlzTnVsbChpKXx8Y2UoWWUoImRpdiIsdGhpcylbMF0uaWQsaSx0LHIsdGhpcyksdm9pZCAwIT09US5wLnNlbEhlYWRJbmQmJlllKHcuaGVhZGVyc1tRLnAuc2VsSGVhZEluZF0uZWwpLmF0dHIoInRhYmluZGV4IiwiLTEiKSxRLnAuc2VsSGVhZEluZD1pLFllKHRoaXMpLmF0dHIoInRhYmluZGV4IiwiMCIpfSksbD1udWxsLGpRdWVyeS5fY2FjaGVDYW52YXM9bnVsbCxRLnAuc29ydGFibGUmJlllLmZuLnNvcnRhYmxlKXRyeXtZZShRKS5qcUdyaWQoInNvcnRhYmxlQ29sdW1ucyIsTmUpfWNhdGNoKGUpe31RLnAuZm9vdGVycm93JiYoa2UrPSI8L3RyPjwvdGJvZHk+PC90YWJsZT4iKSxRLnAuaGVhZGVycm93JiYoUmUrPSI8L3RyPjwvdGJvZHk+PC90YWJsZT4iKSxFZSs9IjwvdHI+IixGZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0Ym9keSIpLFllKEZlKS5hdHRyKHtyb2xlOiJyb3dncm91cCJ9KSx0aGlzLmFwcGVuZENoaWxkKEZlKSxZZSh0aGlzKS5hZGRDbGFzcyhLKCQsInJvd1RhYmxlIiwhMCwidWktanFncmlkLWJ0YWJsZSB1aS1jb21tb24tdGFibGUiKSkuYXBwZW5kKEVlKSxRLnAuYWx0Um93cyYmWWUodGhpcykuYWRkQ2xhc3MoSygkLCJzdHJpcGVkVGFibGUiLCEwLCIiKSk7dmFyIG0sXyxVZSxMZSxFZT1udWxsLFZlPVllKCI8dGFibGUgIitLKCQsImhlYWRlclRhYmxlIiwhMSwidWktanFncmlkLWh0YWJsZSB1aS1jb21tb24tdGFibGUiKSsiIHN0eWxlPSd3aWR0aDoiK1EucC50Ymx3aWR0aCsicHgnIHJvbGU9J2dyaWQnIGFyaWEtbGFiZWxsZWRieT0nZ2JveF8iK3RoaXMuaWQrIic+PC90YWJsZT4iKS5hcHBlbmQoaSksRj0hKCFRLnAuY2FwdGlvbnx8ITAhPT1RLnAuaGlkZGVuZ3JpZCksdD1ZZSgiPGRpdiBjbGFzcz0ndWktanFncmlkLWhib3giKygicnRsIj09PXY/Ii1ydGwiOiIiKSsiJz48L2Rpdj4iKSxpPW51bGwsV2U9KHcuaERpdj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx3LmhEaXYuc3R5bGUud2lkdGg9dy53aWR0aC1hKyJweCIsdy5oRGl2LmNsYXNzTmFtZT1LKCQsImhlYWRlckRpdiIsITAsInVpLWpxZ3JpZC1oZGl2IiksWWUody5oRGl2KS5hcHBlbmQodCksWWUodCkuYXBwZW5kKFZlKSxGJiZZZSh3LmhEaXYpLmhpZGUoKSxRLnAucGFnZXImJigic3RyaW5nIj09dHlwZW9mIFEucC5wYWdlcj8iIyI9PT1RLnAucGFnZXIuc3Vic3RyKDAsMSkmJihRLnAucGFnZXI9US5wLnBhZ2VyLnN1YnN0cmluZygxKSk6US5wLnBhZ2VyPVllKFEucC5wYWdlcikuYXR0cigiaWQiKSxZZSgiIyIrWWUuamdyaWQuanFJRChRLnAucGFnZXIpKS5jc3Moe3dpZHRoOncud2lkdGgtYSsicHgifSkuYWRkQ2xhc3MoSygkLCJwYWdlckJveCIsITAsInVpLWpxZ3JpZC1wYWdlciIpKS5hcHBlbmRUbyhyKSxGJiZZZSgiIyIrWWUuamdyaWQuanFJRChRLnAucGFnZXIpKS5oaWRlKCksZGUoUS5wLnBhZ2VyLCIiKSxRLnAucGFnZXI9IiMiK1llLmpncmlkLmpxSUQoUS5wLnBhZ2VyKSksITE9PT1RLnAuY2VsbEVkaXQmJiEwPT09US5wLmhvdmVycm93cyYmWWUoUSkub24oe21vdXNlb3ZlcjpmdW5jdGlvbihlKXtjPVllKGUudGFyZ2V0KS5jbG9zZXN0KCJ0ci5qcWdyb3ciKSwidWktc3ViZ3JpZCIhPT1ZZShjKS5hdHRyKCJjbGFzcyIpJiZZZShjKS5hZGRDbGFzcyhxKX0sbW91c2VvdXQ6ZnVuY3Rpb24oZSl7Yz1ZZShlLnRhcmdldCkuY2xvc2VzdCgidHIuanFncm93IiksWWUoYykucmVtb3ZlQ2xhc3MocSl9fSksWWUoUSkuYmVmb3JlKHcuaERpdikub24oe2NsaWNrOmZ1bmN0aW9uKGUpe2lmKHA9ZS50YXJnZXQsYz1ZZShwLFEucm93cykuY2xvc2VzdCgidHIuanFncm93IiksMD09PVllKGMpLmxlbmd0aHx8LTE8Y1swXS5jbGFzc05hbWUuaW5kZXhPZihqKXx8KFllKHAsUSkuY2xvc2VzdCgidGFibGUudWktanFncmlkLWJ0YWJsZSIpLmF0dHIoImlkIil8fCIiKS5yZXBsYWNlKCJfZnJvemVuIiwiIikhPT1RLmlkKXJldHVybiB0aGlzO3ZhciB0LHIsaSxvLGEsbixsLHM9WWUocCkuZmlsdGVyKCI6ZW5hYmxlZCIpLmhhc0NsYXNzKCJjYm94IiksZD0hMSE9PShkPVllKFEpLnRyaWdnZXJIYW5kbGVyKCJqcUdyaWRCZWZvcmVTZWxlY3RSb3ciLFtjWzBdLmlkLGVdKSkmJiJzdG9wIiE9PWQ7aWYoIVllLmpncmlkLmlzRnVuY3Rpb24oUS5wLmJlZm9yZVNlbGVjdFJvdyl8fCExIT09KGw9US5wLmJlZm9yZVNlbGVjdFJvdy5jYWxsKFEsY1swXS5pZCxlKSkmJiJzdG9wIiE9PWx8fChkPSExKSxzJiYhMT09PWQmJlllKGUudGFyZ2V0KS5wcm9wKCJjaGVja2VkIiwhWWUoZS50YXJnZXQpLnByb3AoImNoZWNrZWQiKSksIkEiIT09cC50YWdOYW1lJiYoIklOUFVUIiE9PXAudGFnTmFtZSYmIlRFWFRBUkVBIiE9PXAudGFnTmFtZSYmIk9QVElPTiIhPT1wLnRhZ05hbWUmJiJTRUxFQ1QiIT09cC50YWdOYW1lfHxzfHwiSU5QVVQiPT09cC50YWdOYW1lJiZwLmlkLnN0YXJ0c1dpdGgoImpxc18iK1EucC5pZCkpKWlmKG09Y1swXS5pZCwwPChwPVllKHApLmNsb3Nlc3QoInRyLmpxZ3Jvdz50ZCIpKS5sZW5ndGgmJihfPVllLmpncmlkLmdldENlbGxJbmRleChwKSksITAhPT1RLnAuY2VsbEVkaXR8fFEucC5hcmlhQm9keSl7aWYoMDxwLmxlbmd0aCYmKFVlPVllKHApLmNsb3Nlc3QoInRkLHRoIikuaHRtbCgpLFllKFEpLnRyaWdnZXJIYW5kbGVyKCJqcUdyaWRDZWxsU2VsZWN0IixbbSxfLFVlLGVdKSxZZS5qZ3JpZC5pc0Z1bmN0aW9uKFEucC5vbkNlbGxTZWxlY3QpKSYmUS5wLm9uQ2VsbFNlbGVjdC5jYWxsKFEsbSxfLFVlLGUpLGQpaWYoUS5wLm11bHRpbWFpbCYmUS5wLm11bHRpc2VsZWN0KXtpZihlLnNoaWZ0S2V5KXtpZihzKXJldHVybiBsPVllKFEpLmpxR3JpZCgiZ2V0R3JpZFBhcmFtIiwic2Vscm93IiksdD1ZZShRKS5qcUdyaWQoImdldEluZCIsbSkscj1ZZShRKS5qcUdyaWQoImdldEluZCIsbCksbz1pPSIiLG89cjx0PyhpPWwsbSk6KGk9bSxsKSxsPSEobj1hPSExKSwtMTxZZS5pbkFycmF5KG0sUS5wLnNlbGFycnJvdykmJihsPSExKSxZZS5lYWNoKFllKHRoaXMpLmdldERhdGFJRHMoKSxmdW5jdGlvbihlLHQpe3JldHVybihuPXQ9PT1pfHxuKSYmWWUoUSkuanFHcmlkKCJyZXNldFNlbGVjdGlvbiIsdCksdCE9PW99KSxsJiZZZS5lYWNoKFllKHRoaXMpLmdldERhdGFJRHMoKSxmdW5jdGlvbihlLHQpe3JldHVybihhPXQ9PT1pfHxhKSYmWWUoUSkuanFHcmlkKCJzZXRTZWxlY3Rpb24iLHQsITEpLHQhPT1vfSksdm9pZChRLnAuc2Vscm93PXI8dD9vOmkpO3dpbmRvdy5nZXRTZWxlY3Rpb24oKS5yZW1vdmVBbGxSYW5nZXMoKX1LZShtLHMsZSwhMSl9ZWxzZSBRLnAubXVsdGlrZXk/ZVtRLnAubXVsdGlrZXldP1llKFEpLmpxR3JpZCgic2V0U2VsZWN0aW9uIixtLCEwLGUpOlEucC5tdWx0aXNlbGVjdCYmcyYmKHM9WWUoIiNqcWdfIitZZS5qZ3JpZC5qcUlEKFEucC5pZCkrIl8iK20pLmlzKCI6Y2hlY2tlZCIpLFllKCIjanFnXyIrWWUuamdyaWQuanFJRChRLnAuaWQpKyJfIittKVtRLnAudXNlUHJvcD8icHJvcCI6ImF0dHIiXSgiY2hlY2tlZCIsIXMpKTpLZShtLHMsZSwhMCl9ZWxzZSBpZihRLnAubXVsdGlzZWxlY3QmJnMmJmQpWWUoUSkuanFHcmlkKCJzZXRTZWxlY3Rpb24iLG0sITAsZSk7ZWxzZSBpZigwPHAubGVuZ3RoKXRyeXtZZShRKS5qcUdyaWQoImVkaXRDZWxsIixjWzBdLnJvd0luZGV4LF8sITAsZSl9Y2F0Y2goZSl7fX0scmVsb2FkR3JpZDpmdW5jdGlvbihlLHQpe3ZhciByO3JldHVybiEwPT09US5wLnRyZWVHcmlkJiYoUS5wLmRhdGF0eXBlPVEucC50cmVlZGF0YXR5cGUpLCh0PXR8fHt9KS5jdXJyZW50JiZRLmdyaWQuc2VsZWN0aW9uUHJlc2VydmVyKFEpLCJsb2NhbCI9PT1RLnAuZGF0YXR5cGU/KFllKFEpLmpxR3JpZCgicmVzZXRTZWxlY3Rpb24iKSxRLnAuZGF0YS5sZW5ndGgmJihCKCksbmUoKSkpOlEucC50cmVlR3JpZHx8KFEucC5zZWxyb3c9bnVsbCxRLnAubXVsdGlzZWxlY3QmJiFRLnAucHJlc2VydmVTZWxlY3Rpb24mJihRLnAuc2VsYXJycm93PVtdLHNlKCExKSksUS5wLnNhdmVkUm93PVtdKSxRLnAuc2Nyb2xsJiZhZS5jYWxsKFEsITAsITEpLHQucGFnZSYmKChyPXQucGFnZSk+US5wLmxhc3RwYWdlJiYocj1RLnAubGFzdHBhZ2UpLFEucC5wYWdlPXI9cjwxPzE6cixRLmdyaWQucHJldlJvd0hlaWdodD9RLmdyaWQuYkRpdi5zY3JvbGxUb3A9KHItMSkqUS5ncmlkLnByZXZSb3dIZWlnaHQqUS5wLnJvd051bTpRLmdyaWQuYkRpdi5zY3JvbGxUb3A9MCksUS5ncmlkLnByZXZSb3dIZWlnaHQmJlEucC5zY3JvbGwmJnZvaWQgMD09PXQucGFnZT8oZGVsZXRlIFEucC5sYXN0cGFnZSxRLmdyaWQucG9wdWxhdGVWaXNpYmxlKCkpOlEuZ3JpZC5wb3B1bGF0ZSgpLCEwPT09US5wLmlubGluZU5hdiYmWWUoUSkuanFHcmlkKCJzaG93QWRkRWRpdEJ1dHRvbnMiKSxRLnAuc2VhcmNoQ29scyYmIVllLmlzRW1wdHlPYmplY3QoUS5wLl9yZXN1bHRzKSYmKFEucC5fcmVzdWx0cz17fSxZZS5qZ3JpZC5zZWFyY2hDb2xPbkVudGVyKFEucC5pZCxudWxsKSksITF9LGRibGNsaWNrOmZ1bmN0aW9uKGUpe3ZhciB0O2lmKHA9ZS50YXJnZXQsYz1ZZShwLFEucm93cykuY2xvc2VzdCgidHIuanFncm93IiksMCE9PVllKGMpLmxlbmd0aClyZXR1cm4gbT1jWzBdLnJvd0luZGV4LF89WWUuamdyaWQuZ2V0Q2VsbEluZGV4KHApLHQ9WWUoUSkudHJpZ2dlckhhbmRsZXIoImpxR3JpZERibENsaWNrUm93IixbWWUoYykuYXR0cigiaWQiKSxtLF8sZV0pLCFZZS5qZ3JpZC5pc051bGwodCl8fFllLmpncmlkLmlzRnVuY3Rpb24oUS5wLm9uZGJsQ2xpY2tSb3cpJiYodD1RLnAub25kYmxDbGlja1Jvdy5jYWxsKFEsWWUoYykuYXR0cigiaWQiKSxtLF8sZSksIVllLmpncmlkLmlzTnVsbCh0KSk/dDp2b2lkIDB9LGNvbnRleHRtZW51OmZ1bmN0aW9uKGUpe3ZhciB0O2lmKHA9ZS50YXJnZXQsYz1ZZShwLFEucm93cykuY2xvc2VzdCgidHIuanFncm93IiksMCE9PVllKGMpLmxlbmd0aClyZXR1cm4gUS5wLm11bHRpc2VsZWN0fHxZZShRKS5qcUdyaWQoInNldFNlbGVjdGlvbiIsY1swXS5pZCwhMCxlKSxtPWNbMF0ucm93SW5kZXgsXz1ZZS5qZ3JpZC5nZXRDZWxsSW5kZXgocCksdD1ZZShRKS50cmlnZ2VySGFuZGxlcigianFHcmlkUmlnaHRDbGlja1JvdyIsW1llKGMpLmF0dHIoImlkIiksbSxfLGVdKSwhWWUuamdyaWQuaXNOdWxsKHQpfHxZZS5qZ3JpZC5pc0Z1bmN0aW9uKFEucC5vblJpZ2h0Q2xpY2tSb3cpJiYodD1RLnAub25SaWdodENsaWNrUm93LmNhbGwoUSxZZShjKS5hdHRyKCJpZCIpLG0sXyxlKSwhWWUuamdyaWQuaXNOdWxsKHQpKT90OnZvaWQgMH19KSx3LmJEaXY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksTSYmImF1dG8iPT09U3RyaW5nKFEucC5oZWlnaHQpLnRvTG93ZXJDYXNlKCkmJihRLnAuaGVpZ2h0PSIxMDAlIiksWWUody5iRGl2KS5hcHBlbmQoWWUoJzxkaXYgc3R5bGU9InBvc2l0aW9uOnJlbGF0aXZlOyI+PC9kaXY+JykuYXBwZW5kKCI8ZGl2PjwvZGl2PiIpLmFwcGVuZCh0aGlzKSkuYWRkQ2xhc3MoInVpLWpxZ3JpZC1iZGl2IikuY3NzKHtoZWlnaHQ6US5wLmhlaWdodCsoaXNOYU4oUS5wLmhlaWdodCk/IiI6InB4Iiksd2lkdGg6dy53aWR0aC1hKyJweCJ9KS5vbigic2Nyb2xsIix3LnNjcm9sbEdyaWQpLFllKHcuYkRpdikuZmluZCgidGFibGUiKS5maXJzdCgpLmNzcyh7d2lkdGg6US5wLnRibHdpZHRoKyJweCJ9KSxZZS5zdXBwb3J0LnRib2R5fHwyPT09WWUoInRib2R5Iix0aGlzKS5sZW5ndGgmJlllKCJ0Ym9keSIsdGhpcykuc2xpY2UoMSkucmVtb3ZlKCksUS5wLm11bHRpa2V5JiYoWWUuamdyaWQubXNpZSgpP1llKHcuYkRpdikub24oInNlbGVjdHN0YXJ0IixmdW5jdGlvbigpe3JldHVybiExfSk6WWUody5iRGl2KS5vbigibW91c2Vkb3duIixmdW5jdGlvbigpe3JldHVybiExfSkpLEYmJlllKHcuYkRpdikuaGlkZSgpLEMrIiAiK0soJCwiaWNvbl9jYXB0aW9uX29wZW4iLCEwKSksUWU9QysiICIrSygkLCJpY29uX2NhcHRpb25fY2xvc2UiLCEwKSxYZT0ody5jRGl2PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLCEwPT09US5wLmhpZGVncmlkP1llKCI8YSByb2xlPSdsaW5rJyBjbGFzcz0ndWktanFncmlkLXRpdGxlYmFyLWNsb3NlIEhlYWRlckJ1dHRvbiAiK04rIicgdGl0bGU9JyIrKFllLmpncmlkLmdldFJlZ2lvbmFsKFEsImRlZmF1bHRzLnNob3doaWRlIixRLnAuc2hvd2hpZGUpfHwiIikrIicgLz4iKS5ob3ZlcihmdW5jdGlvbigpe1hlLmFkZENsYXNzKHEpfSxmdW5jdGlvbigpe1hlLnJlbW92ZUNsYXNzKHEpfSkuYXBwZW5kKCI8c3BhbiBjbGFzcz0ndWktanFncmlkLWhlYWRsaW5rICIrV2UrIic+PC9zcGFuPiIpLmNzcygicnRsIj09PXY/ImxlZnQiOiJyaWdodCIsIjBweCIpOiIiKTtZZSh3LmNEaXYpLmFwcGVuZChYZSkuYXBwZW5kKCI8c3BhbiBjbGFzcz0ndWktanFncmlkLXRpdGxlJz4iK1EucC5jYXB0aW9uKyI8L3NwYW4+IikuYWRkQ2xhc3MoInVpLWpxZ3JpZC10aXRsZWJhciB1aS1qcWdyaWQtY2FwdGlvbiIrKCJydGwiPT09dj8iLXJ0bCI6IiIpKyIgIitLKCQsImdyaWR0aXRsZUJveCIsITApKSwhMD09PVEucC5tZW51YmFyJiYoTmU9Jzx1bCBpZD0iJytRLnAuaWQrJ19tZW51YmFyIiBjbGFzcz0idWktc2VhcmNoLW1lbnUgbW9kYWwtY29udGVudCBjb2x1bW4tbWVudSB1aS1tZW51IGpxZ3JpZC1jYXB0aW9uLW1lbnUgJytJLm1lbnVfd2lkZ2V0KyciIHJvbGU9Im1lbnViYXIiIHRhYmluZGV4PSIwIj48L3VsPicsWWUoIiNnYm94XyIrUS5wLmlkKS5hcHBlbmQoTmUpLFllKHcuY0RpdikuYXBwZW5kKCI8YSByb2xlPSdsaW5rJyBjbGFzcz0ndWktanFncmlkLW1lbnViYXIgbWVudWJhci0iKygicnRsIj09PXY/InJ0bCI6Imx0ciIpKyInIHN0eWxlPScnPjxzcGFuIGNsYXNzPSdjb2xtZW51c3BhbiAiK0MrIiAiK0kuaWNvbl90b29sYmFyX21lbnUrIic+PC9zcGFuPjwvYT4iKSxZZSgiLnVpLWpxZ3JpZC1tZW51YmFyIix3LmNEaXYpLmhvdmVyKGZ1bmN0aW9uKCl7WWUodGhpcykuYWRkQ2xhc3MocSl9LGZ1bmN0aW9uKCl7WWUodGhpcykucmVtb3ZlQ2xhc3MocSl9KS5vbigiY2xpY2siLGZ1bmN0aW9uKGUpe2U9WWUoZS50YXJnZXQpLnBvc2l0aW9uKCk7WWUoIiMiK1EucC5pZCsiX21lbnViYXIiKS5zaG93KCksInJ0bCI9PT1RLnAuZGlyZWN0aW9uJiZZZSgiIyIrUS5wLmlkKyJfbWVudWJhciIpLmNzcyh7bGVmdDplLmxlZnQtWWUoIiMiK1EucC5pZCsiX21lbnViYXIiKS53aWR0aCgpLTIwfSl9KSksWWUody5jRGl2KS5pbnNlcnRCZWZvcmUody5oRGl2KSxRLnAudG9vbGJhclswXSYmKHI9SygkLCJjdXN0b210b29sYmFyQm94IiwhMCwidWktdXNlcmRhdGEiKSx3LnVEaXY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksInRvcCI9PT1RLnAudG9vbGJhclsxXT9ZZSh3LnVEaXYpLmluc2VydEJlZm9yZSh3LmhEaXYpOiJib3R0b20iPT09US5wLnRvb2xiYXJbMV0mJlllKHcudURpdikuaW5zZXJ0QWZ0ZXIody5oRGl2KSwiYm90aCI9PT1RLnAudG9vbGJhclsxXT8ody51YkRpdj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxZZSh3LnVEaXYpLmFkZENsYXNzKHIrIiB1aS11c2VyZGF0YS10b3AiKS5hdHRyKCJpZCIsInRfIit0aGlzLmlkKS5pbnNlcnRCZWZvcmUody5oRGl2KS53aWR0aCh3LndpZHRoLWEpLFllKHcudWJEaXYpLmFkZENsYXNzKHIrIiB1aS11c2VyZGF0YS1ib3R0b20iKS5hdHRyKCJpZCIsInRiXyIrdGhpcy5pZCkuaW5zZXJ0QWZ0ZXIody5oRGl2KS53aWR0aCh3LndpZHRoLWEpLEYmJlllKHcudWJEaXYpLmhpZGUoKSk6WWUody51RGl2KS53aWR0aCh3LndpZHRoLWEpLmFkZENsYXNzKHIrIiB1aS11c2VyZGF0YS10b3AiKS5hdHRyKCJpZCIsInRfIit0aGlzLmlkKSxGKSYmWWUody51RGl2KS5oaWRlKCksUS5wLnRvcHBhZ2VyJiYoUS5wLnRvcHBhZ2VyPVllLmpncmlkLmpxSUQoUS5wLmlkKSsiX3RvcHBhZ2VyIix3LnRvcERpdj1ZZSgiPGRpdiBpZD0nIitRLnAudG9wcGFnZXIrIic+PC9kaXY+IilbMF0sWWUody50b3BEaXYpLmFkZENsYXNzKEsoJCwidG9wcGFnZXJCb3giLCEwLCJ1aS1qcWdyaWQtdG9wcGFnZXIiKSkud2lkdGgody53aWR0aC1hKS5pbnNlcnRCZWZvcmUody5oRGl2KSxkZShRLnAudG9wcGFnZXIsIl90IiksUS5wLnRvcHBhZ2VyPSIjIitRLnAudG9wcGFnZXIpLFEucC5mb290ZXJyb3cmJih3LnNEaXY9WWUoIjxkaXYgY2xhc3M9J3VpLWpxZ3JpZC1zZGl2Jz48L2Rpdj4iKVswXSx0PVllKCI8ZGl2IGNsYXNzPSd1aS1qcWdyaWQtaGJveCIrKCJydGwiPT09dj8iLXJ0bCI6IiIpKyInPjwvZGl2PiIpLFllKHcuc0RpdikuYXBwZW5kKHQpLndpZHRoKHcud2lkdGgtYSkuaW5zZXJ0QWZ0ZXIody5oRGl2KSxZZSh0KS5hcHBlbmQoa2UpLHcuZm9vdGVycz1ZZSgiLnVpLWpxZ3JpZC1mdGFibGUiLHcuc0RpdilbMF0ucm93c1swXS5jZWxscyxRLnAucm93bnVtYmVycyYmKHcuZm9vdGVyc1swXS5jbGFzc05hbWU9SygkLCJyb3dudW1Cb3giLCEwLCJqcWdyaWQtcm93bnVtIikpLEYpJiZZZSh3LnNEaXYpLmhpZGUoKSxRLnAuaGVhZGVycm93JiYody5ockRpdj1ZZSgiPGRpdiBjbGFzcz0ndWktanFncmlkLWhyZGl2Jz48L2Rpdj4iKVswXSx0PVllKCI8ZGl2IGNsYXNzPSd1aS1qcWdyaWQtaGJveCIrKCJydGwiPT09dj8iLXJ0bCI6IiIpKyInPjwvZGl2PiIpLFllKHcuaHJEaXYpLmFwcGVuZCh0KS53aWR0aCh3LndpZHRoLWEpLmluc2VydEFmdGVyKHcuaERpdiksWWUodCkuYXBwZW5kKFJlKSx3LmhyaGVhZGVycz1ZZSgiLnVpLWpxZ3JpZC1ocnRhYmxlIix3LmhyRGl2KVswXS5yb3dzWzBdLmNlbGxzLFEucC5yb3dudW1iZXJzJiYody5ocmhlYWRlcnNbMF0uY2xhc3NOYW1lPUsoJCwicm93bnVtQm94IiwhMCwianFncmlkLXJvd251bSIpKSxGKSYmWWUody5uRGl2KS5oaWRlKCksdD1udWxsLFEucC5jYXB0aW9uPyhMZT1RLnAuZGF0YXR5cGUsITA9PT1RLnAuaGlkZWdyaWQmJihZZSgiLnVpLWpxZ3JpZC10aXRsZWJhci1jbG9zZSIsdy5jRGl2KS5jbGljayhmdW5jdGlvbihlKXt2YXIgdCxyPVllLmpncmlkLmlzRnVuY3Rpb24oUS5wLm9uSGVhZGVyQ2xpY2spLGk9Ii51aS1qcWdyaWQtYmRpdiwgLnVpLWpxZ3JpZC1oZGl2LCAudWktanFncmlkLXRvcHBhZ2VyLCAudWktanFncmlkLXBhZ2VyLCAudWktanFncmlkLXNkaXYsIC51aS1qcWdyaWQtaHJkaXYiLG89dGhpcztyZXR1cm4hMD09PVEucC50b29sYmFyWzBdJiYoImJvdGgiPT09US5wLnRvb2xiYXJbMV0mJihpKz0iLCAjIitZZSh3LnViRGl2KS5hdHRyKCJpZCIpKSxpKz0iLCAjIitZZSh3LnVEaXYpLmF0dHIoImlkIikpLHQ9WWUoaSwiI2d2aWV3XyIrWWUuamdyaWQuanFJRChRLnAuaWQpKS5sZW5ndGgsInZpc2libGUiPT09US5wLmdyaWRzdGF0ZT9ZZShpLCIjZ2JveF8iK1llLmpncmlkLmpxSUQoUS5wLmlkKSkuc2xpZGVVcCgiZmFzdCIsZnVuY3Rpb24oKXswPT09LS10JiYoWWUoInNwYW4iLG8pLnJlbW92ZUNsYXNzKFdlKS5hZGRDbGFzcyhRZSksUS5wLmdyaWRzdGF0ZT0iaGlkZGVuIixZZSgiI2dib3hfIitZZS5qZ3JpZC5qcUlEKFEucC5pZCkpLmhhc0NsYXNzKCJ1aS1yZXNpemFibGUiKSYmWWUoIi51aS1yZXNpemFibGUtaGFuZGxlIiwiI2dib3hfIitZZS5qZ3JpZC5qcUlEKFEucC5pZCkpLmhpZGUoKSxZZShRKS50cmlnZ2VySGFuZGxlcigianFHcmlkSGVhZGVyQ2xpY2siLFtRLnAuZ3JpZHN0YXRlLGVdKSxyKSYmIUYmJlEucC5vbkhlYWRlckNsaWNrLmNhbGwoUSxRLnAuZ3JpZHN0YXRlLGUpfSk6ImhpZGRlbiI9PT1RLnAuZ3JpZHN0YXRlJiZZZShpLCIjZ2JveF8iK1llLmpncmlkLmpxSUQoUS5wLmlkKSkuc2xpZGVEb3duKCJmYXN0IixmdW5jdGlvbigpezA9PT0tLXQmJihZZSgic3BhbiIsbykucmVtb3ZlQ2xhc3MoUWUpLmFkZENsYXNzKFdlKSxGJiYoUS5wLmRhdGF0eXBlPUxlLHgoKSxGPSExKSxRLnAuZ3JpZHN0YXRlPSJ2aXNpYmxlIixZZSgiI2dib3hfIitZZS5qZ3JpZC5qcUlEKFEucC5pZCkpLmhhc0NsYXNzKCJ1aS1yZXNpemFibGUiKSYmWWUoIi51aS1yZXNpemFibGUtaGFuZGxlIiwiI2dib3hfIitZZS5qZ3JpZC5qcUlEKFEucC5pZCkpLnNob3coKSxZZShRKS50cmlnZ2VySGFuZGxlcigianFHcmlkSGVhZGVyQ2xpY2siLFtRLnAuZ3JpZHN0YXRlLGVdKSxyKSYmIUYmJlEucC5vbkhlYWRlckNsaWNrLmNhbGwoUSxRLnAuZ3JpZHN0YXRlLGUpfSksITF9KSxGKSYmKFEucC5kYXRhdHlwZT0ibG9jYWwiLFllKCIudWktanFncmlkLXRpdGxlYmFyLWNsb3NlIix3LmNEaXYpLnRyaWdnZXIoImNsaWNrIikpKTooWWUody5jRGl2KS5oaWRlKCksUS5wLnRvcHBhZ2VyfHxZZSh3LmhEaXYpLmFkZENsYXNzKEsoUS5wLnN0eWxlVUkrIi5jb21tb24iLCJjb3JuZXJ0b3AiLCEwKSkpLChRLnAuaGVhZGVycm93P1llKHcuaHJEaXYpOlllKHcuaERpdikpLmFmdGVyKHcuYkRpdiksWWUody5oRGl2KS5tb3VzZW1vdmUoZnVuY3Rpb24oZSl7aWYody5yZXNpemluZylyZXR1cm4gdy5kcmFnTW92ZShlKSwhMX0pLFllKCIudWktanFncmlkLWxhYmVscyIsdy5oRGl2KS5vbigic2VsZWN0c3RhcnQiLGZ1bmN0aW9uKCl7cmV0dXJuITF9KSxZZShkb2N1bWVudCkub24oIm1vdXNldXAuanFHcmlkIitRLnAuaWQsZnVuY3Rpb24oKXtyZXR1cm4hdy5yZXNpemluZ3x8KHcuZHJhZ0VuZCghMCksITEpfSksInJ0bCI9PT1RLnAuZGlyZWN0aW9uJiZZZShRKS5vbigianFHcmlkQWZ0ZXJHcmlkQ29tcGxldGUuc2V0UlRMUGFkZGluZyIsZnVuY3Rpb24oKXt2YXIgZT13LmJEaXYub2Zmc2V0V2lkdGgtdy5iRGl2LmNsaWVudFdpZHRoOzA8ZSYmKGUrPTIpLFllKHcuaERpdikuZmluZCgiZGl2IikuZmlyc3QoKS5oYXNDbGFzcygidWktanFncmlkLWhib3gtcnRsIikmJlllKHcuaERpdikuZmluZCgiZGl2IikuZmlyc3QoKS5jc3Moe3BhZGRpbmdMZWZ0OmUrInB4In0pLHcuaERpdi5zY3JvbGxMZWZ0PXcuYkRpdi5zY3JvbGxMZWZ0fSksUS5wLmF1dG9SZXNpemluZyYmWWUoUSkub24oImpxR3JpZEFmdGVyR3JpZENvbXBsZXRlLnNldEF1dG9TaXplQ29sdW1ucyIsZnVuY3Rpb24oKXt2YXIgZT0hMSx0PSExOyEwPT09US5wLmZyb3plbkNvbHVtbnMmJih0PVllKCI6Zm9jdXMiLCIuZnJvemVuLWRpdiIpLmF0dHIoImlkIiksWWUoUSkuanFHcmlkKCJkZXN0cm95RnJvemVuQ29sdW1ucyIpLGU9ITApLDA8US5wLmNvbFNwYW5IZWFkZXIubGVuZ3RoJiZZZShRKS5qcUdyaWQoImRlc3Ryb3lDb2xTcGFuSGVhZGVyIiwhMSksWWUoUS5wLmNvbE1vZGVsKS5lYWNoKGZ1bmN0aW9uKGUpe3RoaXMuYXV0b3NpemUmJiF0aGlzLmhpZGRlbiYmdGhpcy5fbWF4c2l6ZSYmMDx0aGlzLl9tYXhzaXplJiZZZShRKS5qcUdyaWQoInJlc2l6ZUNvbHVtbiIsZSx0aGlzLl9tYXhzaXplK1EucC5jZWxsTGF5b3V0LCExLCExKX0pLFllKFEpLmpxR3JpZCgicmVmcmVzaEdyb3VwSGVhZGVycyIpLDA8US5wLmNvbFNwYW5IZWFkZXIubGVuZ3RoJiZZZShRKS5qcUdyaWQoInNldENvbFNwYW5IZWFkZXIiLFEucC5jb2xTcGFuSGVhZGVyKSxlJiYoWWUoUSkuanFHcmlkKCJzZXRGcm96ZW5Db2x1bW5zIiksdCkmJnNldFRpbWVvdXQoZnVuY3Rpb24oKXtZZSgiIyIrdCwiLmZyb3plbi1kaXYiKS50cmlnZ2VyKCJmb2N1cyIpfSwxMCl9KSxRLnAuc2VhcmNoQ29scyYmKFllKFEpLm9uKCJqcUdyaWRQYWdpbmcuc2VhcmNoQ29scyIsZnVuY3Rpb24oKXtZZS5pc0VtcHR5T2JqZWN0KFEucC5fcmVzdWx0cyl8fChRLnAuX3Jlc3VsdHM9e30sWWUuamdyaWQuc2VhcmNoQ29sT25FbnRlcihRLnAuaWQsbnVsbCkpfSksWWUoUSkub24oImpxR3JpZFNvcnRDb2wuc2VhcmNoQ29scyIsZnVuY3Rpb24oKXtZZS5pc0VtcHR5T2JqZWN0KFEucC5fcmVzdWx0cyl8fChRLnAuX3Jlc3VsdHM9e30sWWUuamdyaWQuc2VhcmNoQ29sT25FbnRlcihRLnAuaWQsbnVsbCkpfSksUS5wLmNvbE1lbnUpJiZRLnAuc2VhcmNoQ29sT3B0aW9ucy5jb2xtZW51JiZZZShRKS5qcUdyaWQoImFkZENvbFNlYXJjaE1lbnUiKSxRLmZvcm1hdENvbD1uLFEuc29ydERhdGE9Y2UsUS51cGRhdGVwYWdlcj1mdW5jdGlvbihlLHQpe3ZhciByLGksbyxhLG4sbCxzLGQ9US5wLnBhZ2VyP1EucC5wYWdlci5zdWJzdHJpbmcoMSk6IiIsZD1kPyJfIitkOiIiLHA9US5wLnRvcHBhZ2VyPyJfIitRLnAudG9wcGFnZXIuc3Vic3RyKDEpOiIiLGM9cGFyc2VJbnQoUS5wLnBhZ2UsMTApLTE7YzwwJiYoYz0wKSxyPShjKj1wYXJzZUludChRLnAucm93TnVtLDEwKSkrUS5wLnJlY2NvdW50LFEucC5zY3JvbGwmJihhPVllKCJ0Ym9keSIsUS5ncmlkLmJEaXYpLmZpcnN0KCkuZmluZCgiPiB0ciIpLnNsaWNlKDEpLHI+US5wLnJlY29yZHMmJihyPVEucC5yZWNvcmRzKSxjPXItYS5sZW5ndGgsUS5wLnJlY2NvdW50PWEubGVuZ3RoLChhPWEub3V0ZXJIZWlnaHQoKXx8US5ncmlkLnByZXZSb3dIZWlnaHQpJiYocz1jKmEsbD1wYXJzZUludChRLnAucmVjb3JkcywxMCkqYSxZZShRLmdyaWQuYkRpdikuZmluZCgiPmRpdiIpLmZpcnN0KCkuY3NzKHtoZWlnaHQ6bH0pLmNoaWxkcmVuKCJkaXYiKS5maXJzdCgpLmNzcyh7aGVpZ2h0OnMsZGlzcGxheTpzPyIiOiJub25lIn0pLDA9PT1RLmdyaWQuYkRpdi5zY3JvbGxUb3ApJiYxPFEucC5wYWdlJiYoUS5ncmlkLmJEaXYuc2Nyb2xsVG9wPVEucC5yb3dOdW0qKFEucC5wYWdlLTEpKmEpLFEuZ3JpZC5iRGl2LnNjcm9sbExlZnQ9US5ncmlkLmhEaXYuc2Nyb2xsTGVmdCksbD1RLnAucGFnZXJ8fCIiLChsKz1RLnAudG9wcGFnZXI/bD8iLCIrUS5wLnRvcHBhZ2VyOlEucC50b3BwYWdlcjoiIikmJihzPVllLmpncmlkLmdldFJlZ2lvbmFsKFEsImZvcm1hdHRlci5pbnRlZ2VyIiksYT1KKFEucC5wYWdlKSxuPUooUS5wLmxhc3RwYWdlKSxZZSgiLnNlbGJveCIsbClbdGhpcy5wLnVzZVByb3A/InByb3AiOiJhdHRyIl0oImRpc2FibGVkIiwhMSksITA9PT1RLnAucGdpbnB1dCYmKFllKCIudWktcGctaW5wdXQiLGwpW1llKCIudWktcGctaW5wdXQiLGwpLmZpcnN0KCkuaXMoIjppbnB1dCIpPyJ2YWwiOiJodG1sIl0objxhP1EucC5sYXN0cGFnZTpRLnAucGFnZSksbz1RLnAudG9wcGFnZXI/IiNzcF8xIitkKyIsI3NwXzEiK3A6IiNzcF8xIitkLFllKG8pLmh0bWwoWWUuZm1hdHRlcj9ZZS5mbWF0dGVyLnV0aWwuTnVtYmVyRm9ybWF0KFEucC5sYXN0cGFnZSxzKTpRLnAubGFzdHBhZ2UpKSxRLnAudmlld3JlY29yZHMmJigwPT09US5wLnJlY2NvdW50P1llKCIudWktcGFnaW5nLWluZm8iLGwpLmh0bWwoWWUuamdyaWQuZ2V0UmVnaW9uYWwoUSwiZGVmYXVsdHMuZW1wdHlyZWNvcmRzIixRLnAuZW1wdHlyZWNvcmRzKSk6KG89YysxLGk9US5wLnJlY29yZHMsWWUuZm1hdHRlciYmKG89WWUuZm1hdHRlci51dGlsLk51bWJlckZvcm1hdChvLHMpLHI9WWUuZm1hdHRlci51dGlsLk51bWJlckZvcm1hdChyLHMpLGk9WWUuZm1hdHRlci51dGlsLk51bWJlckZvcm1hdChpLHMpKSxzPVllLmpncmlkLmdldFJlZ2lvbmFsKFEsImRlZmF1bHRzLnJlY29yZHRleHQiLFEucC5yZWNvcmR0ZXh0KSxZZSgiLnVpLXBhZ2luZy1pbmZvIixsKS5odG1sKFllLmpncmlkLnRlbXBsYXRlKHMsbyxyLGkpKSkpLCEwPT09US5wLnBnYnV0dG9ucykmJigxPT09KGE9YTw9MD9uPTA6YSl8fDA9PT1hPyhZZSgiI2ZpcnN0IitkKyIsICNwcmV2IitkKS5hZGRDbGFzcyhqKS5yZW1vdmVDbGFzcyhxKSxRLnAudG9wcGFnZXImJlllKCIjZmlyc3RfdCIrcCsiLCAjcHJldl90IitwKS5hZGRDbGFzcyhqKS5yZW1vdmVDbGFzcyhxKSk6KFllKCIjZmlyc3QiK2QrIiwgI3ByZXYiK2QpLnJlbW92ZUNsYXNzKGopLFEucC50b3BwYWdlciYmWWUoIiNmaXJzdF90IitwKyIsICNwcmV2X3QiK3ApLnJlbW92ZUNsYXNzKGopKSxhPT09bnx8MD09PWE/KFllKCIjbmV4dCIrZCsiLCAjbGFzdCIrZCkuYWRkQ2xhc3MoaikucmVtb3ZlQ2xhc3MocSksUS5wLnRvcHBhZ2VyJiZZZSgiI25leHRfdCIrcCsiLCAjbGFzdF90IitwKS5hZGRDbGFzcyhqKS5yZW1vdmVDbGFzcyhxKSk6KFllKCIjbmV4dCIrZCsiLCAjbGFzdCIrZCkucmVtb3ZlQ2xhc3MoaiksUS5wLnRvcHBhZ2VyJiZZZSgiI25leHRfdCIrcCsiLCAjbGFzdF90IitwKS5yZW1vdmVDbGFzcyhqKSkpLCEwPT09ZSYmITA9PT1RLnAucm93bnVtYmVycyYmWWUoIj50ZC5qcWdyaWQtcm93bnVtIixRLnJvd3MpLmVhY2goZnVuY3Rpb24oZSl7WWUodGhpcykuaHRtbChjKzErZSl9KSwwPT09US5wLnJlY2NvdW50JiYobD1RLnAuZW1wdHlSZWNvcmRSb3c/SygkLCJyb3dCb3giLCEwLCJqcWdyb3cgdWktcm93LSIrUS5wLmRpcmVjdGlvbisiIG5vdC1lZGl0YWJsZS1yb3cgbm90LWVkaXRhYmxlLWNlbGwgIitqKToianFnZmlyc3Ryb3cgbm90LWVkaXRhYmxlLXJvdyBub3QtZWRpdGFibGUtY2VsbCIscz0ocz1sZSgibm9yZWNzIiwhMSxsLHt9LCIiKSkrKFEucC5lbXB0eVJlY29yZFJvdz8iPHRkIHN0eWxlPSd0ZXh0LWFsaWduOmNlbnRlcjsnIGNvbHNwYW49JyIrdy5oZWFkZXJzLmxlbmd0aCsiJz4iK1llLmpncmlkLmdldFJlZ2lvbmFsKFEsImRlZmF1bHRzLmVtcHR5cmVjb3JkcyIsUS5wLmVtcHR5cmVjb3JkcykrIjwvdGQ+IjoiPHRkIHN0eWxlPSdoZWlnaHQ6MC4xcHg7dmlzaWJpbGl0eTpoaWRkZW47JyBjb2xzcGFuPSciK3cuaGVhZGVycy5sZW5ndGgrIic+Jm5ic3A7PC90ZD4iKSsiPC90cj4iLFllKHcuYkRpdikuZmluZCgidGFibGUiKS5maXJzdCgpLmFwcGVuZChzKSksdCYmUS5wLmpxZ2RuZCYmWWUoUSkuanFHcmlkKCJncmlkRG5EIiwidXBkYXRlRG5EIiksWWUoUSkudHJpZ2dlckhhbmRsZXIoImpxR3JpZEdyaWRDb21wbGV0ZSIpLFllLmpncmlkLmlzRnVuY3Rpb24oUS5wLmdyaWRDb21wbGV0ZSkmJlEucC5ncmlkQ29tcGxldGUuY2FsbChRKSxZZShRKS50cmlnZ2VySGFuZGxlcigianFHcmlkQWZ0ZXJHcmlkQ29tcGxldGUiKX0sUS5yZWZyZXNoSW5kZXg9bmUsUS5zZXRIZWFkQ2hlY2tCb3g9c2UsUS5jb25zdHJ1Y3RUcj1sZSxRLmZvcm1hdHRlcj1mdW5jdGlvbihlLHQscixpLG8pe3JldHVybiBQKGUsdCxyLGksbyl9LFllLmV4dGVuZCh3LHtwb3B1bGF0ZTp4LGVtcHR5Um93czphZSxiZWdpblJlcTpMLGVuZFJlcTp5fSksdGhpcy5ncmlkPXcsUS5hZGRYbWxEYXRhPWZ1bmN0aW9uKGUpe0UoZSl9LFEuYWRkSlNPTkRhdGE9ZnVuY3Rpb24oZSl7eihlKX0sUS5hZGRMb2NhbERhdGE9ZnVuY3Rpb24oZSl7cmV0dXJuIFUoZSl9LFEuYWRkSW5kZXhlZERCRGF0YT1mdW5jdGlvbihlKXtyZXR1cm4gSChlKX0sUS50cmVlR3JpZF9iZWZvcmVSZXF1ZXN0PWZ1bmN0aW9uKCl7US5wLnRyZWVHcmlkJiZRLnAudHJlZUdyaWRfYmlnRGF0YSYmdm9pZCAwIT09US5wLnBvc3REYXRhLm5vZGVpZCYmInN0cmluZyI9PXR5cGVvZiBRLnAucG9zdERhdGEubm9kZWlkJiYoIiIhPT1RLnAucG9zdERhdGEubm9kZWlkfHwwPHBhcnNlSW50KFEucC5wb3N0RGF0YS5ub2RlaWQsMTApKSYmKFEucC5wb3N0RGF0YS5yb3dzPTFlNCxRLnAucG9zdERhdGEucGFnZT0xLFEucC50cmVlR3JpZF9yb290UGFyYW1zLm90aGVyRGF0YS5ub2RlaWQ9US5wLnBvc3REYXRhLm5vZGVpZCl9LFEudHJlZUdyaWRfYWZ0ZXJMb2FkQ29tcGxldGU9ZnVuY3Rpb24oKXtRLnAudHJlZUdyaWQmJlEucC50cmVlR3JpZF9iaWdEYXRhJiYodm9pZCAwIT09US5wLnRyZWVHcmlkX3Jvb3RQYXJhbXMub3RoZXJEYXRhLm5vZGVpZCYmInN0cmluZyI9PXR5cGVvZiBRLnAudHJlZUdyaWRfcm9vdFBhcmFtcy5vdGhlckRhdGEubm9kZWlkJiYoIiIhPT1RLnAudHJlZUdyaWRfcm9vdFBhcmFtcy5vdGhlckRhdGEubm9kZWlkfHwwPHBhcnNlSW50KFEucC50cmVlR3JpZF9yb290UGFyYW1zLm90aGVyRGF0YS5ub2RlaWQsMTApKT92b2lkIDA9PT1RLnAudHJlZUdyaWRfcm9vdFBhcmFtc3x8WWUuamdyaWQuaXNOdWxsKFEucC50cmVlR3JpZF9yb290UGFyYW1zKXx8KFEucC5wYWdlPVEucC50cmVlR3JpZF9yb290UGFyYW1zLnBhZ2UsUS5wLmxhc3RwYWdlPVEucC50cmVlR3JpZF9yb290UGFyYW1zLmxhc3RwYWdlLFEucC5wb3N0RGF0YS5yb3dzPVEucC50cmVlR3JpZF9yb290UGFyYW1zLnBvc3REYXRhLnJvd3MsUS5wLnBvc3REYXRhLnRvdGFscm93cz1RLnAudHJlZUdyaWRfcm9vdFBhcmFtcy5wb3N0RGF0YS50b3RhbHJvd3MsUS5wLnRyZWVHcmlkX3Jvb3RQYXJhbXMub3RoZXJEYXRhLm5vZGVpZD0iIixRLnVwZGF0ZXBhZ2VyKCExLCEwKSk6US5wLnRyZWVHcmlkX3Jvb3RQYXJhbXM9e3BhZ2U6US5wLnBhZ2UsbGFzdHBhZ2U6US5wLmxhc3RwYWdlLHBvc3REYXRhOntyb3dzOlEucC5wb3N0RGF0YS5yb3dzLHRvdGFscm93czpRLnAucG9zdERhdGEudG90YWxyb3dzfSxyb3dOdW06US5wLnJvd051bSxyb3dUb3RhbDpRLnAucm93VG90YWwsb3RoZXJEYXRhOntub2RlaWQ6IiJ9fSl9LHRoaXMuZ3JpZC5jb2xzPXRoaXMucm93c1swXS5jZWxscyxZZS5qZ3JpZC5pc0Z1bmN0aW9uKFEucC5vbkluaXRHcmlkKSYmUS5wLm9uSW5pdEdyaWQuY2FsbChRKSxZZShRKS50cmlnZ2VySGFuZGxlcigianFHcmlkSW5pdEdyaWQiKSx4KCksUS5wLmhpZGRlbmdyaWQ9ITEsUS5wLnJlc3BvbnNpdmUmJihNPSJvbm9yaWVudGF0aW9uY2hhbmdlImluIHdpbmRvdz8ib3JpZW50YXRpb25jaGFuZ2UiOiJyZXNpemUiLFllKHdpbmRvdykub24oTSxmdW5jdGlvbigpe1llKFEpLmpxR3JpZCgicmVzaXplR3JpZCIpfSkpfX19ZnVuY3Rpb24gS2UoZSx0LHIsaSl7dmFyIG87IShRLnAubXVsdGlzZWxlY3QmJlEucC5tdWx0aWJveG9ubHl8fFEucC5tdWx0aW1haWwpfHx0P1llKFEpLmpxR3JpZCgic2V0U2VsZWN0aW9uIixlLGkscik6US5wLm11bHRpYm94b25seSYmUS5wLm11bHRpbWFpbD8oWWUoUSkudHJpZ2dlckhhbmRsZXIoImpxR3JpZFNlbGVjdFJvdyIsW2UsITEscl0pLFEucC5vblNlbGVjdFJvdyYmUS5wLm9uU2VsZWN0Um93LmNhbGwoUSxlLCExLHIpKToobz1RLnAuZnJvemVuQ29sdW1ucz9RLnAuaWQrIl9mcm96ZW4iOiIiLFllKFEucC5zZWxhcnJyb3cpLmVhY2goZnVuY3Rpb24oZSx0KXt2YXIgcj1ZZShRKS5qcUdyaWQoImdldEdyaWRSb3dCeUlkIix0KTtyJiZZZShyKS5yZW1vdmVDbGFzcyhZKSxZZSgiI2pxZ18iK1llLmpncmlkLmpxSUQoUS5wLmlkKSsiXyIrWWUuamdyaWQuanFJRCh0KSlbUS5wLnVzZVByb3A/InByb3AiOiJhdHRyIl0oImNoZWNrZWQiLCExKSxvJiYoWWUoIiMiK1llLmpncmlkLmpxSUQodCksIiMiK1llLmpncmlkLmpxSUQobykpLnJlbW92ZUNsYXNzKFkpLFllKCIjanFnXyIrWWUuamdyaWQuanFJRChRLnAuaWQpKyJfIitZZS5qZ3JpZC5qcUlEKHQpLCIjIitZZS5qZ3JpZC5qcUlEKG8pKVtRLnAudXNlUHJvcD8icHJvcCI6ImF0dHIiXSgiY2hlY2tlZCIsITEpKX0pLFEucC5zZWxhcnJyb3c9W10sWWUoUSkuanFHcmlkKCJzZXRTZWxlY3Rpb24iLGUsaSxyKSl9fSk7dmFyIGUsdD1ZZS5qZ3JpZC5nZXRNZXRob2QoJGUpO2lmKHQpcmV0dXJuIGU9WWUubWFrZUFycmF5KGFyZ3VtZW50cykuc2xpY2UoMSksdC5hcHBseSh0aGlzLGUpO3Rocm93ImpxR3JpZCAtIE5vIHN1Y2ggbWV0aG9kOiAiKyRlfSxZZS5qZ3JpZC5leHRlbmQoe2dldEdyaWRQYXJhbTpmdW5jdGlvbihlLHQpe3ZhciByLGk9dGhpc1swXTtpZihpJiZpLmdyaWQpe2lmKHI9aS5wLCJqcUdyaWQiIT09KHQ9dm9pZCAwPT09dCYmInN0cmluZyIhPXR5cGVvZiB0PyJqcUdyaWQiOnQpKXRyeXtyPVllKGkpLmRhdGEodCl9Y2F0Y2goZSl7cj1pLnB9cmV0dXJuIGU/dm9pZCAwIT09cltlXT9yW2VdOm51bGw6cn19LHNldEdyaWRQYXJhbTpmdW5jdGlvbih0LHIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZTtZZS5qZ3JpZC5pc051bGwocikmJihyPSExKSx0aGlzLmdyaWQmJiJvYmplY3QiPT10eXBlb2YgdCYmKCEwPT09cj8oZT1ZZS5leHRlbmQoe30sdGhpcy5wLHQpLHRoaXMucD1lKTpZZS5leHRlbmQoITAsdGhpcy5wLHQpKX0pfSxnZXRHcmlkUm93QnlJZDpmdW5jdGlvbih0KXt2YXIgcjtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dHJ5e3I9dGhpcy5yb3dzLm5hbWVkSXRlbSh0KX1jYXRjaChlKXtyPVllKHRoaXMuZ3JpZC5iRGl2KS5maW5kKCIjIitZZS5qZ3JpZC5qcUlEKHQpKVswXX19KSxyfSxnZXRHcmlkUm93QnlJbmRleDpmdW5jdGlvbih0KXt2YXIgcj1udWxsO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZT10aGlzLnJvd3MubGVuZ3RoLTE7MTw9dCYmMTw9ZSYmdDw9ZSYmKHI9dGhpcy5yb3dzW3RdKX0pLHJ9LGdldERhdGFJRHM6ZnVuY3Rpb24oKXt2YXIgZSx0PVtdLHI9MCxpPTA7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2lmKChlPXRoaXMucm93cy5sZW5ndGgpJiYwPGUpZm9yKDtyPGU7KVllKHRoaXMucm93c1tyXSkuaGFzQ2xhc3MoImpxZ3JvdyIpJiYibm9yZWNzIiE9PXRoaXMucm93c1tyXS5pZCYmKHRbaV09dGhpcy5yb3dzW3JdLmlkLGkrKykscisrfSksdH0sc2V0U2VsZWN0aW9uOmZ1bmN0aW9uKHAsYyx1LGgpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZSx0LHIsaSxvLGEsbixsPXRoaXMscz1ZZS5qZ3JpZC5nZXRNZXRob2QoImdldFN0eWxlVUkiKSxkPXMobC5wLnN0eWxlVUkrIi5jb21tb24iLCJoaWdobGlnaHQiLCEwKSxzPXMobC5wLnN0eWxlVUkrIi5jb21tb24iLCJkaXNhYmxlZCIsITApO3ZvaWQgMCE9PXAmJihoPSExIT09KGg9dm9pZCAwPT09aD8hMDpoKSxjPSExIT09Yyx0PVllKGwpLmpxR3JpZCgiZ2V0R3JpZFJvd0J5SWQiLHApKSYmdC5jbGFzc05hbWUmJiEoLTE8dC5jbGFzc05hbWUuaW5kZXhPZihzKSkmJighMD09PWwucC5zY3JvbGxyb3dzJiYwPD0ocz1ZZShsKS5qcUdyaWQoImdldEdyaWRSb3dCeUlkIixwKS5yb3dJbmRleCkmJihzPXMsbz1ZZShsLmdyaWQuYkRpdilbMF0uY2xpZW50SGVpZ2h0LGE9WWUobC5ncmlkLmJEaXYpWzBdLnNjcm9sbFRvcCxuPVllKGwucm93c1tzXSkucG9zaXRpb24oKS50b3Ascz1sLnJvd3Nbc10uY2xpZW50SGVpZ2h0LG8rYTw9bitzP1llKGwuZ3JpZC5iRGl2KVswXS5zY3JvbGxUb3A9bi0obythKStzK2E6bjxvK2EmJm48YSYmKFllKGwuZ3JpZC5iRGl2KVswXS5zY3JvbGxUb3A9bikpLCEwPT09bC5wLmZyb3plbkNvbHVtbnMmJihyPWwucC5pZCsiX2Zyb3plbiIpLCEwPT09bC5wLmZyb3plblJvd3MmJihpPWwucC5pZCsiX2ZyIiksbC5wLm11bHRpc2VsZWN0PyhsLnNldEhlYWRDaGVja0JveCghMSksbC5wLnNlbHJvdz10LmlkLC0xPT09KHM9WWUuaW5BcnJheShsLnAuc2Vscm93LGwucC5zZWxhcnJyb3cpKT8oInVpLXN1YmdyaWQiIT09dC5jbGFzc05hbWUmJlllKHQpLmFkZENsYXNzKGQpLmF0dHIoImFyaWEtc2VsZWN0ZWQiLCJ0cnVlIiksZT0hMCxsLnAuc2VsYXJycm93LnB1c2gobC5wLnNlbHJvdykpOi0xIT09cyYmIl9zcF8iPT09dT8oInVpLXN1YmdyaWQiIT09dC5jbGFzc05hbWUmJlllKHQpLmFkZENsYXNzKGQpLmF0dHIoImFyaWEtc2VsZWN0ZWQiLCJ0cnVlIiksZT0hMCk6KCJ1aS1zdWJncmlkIiE9PXQuY2xhc3NOYW1lJiZZZSh0KS5yZW1vdmVDbGFzcyhkKS5hdHRyKCJhcmlhLXNlbGVjdGVkIiwiZmFsc2UiKSxlPSExLGwucC5zZWxhcnJyb3cuc3BsaWNlKHMsMSksbz1sLnAuc2VsYXJycm93WzBdLGwucC5zZWxyb3c9dm9pZCAwPT09bz9udWxsOm8pLFllKCIjanFnXyIrWWUuamdyaWQuanFJRChsLnAuaWQpKyJfIitZZS5qZ3JpZC5qcUlEKHQuaWQpKVtsLnAudXNlUHJvcD8icHJvcCI6ImF0dHIiXSgiY2hlY2tlZCIsZSksciYmKGgmJigtMT09PXM/WWUoIiMiK1llLmpncmlkLmpxSUQocCksIiMiK1llLmpncmlkLmpxSUQocikpLmFkZENsYXNzKGQpOlllKCIjIitZZS5qZ3JpZC5qcUlEKHApLCIjIitZZS5qZ3JpZC5qcUlEKHIpKS5yZW1vdmVDbGFzcyhkKSksWWUoIiNqcWdfIitZZS5qZ3JpZC5qcUlEKGwucC5pZCkrIl8iK1llLmpncmlkLmpxSUQocCksIiMiK1llLmpncmlkLmpxSUQocikpW2wucC51c2VQcm9wPyJwcm9wIjoiYXR0ciJdKCJjaGVja2VkIixlKSksYyYmKFllKGwpLnRyaWdnZXJIYW5kbGVyKCJqcUdyaWRTZWxlY3RSb3ciLFt0LmlkLGUsdV0pLGwucC5vblNlbGVjdFJvdykmJmwucC5vblNlbGVjdFJvdy5jYWxsKGwsdC5pZCxlLHUpKTooaSYmWWUoIiMiK1llLmpncmlkLmpxSUQobC5wLnNlbHJvdyksIiMiK1llLmpncmlkLmpxSUQoaSkpLnJlbW92ZUNsYXNzKGQpLCJ1aS1zdWJncmlkIiE9PXQuY2xhc3NOYW1lJiYoZT1sLnAuc2Vscm93IT09dC5pZCYmKGgmJigoYT1ZZShsKS5qcUdyaWQoImdldEdyaWRSb3dCeUlkIixsLnAuc2Vscm93KSkmJlllKGEpLnJlbW92ZUNsYXNzKGQpLmF0dHIoeyJhcmlhLXNlbGVjdGVkIjoiZmFsc2UiLHRhYmluZGV4OiItMSJ9KSxZZSh0KS5hZGRDbGFzcyhkKS5hdHRyKHsiYXJpYS1zZWxlY3RlZCI6InRydWUiLHRhYmluZGV4OiIwIn0pLHIpJiYoWWUoIiMiK1llLmpncmlkLmpxSUQobC5wLnNlbHJvdyksIiMiK1llLmpncmlkLmpxSUQocikpLnJlbW92ZUNsYXNzKGQpLFllKCIjIitZZS5qZ3JpZC5qcUlEKHApLCIjIitZZS5qZ3JpZC5qcUlEKHIpKS5hZGRDbGFzcyhkKSksITApLGwucC5zZWxyb3c9dC5pZCxjKSYmKFllKGwpLnRyaWdnZXJIYW5kbGVyKCJqcUdyaWRTZWxlY3RSb3ciLFt0LmlkLGUsdV0pLGwucC5vblNlbGVjdFJvdykmJmwucC5vblNlbGVjdFJvdy5jYWxsKGwsdC5pZCxlLHUpKSl9KX0scmVzZXRTZWxlY3Rpb246ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciByLGUsdCxpPXRoaXMsbz1ZZS5qZ3JpZC5nZXRNZXRob2QoImdldFN0eWxlVUkiKSxhPW8oaS5wLnN0eWxlVUkrIi5jb21tb24iLCJoaWdobGlnaHQiLCEwKSxvPW8oaS5wLnN0eWxlVUkrIi5jb21tb24iLCJob3ZlciIsITApOyEwPT09aS5wLmZyb3plbkNvbHVtbnMmJihyPWkucC5pZCsiX2Zyb3plbiIpLHZvaWQgMCE9PW4/KHQ9bj09PWkucC5zZWxyb3c/aS5wLnNlbHJvdzpuLFllKCIjIitZZS5qZ3JpZC5qcUlEKGkucC5pZCkrIiB0Ym9keSIpLmZpcnN0KCkuZmluZCgidHIjIitZZS5qZ3JpZC5qcUlEKHQpKS5yZW1vdmVDbGFzcyhhKS5hdHRyKCJhcmlhLXNlbGVjdGVkIiwiZmFsc2UiKSxyJiZZZSgiIyIrWWUuamdyaWQuanFJRCh0KSwiIyIrWWUuamdyaWQuanFJRChyKSkucmVtb3ZlQ2xhc3MoYSksaS5wLm11bHRpc2VsZWN0JiYoWWUoIiNqcWdfIitZZS5qZ3JpZC5qcUlEKGkucC5pZCkrIl8iK1llLmpncmlkLmpxSUQodCksIiMiK1llLmpncmlkLmpxSUQoaS5wLmlkKSlbaS5wLnVzZVByb3A/InByb3AiOiJhdHRyIl0oImNoZWNrZWQiLCExKSxyJiZZZSgiI2pxZ18iK1llLmpncmlkLmpxSUQoaS5wLmlkKSsiXyIrWWUuamdyaWQuanFJRCh0KSwiIyIrWWUuamdyaWQuanFJRChyKSlbaS5wLnVzZVByb3A/InByb3AiOiJhdHRyIl0oImNoZWNrZWQiLCExKSxpLnNldEhlYWRDaGVja0JveCghMSksLTEhPT0oZT1ZZS5pbkFycmF5KFllLmpncmlkLmpxSUQodCksaS5wLnNlbGFycnJvdykpKSYmaS5wLnNlbGFycnJvdy5zcGxpY2UoZSwxKSxpLnAub25VblNlbGVjdFJvdyYmaS5wLm9uVW5TZWxlY3RSb3cuY2FsbChpLHQpLHQ9bnVsbCk6aS5wLm11bHRpc2VsZWN0PyhZZShpLnAuc2VsYXJycm93KS5lYWNoKGZ1bmN0aW9uKGUsdCl7WWUoWWUoaSkuanFHcmlkKCJnZXRHcmlkUm93QnlJZCIsdCkpLnJlbW92ZUNsYXNzKGEpLmF0dHIoImFyaWEtc2VsZWN0ZWQiLCJmYWxzZSIpLFllKCIjanFnXyIrWWUuamdyaWQuanFJRChpLnAuaWQpKyJfIitZZS5qZ3JpZC5qcUlEKHQpKVtpLnAudXNlUHJvcD8icHJvcCI6ImF0dHIiXSgiY2hlY2tlZCIsITEpLHImJihZZSgiIyIrWWUuamdyaWQuanFJRCh0KSwiIyIrWWUuamdyaWQuanFJRChyKSkucmVtb3ZlQ2xhc3MoYSksWWUoIiNqcWdfIitZZS5qZ3JpZC5qcUlEKGkucC5pZCkrIl8iK1llLmpncmlkLmpxSUQodCksIiMiK1llLmpncmlkLmpxSUQocikpW2kucC51c2VQcm9wPyJwcm9wIjoiYXR0ciJdKCJjaGVja2VkIiwhMSkpLGkucC5vblVuU2VsZWN0Um93JiZpLnAub25VblNlbGVjdFJvdy5jYWxsKGksdCl9KSxpLnNldEhlYWRDaGVja0JveCghMSksaS5wLnNlbGFycnJvdz1bXSxpLnAuc2Vscm93PW51bGwpOmkucC5zZWxyb3cmJihZZSgiIyIrWWUuamdyaWQuanFJRChpLnAuaWQpKyIgdGJvZHkiKS5maXJzdCgpLmZpbmQoInRyIyIrWWUuamdyaWQuanFJRChpLnAuc2Vscm93KSkucmVtb3ZlQ2xhc3MoYSkuYXR0cigiYXJpYS1zZWxlY3RlZCIsImZhbHNlIiksciYmWWUoIiMiK1llLmpncmlkLmpxSUQoaS5wLnNlbHJvdyksIiMiK1llLmpncmlkLmpxSUQocikpLnJlbW92ZUNsYXNzKGEpLGkucC5vblVuU2VsZWN0Um93JiZpLnAub25VblNlbGVjdFJvdy5jYWxsKGksaS5wLnNlbHJvdyksaS5wLnNlbHJvdz1udWxsKSwhMD09PWkucC5jZWxsRWRpdCYmMDw9cGFyc2VJbnQoaS5wLmlDb2wsMTApJiYwPD1wYXJzZUludChpLnAuaVJvdywxMCkmJihZZSgidGQiLGkucm93c1tpLnAuaVJvd10pLmVxKGkucC5pQ29sKS5yZW1vdmVDbGFzcygiZWRpdC1jZWxsICIrYSksWWUoaS5yb3dzW2kucC5pUm93XSkucmVtb3ZlQ2xhc3MoInNlbGVjdGVkLXJvdyAiK28pKX0pfSxnZXRSb3dEYXRhOmZ1bmN0aW9uKGUsYSxuLGwpe3ZhciBzLGQscD17fSxjPSExLHU9MDtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIHQscixpPXRoaXM7aWYoWWUuamdyaWQuaXNOdWxsKGUpKWM9ITAscz1bXSxkPWkucm93cy5sZW5ndGg7ZWxzZXtpZighKHI9WWUoaSkuanFHcmlkKCJnZXRHcmlkUm93QnlJZCIsZSkpKXJldHVybiBwO2Q9MX1mb3IoYSYmITA9PT1hJiYwPGkucC5kYXRhLmxlbmd0aHx8KGE9ITEpLFllLmpncmlkLmlzTnVsbChuKSYmKG49ITEpLFllLmpncmlkLmlzTnVsbChsKSYmKGw9ITEpO3U8ZDspe2lmKGMmJihyPWkucm93c1t1XSksWWUocikuaGFzQ2xhc3MoImpxZ3JvdyIpJiYibm9yZWNzIiE9PXIuaWQpe2lmKCEwPT09aS5wLnRyZWVHcmlkJiYhMD09PWwmJlllKHIpLmlzKCI6aGlkZGVuIikpe3UrKztjb250aW51ZX1pZihhP3A9WWUuZXh0ZW5kKHt9LGkucC5kYXRhW2kucC5faW5kZXhbWWUuamdyaWQuc3RyaXBQcmVmKGkucC5pZFByZWZpeCxyLmlkKV1dKTpZZShyKS5jaGlsZHJlbigndGRbcm9sZT0iZ3JpZGNlbGwiXScpLmVhY2goZnVuY3Rpb24oZSl7aWYoImNiIiE9PSh0PWkucC5jb2xNb2RlbFtlXS5uYW1lKSYmInN1YmdyaWQiIT09dCYmInJuIiE9PXQmJiJzYyIhPT10KWlmKCEwPT09aS5wLnRyZWVHcmlkJiZ0PT09aS5wLkV4cGFuZENvbHVtbilwW3RdPVllLmpncmlkLmh0bWxEZWNvZGUoWWUodGhpcykuZmluZCgic3BhbiIpLmZpcnN0KCkuaHRtbCgpKTtlbHNlIHRyeXtwW3RdPVllLnVuZm9ybWF0LmNhbGwoaSx0aGlzLHtyb3dJZDpyLmlkLGNvbE1vZGVsOmkucC5jb2xNb2RlbFtlXX0sZSl9Y2F0Y2goZSl7cFt0XT1ZZS5qZ3JpZC5odG1sRGVjb2RlKFllKHRoaXMpLmh0bWwoKSl9fSksITA9PT1pLnAudHJlZUdyaWQmJm4pe3ZhciBvPWkucC50cmVlUmVhZGVyLmxldmVsX2ZpZWxkO24rPSIiO3RyeXtvPXBhcnNlSW50KHBbb10sMTApfWNhdGNoKGUpe289MH1wW2kucC5FeHBhbmRDb2x1bW5dPW4ucmVwZWF0KG8pK3BbaS5wLkV4cGFuZENvbHVtbl19YyYmKHMucHVzaChwKSxwPXt9KX11Kyt9fSksc3x8cH0sZGVsUm93RGF0YTpmdW5jdGlvbihyKXt2YXIgaSxvLGE9ITE7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBlLHQ9dGhpcztpZighKGk9WWUodCkuanFHcmlkKCJnZXRHcmlkUm93QnlJZCIscikpKXJldHVybiExO3I9aS5pZCx0LnAuc3ViR3JpZCYmKG89WWUoaSkubmV4dCgpKS5oYXNDbGFzcygidWktc3ViZ3JpZCIpJiZvLnJlbW92ZSgpLFllKGkpLnJlbW92ZSgpLHQucC5yZWNvcmRzLS0sdC5wLnJlY2NvdW50LS0sdC51cGRhdGVwYWdlcighMCwhMSksYT0hMCx0LnAuZnJvemVuQ29sdW1ucyYmWWUoIiMiK3IsIiMiK1llLmpncmlkLmpxSUQodC5wLmlkKyJfZnJvemVuIikpLnJlbW92ZSgpLHQucC5tdWx0aXNlbGVjdCYmLTEhPT0obz1ZZS5pbkFycmF5KHIsdC5wLnNlbGFycnJvdykpJiZ0LnAuc2VsYXJycm93LnNwbGljZShvLDEpLHQucC5tdWx0aXNlbGVjdCYmMDx0LnAuc2VsYXJycm93Lmxlbmd0aD90LnAuc2Vscm93PXQucC5zZWxhcnJyb3dbdC5wLnNlbGFycnJvdy5sZW5ndGgtMV06dC5wLnNlbHJvdz09PXImJih0LnAuc2Vscm93PW51bGwpLCJsb2NhbCI9PT10LnAuZGF0YXR5cGUmJihlPVllLmpncmlkLnN0cmlwUHJlZih0LnAuaWRQcmVmaXgsciksdm9pZCAwIT09KGU9dC5wLl9pbmRleFtlXSkpJiYodC5wLmRhdGEuc3BsaWNlKGUsMSksdC5yZWZyZXNoSW5kZXgoKSl9KSxhfSxzZXRSb3dEYXRhOmZ1bmN0aW9uKGQscCxjLHUpe3ZhciBoLGc9ITA7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2lmKCF0aGlzLmdyaWQpcmV0dXJuITE7dmFyIHIsZSxpLG89dGhpcyxhPXt9LG49WWUodGhpcykuanFHcmlkKCJnZXRHcmlkUm93QnlJZCIsZCk7aWYoIW4pcmV0dXJuITE7aWYoITA9PT11JiYoZT1ZZShvKS5qcUdyaWQoImdldFJvd0RhdGEiLGQsImxvY2FsIj09PW8ucC5kYXRhdHlwZSkpLHApe3UmJihwPVllLmV4dGVuZChlLHApKTt0cnl7aWYoWWUodGhpcy5wLmNvbE1vZGVsKS5lYWNoKGZ1bmN0aW9uKGUpe2g9dGhpcy5uYW1lO3ZhciB0PVllLmpncmlkLmdldEFjY2Vzc29yKHAsaCk7dm9pZCAwIT09dCYmKGFbaF09dCxyPW8uZm9ybWF0dGVyKGQsYVtoXSxlLHAsImVkaXQiKSxpPXRoaXMudGl0bGU/e3RpdGxlOlllLmpncmlkLnN0cmlwSHRtbChyKX06e30sKCEwPT09by5wLnRyZWVHcmlkJiZoPT09by5wLkV4cGFuZENvbHVtbj9ZZSgidGRbcm9sZT0nZ3JpZGNlbGwnXSIsbikuZXEoZSkuZmluZCgic3BhbltjbGFzcyo9J2NlbGwtd3JhcHBlciddIik6WWUoInRkW3JvbGU9J2dyaWRjZWxsJ10iLG4pLmVxKGUpKS5odG1sKHIpLmF0dHIoaSksby5wLmZyb3plbkNvbHVtbnMpJiZlPD1vLnAuZnJvemVuQ29sQ291bnQmJlllKCIjIitkKyIgdGRbcm9sZT0nZ3JpZGNlbGwnXSIsIiMiK1llLmpncmlkLmpxSUQoby5wLmlkKyJfZnJvemVuIikpLmVxKGUpLmh0bWwocikuYXR0cihpKX0pLCJsb2NhbCI9PT1vLnAuZGF0YXR5cGUpe3ZhciB0LGw9WWUuamdyaWQuc3RyaXBQcmVmKG8ucC5pZFByZWZpeCxkKSxzPW8ucC5faW5kZXhbbF07aWYoby5wLnRyZWVHcmlkKWZvcih0IGluIG8ucC50cmVlUmVhZGVyKW8ucC50cmVlUmVhZGVyLmhhc093blByb3BlcnR5KHQpJiZkZWxldGUgYVtvLnAudHJlZVJlYWRlclt0XV07dm9pZCAwIT09cyYmKG8ucC5kYXRhW3NdPVllLmV4dGVuZCghMCxvLnAuZGF0YVtzXSxhKSksYT1udWxsfX1jYXRjaChlKXtnPSExfX1nJiYoInN0cmluZyI9PXR5cGVvZiBjP1llKG4pLmFkZENsYXNzKGMpOlllLmpncmlkLmlzTnVsbChjKXx8Im9iamVjdCIhPXR5cGVvZiBjfHxZZShuKS5jc3MoYyksWWUobykudHJpZ2dlckhhbmRsZXIoImpxR3JpZEFmdGVyR3JpZENvbXBsZXRlIikpfSksZ30sYWRkUm93RGF0YTpmdW5jdGlvbihuLGwscyxkKXstMT09PVllLmluQXJyYXkocyxbImZpcnN0IiwibGFzdCIsImJlZm9yZSIsImFmdGVyIl0pJiYocz0ibGFzdCIpO3ZhciBwLGMsdSxoLGcsZixtLHYsaixiLHcseSx4PSExLF89IiIscT0iIixDPSIiO3JldHVybiBsJiYoQXJyYXkuaXNBcnJheShsKT8odj0hMCxqPW4pOnY9IShsPVtsXSksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PWwubGVuZ3RoLHI9KGg9ITA9PT1lLnAucm93bnVtYmVycz8xOjAsYz0hMD09PWUucC5tdWx0aXNlbGVjdD8xOjAsdT0hMD09PWUucC5zdWJHcmlkPzE6MCx2fHwodm9pZCAwIT09bj9uPVN0cmluZyhuKToobj1ZZS5qZ3JpZC5yYW5kSWQoKSwhMSE9PWUucC5rZXlOYW1lJiYoaj1lLnAua2V5TmFtZSx2b2lkIDAhPT1sWzBdW2pdKSYmKG49bFswXVtqXSkpKSwwKSxpPVllKGUpLmpxR3JpZCgiZ2V0U3R5bGVVSSIsZS5wLnN0eWxlVUkrIi5iYXNlIiwicm93Qm94IiwhMCwianFncm93IHVpLXJvdy0iK2UucC5kaXJlY3Rpb24pLG89e30sYT0hIVllLmpncmlkLmlzRnVuY3Rpb24oZS5wLmFmdGVySW5zZXJ0Um93KTtmb3IoaCYmKF89WWUoZSkuanFHcmlkKCJnZXRTdHlsZVVJIixlLnAuc3R5bGVVSSsiLmJhc2UiLCJyb3dudW1Cb3giLCExLCJqcWdyaWQtcm93bnVtIikpLGMmJihxPVllKGUpLmpxR3JpZCgiZ2V0U3R5bGVVSSIsZS5wLnN0eWxlVUkrIi5iYXNlIiwibXVsdGlCb3giLCExLCJjYm94IikpO3I8dDspe2lmKGI9bFtyXSxwPVtdLHYpdHJ5e3ZvaWQgMD09PShuPWJbal0pJiYobj1ZZS5qZ3JpZC5yYW5kSWQoKSl9Y2F0Y2goZSl7bj1ZZS5qZ3JpZC5yYW5kSWQoKX1mb3IoeT1uLG49ZS5wLmlkUHJlZml4K24saCYmKEM9ZS5mb3JtYXRDb2woMCwxLCIiLG51bGwsbiwhMCkscFtwLmxlbmd0aF09Jzx0ZCByb2xlPSJncmlkY2VsbCIgJytfKyIgIitDKyI+MDwvdGQ+IiksYyYmKG09JzxpbnB1dCByb2xlPSJjaGVja2JveCIgdHlwZT0iY2hlY2tib3giIGlkPSJqcWdfJytlLnAuaWQrIl8iK24rJyIgJytxKyIvPiIsQz1lLmZvcm1hdENvbChoLDEsIiIsbnVsbCxuLCEwKSxwW3AubGVuZ3RoXT0nPHRkIHJvbGU9ImdyaWRjZWxsIiAnK0MrIj4iK20rIjwvdGQ+IiksdSYmKHBbcC5sZW5ndGhdPVllKGUpLmpxR3JpZCgiYWRkU3ViR3JpZENlbGwiLGMraCwxKSksZj1jK3UraDtmPGUucC5jb2xNb2RlbC5sZW5ndGg7ZisrKXc9ZS5wLmNvbE1vZGVsW2ZdLG9bdz13Lm5hbWVdPWJbd10sbT1lLmZvcm1hdHRlcihuLFllLmpncmlkLmdldEFjY2Vzc29yKGIsdyksZixiKSxDPWUuZm9ybWF0Q29sKGYsMSxtLGIsbixvKSxwW3AubGVuZ3RoXT0nPHRkIHJvbGU9ImdyaWRjZWxsIiAnK0MrIj4iK20rIjwvdGQ+IjtpZihwLnVuc2hpZnQoZS5jb25zdHJ1Y3RUcihuLCExLGksbyxiKSkscFtwLmxlbmd0aF09IjwvdHI+IiwwPT09ZS5yb3dzLmxlbmd0aClZZShlLmdyaWQuYkRpdikuZmluZCgidGFibGUiKS5maXJzdCgpLmFwcGVuZChwLmpvaW4oIiIpKTtlbHNlIHN3aXRjaChzKXtjYXNlImxhc3QiOlllKGUucm93c1tlLnJvd3MubGVuZ3RoLTFdKS5hZnRlcihwLmpvaW4oIiIpKSxnPWUucm93cy5sZW5ndGgtMTticmVhaztjYXNlImZpcnN0IjpZZShlLnJvd3NbMF0pLmFmdGVyKHAuam9pbigiIikpLGc9MTticmVhaztjYXNlImFmdGVyIjooZz1ZZShlKS5qcUdyaWQoImdldEdyaWRSb3dCeUlkIixkKSkmJihZZShlLnJvd3NbZy5yb3dJbmRleCsxXSkuaGFzQ2xhc3MoInVpLXN1YmdyaWQiKT9ZZShlLnJvd3NbZy5yb3dJbmRleCsxXSkuYWZ0ZXIocCk6WWUoZykuYWZ0ZXIocC5qb2luKCIiKSksZz1nLnJvd0luZGV4KzEpO2JyZWFrO2Nhc2UiYmVmb3JlIjooZz1ZZShlKS5qcUdyaWQoImdldEdyaWRSb3dCeUlkIixkKSkmJihZZShnKS5iZWZvcmUocC5qb2luKCIiKSksZz1nLnJvd0luZGV4LTEpfWlmKCEwPT09ZS5wLnN1YkdyaWQmJlllKGUpLmpxR3JpZCgiYWRkU3ViR3JpZCIsYytoLGcpLGUucC5yZWNvcmRzKyssZS5wLnJlY2NvdW50KyssWWUoZSkudHJpZ2dlckhhbmRsZXIoImpxR3JpZEFmdGVySW5zZXJ0Um93IixbbixiLGJdKSxhJiZlLnAuYWZ0ZXJJbnNlcnRSb3cuY2FsbChlLG4sYixiKSxyKyssImxvY2FsIj09PWUucC5kYXRhdHlwZSlzd2l0Y2gob1tlLnAubG9jYWxSZWFkZXIuaWRdPXkscyl7Y2FzZSJmaXJzdCI6ZS5wLmRhdGEudW5zaGlmdChvKTticmVhaztjYXNlImxhc3QiOmUucC5kYXRhLnB1c2gobyk7YnJlYWs7Y2FzZSJiZWZvcmUiOmNhc2UiYWZ0ZXIiOmUucC5kYXRhLnNwbGljZShnLTEsMCxvKX1vPXt9LDE9PT1lLnAucmVjY291bnQmJihnPVllKGUpLmpxR3JpZCgiZ2V0R3JpZFJvd0J5SWQiLCJub3JlY3MiKSkmJmcucm93SW5kZXgmJjA8Zy5yb3dJbmRleCYmWWUoZS5yb3dzW2cucm93SW5kZXhdKS5yZW1vdmUoKX0ibG9jYWwiPT09ZS5wLmRhdGF0eXBlJiZlLnJlZnJlc2hJbmRleCgpLGUudXBkYXRlcGFnZXIoITAsITApLHg9ITB9KSkseH0sZm9vdGVyRGF0YTpmdW5jdGlvbihuLGwscyxkLHApe3ZhciBjLHU9ITEsaD17fTtmdW5jdGlvbiBnKGUpe2Zvcih2YXIgdCBpbiBlKWlmKGUuaGFzT3duUHJvcGVydHkodCkpcmV0dXJuO3JldHVybiAxfXJldHVybiJib29sZWFuIiE9dHlwZW9mIHMmJihzPSEwKSx2b2lkIDA9PT1kJiYoZD0wKSx2b2lkIDA9PT1wJiYocD0hMCksbj0obj12b2lkIDA9PT1uPyJnZXQiOm4pLnRvTG93ZXJDYXNlKCksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIHQscixlLGk9dGhpcyxvPXRoaXMucC5jb2xNb2RlbC5sZW5ndGgsYT0hMTtyZXR1cm4hKCFpLmdyaWR8fCFpLnAuZm9vdGVycm93fHwic2V0Ij09PW4mJmcobCkpJiYoImdldGxlbmd0aCI9PT1uPyhlPVllKCIudWktanFncmlkLWZ0YWJsZSB0ciIsaS5ncmlkLnNEaXYpLmxlbmd0aCxoPWV8fDAsITEpOihpLnAuZnJvemVuQ29sdW1ucyYmImdldCIhPT1uJiZwJiYoWWUoaSkuanFHcmlkKCJkZXN0cm95RnJvemVuQ29sdW1ucyIpLGE9ITApLHU9ITAsImFkZHJvdyI9PT1uJiYoZT1ZZSgiLnVpLWpxZ3JpZC1mdGFibGUgdHIiLGkuZ3JpZC5zRGl2KS5lcSgwKS5jbG9uZSgpLFllKCJ0ZCIsZSkuaHRtbCgiJm5ic3A7IiksWWUoIi51aS1qcWdyaWQtZnRhYmxlIixpLmdyaWQuc0RpdikuYXBwZW5kKGUpLGcobCl8fChuPSJzZXQiLGQ9WWUoIi51aS1qcWdyaWQtc3RhYmxlIHRyIixpLmdyaWQuc0RpdikubGVuZ3RoLTEpKSwiZGVscm93Ij09PW4mJjA8KGQ9dm9pZCAwPT09ZD9ZZSgiLnVpLWpxZ3JpZC1zdGFibGUgdHIiLGkuZ3JpZC5zRGl2KS5sZW5ndGgtMTpkKSYmWWUoIi51aS1qcWdyaWQtZnRhYmxlIHRyIixpLmdyaWQuc0RpdikuZXEoZCkucmVtb3ZlKCksbyo9cGFyc2VJbnQoZCwxMCksImdldCIhPT1uJiYic2V0IiE9PW58fFllKHRoaXMucC5jb2xNb2RlbCkuZWFjaChmdW5jdGlvbihlKXtjPXRoaXMubmFtZSwic2V0Ij09PW4/dm9pZCAwIT09bFtjXSYmKHQ9cz9pLmZvcm1hdHRlcigiIixsW2NdLGUsbCwiZWRpdCIpOmxbY10scj10aGlzLnRpdGxlP3t0aXRsZTpZZS5qZ3JpZC5zdHJpcEh0bWwodCl9Ont9LFllKCJ0ci5mb290cm93IHRkIixpLmdyaWQuc0RpdikuZXEoZStvKS5odG1sKHQpLmF0dHIociksdT0hMCk6ImdldCI9PT1uJiYoaFtjXT1ZZSgidHIuZm9vdHJvdyB0ZCIsaS5ncmlkLnNEaXYpLmVxKGUrbykuaHRtbCgpKX0pLCJyZW1vdmUiPT09biYmKFllKGkuZ3JpZC5zRGl2KS5yZW1vdmUoKSxpLmdyaWQuc0Rpdj1udWxsLGkucC5mb290ZXJyb3c9ITEpLHZvaWQoYSYmWWUoaSkuanFHcmlkKCJzZXRGcm96ZW5Db2x1bW5zIikpKSl9KSwiZ2V0Ij09PW58fCJnZXRsZW5ndGgiPT09bj9oOnV9LGhlYWRlckRhdGE6ZnVuY3Rpb24obixsLHMsZCxwKXt2YXIgYyx1PSExLGg9e307ZnVuY3Rpb24gZyhlKXtmb3IodmFyIHQgaW4gZSlpZihlLmhhc093blByb3BlcnR5KHQpKXJldHVybjtyZXR1cm4gMX1yZXR1cm4iYm9vbGVhbiIhPXR5cGVvZiBzJiYocz0hMCksdm9pZCAwPT09ZCYmKGQ9MCksdm9pZCAwPT09cCYmKHA9ITApLG49KG49dm9pZCAwPT09bj8iZ2V0IjpuKS50b0xvd2VyQ2FzZSgpLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciB0LHIsZSxpPXRoaXMsbz10aGlzLnAuY29sTW9kZWwubGVuZ3RoLGE9ITE7cmV0dXJuISghaS5ncmlkfHwhaS5wLmhlYWRlcnJvd3x8InNldCI9PT1uJiZnKGwpKSYmKCJnZXRsZW5ndGgiPT09bj8oZT1ZZSgiLnVpLWpxZ3JpZC1ocnRhYmxlIHRyIixpLmdyaWQuaHJEaXYpLmxlbmd0aCxoPWV8fDAsITApOihpLnAuZnJvemVuQ29sdW1ucyYmImdldCIhPT1uJiZwJiYoWWUoaSkuanFHcmlkKCJkZXN0cm95RnJvemVuQ29sdW1ucyIpLGE9ITApLHU9ITAsImFkZHJvdyI9PT1uJiYoZT1ZZSgiLnVpLWpxZ3JpZC1ocnRhYmxlIHRyIixpLmdyaWQuaHJEaXYpLmVxKDApLmNsb25lKCksWWUoInRkIixlKS5odG1sKCImbmJzcDsiKSxZZSgiLnVpLWpxZ3JpZC1ocnRhYmxlIixpLmdyaWQuaHJEaXYpLmFwcGVuZChlKSxnKGwpfHwobj0ic2V0IixkPVllKCIudWktanFncmlkLWhydGFibGUgdHIiLGkuZ3JpZC5ockRpdikubGVuZ3RoLTEpKSwiZGVscm93Ij09PW4mJjA8KGQ9dm9pZCAwPT09ZD9ZZSgiLnVpLWpxZ3JpZC1ocnRhYmxlIHRyIixpLmdyaWQuaHJEaXYpLmxlbmd0aC0xOmQpJiZZZSgiLnVpLWpxZ3JpZC1ocnRhYmxlIHRyIixpLmdyaWQuaHJEaXYpLmVxKGQpLnJlbW92ZSgpLG8qPXBhcnNlSW50KGQsMTApLCJnZXQiIT09biYmInNldCIhPT1ufHxZZSh0aGlzLnAuY29sTW9kZWwpLmVhY2goZnVuY3Rpb24oZSl7Yz10aGlzLm5hbWUsInNldCI9PT1uP3ZvaWQgMCE9PWxbY10mJih0PXM/aS5mb3JtYXR0ZXIoIiIsbFtjXSxlLGwsImVkaXQiKTpsW2NdLHI9dGhpcy50aXRsZT97dGl0bGU6WWUuamdyaWQuc3RyaXBIdG1sKHQpfTp7fSxZZSgidHIuaHJoZWFkcm93IHRkIixpLmdyaWQuaHJEaXYpLmVxKGUrbykuaHRtbCh0KS5hdHRyKHIpLHU9ITApOiJnZXQiPT09biYmKGhbY109WWUoInRyLmhyaGVhZHJvdyB0ZCIsaS5ncmlkLmhyRGl2KS5lcShlK28pLmh0bWwoKSl9KSwicmVtb3ZlIj09PW4mJihZZShpLmdyaWQuaHJEaXYpLnJlbW92ZSgpLGkuZ3JpZC5ockRpdj1udWxsLGkucC5oZWFkZXJyb3c9ITEpLHZvaWQoYSYmWWUoaSkuanFHcmlkKCJzZXRGcm96ZW5Db2x1bW5zIikpKSl9KSwiZ2V0Ij09PW58fCJnZXRsZW5ndGgiPT09bj9oOnV9LHNob3dIaWRlQ29sOmZ1bmN0aW9uKGQscCl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciB0LHI9dGhpcyxpPSExLG89WWUuamdyaWQuY2VsbF93aWR0aD8wOnIucC5jZWxsTGF5b3V0LGU9ITE7aWYoci5ncmlkKXsic3RyaW5nIj09dHlwZW9mIGQmJihkPVtkXSk7dmFyIGE9IiI9PT0ocD0ibm9uZSIhPT1wPyIiOiJub25lIiksbj1udWxsLGw9WWUocikuanFHcmlkKCJpc0dyb3VwSGVhZGVyT24iKTtpZihyLnAuZnJvemVuQ29sdW1ucyYmKFllKHIpLmpxR3JpZCgiZGVzdHJveUZyb3plbkNvbHVtbnMiKSxlPSEwKSxsJiYoWWUocikuanFHcmlkKCJkZXN0cm95R3JvdXBIZWFkZXIiLCExKSxuPVllLmV4dGVuZChbXSxyLnAuZ3JvdXBIZWFkZXIpLHIucC5ncm91cEhlYWRlcj1udWxsKSxyLnAuY29sU3BhbkhlYWRlci5sZW5ndGgmJlllKHIpLmpxR3JpZCgiZGVzdHJveUNvbFNwYW5IZWFkZXIiLCExKSxZZSh0aGlzLnAuY29sTW9kZWwpLmVhY2goZnVuY3Rpb24oZSl7LTEhPT1ZZS5pbkFycmF5KHRoaXMubmFtZSxkKSYmdGhpcy5oaWRkZW49PT1hJiYoWWUoInRyW3JvbGU9cm93XSIsci5ncmlkLmhEaXYpLmVhY2goZnVuY3Rpb24oKXtZZSh0aGlzLmNlbGxzW2VdKS5jc3MoImRpc3BsYXkiLHApfSksWWUoci5yb3dzKS5lYWNoKGZ1bmN0aW9uKCl7WWUodGhpcykuaGFzQ2xhc3MoImpxZ3JvdXAiKXx8WWUodGhpcy5jZWxsc1tlXSkuY3NzKCJkaXNwbGF5IixwKX0pLHIucC5mb290ZXJyb3cmJlllKCJ0ci5mb290cm93IHRkIixyLmdyaWQuc0RpdikuZXEoZSkuY3NzKCJkaXNwbGF5IixwKSxyLnAuaGVhZGVycm93JiZZZSgidHIuaHJoZWFkcm93IHRkIixyLmdyaWQuaHJEaXYpLmVxKGUpLmNzcygiZGlzcGxheSIscCksdD1wYXJzZUludCh0aGlzLndpZHRoLDEwKSwibm9uZSI9PT1wP3IucC50Ymx3aWR0aC09dCtvOnIucC50Ymx3aWR0aCs9dCtvLHRoaXMuaGlkZGVuPSFhLGk9ITAsWWUocikudHJpZ2dlckhhbmRsZXIoImpxR3JpZFNob3dIaWRlQ29sIixbYSx0aGlzLm5hbWUsZV0pKX0pLCEwPT09aSYmKCEwIT09ci5wLnNocmlua1RvRml0fHxpc05hTihyLnAuaGVpZ2h0KXx8KHIucC50Ymx3aWR0aCs9cGFyc2VJbnQoci5wLnNjcm9sbE9mZnNldCwxMCkpLFllKHIpLmpxR3JpZCgic2V0R3JpZFdpZHRoIiwhMD09PXIucC5zaHJpbmtUb0ZpdD9yLnAudGJsd2lkdGgtKGlzTmFOKHIucC5oZWlnaHQpPzA6cGFyc2VJbnQoci5wLnNjcm9sbE9mZnNldCwxMCkpOnIucC53aWR0aCkpLGwmJm4pZm9yKHZhciBzPTA7czxuLmxlbmd0aDtzKyspWWUocikuanFHcmlkKCJzZXRHcm91cEhlYWRlcnMiLG5bc10pO3IucC5jb2xTcGFuSGVhZGVyLmxlbmd0aCYmWWUocikuanFHcmlkKCJzZXRDb2xTcGFuSGVhZGVyIixyLnAuY29sU3BhbkhlYWRlciksZSYmWWUocikuanFHcmlkKCJzZXRGcm96ZW5Db2x1bW5zIil9fSl9LGhpZGVDb2w6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe1llKHRoaXMpLmpxR3JpZCgic2hvd0hpZGVDb2wiLGUsIm5vbmUiKX0pfSxzaG93Q29sOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtZZSh0aGlzKS5qcUdyaWQoInNob3dIaWRlQ29sIixlLCIiKX0pfSxoaWRlU2VhcmNoQ29sOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5wLl9hdmMuaW5kZXhPZih0KTstMTxlJiYodGhpcy5wLl9hdmMuc3BsaWNlKGUsMSksdGhpcy5wLl9mdGhjLnB1c2godCksWWUodGhpcykuanFHcmlkKCJzaG93SGlkZUNvbCIsdCwibm9uZSIpKX1jYXRjaChlKXt9fSl9LHNob3dTZWFyY2hDb2w6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLnAuX2Z0aGMuaW5kZXhPZih0KTstMTxlJiYodGhpcy5wLl9mdGhjLnNwbGljZShlLDEpLHRoaXMucC5fYXZjLnB1c2godCksWWUodGhpcykuanFHcmlkKCJzaG93SGlkZUNvbCIsdCwiIikpfWNhdGNoKGUpe319KX0scmVtYXBDb2x1bW5zOmZ1bmN0aW9uKGksZSx0KXtmdW5jdGlvbiByKHQpe3ZhciByPXQubGVuZ3RoP1llLm1ha2VBcnJheSh0KTpZZS5leHRlbmQoe30sdCk7WWUuZWFjaChpLGZ1bmN0aW9uKGUpe3RbZV09clt0aGlzXX0pfXZhciBvPXRoaXMuZ2V0KDApO2Z1bmN0aW9uIGEoZSx0KXtZZSgiPnRyIisodHx8IiIpLGUpLmVhY2goZnVuY3Rpb24oKXt2YXIgdD10aGlzLHI9WWUubWFrZUFycmF5KHQuY2VsbHMpO1llLmVhY2goaSxmdW5jdGlvbigpe3ZhciBlPXJbdGhpc107ZSYmdC5hcHBlbmRDaGlsZChlKX0pfSl9cihvLnAuY29sTW9kZWwpLHIoby5wLmNvbE5hbWVzKSxyKG8uZ3JpZC5oZWFkZXJzKSxhKFllKG8uZ3JpZC5oRGl2KS5maW5kKCJ0aGVhZCIpLmZpcnN0KCksdCYmIjpub3QoLnVpLWpxZ3JpZC1sYWJlbHMpIiksZSYmYShZZSgiIyIrWWUuamdyaWQuanFJRChvLnAuaWQpKyIgdGJvZHkiKS5maXJzdCgpLCIuanFnZmlyc3Ryb3csIHRyLmpxZ3JvdywgdHIuanFmb290LCB0ci5qcWdyb3VwIiksby5wLmZvb3RlcnJvdyYmYShZZShvLmdyaWQuc0RpdikuZmluZCgidGJvZHkiKS5maXJzdCgpKSxvLnAuaGVhZGVycm93JiZhKFllKG8uZ3JpZC5ockRpdikuZmluZCgidGJvZHkiKS5maXJzdCgpKSxvLnAucmVtYXBDb2x1bW5zJiYoby5wLnJlbWFwQ29sdW1ucy5sZW5ndGg/cihvLnAucmVtYXBDb2x1bW5zKTpvLnAucmVtYXBDb2x1bW5zPVllLm1ha2VBcnJheShpKSksby5wLmxhc3Rzb3J0PVllLmluQXJyYXkoby5wLmxhc3Rzb3J0LGkpLG8ucC50cmVlR3JpZCYmKG8ucC5leHBDb2xJbmQ9WWUuaW5BcnJheShvLnAuZXhwQ29sSW5kLGkpKSxZZShvKS50cmlnZ2VySGFuZGxlcigianFHcmlkUmVtYXBDb2x1bW5zIixbaSxlLHRdKX0sc2V0R3JpZFdpZHRoOmZ1bmN0aW9uKHYsaixiKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7aWYodGhpcy5ncmlkKXt2YXIgZSx0LHI9dGhpcyxpPSExLG89MCxhPVllLmpncmlkLmNlbGxfd2lkdGg/MDpyLnAuY2VsbExheW91dCxuPTAsbD0hMSxzPXIucC5zY3JvbGxPZmZzZXQsZD0wLHA9LTE9PT1yLnAuc3R5bGVVSS5zZWFyY2goIkJvb3RzdHJhcCIpfHxpc05hTihyLnAuaGVpZ2h0KT8wOjI7aWYoImJvb2xlYW4iIT10eXBlb2YgaiYmKGo9ci5wLnNocmlua1RvRml0KSwiYm9vbGVhbiIhPXR5cGVvZiBiJiYoYj0hMCksIWlzTmFOKHYpKXtpZih2PXBhcnNlSW50KHYsMTApLHIuZ3JpZC53aWR0aD1yLnAud2lkdGg9dixZZSgiI2dib3hfIitZZS5qZ3JpZC5qcUlEKHIucC5pZCkpLmNzcygid2lkdGgiLHYrInB4IiksWWUoIiNndmlld18iK1llLmpncmlkLmpxSUQoci5wLmlkKSkuY3NzKCJ3aWR0aCIsdisicHgiKSxZZShyLmdyaWQuYkRpdikuY3NzKCJ3aWR0aCIsdi1wKyJweCIpLFllKHIuZ3JpZC5oRGl2KS5jc3MoIndpZHRoIix2LXArInB4Iiksci5wLnBhZ2VyJiZZZShyLnAucGFnZXIpLmNzcygid2lkdGgiLHYtcCsicHgiKSxyLnAudG9wcGFnZXImJlllKHIucC50b3BwYWdlcikuY3NzKCJ3aWR0aCIsdi1wKyJweCIpLCEwPT09ci5wLnRvb2xiYXJbMF0mJihZZShyLmdyaWQudURpdikuY3NzKCJ3aWR0aCIsdi1wKyJweCIpLCJib3RoIj09PXIucC50b29sYmFyWzFdKSYmWWUoci5ncmlkLnViRGl2KS5jc3MoIndpZHRoIix2LXArInB4Iiksci5wLmZvb3RlcnJvdyYmWWUoci5ncmlkLnNEaXYpLmNzcygid2lkdGgiLHYtcCsicHgiKSxyLnAuaGVhZGVycm93JiZZZShyLmdyaWQuaHJEaXYpLmNzcygid2lkdGgiLHYtcCsicHgiKSwoZT1ZZShyKS5qcUdyaWQoImlzR3JvdXBIZWFkZXJPbiIpKSYmWWUocikuanFHcmlkKCJkZXN0cm95R3JvdXBIZWFkZXIiLCExKSxyLnAuZnJvemVuQ29sdW1ucyYmYiYmKFllKHIpLmpxR3JpZCgiZGVzdHJveUZyb3plbkNvbHVtbnMiKSxpPSEwKSwhMT09PWomJiEwPT09ci5wLmZvcmNlRml0JiYoci5wLmZvcmNlRml0PSExKSwhMD09PWope2lmKFllLmVhY2goci5wLmNvbE1vZGVsLGZ1bmN0aW9uKCl7ITE9PT10aGlzLmhpZGRlbiYmKGc9dGhpcy53aWR0aE9yZyxvKz1nK2EsdGhpcy5maXhlZD9kKz1nK2E6bisrKX0pLDA9PT1uKXJldHVybjtyLnAudGJsd2lkdGg9bzt2YXIgYz12LWEqbi1kLHU9WWUoIiNub3JlY3MiLCIjIitZZS5qZ3JpZC5qcUlEKHIucC5pZCkpLmVxKDApLGg9KGlzTmFOKHIucC5oZWlnaHQpfHwoWWUoci5ncmlkLmJEaXYpWzBdLmNsaWVudEhlaWdodDw9WWUoci5ncmlkLmJEaXYpWzBdLnNjcm9sbEhlaWdodHx8ci5yb3dzLmxlbmd0aD09PXUubGVuZ3RoKzF8fCJzY3JvbGwiPT09WWUoci5ncmlkLmJEaXYpLmNzcygib3ZlcmZsb3cteSIpKSYmKGw9ITAsYy09cyksKG89MCk8ci5ncmlkLmNvbHMubGVuZ3RoKTtpZihZZS5lYWNoKHIucC5jb2xNb2RlbCxmdW5jdGlvbihlKXshMSE9PXRoaXMuaGlkZGVufHx0aGlzLmZpeGVkfHwoZz10aGlzLndpZHRoT3JnLChnPU1hdGgucm91bmQoYypnLyhyLnAudGJsd2lkdGgtYSpuLWQpKSk8MCl8fCh0aGlzLndpZHRoPWcsbys9ZyxyLmdyaWQuaGVhZGVyc1tlXS53aWR0aD1nLHIuZ3JpZC5oZWFkZXJzW2VdLmVsLnN0eWxlLndpZHRoPWcrInB4IixyLnAuZm9vdGVycm93JiYoci5ncmlkLmZvb3RlcnNbZV0uc3R5bGUud2lkdGg9ZysicHgiKSxyLnAuaGVhZGVycm93JiYoci5ncmlkLmhyaGVhZGVyc1tlXS5zdHlsZS53aWR0aD1nKyJweCIpLGgmJihyLmdyaWQuY29sc1tlXS5zdHlsZS53aWR0aD1nKyJweCIpLHQ9ZSl9KSwhdClyZXR1cm47dT0wLGw/di1kLShvK2EqbikhPT1zJiYodT12LWQtKG8rYSpuKS1zKTowIT09TWF0aC5hYnModi1kLShvK2EqbikpJiYodT12LWQtKG8rYSpuKS1wKSxyLnAuY29sTW9kZWxbdF0ud2lkdGgrPXUsci5wLnRibHdpZHRoPW8rdSthKm4rZCxyLnAudGJsd2lkdGg+dj8obD1yLnAudGJsd2lkdGgtcGFyc2VJbnQodiwxMCksci5wLnRibHdpZHRoPXYsZz1yLnAuY29sTW9kZWxbdF0ud2lkdGg9ci5wLmNvbE1vZGVsW3RdLndpZHRoLWwpOnIucC50Ymx3aWR0aD09PXY/KGc9ci5wLmNvbE1vZGVsW3RdLndpZHRoPXIucC5jb2xNb2RlbFt0XS53aWR0aC1wLHIucC50Ymx3aWR0aD12LXApOmc9ci5wLmNvbE1vZGVsW3RdLndpZHRoO3ZhciBzPVllKHIuZ3JpZC5iRGl2KVswXS5zY3JvbGxXaWR0aD5ZZShyLmdyaWQuYkRpdikud2lkdGgoKSYmMCE9cD8tMTowLGc9ci5wLmNvbE1vZGVsW3RdLndpZHRoKz1zO3IuZ3JpZC5oZWFkZXJzW3RdLndpZHRoPWcsci5ncmlkLmhlYWRlcnNbdF0uZWwuc3R5bGUud2lkdGg9ZysicHgiLGgmJihyLmdyaWQuY29sc1t0XS5zdHlsZS53aWR0aD1nKyJweCIpLHIucC5mb290ZXJyb3cmJihyLmdyaWQuZm9vdGVyc1t0XS5zdHlsZS53aWR0aD1nKyJweCIpLHIucC5oZWFkZXJyb3cmJihyLmdyaWQuaHJoZWFkZXJzW3RdLnN0eWxlLndpZHRoPWcrInB4Iil9aWYoWWUoci5ncmlkLmJEaXYpLmZpbmQoInRhYmxlIikuZmlyc3QoKS5jc3MoIndpZHRoIixyLnAudGJsd2lkdGgrInB4IiksWWUoci5ncmlkLmhEaXYpLmZpbmQoInRhYmxlIikuZmlyc3QoKS5jc3MoIndpZHRoIixyLnAudGJsd2lkdGgrInB4Iiksci5ncmlkLmhEaXYuc2Nyb2xsTGVmdD1yLmdyaWQuYkRpdi5zY3JvbGxMZWZ0LHIucC5mb290ZXJyb3cmJlllKHIuZ3JpZC5zRGl2KS5maW5kKCJ0YWJsZSIpLmZpcnN0KCkuY3NzKCJ3aWR0aCIsci5wLnRibHdpZHRoKyJweCIpLHIucC5oZWFkZXJyb3cmJlllKHIuZ3JpZC5ockRpdikuZmluZCgidGFibGUiKS5maXJzdCgpLmNzcygid2lkdGgiLHIucC50Ymx3aWR0aCsicHgiKSxlKXt2YXIgZj1ZZS5leHRlbmQoW10sci5wLmdyb3VwSGVhZGVyKTtyLnAuZ3JvdXBIZWFkZXI9bnVsbDtmb3IodmFyIG09MDttPGYubGVuZ3RoO20rKylZZShyKS5qcUdyaWQoInNldEdyb3VwSGVhZGVycyIsZlttXSk7ci5ncmlkLmhEaXYuc2Nyb2xsTGVmdD1yLmdyaWQuYkRpdi5zY3JvbGxMZWZ0fWkmJlllKHIpLmpxR3JpZCgic2V0RnJvemVuQ29sdW1ucyIpfX19KX0sc2V0R3JpZEhlaWdodDpmdW5jdGlvbihvLGEsbil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBlLHQscixpPXRoaXM7aS5ncmlkJiYoZT1ZZShpLmdyaWQuYkRpdiksdD1ZZShpLmdyaWQuaERpdikub3V0ZXJIZWlnaHQoKSwiYm9vbGVhbiIhPXR5cGVvZiBuJiYobj0hMCksIShyPSExKT09PShhPSJib29sZWFuIiE9dHlwZW9mIGE/ITE6YSkmJihpLnAucGFnZXImJih0Kz1ZZShpLnAucGFnZXIpLm91dGVySGVpZ2h0KCkpLGkucC50b3BwYWdlciYmKHQrPVllKGkucC50b3BwYWdlcikub3V0ZXJIZWlnaHQoKSksITA9PT1pLnAudG9vbGJhclswXSYmKHQrPVllKGkuZ3JpZC51RGl2KS5vdXRlckhlaWdodCgpLCJib3RoIj09PWkucC50b29sYmFyWzFdKSYmKHQrPVllKGkuZ3JpZC51YkRpdikub3V0ZXJIZWlnaHQoKSksaS5wLmZvb3RlcnJvdyYmKHQrPVllKGkuZ3JpZC5zRGl2KS5vdXRlckhlaWdodCgpKSxpLnAuaGVhZGVycm93JiYodCs9WWUoaS5ncmlkLmhyRGl2KS5vdXRlckhlaWdodCgpKSxpLnAuY2FwdGlvbiYmKHQrPVllKGkuZ3JpZC5jRGl2KS5vdXRlckhlaWdodCgpKSx0PG8pJiYoby09dCksaS5wLmZyb3plbkNvbHVtbnMmJm4mJihZZShpKS5qcUdyaWQoImRlc3Ryb3lGcm96ZW5Db2x1bW5zIikscj0hMCksZS5jc3Moe2hlaWdodDpvKyhpc05hTihvKT8iIjoicHgiKX0pLGkucC5oZWlnaHQ9byxyJiZZZShpKS5qcUdyaWQoInNldEZyb3plbkNvbHVtbnMiKSxpLnAuc2Nyb2xsKSYmaS5ncmlkLnBvcHVsYXRlVmlzaWJsZSgpfSl9LG1heEdyaWRIZWlnaHQ6ZnVuY3Rpb24oaSxvLGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZSx0LHI9dGhpcztyLmdyaWQmJih2b2lkIDA9PT1hJiYoYT0yNSksZT1ZZShyLmdyaWQuYkRpdiksInNldCIhPT1pfHxpc05hTihvKT8icmVtb3ZlIj09PWkmJih0PVsiMTAwJSIsImF1dG8iXS5pbmNsdWRlcyhyLnAuaGVpZ2h0KSYmWWUoci5ncmlkLmJEaXYpLmhlaWdodCgpPFllKHIpLmhlaWdodCgpLGUuY3NzKCJtYXgtaGVpZ2h0IiwiIiksdCkmJlllKCIjIitZZS5qZ3JpZC5qcUlEKHIucC5pZCkpLmpxR3JpZCgic2V0R3JpZFdpZHRoIixyLnAud2lkdGgtci5wLnNjcm9sbE9mZnNldCsyLCExLCExKToobz1wYXJzZUZsb2F0KG8pKT5wYXJzZUZsb2F0KGEpJiYoZS5jc3MoIm1heC1oZWlnaHQiLG8pLFsiMTAwJSIsImF1dG8iXS5pbmNsdWRlcyhyLnAuaGVpZ2h0KSkmJlllKHIuZ3JpZC5iRGl2KS5oZWlnaHQoKTxZZShyKS5oZWlnaHQoKSYmWWUoIiMiK1llLmpncmlkLmpxSUQoci5wLmlkKSkuanFHcmlkKCJzZXRHcmlkV2lkdGgiLHIucC53aWR0aCtyLnAuc2Nyb2xsT2Zmc2V0LTIsITEsITEpKX0pfSxzZXRDYXB0aW9uOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZT1ZZSh0aGlzKS5qcUdyaWQoImdldFN0eWxlVUkiLHRoaXMucC5zdHlsZVVJKyIuY29tbW9uIiwiY29ybmVydG9wIiwhMCk7dGhpcy5wLmNhcHRpb249dCxZZSgiLnVpLWpxZ3JpZC10aXRsZSwgLnVpLWpxZ3JpZC10aXRsZS1ydGwiLHRoaXMuZ3JpZC5jRGl2KS5odG1sKHQpLFllKHRoaXMuZ3JpZC5jRGl2KS5zaG93KCksWWUodGhpcy5ncmlkLmhEaXYpLnJlbW92ZUNsYXNzKGUpfSl9LHNldExhYmVsOmZ1bmN0aW9uKGEsbixsLHMpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9LTE7aWYoZS5ncmlkJiYhWWUuamdyaWQuaXNOdWxsKGEpJiYwPD0odD1pc05hTihhKT9ZZS5qZ3JpZC5nZXRFbGVtQnlBdHRyVmFsKGUucC5jb2xNb2RlbCwibmFtZSIsYSwhMCk6cGFyc2VJbnQoYSwxMCkpKXt2YXIgcj1ZZSgidHIudWktanFncmlkLWxhYmVscyB0aCIsZS5ncmlkLmhEaXYpLmVxKHQpO2lmKG4pe3ZhciBpPVllKCIucy1pY28iLHIpLG89WWUoIi5jb2xtZW51IixyKTt0cnl7WWUoIltpZF49anFnaF9dIixyKS5lbXB0eSgpLmh0bWwobikuYXBwZW5kKGkpLmFwcGVuZChvKX1jYXRjaChlKXt9ZS5wLmNvbE5hbWVzW3RdPW4sZS5wLmZyb3plbkNvbHVtbnMmJihyPVllKCJ0ci51aS1qcWdyaWQtbGFiZWxzIHRoIixlLmdyaWQuZmhEaXYpLmVxKHQpLGk9WWUoIi5zLWljbyIsciksWWUoIltpZF49anFnaF9dIixyKS5lbXB0eSgpLmh0bWwobikuYXBwZW5kKGkpKX1sJiYoInN0cmluZyI9PXR5cGVvZiBsP1llKHIpLmFkZENsYXNzKGwpOlllKHIpLmNzcyhsKSksIm9iamVjdCI9PXR5cGVvZiBzJiZZZShyKS5hdHRyKHMpO289ZS5wLmNvbE1vZGVsW3RdO28uYXV0b3NpemVfaGVhZGVycyYmKGk9WWUuamdyaWQuZ2V0Rm9udChyWzBdKSxvLmNhbnZhc193aWR0aD1ZZS5qZ3JpZC5nZXRUZXh0V2lkdGgoWWUoImRpdiIscilbMF0ub3V0ZXJUZXh0LGkpKyhvLmNvbG1lbnU/WWUuamdyaWQuZmxvYXROdW0oWWUoIi5jb2xtZW51c3BhbiIscikucGFyZW50KCkud2lkdGgoKSk6MCkrWWUuamdyaWQuZmxvYXROdW0oWWUoImRpdiIscikuY3NzKCJwYWRkaW5nLWxlZnQiKSkrWWUuamdyaWQuZmxvYXROdW0oWWUoImRpdiIscikuY3NzKCJwYWRkaW5nLXJpZ2h0IikpK1llLmpncmlkLmZsb2F0TnVtKFllKCIudWktanFncmlkLXJlc2l6ZSIscikud2lkdGgoKSkpfX0pfSxzZXRTb3J0SWNvbjpmdW5jdGlvbihsLHMpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZSx0LHIsaT10aGlzLG89LTEsYT0xO2lmKGkuZ3JpZCl7WWUuamdyaWQuaXNOdWxsKHMpP2E9aS5wLmNvbE5hbWVzLmxlbmd0aDpvPWlzTmFOKHMpP1llLmpncmlkLmdldEVsZW1CeUF0dHJWYWwoaS5wLmNvbE1vZGVsLCJuYW1lIixzLCEwKTpwYXJzZUludChzLDEwKTtmb3IodmFyIG49MDtuPGE7bisrKTA8PW8mJihuPW8pLCJjYiIhPT0oZT1pLnAuY29sTW9kZWxbbl0ubmFtZSkmJiJzdWJncmlkIiE9PWUmJiJybiIhPT1lJiYic2MiPT09ZSYmKGU9WWUoInRyLnVpLWpxZ3JpZC1sYWJlbHMgdGgiLGkuZ3JpZC5oRGl2KS5lcShuKSx0PWkucC5jb2xOYW1lc1tuXSxyPWUuZmluZCgiLnMtaWNvIiksImxlZnQiPT09bD9lLmZpbmQoImRpdi51aS10aC1kaXYiKS5maXJzdCgpLmVtcHR5KCkuYWRkQ2xhc3MoInVpLWljb24tbGVmdCIpLmFwcGVuZChyKS5hcHBlbmQodCk6InJpZ2h0Ij09PWwmJmUuZmluZCgiZGl2LnVpLXRoLWRpdiIpLmZpcnN0KCkuZW1wdHkoKS5yZW1vdmVDbGFzcygidWktaWNvbi1sZWZ0IikuYXBwZW5kKHQpLmFwcGVuZChyKSxpLnAuZnJvemVuQ29sdW1ucykmJihlPVllKCJ0ci51aS1qcWdyaWQtbGFiZWxzIHRoIixpLmdyaWQuZmhEaXYpLmVxKG4pLHQ9aS5wLmNvbE5hbWVzW25dLHI9ZS5maW5kKCIucy1pY28iKSwibGVmdCI9PT1sP2UuZmluZCgiZGl2LnVpLXRoLWRpdiIpLmZpcnN0KCkuZW1wdHkoKS5hZGRDbGFzcygidWktaWNvbi1sZWZ0IikuYXBwZW5kKHIpLmFwcGVuZCh0KToicmlnaHQiPT09bCYmZS5maW5kKCJkaXYudWktdGgtZGl2IikuZmlyc3QoKS5lbXB0eSgpLnJlbW92ZUNsYXNzKCJ1aS1pY29uLWxlZnQiKS5hcHBlbmQodCkuYXBwZW5kKHIpKX19KX0sc2V0Q2VsbDpmdW5jdGlvbihuLGwscyxkLHAsYyl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD0tMTtpZihlLmdyaWQmJjA8PSh0PWlzTmFOKGwpP1llLmpncmlkLmdldEVsZW1CeUF0dHJWYWwoZS5wLmNvbE1vZGVsLCJuYW1lIixsLCEwKTpwYXJzZUludChsLDEwKSkmJihpPVllKGUpLmpxR3JpZCgiZ2V0R3JpZFJvd0J5SWQiLG4pKSl7dmFyIHIsaSxvPXt9LGE9ZS5wLmNvbE1vZGVsW3RdO3RyeXtyPWkuY2VsbHNbdF19Y2F0Y2goZSl7fXImJigiIj09PXMmJiEwIT09Y3x8KChvPVllKGUpLmpxR3JpZCgiZ2V0Um93RGF0YSIsbiwibG9jYWwiPT09ZS5wLmRhdGF0eXBlKSlbYS5uYW1lXT1zLGk9ZS5mb3JtYXR0ZXIobixzLHQsbywiZWRpdCIpLG89YS50aXRsZT97dGl0bGU6WWUuamdyaWQuc3RyaXBIdG1sKGkpfTp7fSwoZS5wLnRyZWVHcmlkJiZlLnAuRXhwYW5kQ29sdW1uPT09YS5uYW1lP1llKCJzcGFuIixZZShyKSk6WWUocikpLmh0bWwoaSkuYXR0cihvKSwibG9jYWwiPT09ZS5wLmRhdGF0eXBlJiZ2b2lkIDAhPT0oaT1lLnAuX2luZGV4W1llLmpncmlkLnN0cmlwUHJlZihlLnAuaWRQcmVmaXgsbildKSYmKGUucC5kYXRhW2ldW2EubmFtZV09cykpLCJzdHJpbmciPT10eXBlb2YgZD9ZZShyKS5hZGRDbGFzcyhkKTpkJiZZZShyKS5jc3MoZCksIm9iamVjdCI9PXR5cGVvZiBwJiZZZShyKS5hdHRyKHApLGUucC5mcm96ZW5Db2x1bW5zKSYmdDw9ZS5wLmZyb3plbkNvbENvdW50JiYobz1ZZShyKS5jbG9uZSgpLFllKCIjIituKyIgdGQiLCIjIitZZS5qZ3JpZC5qcUlEKGUucC5pZCsiX2Zyb3plbiIpKS5lcSh0KS5yZXBsYWNlV2l0aChvKSl9fSl9LGdldENlbGw6ZnVuY3Rpb24oaSxvLGEpe3ZhciBuLGw9ITE7cmV0dXJuImJvb2xlYW4iIT10eXBlb2YgYSYmKGE9ITEpLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBlLHQ9dGhpcyxyPS0xO2lmKHQuZ3JpZCYmMDw9KHI9aXNOYU4obyk/WWUuamdyaWQuZ2V0RWxlbUJ5QXR0clZhbCh0LnAuY29sTW9kZWwsIm5hbWUiLG8sITApOnBhcnNlSW50KG8sMTApKSYmKGU9WWUodCkuanFHcmlkKCJnZXRHcmlkUm93QnlJZCIsaSkpKWlmKG49WWUoInRkIixlKS5lcShyKSxhKWw9bjtlbHNle3RyeXtsPVllLnVuZm9ybWF0LmNhbGwodCxuLHtyb3dJZDplLmlkLGNvbE1vZGVsOnQucC5jb2xNb2RlbFtyXX0scil9Y2F0Y2goZSl7bD1ZZS5qZ3JpZC5odG1sRGVjb2RlKG4uaHRtbCgpKX10LnAudHJlZUdyaWQmJmwmJnQucC5FeHBhbmRDb2x1bW49PT1vJiYobD1ZZSgiPGRpdj4iK2wrIjwvZGl2PiIpLmZpbmQoInNwYW4iKS5maXJzdCgpLmh0bWwoKSl9fSksbH0sZ2V0Q29sOmZ1bmN0aW9uKG4sbCxzKXt2YXIgZCxwLGMsdSxoPVtdLGc9MCxmPSgiYm9vbGVhbiIhPXR5cGVvZiBsJiYobD0hMSksdm9pZCAwPT09cyYmKHM9ITEpLFllLmpncmlkLmdldEZvbnQodGhpc1swXSkpO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgdD10aGlzLHI9LTEsZT10LnAuY29sTW9kZWw7aWYodC5ncmlkJiYwPD0ocj1pc05hTihuKT9ZZS5qZ3JpZC5nZXRFbGVtQnlBdHRyVmFsKHQucC5jb2xNb2RlbCwibmFtZSIsbiwhMCk6cGFyc2VJbnQobiwxMCkpKXt2YXIgaT10LnJvd3MubGVuZ3RoLG89MCxhPTA7aWYoaSYmMDxpKXtmb3IoO288aTtvKyspaWYoWWUodC5yb3dzW29dKS5oYXNDbGFzcygianFncm93IikmJiJub3JlY3MiIT09dC5yb3dzW29dLmlkKWlmKCJtYXh3aWR0aCI9PT1zKXZvaWQgMD09PWMmJihjPWVbcl0uYXV0b3NpemVfaGVhZGVycz9lW3JdLmNhbnZhc193aWR0aDowKSxjPU1hdGgubWF4KFllLmpncmlkLmdldFRleHRXaWR0aCh0LnJvd3Nbb10uY2VsbHNbcl0ub3V0ZXJUZXh0LGYpLGMpO2Vsc2V7dHJ5e2Q9WWUudW5mb3JtYXQuY2FsbCh0LFllKHQucm93c1tvXS5jZWxsc1tyXSkse3Jvd0lkOnQucm93c1tvXS5pZCxjb2xNb2RlbDp0LnAuY29sTW9kZWxbcl19LHIpfWNhdGNoKGUpe2Q9WWUuamdyaWQuaHRtbERlY29kZSh0LnJvd3Nbb10uY2VsbHNbcl0uaW5uZXJIVE1MKX1zPyh1PVllLmpncmlkLmZsb2F0TnVtKGQpLGcrPXUsdm9pZCAwPT09YyYmKGM9cD11KSxwPU1hdGgubWluKHAsdSksYz1NYXRoLm1heChjLHUpLGErKyk6bD9oLnB1c2goe2lkOnQucm93c1tvXS5pZCx2YWx1ZTpkfSk6aC5wdXNoKGQpfWlmKHMpc3dpdGNoKHMudG9Mb3dlckNhc2UoKSl7Y2FzZSJzdW0iOmg9ZzticmVhaztjYXNlImF2ZyI6aD1nL2E7YnJlYWs7Y2FzZSJjb3VudCI6aD1hO2JyZWFrO2Nhc2UibWluIjpoPXA7YnJlYWs7Y2FzZSJtYXgiOmNhc2UibWF4d2lkdGgiOmg9Y319fX0pLGh9LGNsZWFyR3JpZERhdGE6ZnVuY3Rpb24ocixpKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGUsdD10aGlzO3QuZ3JpZCYmKCJib29sZWFuIiE9dHlwZW9mIHImJihyPSExKSwiYm9vbGVhbiIhPXR5cGVvZiBpJiYoaT0hMSksdC5wLmRlZXBlbXB0eT9ZZSgiIyIrWWUuamdyaWQuanFJRCh0LnAuaWQpKyIgdGJvZHkiKS5maXJzdCgpLmZpbmQoInRyIikuc2xpY2UoMSkucmVtb3ZlKCk6KGU9WWUoIiMiK1llLmpncmlkLmpxSUQodC5wLmlkKSsiIHRib2R5IikuZmlyc3QoKS5maW5kKCJ0ciIpLmZpcnN0KClbMF0sWWUoIiMiK1llLmpncmlkLmpxSUQodC5wLmlkKSsiIHRib2R5IikuZmlyc3QoKS5lbXB0eSgpLmFwcGVuZChlKSksdC5wLmZvb3RlcnJvdyYmciYmWWUoIi51aS1qcWdyaWQtZnRhYmxlIHRkIix0LmdyaWQuc0RpdikuaHRtbCgiJiMxNjA7IiksdC5wLmhlYWRlcnJvdyYmaSYmWWUoIi51aS1qcWdyaWQtaHJ0YWJsZSB0ZCIsdC5ncmlkLmhyRGl2KS5odG1sKCImIzE2MDsiKSx0LnAuc2Vscm93PW51bGwsdC5wLnNlbGFycnJvdz1bXSx0LnAuc2F2ZWRSb3c9W10sdC5wLnJlY29yZHM9MCx0LnAucGFnZT0xLHQucC5sYXN0cGFnZT0wLHQucC5yZWNjb3VudD0wLHQucC5kYXRhPVtdLHQucC5faW5kZXg9e30sdC5wLmdyb3VwaW5nVmlldy5fbG9jZ3I9ITEsdC51cGRhdGVwYWdlcighMCwhMSkpfSl9LGdldEluZDpmdW5jdGlvbihlLHQpe3ZhciByLGk9ITE7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpeyhyPVllKHRoaXMpLmpxR3JpZCgiZ2V0R3JpZFJvd0J5SWQiLGUpKSYmKGk9ITA9PT10P3I6ci5yb3dJbmRleCl9KSxpfSxiaW5kS2V5czpmdW5jdGlvbihlKXt2YXIgcz1ZZS5leHRlbmQoe29uRW50ZXI6bnVsbCxvblNwYWNlOm51bGwsb25MZWZ0S2V5Om51bGwsb25SaWdodEtleTpudWxsLG9uU2VsZWN0Um93OiEwLHNjcm9sbGluZ1Jvd3M6ITB9LGV8fHt9KTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGw9dGhpcztZZSgiYm9keSIpLmlzKCJbcm9sZV0iKXx8WWUoImJvZHkiKS5hdHRyKCJyb2xlIiwiYXBwbGljYXRpb24iKSxsLnAuc2Nyb2xscm93cz1zLnNjcm9sbGluZ1Jvd3MsWWUobCkub24oImtleWRvd24iLGZ1bmN0aW9uKGUpe3ZhciB0LHIsaT1ZZShsKS5maW5kKCJ0clt0YWJpbmRleD0wXSIpWzBdLG89bC5wLnRyZWVSZWFkZXIuZXhwYW5kZWRfZmllbGQ7aWYoaSl7dmFyIGE9bC5wLnNlbHJvdyxuPWwucC5faW5kZXhbWWUuamdyaWQuc3RyaXBQcmVmKGwucC5pZFByZWZpeCxpLmlkKV07aWYoMzc9PT1lLmtleUNvZGV8fDM4PT09ZS5rZXlDb2RlfHwzOT09PWUua2V5Q29kZXx8NDA9PT1lLmtleUNvZGUpe2lmKDM4PT09ZS5rZXlDb2RlKXtpZih0PSIiLChyPWkucHJldmlvdXNTaWJsaW5nKSYmWWUocikuaGFzQ2xhc3MoImpxZ3JvdyIpKXtpZihZZShyKS5pcygiOmhpZGRlbiIpKXtmb3IoO3I7KWlmKHI9ci5wcmV2aW91c1NpYmxpbmcsIVllKHIpLmlzKCI6aGlkZGVuIikmJlllKHIpLmhhc0NsYXNzKCJqcWdyb3ciKSl7dD1yLmlkO2JyZWFrfX1lbHNlIHQ9ci5pZDtZZShsKS5qcUdyaWQoInNldFNlbGVjdGlvbiIsdCxzLm9uU2VsZWN0Um93LGUpfVllKGwpLnRyaWdnZXJIYW5kbGVyKCJqcUdyaWRLZXlVcCIsW3QsYSxlXSksWWUuamdyaWQuaXNGdW5jdGlvbihzLm9uVXBLZXkpJiZzLm9uVXBLZXkuY2FsbChsLHQsYSxlKSxlLnByZXZlbnREZWZhdWx0KCl9aWYoNDA9PT1lLmtleUNvZGUpe2lmKHQ9IiIsKHI9aS5uZXh0U2libGluZykmJlllKHIpLmhhc0NsYXNzKCJqcWdyb3ciKSl7aWYoWWUocikuaXMoIjpoaWRkZW4iKSl7Zm9yKDtyOylpZihyPXIubmV4dFNpYmxpbmcsIVllKHIpLmlzKCI6aGlkZGVuIikmJlllKHIpLmhhc0NsYXNzKCJqcWdyb3ciKSl7dD1yLmlkO2JyZWFrfX1lbHNlIHQ9ci5pZDtZZShsKS5qcUdyaWQoInNldFNlbGVjdGlvbiIsdCxzLm9uU2VsZWN0Um93LGUpfVllKGwpLnRyaWdnZXJIYW5kbGVyKCJqcUdyaWRLZXlEb3duIixbdCxhLGVdKSxZZS5qZ3JpZC5pc0Z1bmN0aW9uKHMub25Eb3duS2V5KSYmcy5vbkRvd25LZXkuY2FsbChsLHQsYSxlKSxlLnByZXZlbnREZWZhdWx0KCl9Mzc9PT1lLmtleUNvZGUmJihsLnAudHJlZUdyaWQmJmwucC5kYXRhW25dW29dJiZZZShpKS5maW5kKCJkaXYudHJlZWNsaWNrIikudHJpZ2dlcigiY2xpY2siKSxZZShsKS50cmlnZ2VySGFuZGxlcigianFHcmlkS2V5TGVmdCIsW2wucC5zZWxyb3csZV0pLFllLmpncmlkLmlzRnVuY3Rpb24ocy5vbkxlZnRLZXkpKSYmcy5vbkxlZnRLZXkuY2FsbChsLGwucC5zZWxyb3csZSksMzk9PT1lLmtleUNvZGUmJihsLnAudHJlZUdyaWQmJiFsLnAuZGF0YVtuXVtvXSYmWWUoaSkuZmluZCgiZGl2LnRyZWVjbGljayIpLnRyaWdnZXIoImNsaWNrIiksWWUobCkudHJpZ2dlckhhbmRsZXIoImpxR3JpZEtleVJpZ2h0IixbbC5wLnNlbHJvdyxlXSksWWUuamdyaWQuaXNGdW5jdGlvbihzLm9uUmlnaHRLZXkpKSYmcy5vblJpZ2h0S2V5LmNhbGwobCxsLnAuc2Vscm93LGUpfWVsc2UgMTM9PT1lLmtleUNvZGU/KFllKGwpLnRyaWdnZXJIYW5kbGVyKCJqcUdyaWRLZXlFbnRlciIsW2wucC5zZWxyb3csZV0pLFllLmpncmlkLmlzRnVuY3Rpb24ocy5vbkVudGVyKSYmcy5vbkVudGVyLmNhbGwobCxsLnAuc2Vscm93LGUpKTozMj09PWUua2V5Q29kZSYmKFllKGwpLnRyaWdnZXJIYW5kbGVyKCJqcUdyaWRLZXlTcGFjZSIsW2wucC5zZWxyb3csZV0pLFllLmpncmlkLmlzRnVuY3Rpb24ocy5vblNwYWNlKSkmJnMub25TcGFjZS5jYWxsKGwsbC5wLnNlbHJvdyxlKX19KS5vbigiY2xpY2siLGZ1bmN0aW9uKGUpe1llKGUudGFyZ2V0KS5pcygiaW5wdXQsIHRleHRhcmVhLCBzZWxlY3QiKXx8WWUoZS50YXJnZXQsbC5yb3dzKS5jbG9zZXN0KCJ0ci5qcWdyb3ciKS5mb2N1cygpfSl9KX0sdW5iaW5kS2V5czpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtZZSh0aGlzKS5vZmYoImtleWRvd24iKX0pfSxnZXRMb2NhbFJvdzpmdW5jdGlvbihlKXt2YXIgdCxyPSExO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2b2lkIDAhPT1lJiYwPD0odD10aGlzLnAuX2luZGV4W1llLmpncmlkLnN0cmlwUHJlZih0aGlzLnAuaWRQcmVmaXgsZSldKSYmKHI9dGhpcy5wLmRhdGFbdF0pfSkscn0scHJvZ3Jlc3NCYXI6ZnVuY3Rpb24obyl7cmV0dXJuIG89WWUuZXh0ZW5kKHtodG1sY29udGVudDoiIixtZXRob2Q6ImhpZGUiLGxvYWR0eXBlOiJkaXNhYmxlIn0sb3x8e30pLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBlLHQ9InNob3ciPT09by5tZXRob2Qscj1ZZSgiI2xvYWRfIitZZS5qZ3JpZC5qcUlEKHRoaXMucC5pZCkpLGk9WWUod2luZG93KS5zY3JvbGxUb3AoKTtzd2l0Y2goIiIhPT1vLmh0bWxjb250ZW50JiZyLmh0bWwoby5odG1sY29udGVudCksby5sb2FkdHlwZSl7Y2FzZSJkaXNhYmxlIjpicmVhaztjYXNlImVuYWJsZSI6ci50b2dnbGUodCk7YnJlYWs7Y2FzZSJibG9jayI6WWUoIiNsdWlfIitZZS5qZ3JpZC5qcUlEKHRoaXMucC5pZCkpLmNzcyh0P3t0b3A6MCxsZWZ0OjAsaGVpZ2h0OlllKCIjZ2JveF8iK1llLmpncmlkLmpxSUQodGhpcy5wLmlkKSkuaGVpZ2h0KCksd2lkdGg6WWUoIiNnYm94XyIrWWUuamdyaWQuanFJRCh0aGlzLnAuaWQpKS53aWR0aCgpLCJ6LWluZGV4IjoxZTQscG9zaXRpb246ImFic29sdXRlIn06e30pLnRvZ2dsZSh0KSxyLnRvZ2dsZSh0KX1yLmlzKCI6dmlzaWJsZSIpJiYoZT1yLm9mZnNldFBhcmVudCgpLHIuY3NzKCJ0b3AiLCIiKSxyLm9mZnNldCgpLnRvcDxpKSYmKGk9TWF0aC5taW4oMTAraS1lLm9mZnNldCgpLnRvcCxlLmhlaWdodCgpLXIuaGVpZ2h0KCkpLHIuY3NzKCJ0b3AiLGkrInB4IikpfSl9LGdldENvbFByb3A6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpc1swXTtyZXR1cm4hIXQuZ3JpZCYmWWUuamdyaWQuZ2V0RWxlbUJ5QXR0clZhbCh0LnAuY29sTW9kZWwsIm5hbWUiLGUsITEpfSxzZXRDb2xQcm9wOmZ1bmN0aW9uKHQscil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBlO3RoaXMuZ3JpZCYmWWUuaXNQbGFpbk9iamVjdChyKSYmMDw9KGU9WWUuamdyaWQuZ2V0RWxlbUJ5QXR0clZhbCh0aGlzLnAuY29sTW9kZWwsIm5hbWUiLHQsITApKSYmWWUuZXh0ZW5kKCEwLHRoaXMucC5jb2xNb2RlbFtlXSxyKX0pfSxzb3J0R3JpZDpmdW5jdGlvbihhLG4sbCl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBlLHQscj10aGlzLGk9LTEsbz0hMTtpZihyLmdyaWQpe2ZvcihhPWF8fHIucC5zb3J0bmFtZSxlPTA7ZTxyLnAuY29sTW9kZWwubGVuZ3RoO2UrKylpZihyLnAuY29sTW9kZWxbZV0uaW5kZXg9PT1hfHxyLnAuY29sTW9kZWxbZV0ubmFtZT09PWEpe2k9ZSwhMD09PXIucC5mcm96ZW5Db2x1bW5zJiYhMD09PXIucC5jb2xNb2RlbFtlXS5mcm96ZW4mJihvPXIuZ3JpZC5maERpdi5maW5kKCIjIityLnAuaWQrIl8iK2EpKTticmVha30tMSE9PWkmJih0PXIucC5jb2xNb2RlbFtpXS5zb3J0YWJsZSxvPW98fHIuZ3JpZC5oZWFkZXJzW2ldLmVsLCJib29sZWFuIiE9dHlwZW9mIG4mJihuPSExKSx0PSJib29sZWFuIiE9dHlwZW9mIHR8fHQpJiZyLnNvcnREYXRhKCJqcWdoXyIrci5wLmlkKyJfIithLGksbixsLG8pfX0pfSxzZXRHcmlkU3RhdGU6ZnVuY3Rpb24oaSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBlLHQscjt0aGlzLmdyaWQmJih0PVllKGU9dGhpcykuanFHcmlkKCJnZXRTdHlsZVVJIix0aGlzLnAuc3R5bGVVSSsiLmJhc2UiLCJpY29uX2NhcHRpb25fb3BlbiIsITApLHI9WWUodGhpcykuanFHcmlkKCJnZXRTdHlsZVVJIix0aGlzLnAuc3R5bGVVSSsiLmJhc2UiLCJpY29uX2NhcHRpb25fY2xvc2UiLCEwKSwiaGlkZGVuIj09PWk/KFllKCIudWktanFncmlkLWJkaXYsIC51aS1qcWdyaWQtaGRpdiIsIiNndmlld18iK1llLmpncmlkLmpxSUQoZS5wLmlkKSkuc2xpZGVVcCgiZmFzdCIpLGUucC5wYWdlciYmWWUoZS5wLnBhZ2VyKS5zbGlkZVVwKCJmYXN0IiksZS5wLnRvcHBhZ2VyJiZZZShlLnAudG9wcGFnZXIpLnNsaWRlVXAoImZhc3QiKSwhMD09PWUucC50b29sYmFyWzBdJiYoImJvdGgiPT09ZS5wLnRvb2xiYXJbMV0mJlllKGUuZ3JpZC51YkRpdikuc2xpZGVVcCgiZmFzdCIpLFllKGUuZ3JpZC51RGl2KS5zbGlkZVVwKCJmYXN0IikpLGUucC5mb290ZXJyb3cmJlllKCIudWktanFncmlkLXNkaXYiLCIjZ2JveF8iK1llLmpncmlkLmpxSUQoZS5wLmlkKSkuc2xpZGVVcCgiZmFzdCIpLGUucC5oZWFkZXJyb3cmJlllKCIudWktanFncmlkLWhyZGl2IiwiI2dib3hfIitZZS5qZ3JpZC5qcUlEKGUucC5pZCkpLnNsaWRlVXAoImZhc3QiKSxZZSgiLnVpLWpxZ3JpZC1oZWFkbGluayIsZS5ncmlkLmNEaXYpLnJlbW92ZUNsYXNzKHQpLmFkZENsYXNzKHIpLGUucC5ncmlkc3RhdGU9ImhpZGRlbiIpOiJ2aXNpYmxlIj09PWkmJihZZSgiLnVpLWpxZ3JpZC1oZGl2LCAudWktanFncmlkLWJkaXYiLCIjZ3ZpZXdfIitZZS5qZ3JpZC5qcUlEKGUucC5pZCkpLnNsaWRlRG93bigiZmFzdCIpLGUucC5wYWdlciYmWWUoZS5wLnBhZ2VyKS5zbGlkZURvd24oImZhc3QiKSxlLnAudG9wcGFnZXImJlllKGUucC50b3BwYWdlcikuc2xpZGVEb3duKCJmYXN0IiksITA9PT1lLnAudG9vbGJhclswXSYmKCJib3RoIj09PWUucC50b29sYmFyWzFdJiZZZShlLmdyaWQudWJEaXYpLnNsaWRlRG93bigiZmFzdCIpLFllKGUuZ3JpZC51RGl2KS5zbGlkZURvd24oImZhc3QiKSksZS5wLmZvb3RlcnJvdyYmWWUoIi51aS1qcWdyaWQtc2RpdiIsIiNnYm94XyIrWWUuamdyaWQuanFJRChlLnAuaWQpKS5zbGlkZURvd24oImZhc3QiKSxlLnAuaGVhZGVycm93JiZZZSgiLnVpLWpxZ3JpZC1ocmRpdiIsIiNnYm94XyIrWWUuamdyaWQuanFJRChlLnAuaWQpKS5zbGlkZURvd24oImZhc3QiKSxZZSgiLnVpLWpxZ3JpZC1oZWFkbGluayIsZS5ncmlkLmNEaXYpLnJlbW92ZUNsYXNzKHIpLmFkZENsYXNzKHQpLGUucC5ncmlkc3RhdGU9InZpc2libGUiKSl9KX0sc2V0RnJvemVuQ29sdW1uczpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtpZih0aGlzLmdyaWQpe3ZhciBlLHQscixpLG8sYSxuLGw9dGhpcyxzPWwucC5jb2xNb2RlbCxkPTAscD1zLmxlbmd0aCxjPVllKGwpLmpxR3JpZCgiZ2V0U3R5bGVVSSIsbC5wLnN0eWxlVUkrIi5iYXNlIiwiaGVhZGVyRGl2IiwhMCwidWktanFncmlkLWhkaXYiKSx1PVllKGwpLmpxR3JpZCgiZ2V0U3R5bGVVSSIsbC5wLnN0eWxlVUkrIi5jb21tb24iLCJob3ZlciIsITApLGg9ImJvcmRlci1ib3giPT09WWUoIiNnYm94XyIrWWUuamdyaWQuanFJRChsLnAuaWQpKS5jc3MoImJveC1zaXppbmciKT8xOjA7aWYoITAhPT1sLnAuc3ViR3JpZCYmITAhPT1sLnAudHJlZUdyaWQmJiEwIT09bC5wLmNlbGxFZGl0JiYhbC5wLnNjcm9sbCYmIWwucC5mcm96ZW5Db2x1bW5zKXtmb3IobC5wLmZyb3plbkNvbENvdW50PS0xO2Q8cCYmITA9PT1zW2RdLmZyb3plbjspbC5wLmZyb3plbkNvbENvdW50PWQsZCsrOzA8PWwucC5mcm96ZW5Db2xDb3VudCYmKGE9WWUoIi51aS1qcWdyaWQtaGRpdiIsIiNndmlld18iK1llLmpncmlkLmpxSUQobC5wLmlkKSkuaGVpZ2h0KCksZT1ZZSgiLnVpLWpxZ3JpZC1iZGl2IiwiI2d2aWV3XyIrWWUuamdyaWQuanFJRChsLnAuaWQpKS5wb3NpdGlvbigpLHQ9WWUoIi51aS1qcWdyaWQtaGRpdiIsIiNndmlld18iK1llLmpncmlkLmpxSUQobC5wLmlkKSkucG9zaXRpb24oKSxsLmdyaWQuZmhEaXY9WWUoJzxkaXYgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlOycrKCJydGwiPT09bC5wLmRpcmVjdGlvbj8icmlnaHQ6MHB4OyI6ImxlZnQ6MHB4OyIpKyJ0b3A6Iit0LnRvcCsicHg7aGVpZ2h0OiIrKGEtaCkrJ3B4OyIgY2xhc3M9ImZyb3plbi1kaXYgJytjKyciPjwvZGl2PicpLGwuZ3JpZC5mYkRpdj1ZZSgnPGRpdiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7JysoInJ0bCI9PT1sLnAuZGlyZWN0aW9uPyJyaWdodDowcHg7IjoibGVmdDowcHg7IikrInRvcDoiK2UudG9wKydweDtvdmVyZmxvdy15OmhpZGRlbiIgY2xhc3M9ImZyb3plbi1iZGl2IHVpLWpxZ3JpZC1iZGl2Ij48L2Rpdj4nKSxZZSgiI2d2aWV3XyIrWWUuamdyaWQuanFJRChsLnAuaWQpKS5hcHBlbmQobC5ncmlkLmZoRGl2KSx0PVllKCIudWktanFncmlkLWh0YWJsZSIsIiNndmlld18iK1llLmpncmlkLmpxSUQobC5wLmlkKSkuY2xvbmUoITApLFllKHQpLndpZHRoKDEpLFllKGwuZ3JpZC5maERpdikuYXBwZW5kKHQpLFllKGwpLmpxR3JpZCgiaXNHcm91cEhlYWRlck9uIik/KFllKCJ0ci5qcWctdGhpcmQtcm93LWhlYWRlciIsbC5ncmlkLmhEaXYpLmhlaWdodCgpLFllKCJ0ci5qcWctZmlyc3Qtcm93LWhlYWRlciwgdHIuanFnLXRoaXJkLXJvdy1oZWFkZXIiLHQpLmVhY2goZnVuY3Rpb24oKXtZZSgidGgiLHRoaXMpLnNsaWNlKGwucC5mcm96ZW5Db2xDb3VudCsxKS5yZW1vdmUoKX0pLGk9cj0tMSxZZSgidHIuanFnLXNlY29uZC1yb3ctaGVhZGVyIHRoIix0KS5lYWNoKGZ1bmN0aW9uKCl7aWYobz1wYXJzZUludChZZSh0aGlzKS5hdHRyKCJjb2xzcGFuIiksMTApLHBhcnNlSW50KFllKHRoaXMpLmF0dHIoInJvd3NwYW4iKSwxMCkmJihyKyssaSsrKSxvJiYocis9byxpKyspLHI9PT1sLnAuZnJvemVuQ29sQ291bnQpcmV0dXJuIGk9bC5wLmZyb3plbkNvbENvdW50LCExfSksciE9PWwucC5mcm96ZW5Db2xDb3VudCYmKGk9bC5wLmZyb3plbkNvbENvdW50KSxZZSgidHIuanFnLXNlY29uZC1yb3ctaGVhZGVyIix0KS5lYWNoKGZ1bmN0aW9uKCl7WWUoInRoIix0aGlzKS5zbGljZShpKzEpLnJlbW92ZSgpfSksYT1ZZSgidHIuanFnLXNlY29uZC1yb3ctaGVhZGVyIHRoIix0KS5maWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4ibm9uZSIhPT1ZZSh0aGlzKS5jc3MoImRpc3BsYXkiKX0pLmZpcnN0KCksIm9iamVjdCI9PT1ZZS5qZ3JpZC50eXBlKGEpJiZhLmxlbmd0aCYmImhpZGRlbiIhPT1hLmNzcygidmlzaWJpbGl0eSIpJiYiIj09PVllLmpncmlkLnRyaW0oYVswXS5vdXRlclRleHQpJiZhLmh0bWwoIiZuYnNwOyIpLGE9WWUoInRyLmpxZy10aGlyZC1yb3ctaGVhZGVyIHRoIix0KS5maWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4ibm9uZSIhPT1ZZSh0aGlzKS5jc3MoImRpc3BsYXkiKX0pLmZpcnN0KCksIm9iamVjdCI9PT1ZZS5qZ3JpZC50eXBlKGEpJiZhLmxlbmd0aCYmImhpZGRlbiIhPT1hLmNzcygidmlzaWJpbGl0eSIpJiYiIj09PVllLmpncmlkLnRyaW0oYVswXS5vdXRlclRleHQpJiZZZSgiZGl2IixhKS5wcmVwZW5kKCImbmJzcDsiKSk6KG49W10sWWUoIiNndmlld18iK1llLmpncmlkLmpxSUQobC5wLmlkKSsiIC51aS1qcWdyaWQtaHRhYmxlID4gdGhlYWQgPnRyIikuZWFjaChmdW5jdGlvbihlLHQpe24ucHVzaChwYXJzZUludChZZSh0aGlzKS5oZWlnaHQoKSwxMCkpfSksWWUoInRoZWFkID50ciIsdCkuZWFjaChmdW5jdGlvbigpe1llKCJ0aCIsdGhpcykuc2xpY2UobC5wLmZyb3plbkNvbENvdW50KzEpLnJlbW92ZSgpfSksWWUoInRoZWFkID50ciIsdCkuZWFjaChmdW5jdGlvbihlKXswPT09ZSYmLS1uW2VdLFllKHRoaXMpLmhlaWdodChuW2VdKX0pKSxZZS5qZ3JpZC5tc2llKCl8fFllKHQpLmNzcygiaGVpZ2h0IiwiMTAwJSIpLFllKGwuZ3JpZC5maERpdikubW91c2Vtb3ZlKGZ1bmN0aW9uKGUpe2lmKGwuZ3JpZC5yZXNpemluZylyZXR1cm4gbC5ncmlkLmRyYWdNb3ZlKGUpLCExfSksbC5wLnNvcnRhYmxlJiZZZS5mbi5zb3J0YWJsZSYmWWUobC5ncmlkLmZoRGl2KS5maW5kKCJ0ci51aS1qcWdyaWQtbGFiZWxzIHRoIikuYWRkQ2xhc3MoInNvcnRhYmxlLWRpc2FibGVkIiksbC5wLmhlYWRlcnJvdyYmKGwuZ3JpZC5maHJEaXY9WWUoJzxkaXYgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlOycrKCJydGwiPT09bC5wLmRpcmVjdGlvbj8icmlnaHQ6MHB4OyI6ImxlZnQ6MHB4OyIpKyd0b3A6MHB4OyIgY2xhc3M9ImZyb3plbi1ocmRpdiB1aS1qcWdyaWQtaHJkaXYgIj48L2Rpdj4nKSxZZSgiI2d2aWV3XyIrWWUuamdyaWQuanFJRChsLnAuaWQpKS5hcHBlbmQobC5ncmlkLmZockRpdikpLGwucC5mb290ZXJyb3cmJihsLmdyaWQuZnNEaXY9WWUoJzxkaXYgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlOycrKCJydGwiPT09bC5wLmRpcmVjdGlvbj8icmlnaHQ6MHB4OyI6ImxlZnQ6MHB4OyIpKyd0b3A6MHB4OyIgY2xhc3M9ImZyb3plbi1zZGl2IHVpLWpxZ3JpZC1zZGl2Ij48L2Rpdj4nKSxZZSgiI2d2aWV3XyIrWWUuamdyaWQuanFJRChsLnAuaWQpKS5hcHBlbmQobC5ncmlkLmZzRGl2KSksWWUoIiNndmlld18iK1llLmpncmlkLmpxSUQobC5wLmlkKSkuYXBwZW5kKGwuZ3JpZC5mYkRpdiksWWUobC5ncmlkLmZiRGl2KS5vbigibW91c2V3aGVlbCBET01Nb3VzZVNjcm9sbCIsZnVuY3Rpb24oZSl7bC5ncmlkLmJEaXYuc2Nyb2xsVG9wKz0ibW91c2V3aGVlbCI9PT1lLnR5cGU/LWUub3JpZ2luYWxFdmVudC53aGVlbERlbHRhLzEwOjYqZS5vcmlnaW5hbEV2ZW50LmRldGFpbH0pLCEwPT09bC5wLmhvdmVycm93cyYmWWUoIiMiK1llLmpncmlkLmpxSUQobC5wLmlkKSkub2ZmKCJtb3VzZW92ZXIgbW91c2VvdXQiKSxZZShsKS5vbigianFHcmlkQWZ0ZXJHcmlkQ29tcGxldGUuc2V0RnJvemVuQ29sdW1ucyIsZnVuY3Rpb24oKXtZZSgiIyIrWWUuamdyaWQuanFJRChsLnAuaWQpKyJfZnJvemVuIikucmVtb3ZlKCksWWUobC5ncmlkLmZiRGl2KS5oZWlnaHQoWWUobC5ncmlkLmJEaXYpWzBdLmNsaWVudEhlaWdodCk7dmFyIGUsaT1bXSx0PShZZSgiIyIrWWUuamdyaWQuanFJRChsLnAuaWQpKyIgdHJbcm9sZT1yb3ddLmpxZ3JvdyIpLmVhY2goZnVuY3Rpb24oKXtpLnB1c2goWWUodGhpcykuaGVpZ2h0KCkpfSksWWUoIiMiK1llLmpncmlkLmpxSUQobC5wLmlkKSkuY2xvbmUoITApKTtZZSgidHJbcm9sZT1yb3ddIix0KS5lYWNoKGZ1bmN0aW9uKCl7WWUoInRkW3JvbGU9Z3JpZGNlbGxdIix0aGlzKS5zbGljZShsLnAuZnJvemVuQ29sQ291bnQrMSkucmVtb3ZlKCl9KSxZZSh0KS53aWR0aCgxKS5hdHRyKCJpZCIsbC5wLmlkKyJfZnJvemVuIiksWWUobC5ncmlkLmZiRGl2KS5hcHBlbmQodCksWWUoInRyW3JvbGU9cm93XS5qcWdyb3ciLHQpLmVhY2goZnVuY3Rpb24oZSx0KXt2YXIgcjtZZSh0aGlzKS5oZWlnaHQoaVtlXSksLjM8PU1hdGguYWJzKFllKHRoaXMpLmhlaWdodCgpLWlbZV0pJiYocj1ZZSgidGQ6dmlzaWJsZSIsdGhpcykuZmlyc3QoKSkuaGVpZ2h0KGlbZV0tTWF0aC5yb3VuZChwYXJzZUZsb2F0KHIuY3NzKCJib3JkZXItYm90dG9tLXdpZHRoIikpKSl9KSxsLnJvd3NbMV0mJiJub3JlY3MiPT09bC5yb3dzWzFdLmlkJiZZZSgiI25vcmVjcyB0ZCIsdCkuaHRtbCgiIiksWWUobC5ncmlkLmZiRGl2KVswXS5zY3JvbGxUb3A9WWUobC5ncmlkLmJEaXYpWzBdLnNjcm9sbFRvcCwhMD09PWwucC5ob3ZlcnJvd3MmJihZZSgidHIuanFncm93Iix0KS5ob3ZlcihmdW5jdGlvbigpe1llKHRoaXMpLmFkZENsYXNzKHUpLFllKCIjIitZZS5qZ3JpZC5qcUlEKHRoaXMuaWQpLCIjIitZZS5qZ3JpZC5qcUlEKGwucC5pZCkpLmFkZENsYXNzKHUpfSxmdW5jdGlvbigpe1llKHRoaXMpLnJlbW92ZUNsYXNzKHUpLFllKCIjIitZZS5qZ3JpZC5qcUlEKHRoaXMuaWQpLCIjIitZZS5qZ3JpZC5qcUlEKGwucC5pZCkpLnJlbW92ZUNsYXNzKHUpfSksWWUoInRyLmpxZ3JvdyIsIiMiK1llLmpncmlkLmpxSUQobC5wLmlkKSkuaG92ZXIoZnVuY3Rpb24oKXtZZSh0aGlzKS5hZGRDbGFzcyh1KSxZZSgiIyIrWWUuamdyaWQuanFJRCh0aGlzLmlkKSwiIyIrWWUuamdyaWQuanFJRChsLnAuaWQpKyJfZnJvemVuIikuYWRkQ2xhc3ModSl9LGZ1bmN0aW9uKCl7WWUodGhpcykucmVtb3ZlQ2xhc3ModSksWWUoIiMiK1llLmpncmlkLmpxSUQodGhpcy5pZCksIiMiK1llLmpncmlkLmpxSUQobC5wLmlkKSsiX2Zyb3plbiIpLnJlbW92ZUNsYXNzKHUpfSkpLGwucC5oZWFkZXJyb3cmJih0PVllKGwuZ3JpZC5ockRpdikucG9zaXRpb24oKSxZZSgidGFibGUiLGwuZ3JpZC5maHJEaXYpLnJlbW92ZSgpLGU9WWUoIi51aS1qcWdyaWQtaHJ0YWJsZSIsIiNndmlld18iK1llLmpncmlkLmpxSUQobC5wLmlkKSkuY2xvbmUoITApLFllKCJ0ciIsZSkuZWFjaChmdW5jdGlvbigpe1llKCJ0ZCIsdGhpcykuc2xpY2UobC5wLmZyb3plbkNvbENvdW50KzEpLnJlbW92ZSgpfSksWWUoZSkud2lkdGgoMSksWWUobC5ncmlkLmZockRpdikuY3NzKCJ0b3AiLHQudG9wKyJweCIpLmFwcGVuZChlKSksbC5wLmZvb3RlcnJvdyYmKHQ9WWUobC5ncmlkLnNEaXYpLnBvc2l0aW9uKCksWWUoInRhYmxlIixsLmdyaWQuZnNEaXYpLnJlbW92ZSgpLGU9WWUoIi51aS1qcWdyaWQtZnRhYmxlIiwiI2d2aWV3XyIrWWUuamdyaWQuanFJRChsLnAuaWQpKS5jbG9uZSghMCksWWUoInRyIixlKS5lYWNoKGZ1bmN0aW9uKCl7WWUoInRkIix0aGlzKS5zbGljZShsLnAuZnJvemVuQ29sQ291bnQrMSkucmVtb3ZlKCl9KSxZZShlKS53aWR0aCgxKSxZZShsLmdyaWQuZnNEaXYpLmNzcygidG9wIix0LnRvcCsicHgiKS5hcHBlbmQoZSkpfSksbC5ncmlkLmhEaXYubG9hZGluZ3x8WWUobCkudHJpZ2dlckhhbmRsZXIoImpxR3JpZEFmdGVyR3JpZENvbXBsZXRlLnNldEZyb3plbkNvbHVtbnMiKSxsLnAuZnJvemVuQ29sdW1ucz0hMCxZZShsKS50cmlnZ2VySGFuZGxlcigib25Gcm96ZW5Db2x1bW5zQ2FsbCIpKX19fSl9LGRlc3Ryb3lGcm96ZW5Db2x1bW5zOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBlLHQscjt0aGlzLmdyaWQmJiEwPT09dGhpcy5wLmZyb3plbkNvbHVtbnMmJih0PVllKGU9dGhpcykuanFHcmlkKCJnZXRTdHlsZVVJIixlLnAuc3R5bGVVSSsiLmNvbW1vbiIsImhvdmVyIiwhMCksWWUoZS5ncmlkLmZoRGl2KS5yZW1vdmUoKSxZZShlLmdyaWQuZmJEaXYpLnJlbW92ZSgpLGUuZ3JpZC5maERpdj1udWxsLGUuZ3JpZC5mYkRpdj1udWxsLGUucC5mb290ZXJyb3cmJihZZShlLmdyaWQuZnNEaXYpLnJlbW92ZSgpLGUuZ3JpZC5mc0Rpdj1udWxsKSxlLnAuaGVhZGVycm93JiYoWWUoZS5ncmlkLmZockRpdikucmVtb3ZlKCksZS5ncmlkLmZockRpdj1udWxsKSxZZSh0aGlzKS5vZmYoIi5zZXRGcm96ZW5Db2x1bW5zIiksITA9PT1lLnAuaG92ZXJyb3dzJiZZZSgiIyIrWWUuamdyaWQuanFJRChlLnAuaWQpKS5vbih7bW91c2VvdmVyOmZ1bmN0aW9uKGUpe3I9WWUoZS50YXJnZXQpLmNsb3Nlc3QoInRyLmpxZ3JvdyIpLCJ1aS1zdWJncmlkIiE9PVllKHIpLmF0dHIoImNsYXNzIikmJlllKHIpLmFkZENsYXNzKHQpfSxtb3VzZW91dDpmdW5jdGlvbihlKXtyPVllKGUudGFyZ2V0KS5jbG9zZXN0KCJ0ci5qcWdyb3ciKSxZZShyKS5yZW1vdmVDbGFzcyh0KX19KSx0aGlzLnAuZnJvemVuQ29sdW1ucz0hMSx0aGlzLnAuZnJvemVuQ29sQ291bnQ9LTEpfSl9LHJlc2l6ZUNvbHVtbjpmdW5jdGlvbihuLGwscyxkKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGUsdCxyPXRoaXMuZ3JpZCxpPXRoaXMucCxvPWkuY29sTW9kZWwsYT1vLmxlbmd0aDtpZigiYm9vbGVhbiIhPXR5cGVvZiBzJiYocz0hMSksImJvb2xlYW4iIT10eXBlb2YgZCYmKGQ9ITApLCJzdHJpbmciPT10eXBlb2Ygbil7Zm9yKGU9MDtlPGE7ZSsrKWlmKG9bZV0ubmFtZT09PW4pe249ZTticmVha319ZWxzZSBuPXBhcnNlSW50KG4sMTApO2lmKChvW25dLnJlc2l6YWJsZXx8cykmJiFvW25dLmhpZGRlbiYmKGw9cGFyc2VGbG9hdChsKSwhKCJudW1iZXIiIT10eXBlb2Ygbnx8bjwwfHxuPm8ubGVuZ3RoLTF8fCJudW1iZXIiIT10eXBlb2YgbCkpKXtpZihsPGkubWluQ29sV2lkdGgmJihsPWkubWluQ29sV2lkdGgpLGkuZm9yY2VGaXQpZm9yKGkubnY9MCxlPW4rMTtlPGE7ZSsrKWlmKCEwIT09b1tlXS5oaWRkZW4pe2kubnY9ZS1uO2JyZWFrfWlmKHIucmVzaXppbmc9e2lkeDpufSx0PWwtci5oZWFkZXJzW25dLndpZHRoLGkuZm9yY2VGaXQpe2lmKHIuaGVhZGVyc1tuK2kubnZdLndpZHRoLXQ8aS5taW5Db2xXaWR0aClyZXR1cm47ci5oZWFkZXJzW24raS5udl0ubmV3V2lkdGg9ci5oZWFkZXJzW24raS5udl0ud2lkdGgtdH1yLm5ld1dpZHRoPWkudGJsd2lkdGgrdCxyLmhlYWRlcnNbbl0ubmV3V2lkdGg9bCxyLmRyYWdFbmQoITEsZCl9fSl9LGdldFN0eWxlVUk6ZnVuY3Rpb24oZSx0LHIsaSl7dmFyIG89IiIsYT0iIjt0cnl7dmFyIG49ZS5zcGxpdCgiLiIpO3N3aXRjaChyfHwobz0iY2xhc3M9IixhPSciJyksWWUuamdyaWQuaXNOdWxsKGkpJiYoaT0iIiksbi5sZW5ndGgpe2Nhc2UgMTpvKz1hK1llLmpncmlkLnRyaW0oaSsiICIrWWUuamdyaWQuc3R5bGVVSVtuWzBdXVt0XSthKTticmVhaztjYXNlIDI6bys9YStZZS5qZ3JpZC50cmltKGkrIiAiK1llLmpncmlkLnN0eWxlVUlbblswXV1bblsxXV1bdF0rYSl9fWNhdGNoKGUpe289IiJ9cmV0dXJuIG99LHJlc2l6ZUdyaWQ6ZnVuY3Rpb24oZSxkLHAsYyl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBsPXRoaXMscz0hMTt2b2lkIDA9PT1lJiYoZT01MDApLCJib29sZWFuIiE9dHlwZW9mIGQmJihkPSEwKSwiYm9vbGVhbiIhPXR5cGVvZiBwJiYocD0hMCksImJvb2xlYW4iIT10eXBlb2YgYyYmKGM9ITApLHNldFRpbWVvdXQoZnVuY3Rpb24oKXt0cnl7dmFyIGUsdCxyLGksbyxhLG47bC5wLmZyb3plbkNvbHVtbnMmJmMmJihZZSgiIyIrWWUuamdyaWQuanFJRChsLnAuaWQpKS5qcUdyaWQoImRlc3Ryb3lGcm96ZW5Db2x1bW5zIikscz0hMCksZCYmKGU9WWUod2luZG93KS53aWR0aCgpLHQ9WWUoIiNnYm94XyIrWWUuamdyaWQuanFJRChsLnAuaWQpKS5wYXJlbnQoKS53aWR0aCgpLHI9bC5wLndpZHRoLHI9MzxlLXQ/dDplLFllKGwuZ3JpZC5iRGl2KS5jc3MoIm1heC1oZWlnaHQiKSYmWyIxMDAlIiwiYXV0byJdLmluY2x1ZGVzKGwucC5oZWlnaHQpJiZZZShsLmdyaWQuYkRpdikuaGVpZ2h0KCk8WWUobCkuaGVpZ2h0KCk/WWUoIiMiK1llLmpncmlkLmpxSUQobC5wLmlkKSkuanFHcmlkKCJzZXRHcmlkV2lkdGgiLHIrbC5wLnNjcm9sbE9mZnNldC0yLCExLCExKTpZZSgiIyIrWWUuamdyaWQuanFJRChsLnAuaWQpKS5qcUdyaWQoInNldEdyaWRXaWR0aCIscixsLnAuc2hyaW5rVG9GaXQsITEpKSwiYXV0byIhPT1sLnAuaGVpZ2h0JiYiMTAwJSIhPT1sLnAuaGVpZ2h0JiZwJiYobj1sLnAuaGVpZ2h0LGk9LTE9PT1sLnAuc3R5bGVVSS5zZWFyY2goIkJvb3RzdHJhcCIpfHxpc05hTihsLnAuaGVpZ2h0KT8wOjIsbj0zPChvPVllKHdpbmRvdykuaGVpZ2h0KCkpLShhPVllKCIjZ2JveF8iK1llLmpncmlkLmpxSUQobC5wLmlkKSkucGFyZW50KCkuaGVpZ2h0KCkpP2E6byxZZSgiIyIrWWUuamdyaWQuanFJRChsLnAuaWQpKS5qcUdyaWQoInNldEdyaWRIZWlnaHQiLG4taSwhMCwhMSkpLGwucC5mcm96ZW5Sb3dzJiZZZShsKS50cmlnZ2VyKCJqcUdyaWRBZnRlckdyaWRDb21wbGV0ZS5zZXRGcm96ZW5Sb3dzIikscyYmWWUoIiMiK1llLmpncmlkLmpxSUQobC5wLmlkKSkuanFHcmlkKCJzZXRGcm96ZW5Db2x1bW5zIil9Y2F0Y2goZSl7fX0sZSl9KX0sY29sTWVudUFkZDpmdW5jdGlvbihlLHQpe3ZhciByPXRoaXNbMF0ucC5zdHlsZVVJLHI9WWUuamdyaWQuc3R5bGVVSVtyXS5jb2xtZW51O3JldHVybiB0PVllLmV4dGVuZCh7dGl0bGU6Ikl0ZW0iLGljb246ci5pY29uX25ld19pdGVtLGZ1bmNuYW1lOm51bGwscG9zaXRpb246Imxhc3QiLGNsb3NlT25SdW46ITAsZXhjbHVkZToiIixpZDpudWxsfSx0fHx7fSksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dC5jb2xuYW1lPSJhbGwiPT09ZT8iX2FsbF8iOmU7dC5pZD1ZZS5qZ3JpZC5pc051bGwodC5pZCwhMCk/WWUuamdyaWQucmFuZElkKCk6dC5pZCx0aGlzLnAuY29sTWVudUN1c3RvbVt0LmlkXT10fSl9LGNvbE1lbnVEZWxldGU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3RoaXMucC5jb2xNZW51Q3VzdG9tLmhhc093blByb3BlcnR5KGUpJiZkZWxldGUgdGhpcy5wLmNvbE1lbnVDdXN0b21bZV19KX0sbWVudWJhckFkZDpmdW5jdGlvbihvKXt2YXIgcixhLGU9dGhpc1swXS5wLnN0eWxlVUksbj1ZZS5qZ3JpZC5zdHlsZVVJW2VdLmNvbW1vbjtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGk9dGhpcztpZihBcnJheS5pc0FycmF5KG8pKWZvcih2YXIgZT0wO2U8by5sZW5ndGg7ZSsrKXsocj1vW2VdKS5pZHx8KHIuaWQ9WWUuamdyaWQucmFuZElkKCkpO3ZhciB0PSIiO3IuaWNvbiYmKHQ9JzxzcGFuIGNsYXNzPSInK24uaWNvbl9iYXNlKyIgIityLmljb24rJyI+PC9zcGFuPicpLHIucG9zaXRpb258fChyLnBvc2l0aW9uPSJsYXN0Iiksci5jbG9zZW9uY2FsbHx8KHIuY2xvc2VvbmNhbGw9ITApLHIuZGl2aWRlcj8oYT0nPGxpIGNsYXNzPSJ1aS1tZW51LWl0ZW0gZGl2aWRlciIgcm9sZT0ic2VwYXJhdG9yIj48L2xpPicsci5jaWNrPW51bGwpOmE9JzxsaSBjbGFzcz0idWktbWVudS1pdGVtIiByb2xlPSJwcmVzZW50YXRpb24iPjxhIGlkPSInK3IuaWQrJyIgY2xhc3M9ImctbWVudS1pdGVtIiB0YWJpbmRleD0iMCIgcm9sZT0ibWVudWl0ZW0iID48dGFibGUgY2xhc3M9InVpLWNvbW1vbi10YWJsZSI+PHRyPjx0ZCBjbGFzcz0ibWVudV9pY29uIj4nK3QrJzwvdGQ+PHRkIGNsYXNzPSJtZW51X3RleHQiPicrci50aXRsZSsiPC90ZD48L3RyPjwvdGFibGU+PC9hPjwvbGk+IiwibGFzdCI9PT1yLnBvc2l0aW9uP1llKCIjIit0aGlzLnAuaWQrIl9tZW51YmFyIikuYXBwZW5kKGEpOlllKCIjIit0aGlzLnAuaWQrIl9tZW51YmFyIikucHJlcGVuZChhKX1ZZSgibGkgYSIsIiMiK3RoaXMucC5pZCsiX21lbnViYXIiKS5lYWNoKGZ1bmN0aW9uKGUscil7WWUobykuZWFjaChmdW5jdGlvbihlLHQpe2lmKHQuaWQ9PT1yLmlkJiZZZS5qZ3JpZC5pc0Z1bmN0aW9uKHQuY2xpY2spKXJldHVybiBZZShyKS5vbigiY2xpY2siLGZ1bmN0aW9uKGUpe3QuY2xpY2suY2FsbChpLGUpfSksITF9KSxZZSh0aGlzKS5ob3ZlcihmdW5jdGlvbihlKXtZZSh0aGlzKS5hZGRDbGFzcyhuLmhvdmVyKSxlLnN0b3BQcm9wYWdhdGlvbigpfSxmdW5jdGlvbihlKXtZZSh0aGlzKS5yZW1vdmVDbGFzcyhuLmhvdmVyKX0pfSl9KX0sbWVudWJhckRlbGV0ZTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7WWUoIiMiK2UsIiMiK3RoaXMucC5pZCsiX21lbnViYXIiKS5yZW1vdmUoKX0pfSxhZGRDb2xTZWFyY2hNZW51OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBlPXRoaXM7WWUoZSkuY29sTWVudUFkZCgic2MiLHt0aXRsZToiUmVzZXQiLHBvc2l0aW9uOiJmaXJzdCIsaWQ6InJlc2V0IixmdW5jbmFtZTpmdW5jdGlvbigpe1llKCJpbnB1dFtpZF49J2pxc18nXSIsIiMiK3RoaXMucC5pZCkuZWFjaChmdW5jdGlvbihlKXtZZSh0aGlzKS52YWwoIiIpfSksWWUodGhpcylbMF0ucC5fcmVzdWx0cz17fSxZZSh0aGlzKS5qcUdyaWQoInNob3dDb2wiLHRoaXMucC5fYXZjKX19KSxZZShlKS5jb2xNZW51QWRkKCJzYyIse3NlcGFyYXRvcjohMCxpZDoiZ3JvdXBPcCJ9KSxZZShlKS5jb2xNZW51QWRkKCJzYyIse3NlcGFyYXRvcjohMCxpZDoib3Blck9wIn0pLFllKGUpLmNvbE1lbnVBZGQoInNjIix7c2VwYXJhdG9yOiEwLGlkOiJjbG9zZSIsZnVuY25hbWU6ZnVuY3Rpb24oKXtyZXR1cm4hMH19KSxZZShlKS5vbigianFHcmlkY29sTWVudUJlZm9yZVByb2Nlc3MuY3VzdG9tIixmdW5jdGlvbihlLHQpe2lmKCJjdXN0b20iPT09dC5tb2R1bGUmJiJzYyI9PT10LmNvbHVtbil7dmFyIHIsaSxvLGE9WWUuamdyaWQuZ2V0UmVnaW9uYWwodGhpcywic2VhcmNoIiksbj10aGlzLnAuc2VhcmNoQ29sT3B0aW9ucyxsPVllLmpncmlkLmdldE1ldGhvZCgiZ2V0U3R5bGVVSSIpLHM9dGhpcy5wLnN0eWxlVUkrIi5iYXNlIjtpZigicmVzZXQiPT09dC5hY3Rpb24uaWQmJih0LmFjdGlvbi50aXRsZT1hLlJlc2V0fHwiUmVzZXQiLHQuYWN0aW9uLmljb249bCh0aGlzLnAuc3R5bGVVSSsiLmNvbG1lbnUiLCJpY29uX3Jlc2V0IiwhMCwiIikpLCJjbG9zZSI9PT10LmFjdGlvbi5pZCYmKHQuYWN0aW9uLnRpdGxlPWEuQ2xvc2V8fCJDbG9zZSIsdC5hY3Rpb24uaWNvbj1sKHRoaXMucC5zdHlsZVVJKyIuY29sbWVudSIsImljb25fY2xvc2UiLCEwLCIiKSksImdyb3VwT3AiPT09dC5hY3Rpb24uaWQpe2ZvcihyPWwocywic2VhcmNoU2VsZWN0IiwhMSwic2VhcmNoLWNvbC1pbnB1dCIpLHQuYWN0aW9uLnRpdGxlPSIiKyhhLk9wZXJhbmR8fCJPcGVyYW5kOiAiKSx0LmFjdGlvbi50aXRsZSs9IjxzZWxlY3QgZGF0YS1ncmlkLWlkPSIrdGhpcy5wLmlkKycgaWQ9Im9wc2VsZWN0IiAgJytyKyI+IixyPWwodGhpcy5wLnN0eWxlVUkrIi5jb2xtZW51IiwiaWNvbl9ncm91cF9vcCIsITAsIiIpLHQuYWN0aW9uLmljb249cixpPTA7aTxhLmdyb3VwT3BzLmxlbmd0aDtpKyspbz1uLnNlYXJjaE9wPT09YS5ncm91cE9wc1tpXS5vcD8ic2VsZWN0ZWQiOiIiLHQuYWN0aW9uLnRpdGxlKz0nPG9wdGlvbiB2YWx1ZT0iJythLmdyb3VwT3BzW2ldLm9wKyciICcrbysiPiIrYS5ncm91cE9wc1tpXS50ZXh0KyI8L29wdGlvbj4iO3QuYWN0aW9uLnRpdGxlKz0iPC9zZWxlY3Q+IixzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7WWUoIiNvcHNlbGVjdCIpLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7dmFyIGU9WWUoIiMiK1llKHRoaXMpLmF0dHIoImRhdGEtZ3JpZC1pZCIpKVswXTtlLnAuc2VhcmNoQ29sT3B0aW9ucy5zZWFyY2hPcD1ZZSh0aGlzKS52YWwoKSxZZS5qZ3JpZC5teWZ1bmMoZS5wLmlkKX0pfSwyMDApfWlmKCJvcGVyT3AiPT09dC5hY3Rpb24uaWQpe2ZvcihyPWwocywic2VhcmNoU2VsZWN0IiwhMSwic2VhcmNoLWNvbC1pbnB1dCIpLHQuYWN0aW9uLnRpdGxlPWEuT3BlcmF0aW9ufHwiT3BlciA6ICIsdC5hY3Rpb24udGl0bGUrPSI8c2VsZWN0IGRhdGEtZ3JpZC1pZD0iK3RoaXMucC5pZCsnIGlkPSJzZWxlY3RvcGVyIiAgJytyKyI+IixyPWwodGhpcy5wLnN0eWxlVUkrIi5jb2xtZW51IiwiaWNvbl9vcGVyX29wIiwhMCwiIiksdC5hY3Rpb24uaWNvbj1yLGk9MDtpPGEub2RhdGEubGVuZ3RoO2krKylvPW4ub3BlcmFuZD09PWEub2RhdGFbaV0ub3Blcj8ic2VsZWN0ZWQiOiIiLG4uYU9wZXJhbmRzLmluY2x1ZGVzKGEub2RhdGFbaV0ub3BlcikmJih0LmFjdGlvbi50aXRsZSs9JzxvcHRpb24gdmFsdWU9IicrYS5vZGF0YVtpXS5vcGVyKyciICcrbysiPiIrYS5vZGF0YVtpXS50ZXh0KyI8L29wdGlvbj4iKTt0LmFjdGlvbi50aXRsZSs9Ijwvc2VsZWN0PiIsc2V0VGltZW91dChmdW5jdGlvbigpe1llKCIjc2VsZWN0b3BlciIpLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7dmFyIGU9WWUoIiMiK1llKHRoaXMpLmF0dHIoImRhdGEtZ3JpZC1pZCIpKVswXTtlLnAuc2VhcmNoQ29sT3B0aW9ucy5vcGVyYW5kPVllKHRoaXMpLnZhbCgpLFllLmpncmlkLm15ZnVuYyhlLnAuaWQpfSl9LDIwMCl9fX0pfSl9LGRpc2FibGVDb2xNZW51OmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtZZSh0aGlzLmdyaWQuaERpdikuZmluZCgidHIgI2pxZ2hfIit0aGlzLnAuaWQrIl8iK2UrIiA+IC5jb2xtZW51IikuY3NzKCJkaXNwbGF5Iiwibm9uZSIpfSl9LGVuYWJsZUNvbE1lbnU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe1llKHRoaXMuZ3JpZC5oRGl2KS5maW5kKCJ0ciAjanFnaF8iK3RoaXMucC5pZCsiXyIrZSsiID4gLmNvbG1lbnUiKS5jc3MoImRpc3BsYXkiLCJpbmxpbmUiKX0pfX0pLFllLmpncmlkLmV4dGVuZCh7ZWRpdENlbGw6ZnVuY3Rpb24oYyx1LGgsZyxmKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGUsdCxyLGksbz10aGlzLGE9WWUodGhpcykuanFHcmlkKCJnZXRTdHlsZVVJIixvLnAuc3R5bGVVSSsiLmNvbW1vbiIsImhpZ2hsaWdodCIsITApLG49by5wLmFyaWFCb2R5PyIiOlllKHRoaXMpLmpxR3JpZCgiZ2V0U3R5bGVVSSIsby5wLnN0eWxlVUkrIi5jb21tb24iLCJob3ZlciIsITApLGw9WWUodGhpcykuanFHcmlkKCJnZXRTdHlsZVVJIixvLnAuc3R5bGVVSSsiLmNlbGxlZGl0IiwiaW5wdXRDbGFzcyIsITApLHM9WWUodGhpcykuanFHcmlkKCJnZXRTdHlsZVVJIixvLnAuc3R5bGVVSSsiLmNlbGxlZGl0Iiwic2VsZWN0Q2xhc3MiLCEwKTtpZihvLmdyaWQmJiEwPT09by5wLmNlbGxFZGl0KXtpZih1PXBhcnNlSW50KHUsMTApLG8ucC5zZWxyb3c9by5yb3dzW2NdLmlkLG8ucC5rbnZ8fG8ucC5hcmlhQm9keXx8WWUobykuanFHcmlkKCJHcmlkTmF2IiksMDxvLnAuc2F2ZWRSb3cubGVuZ3RoKXtpZighMD09PWgmJmM9PW8ucC5pUm93JiZ1PT1vLnAuaUNvbClyZXR1cm47WWUobykuanFHcmlkKCJzYXZlQ2VsbCIsby5wLnNhdmVkUm93WzBdLmlkLG8ucC5zYXZlZFJvd1swXS5pYyl9ZWxzZSB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpe1llKCIjIitZZS5qZ3JpZC5qcUlEKG8ucC5rbnYpKS5hdHRyKCJ0YWJpbmRleCIsIi0xIikuZm9jdXMoKX0sMSk7aWYoInN1YmdyaWQiIT09KGU9KGk9by5wLmNvbE1vZGVsW3VdKS5uYW1lKSYmImNiIiE9PWUmJiJybiIhPT1lJiYic2MiIT09ZSl7dHJ5e3I9WWUoby5yb3dzW2NdLmNlbGxzW3VdKX1jYXRjaChlKXtyPVllKCJ0ZCIsby5yb3dzW2NdKS5lcSh1KX1pZigwPD1wYXJzZUludChvLnAuaUNvbCwxMCkmJjA8PXBhcnNlSW50KG8ucC5pUm93LDEwKSYmdm9pZCAwIT09by5wLmlSb3dJZCYmKGQ9WWUobykuanFHcmlkKCJnZXRHcmlkUm93QnlJZCIsby5wLmlSb3dJZCksWWUoZCkucmVtb3ZlQ2xhc3MoInNlbGVjdGVkLXJvdyAiK24pLmZpbmQoInRkIikuZXEoby5wLmlDb2wpLnJlbW92ZUNsYXNzKCJlZGl0LWNlbGwgIithKSksci5hZGRDbGFzcygiZWRpdC1jZWxsICIrYSksWWUoby5yb3dzW2NdKS5hZGRDbGFzcygic2VsZWN0ZWQtcm93ICIrbiksITAhPT1pLmVkaXRhYmxlfHwhMCE9PWh8fHIuaGFzQ2xhc3MoIm5vdC1lZGl0YWJsZS1jZWxsIil8fFllLmpncmlkLmlzRnVuY3Rpb24oby5wLmlzQ2VsbEVkaXRhYmxlKSYmIW8ucC5pc0NlbGxFZGl0YWJsZS5jYWxsKG8sZSxjLHUpKXQ9ci5odG1sKCkucmVwbGFjZSgvXCYjMTYwXDsvZ2ksIiIpLFllKG8pLnRyaWdnZXJIYW5kbGVyKCJqcUdyaWRDZWxsU2VsZWN0Iixbby5yb3dzW2NdLmlkLHUsdCxnXSksWWUuamdyaWQuaXNGdW5jdGlvbihvLnAub25DZWxsU2VsZWN0KSYmby5wLm9uQ2VsbFNlbGVjdC5jYWxsKG8sby5yb3dzW2NdLmlkLHUsdCxnKTtlbHNle3RyeXt0PVllLnVuZm9ybWF0LmNhbGwobyxyLHtyb3dJZDpvLnJvd3NbY10uaWQsY29sTW9kZWw6aX0sdSl9Y2F0Y2goZSl7dD1pLmVkaXR0eXBlJiYidGV4dGFyZWEiPT09aS5lZGl0dHlwZT9yLnRleHQoKTpyLmh0bWwoKX1vLnAuYXV0b2VuY29kZSYmKHQ9WWUuamdyaWQuaHRtbERlY29kZSh0KSksaS5lZGl0dHlwZXx8KGkuZWRpdHR5cGU9InRleHQiKSxvLnAuc2F2ZWRSb3cucHVzaCh7aWQ6YyxpYzp1LG5hbWU6ZSx2OnQscm93SWQ6by5yb3dzW2NdLmlkfSksKCImbmJzcDsiPT09dHx8IiYjMTYwOyI9PT10fHwxPT09dC5sZW5ndGgmJjE2MD09PXQuY2hhckNvZGVBdCgwKSkmJih0PSIiKSxZZS5qZ3JpZC5pc0Z1bmN0aW9uKG8ucC5mb3JtYXRDZWxsKSYmdm9pZCAwIT09KGQ9by5wLmZvcm1hdENlbGwuY2FsbChvLG8ucm93c1tjXS5pZCxlLHQsYyx1KSkmJih0PWQpLFllKG8pLnRyaWdnZXJIYW5kbGVyKCJqcUdyaWRCZWZvcmVFZGl0Q2VsbCIsW28ucm93c1tjXS5pZCxlLHQsYyx1XSksWWUuamdyaWQuaXNGdW5jdGlvbihvLnAuYmVmb3JlRWRpdENlbGwpJiZvLnAuYmVmb3JlRWRpdENlbGwuY2FsbChvLG8ucm93c1tjXS5pZCxlLHQsYyx1KTt2YXIgZCxhPVllLmV4dGVuZCh7fSxpLmVkaXRvcHRpb25zfHx7fSx7aWQ6YysiXyIrZSxuYW1lOmUscm93SWQ6by5yb3dzW2NdLmlkLG9wZXI6ImVkaXQiLG1vZHVsZToiY2VsbCJ9KSxwPShmJiYodD1nLmtleSksWWUuamdyaWQuY3JlYXRlRWwuY2FsbChvLGkuZWRpdHR5cGUsYSx0LCEwLFllLmV4dGVuZCh7fSxZZS5qZ3JpZC5hamF4T3B0aW9ucyxvLnAuYWpheFNlbGVjdE9wdGlvbnN8fHt9KSkpOy0xPFllLmluQXJyYXkoaS5lZGl0dHlwZSxbInRleHQiLCJ0ZXh0YXJlYSIsInBhc3N3b3JkIl0pP1llKHApLmFkZENsYXNzKGwpOiJzZWxlY3QiPT09aS5lZGl0dHlwZSYmWWUocCkuYWRkQ2xhc3Mocyksci5odG1sKCIiKS5hcHBlbmQocCkuYXR0cigidGFiaW5kZXgiLCIwIiksWWUuamdyaWQuYmluZEV2LmNhbGwobyxwLGEpLHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7WWUocCkuZm9jdXMoKX0sMSksWWUoImlucHV0LCBzZWxlY3QsIHRleHRhcmVhIixyKS5vbigia2V5ZG93biIsZnVuY3Rpb24oZSl7dmFyIHQ9ZS5rZXk7aWYoMjc9PT1lLmtleUNvZGUmJighKDA8WWUoImlucHV0Lmhhc0RhdGVwaWNrZXIiLHIpLmxlbmd0aCl8fFllKCIudWktZGF0ZXBpY2tlciIpLmlzKCI6aGlkZGVuIik/WWUobykuanFHcmlkKCJyZXN0b3JlQ2VsbCIsYyx1KTpZZSgiaW5wdXQuaGFzRGF0ZXBpY2tlciIscikuZGF0ZXBpY2tlcigiaGlkZSIpKSwxMz09PWUua2V5Q29kZSYmZS5hbHRLZXkmJiJURVhUQVJFQSI9PT10aGlzLm5vZGVOYW1lKXJldHVybiB0aGlzLnZhbHVlPXRoaXMudmFsdWUrIlxyIiwhMDtpZigxMz09PWUua2V5Q29kZSYmIWUuc2hpZnRLZXkpcmV0dXJuIFllKG8pLmpxR3JpZCgic2F2ZUNlbGwiLGMsdSksYzxvLnJvd3MubGVuZ3RoLTEmJmY/WWUobykuanFHcmlkKCJmb2N1c0JvZHlDZWxsIixjKzEsdSk6c2V0VGltZW91dChmdW5jdGlvbigpe1llKG8pLmpxR3JpZCgiZm9jdXNCb2R5Q2VsbCIsYyx1KX0sMTAwKSwhMTtpZig5PT09ZS5rZXlDb2RlJiYhZil7aWYoby5ncmlkLmhEaXYubG9hZGluZylyZXR1cm4hMTtlLnNoaWZ0S2V5P28ucC5hcmlhQm9keT8oWWUobykuanFHcmlkKCJzYXZlQ2VsbCIsYyx1KSwxPHUmJlllKG8pLmpxR3JpZCgiZm9jdXNCb2R5Q2VsbCIsYyx1LTEpKTohWWUobykuanFHcmlkKCJwcmV2Q2VsbCIsYyx1LGUpJiZvLnAuZWRpdE5leHRSb3dDZWxsJiYwPGMtMSYmby5yb3dzW2MtMV0mJihjLS0sWWUobykuanFHcmlkKCJwcmV2Q2VsbCIsYyxvLnAuY29sTW9kZWwubGVuZ3RoLGUpKTpvLnAuYXJpYUJvZHk/KFllKG8pLmpxR3JpZCgic2F2ZUNlbGwiLGMsdSksdTxvLnAuY29sTW9kZWwubGVuZ3RoLTEmJlllKG8pLmpxR3JpZCgiZm9jdXNCb2R5Q2VsbCIsYyx1KzEpKTohWWUobykuanFHcmlkKCJuZXh0Q2VsbCIsYyx1LGUpJiZvLnAuZWRpdE5leHRSb3dDZWxsJiZvLnJvd3NbYysxXSYmKGMrKyxZZShvKS5qcUdyaWQoIm5leHRDZWxsIixjLDAsZSkpfSFmJiZvLnAuRjJrZXkmJm8ucC5hcmlhQm9keSYmIkYyIj09PWUua2V5JiYoWWUobykuanFHcmlkKCJzYXZlQ2VsbCIsYyx1KSxZZShvKS5qcUdyaWQoImZvY3VzQm9keUNlbGwiLGMsdSksby5wLkYya2V5PSExKSxmJiYoIkFycm93VXAiPT09dCYmKFllKG8pLmpxR3JpZCgic2F2ZUNlbGwiLGMsdSksMTxjKSYmWWUobykuanFHcmlkKCJmb2N1c0JvZHlDZWxsIixjLTEsdSksIkFycm93RG93biI9PT10JiYoWWUobykuanFHcmlkKCJzYXZlQ2VsbCIsYyx1KSxjPG8ucC5yb3dzLmxlbmd0aC0xKSYmWWUobykuanFHcmlkKCJmb2N1c0JvZHlDZWxsIixjKzEsdSksIkFycm93TGVmdCI9PT10JiYoWWUobykuanFHcmlkKCJzYXZlQ2VsbCIsYyx1KSwxPHUpJiZZZShvKS5qcUdyaWQoImZvY3VzQm9keUNlbGwiLGMsdS0xKSwiQXJyb3dSaWdodCI9PT10JiYoWWUobykuanFHcmlkKCJzYXZlQ2VsbCIsYyx1KSx1PG8ucC5jb2xNb2RlbC5sZW5ndGgtMSkmJlllKG8pLmpxR3JpZCgiZm9jdXNCb2R5Q2VsbCIsYyx1KzEpLDk9PT1lLmtleUNvZGUpJiYoWWUobykuanFHcmlkKCJzYXZlQ2VsbCIsYyx1KSxlLnNoaWZ0S2V5PzE8dSYmWWUobykuanFHcmlkKCJmb2N1c0JvZHlDZWxsIixjLHUtMSk6dTxvLnAuY29sTW9kZWwubGVuZ3RoLTEmJlllKG8pLmpxR3JpZCgiZm9jdXNCb2R5Q2VsbCIsYyx1KzEpKSxlLnN0b3BQcm9wYWdhdGlvbigpfSksWWUobykudHJpZ2dlckhhbmRsZXIoImpxR3JpZEFmdGVyRWRpdENlbGwiLFtvLnJvd3NbY10uaWQsZSx0LGMsdV0pLFllLmpncmlkLmlzRnVuY3Rpb24oby5wLmFmdGVyRWRpdENlbGwpJiZvLnAuYWZ0ZXJFZGl0Q2VsbC5jYWxsKG8sby5yb3dzW2NdLmlkLGUsdCxjLHUpfW8ucC5pQ29sPXUsby5wLmlSb3c9YyxvLnAuaVJvd0lkPW8ucm93c1tjXS5pZH19fSl9LHNhdmVDZWxsOmZ1bmN0aW9uKHkseCxfKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIG89dGhpcyxlPW8ucC5jb2xNb2RlbFt4XSxhPWUubmFtZSxuPVllKG8pLmpxR3JpZCgiZ2V0R3JpZFJvd0J5SWQiLG8ucm93c1t5XS5pZCksbD1ZZSgidGQiLG4pLmVxKHgpLHM9KHZvaWQgMCE9PV8mJihpPVllLnVuZm9ybWF0LmNhbGwobyxsLHtyb3dJZDpvLnJvd3NbeV0uaWQsY29sTW9kZWw6ZX0seCksby5wLnNhdmVkUm93LnB1c2goe2lkOnksaWM6eCxuYW1lOmEsdjppLHJvd0lkOm8ucm93c1t5XS5pZH0pLG8ucC5zYXZlZFZhbHVlcz17b2xkdmFsdWU6aSxuZXd2YWx1ZTpfLGluZGV4Um93Onl9KSwxPD1vLnAuc2F2ZWRSb3cubGVuZ3RoPzA6bnVsbCksZD1ZZS5qZ3JpZC5nZXRSZWdpb25hbCh0aGlzLCJlcnJvcnMiKSxwPVllLmpncmlkLmdldFJlZ2lvbmFsKHRoaXMsImVkaXQiKTtpZihvLmdyaWQmJiEwPT09by5wLmNlbGxFZGl0KXtpZihudWxsIT09cyl7dmFyIGM9WWUuamdyaWQuanFJRChhKSx1PVllKGwpLm9mZnNldCgpO2lmKHZvaWQgMD09PV8pc3dpdGNoKGUuZWRpdHR5cGUpe2Nhc2Uic2VsZWN0Ijp2YXIgcixoLGc9ZS5lZGl0b3B0aW9ucy5tdWx0aXBsZT8odD1ZZSgiIyIreSsiXyIrYyxuKSxyPVtdLChoPVllKHQpLnZhbCgpKT9oLmpvaW4oIiwiKTpoPSIiLFllKCJvcHRpb246c2VsZWN0ZWQiLHQpLmVhY2goZnVuY3Rpb24oZSx0KXtyW2VdPVllKHQpLnRleHQoKX0pLHIuam9pbigiLCIpKTooaD1ZZSgiIyIreSsiXyIrYysiIG9wdGlvbjpzZWxlY3RlZCIsbikudmFsKCksWWUoIiMiK3krIl8iK2MrIiBvcHRpb246c2VsZWN0ZWQiLG4pLnRleHQoKSk7ZS5mb3JtYXR0ZXImJihnPWgpO2JyZWFrO2Nhc2UiY2hlY2tib3giOnZhciB0PVsiWWVzIiwiTm8iXTtlLmVkaXRvcHRpb25zJiZlLmVkaXRvcHRpb25zLnZhbHVlJiYodD1lLmVkaXRvcHRpb25zLnZhbHVlLnNwbGl0KCI6IikpLGg9WWUoIiMiK3krIl8iK2MsbikuaXMoIjpjaGVja2VkIik/dFswXTp0WzFdLGc9aDticmVhaztjYXNlInBhc3N3b3JkIjpjYXNlInRleHQiOmNhc2UidGV4dGFyZWEiOmNhc2UiYnV0dG9uIjpoPVllKCIjIit5KyJfIitjLG4pLnZhbCgpLGc9aDticmVhaztjYXNlImN1c3RvbSI6dHJ5e2lmKCFlLmVkaXRvcHRpb25zfHwhWWUuamdyaWQuaXNGdW5jdGlvbihlLmVkaXRvcHRpb25zLmN1c3RvbV92YWx1ZSkpdGhyb3ciZTEiO2lmKHZvaWQgMD09PShoPWUuZWRpdG9wdGlvbnMuY3VzdG9tX3ZhbHVlLmNhbGwobyxZZSgiLmN1c3RvbWVsZW1lbnQiLGwpLCJnZXQiKSkpdGhyb3ciZTIiO2c9aH1jYXRjaChlKXsiZTEiPT09ZT9ZZS5qZ3JpZC5pbmZvX2RpYWxvZyhkLmVycmNhcCwiZnVuY3Rpb24gJ2N1c3RvbV92YWx1ZScgIitwLm1zZy5ub2RlZmluZWQscC5iQ2xvc2Use3N0eWxlVUk6by5wLnN0eWxlVUl9KToiZTIiPT09ZT9ZZS5qZ3JpZC5pbmZvX2RpYWxvZyhkLmVycmNhcCwiZnVuY3Rpb24gJ2N1c3RvbV92YWx1ZScgIitwLm1zZy5ub3ZhbHVlLHAuYkNsb3NlLHtzdHlsZVVJOm8ucC5zdHlsZVVJfSk6WWUuamdyaWQuaW5mb19kaWFsb2coZC5lcnJjYXAsZS5tZXNzYWdlLHAuYkNsb3NlLHtzdHlsZVVJOm8ucC5zdHlsZVVJfSl9fWVsc2V7aWYoITAhPT1lLmVkaXRhYmxlfHxsLmhhc0NsYXNzKCJub3QtZWRpdGFibGUtY2VsbCIpfHxZZS5qZ3JpZC5pc0Z1bmN0aW9uKG8ucC5pc0NlbGxFZGl0YWJsZSkmJiFvLnAuaXNDZWxsRWRpdGFibGUuY2FsbChvLGEseSx4KSlyZXR1cm4gZz1oPV8sdm9pZCBvLnAuc2F2ZWRSb3cuc3BsaWNlKDAsMSk7Zz1oPV99aWYoZyE9PW8ucC5zYXZlZFJvd1tzXS52KXt2YXIgaT1ZZShvKS50cmlnZ2VySGFuZGxlcigianFHcmlkQmVmb3JlU2F2ZUNlbGwiLFtvLnAuc2F2ZWRSb3dbc10ucm93SWQsYSxoLHkseF0pLGY9KGkmJihnPWg9aSksWWUuamdyaWQuaXNGdW5jdGlvbihvLnAuYmVmb3JlU2F2ZUNlbGwpJiYoaT1vLnAuYmVmb3JlU2F2ZUNlbGwuY2FsbChvLG8ucC5zYXZlZFJvd1tzXS5yb3dJZCxhLGgseSx4KSkmJihnPWg9aSksWWUuamdyaWQuY2hlY2tWYWx1ZXMuY2FsbChvLGgseCkpLG09ITE7aWYoITA9PT1mWzBdKXt2YXIgaT1ZZShvKS50cmlnZ2VySGFuZGxlcigianFHcmlkQmVmb3JlU3VibWl0Q2VsbCIsW28ucC5zYXZlZFJvd1tzXS5yb3dJZCxhLGgseSx4XSl8fHt9LHY9KFllLmpncmlkLmlzRnVuY3Rpb24oby5wLmJlZm9yZVN1Ym1pdENlbGwpJiYoaT0oaT1vLnAuYmVmb3JlU3VibWl0Q2VsbC5jYWxsKG8sby5wLnNhdmVkUm93W3NdLnJvd0lkLGEsaCx5LHgpKXx8e30pLFllKG8pLnRyaWdnZXJIYW5kbGVyKCJqcUdyaWRPblN1Ym1pdENlbGwiLFtvLnAuc2F2ZWRSb3dbc10ucm93SWQsYSxoLHkseF0pKTtpZih2b2lkIDA9PT12JiYodj0hMCksITE9PT0odj1ZZS5qZ3JpZC5pc0Z1bmN0aW9uKG8ucC5vblN1Ym1pdENlbGwpJiZ2b2lkIDA9PT0odj1vLnAub25TdWJtaXRDZWxsKG8ucC5zYXZlZFJvd1tzXS5yb3dJZCxhLGgseSx4KSk/ITA6dikpcmV0dXJuOzA8WWUoImlucHV0Lmhhc0RhdGVwaWNrZXIiLGwpLmxlbmd0aCYmWWUoImlucHV0Lmhhc0RhdGVwaWNrZXIiLGwpLmRhdGVwaWNrZXIoImhpZGUiKTt2YXIgaj17fTtpZigicmVtb3RlIj09PW8ucC5jZWxsc3VibWl0KWlmKG8ucC5jZWxsdXJsKXtvLnAuYXV0b2VuY29kZSYmKGg9WWUuamdyaWQuaHRtbEVuY29kZShoKSksZS5lZGl0b3B0aW9ucyYmZS5lZGl0b3B0aW9ucy5OdWxsSWZFbXB0eSYmIiI9PT1oJiYoaD0ibnVsbCIsbT0hMCksalthXT1oO3ZhciB2PW8ucC5wcm1OYW1lcyxiPXYuaWQsdz12Lm9wZXI7altiXT1ZZS5qZ3JpZC5zdHJpcFByZWYoby5wLmlkUHJlZml4LG8ucC5zYXZlZFJvd1tzXS5yb3dJZCksalt3XT12LmVkaXRvcGVyLGo9WWUuZXh0ZW5kKGksaiksWWUobykuanFHcmlkKCJwcm9ncmVzc0JhciIse21ldGhvZDoic2hvdyIsbG9hZHR5cGU6by5wLmxvYWR1aSxodG1sY29udGVudDpZZS5qZ3JpZC5nZXRSZWdpb25hbChvLCJkZWZhdWx0cy5zYXZldGV4dCIpfSksby5ncmlkLmhEaXYubG9hZGluZz0hMCxZZS5hamF4KFllLmV4dGVuZCh7dXJsOm8ucC5jZWxsdXJsLGRhdGE6WWUuamdyaWQuaXNGdW5jdGlvbihvLnAuc2VyaWFsaXplQ2VsbERhdGEpP28ucC5zZXJpYWxpemVDZWxsRGF0YS5jYWxsKG8saixhKTpqLHR5cGU6IlBPU1QiLHN1Y2Nlc3M6ZnVuY3Rpb24oZSx0LHIpe3ZhciBpO1llKG8pLmpxR3JpZCgicHJvZ3Jlc3NCYXIiLHttZXRob2Q6ImhpZGUiLGxvYWR0eXBlOm8ucC5sb2FkdWl9KSxvLmdyaWQuaERpdi5sb2FkaW5nPSExLCJzdWNjZXNzIj09PXQmJighMD09PShpPSEwPT09KGk9WWUobykudHJpZ2dlckhhbmRsZXIoImpxR3JpZEFmdGVyU3VibWl0Q2VsbCIsW28scixqW2JdLGEsaCx5LHhdKXx8WyEwLCIiXSlbMF0mJlllLmpncmlkLmlzRnVuY3Rpb24oby5wLmFmdGVyU3VibWl0Q2VsbCk/by5wLmFmdGVyU3VibWl0Q2VsbC5jYWxsKG8scixqW2JdLGEsaCx5LHgpOmkpWzBdPyhtJiYoaD0iIiksWWUobCkuZW1wdHkoKSxZZShvKS5qcUdyaWQoInNldENlbGwiLG8ucC5zYXZlZFJvd1tzXS5yb3dJZCx4LGcsITEsITEsITApLGw9WWUoInRkIixuKS5lcSh4KSxZZShsKS5hZGRDbGFzcygiZGlydHktY2VsbCIpLFllKG4pLmFkZENsYXNzKCJlZGl0ZWQiKSxZZShvKS50cmlnZ2VySGFuZGxlcigianFHcmlkQWZ0ZXJTYXZlQ2VsbCIsW28ucC5zYXZlZFJvd1tzXS5yb3dJZCxhLGgseSx4XSksWWUuamdyaWQuaXNGdW5jdGlvbihvLnAuYWZ0ZXJTYXZlQ2VsbCkmJm8ucC5hZnRlclNhdmVDZWxsLmNhbGwobyxvLnAuc2F2ZWRSb3dbc10ucm93SWQsYSxoLHkseCksby5wLnNhdmVkUm93LnNwbGljZSgwLDEpKTooWWUobykudHJpZ2dlckhhbmRsZXIoImpxR3JpZEVycm9yQ2VsbCIsW3IsdF0pLFllLmpncmlkLmlzRnVuY3Rpb24oby5wLmVycm9yQ2VsbCk/by5wLmVycm9yQ2VsbC5jYWxsKG8scix0KTpZZS5qZ3JpZC5pbmZvX2RpYWxvZyhkLmVycmNhcCxpWzFdLHAuYkNsb3NlLHtzdHlsZVVJOm8ucC5zdHlsZVVJLHRvcDp1LnRvcCszMCxsZWZ0OnUubGVmdCxvbkNsb3NlOmZ1bmN0aW9uKCl7by5wLnJlc3RvcmVDZWxsb25GYWlsfHxZZSgiIyIreSsiXyIrYyxuKS5mb2N1cygpfX0pLG8ucC5yZXN0b3JlQ2VsbG9uRmFpbCYmWWUobykuanFHcmlkKCJyZXN0b3JlQ2VsbCIseSx4KSkpfSxlcnJvcjpmdW5jdGlvbihlLHQscil7WWUoIiNsdWlfIitZZS5qZ3JpZC5qcUlEKG8ucC5pZCkpLmhpZGUoKSxvLmdyaWQuaERpdi5sb2FkaW5nPSExLFllKG8pLnRyaWdnZXJIYW5kbGVyKCJqcUdyaWRFcnJvckNlbGwiLFtlLHQscl0pLFllLmpncmlkLmlzRnVuY3Rpb24oby5wLmVycm9yQ2VsbCk/by5wLmVycm9yQ2VsbC5jYWxsKG8sZSx0LHIpOlllLmpncmlkLmluZm9fZGlhbG9nKGQuZXJyY2FwLGUuc3RhdHVzKyIgOiAiK2Uuc3RhdHVzVGV4dCsiPGJyLz4iK3QscC5iQ2xvc2Use3N0eWxlVUk6by5wLnN0eWxlVUksdG9wOnUudG9wKzMwLGxlZnQ6dS5sZWZ0LG9uQ2xvc2U6ZnVuY3Rpb24oKXtvLnAucmVzdG9yZUNlbGxvbkZhaWx8fFllKCIjIit5KyJfIitjLG4pLmZvY3VzKCl9fSksby5wLnJlc3RvcmVDZWxsb25GYWlsJiZZZShvKS5qcUdyaWQoInJlc3RvcmVDZWxsIix5LHgpfX0sWWUuamdyaWQuYWpheE9wdGlvbnMsby5wLmFqYXhDZWxsT3B0aW9uc3x8e30pKX1lbHNlIHRyeXtZZS5qZ3JpZC5pbmZvX2RpYWxvZyhkLmVycmNhcCxkLm5vdXJsLHAuYkNsb3NlLHtzdHlsZVVJOm8ucC5zdHlsZVVJfSksby5wLnJlc3RvcmVDZWxsb25GYWlsJiZZZShvKS5qcUdyaWQoInJlc3RvcmVDZWxsIix5LHgpfWNhdGNoKGUpe30iY2xpZW50QXJyYXkiPT09by5wLmNlbGxzdWJtaXQ/KFllKGwpLmVtcHR5KCksWWUobykuanFHcmlkKCJzZXRDZWxsIixvLnAuc2F2ZWRSb3dbc10ucm93SWQseCxnLCExLCExLCEwKSxsPVllKCJ0ZCIsbikuZXEoeCksWWUobCkuYWRkQ2xhc3MoImRpcnR5LWNlbGwiKSxZZShuKS5hZGRDbGFzcygiZWRpdGVkIiksWWUobykudHJpZ2dlckhhbmRsZXIoImpxR3JpZEFmdGVyU2F2ZUNlbGwiLFtvLnAuc2F2ZWRSb3dbc10ucm93SWQsYSxoLHkseF0pLFllLmpncmlkLmlzRnVuY3Rpb24oby5wLmFmdGVyU2F2ZUNlbGwpJiZvLnAuYWZ0ZXJTYXZlQ2VsbC5jYWxsKG8sby5wLnNhdmVkUm93W3NdLnJvd0lkLGEsaCx5LHgpLG8ucC5zYXZlZFJvdy5zcGxpY2UoMCwxKSk6InN0b3JhZ2UiPT09by5wLmNlbGxzdWJtaXQmJigoaj1vLnAuc2F2ZWRSb3dbc10pW2FdPWgsaltvLnAua2V5TmFtZV09WWUuamdyaWQuc3RyaXBQcmVmKG8ucC5pZFByZWZpeCxvLnAuc2F2ZWRSb3dbc10ucm93SWQpLFllKG8pLmpxR3JpZCgidXBkYXRlU3RvcmFnZVJlY29yZCIsaikudGhlbihmdW5jdGlvbihlKXsiY29tcGxldGUiPT09ZS50eXBlJiYoWWUobCkuZW1wdHkoKSxZZShvKS5qcUdyaWQoInNldENlbGwiLG8ucC5zYXZlZFJvd1tzXS5yb3dJZCx4LGcsITEsITEsITApLGw9WWUoInRkIixuKS5lcSh4KSxZZShsKS5hZGRDbGFzcygiZGlydHktY2VsbCIpLFllKG4pLmFkZENsYXNzKCJlZGl0ZWQiKSxZZShvKS50cmlnZ2VySGFuZGxlcigianFHcmlkQWZ0ZXJTYXZlQ2VsbCIsW28ucC5zYXZlZFJvd1tzXS5yb3dJZCxhLGgseSx4XSksWWUuamdyaWQuaXNGdW5jdGlvbihvLnAuYWZ0ZXJTYXZlQ2VsbCkmJm8ucC5hZnRlclNhdmVDZWxsLmNhbGwobyxvLnAuc2F2ZWRSb3dbc10ucm93SWQsYSxoLHkseCksby5wLnNhdmVkUm93LnNwbGljZSgwLDEpKX0pLmNhdGNoKGZ1bmN0aW9uKGUpe1llLmpncmlkLmluZm9fZGlhbG9nKCJFcnJvciIsZS50YXJnZXQuZXJyb3IubmFtZSsiIDogIitlLnRhcmdldC5lcnJvci5tZXNzYWdlLCJDbG9zZSIpfSkpfWVsc2UgdHJ5e1llLmpncmlkLmlzRnVuY3Rpb24oby5wLnZhbGlkYXRpb25DZWxsKT9vLnAudmFsaWRhdGlvbkNlbGwuY2FsbChvLFllKCIjIit5KyJfIitjLG4pLGZbMV0seSx4KTood2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXtZZS5qZ3JpZC5pbmZvX2RpYWxvZyhkLmVycmNhcCxoKyIgIitmWzFdLHAuYkNsb3NlLHtzdHlsZVVJOm8ucC5zdHlsZVVJLHRvcDp1LnRvcCszMCxsZWZ0OnUubGVmdCxvbkNsb3NlOmZ1bmN0aW9uKCl7by5wLnJlc3RvcmVDZWxsb25GYWlsfHxZZSgiIyIreSsiXyIrYyxuKS5mb2N1cygpfX0pfSw1MCksby5wLnJlc3RvcmVDZWxsb25GYWlsJiZZZShvKS5qcUdyaWQoInJlc3RvcmVDZWxsIix5LHgpKX1jYXRjaChlKXthbGVydChmWzFdKX19ZWxzZSBZZShvKS5qcUdyaWQoInJlc3RvcmVDZWxsIix5LHgpfXdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7WWUoIiMiK1llLmpncmlkLmpxSUQoby5wLmtudikpLmF0dHIoInRhYmluZGV4IiwiLTEiKS5mb2N1cygpLG8ucC5hcmlhQm9keSYmWWUobykuanFHcmlkKCJmb2N1c0JvZHlDZWxsIixvLnAuaVJvdyxvLnAuaUNvbCl9LDApfX0pfSxyZXN0b3JlQ2VsbDpmdW5jdGlvbihpLG8pe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9MTw9ZS5wLnNhdmVkUm93Lmxlbmd0aD8wOm51bGw7aWYoZS5ncmlkJiYhMD09PWUucC5jZWxsRWRpdCl7aWYobnVsbCE9PXQpe3ZhciByPVllKGUpLmpxR3JpZCgiZ2V0R3JpZFJvd0J5SWQiLGUucC5zYXZlZFJvd1t0XS5yb3dJZCkscj1ZZSgidGQiLHIpLmVxKG8pO2lmKFllLmpncmlkLmlzRnVuY3Rpb24oWWUuZm4uZGF0ZXBpY2tlcikpdHJ5e1llKCJpbnB1dC5oYXNEYXRlcGlja2VyIixyKS5kYXRlcGlja2VyKCJoaWRlIil9Y2F0Y2goZSl7fVllKHIpLmVtcHR5KCkuYXR0cigidGFiaW5kZXgiLCItMSIpLFllKGUpLmpxR3JpZCgic2V0Q2VsbCIsZS5wLnNhdmVkUm93WzBdLnJvd0lkLG8sZS5wLnNhdmVkUm93W3RdLnYsITEsITEsITApLFllKGUpLnRyaWdnZXJIYW5kbGVyKCJqcUdyaWRBZnRlclJlc3RvcmVDZWxsIixbZS5wLnNhdmVkUm93W3RdLnJvd0lkLGUucC5zYXZlZFJvd1t0XS52LGksb10pLFllLmpncmlkLmlzRnVuY3Rpb24oZS5wLmFmdGVyUmVzdG9yZUNlbGwpJiZlLnAuYWZ0ZXJSZXN0b3JlQ2VsbC5jYWxsKGUsZS5wLnNhdmVkUm93W3RdLnJvd0lkLGUucC5zYXZlZFJvd1t0XS52LGksbyksZS5wLnNhdmVkUm93LnNwbGljZSgwLDEpfXdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7WWUoIiMiK2UucC5rbnYpLmF0dHIoInRhYmluZGV4IiwiLTEiKS5mb2N1cygpLGUucC5hcmlhQm9keSYmWWUoZSkuanFHcmlkKCJmb2N1c0JvZHlDZWxsIixlLnAuaVJvdyxlLnAuaUNvbCl9LDApfX0pfSxuZXh0Q2VsbDpmdW5jdGlvbihpLG8sYSl7dmFyIG47cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBlLHQ9dGhpcyxyPSExO2lmKHQuZ3JpZCYmITA9PT10LnAuY2VsbEVkaXQpe2ZvcihlPW8rMTtlPHQucC5jb2xNb2RlbC5sZW5ndGg7ZSsrKWlmKCEwPT09dC5wLmNvbE1vZGVsW2VdLmVkaXRhYmxlJiYoIVllLmpncmlkLmlzRnVuY3Rpb24odC5wLmlzQ2VsbEVkaXRhYmxlKXx8dC5wLmlzQ2VsbEVkaXRhYmxlLmNhbGwodCx0LnAuY29sTW9kZWxbZV0ubmFtZSxpLGUpKSl7cj1lO2JyZWFrfSExIT09cj8obj0hMCxZZSh0KS5qcUdyaWQoImVkaXRDZWxsIixpLHIsITAsYSkpOihuPSExLDA8dC5wLnNhdmVkUm93Lmxlbmd0aCYmWWUodCkuanFHcmlkKCJzYXZlQ2VsbCIsaSxvKSl9fSksbn0scHJldkNlbGw6ZnVuY3Rpb24oaSxvLGEpe3ZhciBuO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZSx0PXRoaXMscj0hMTtpZighdC5ncmlkfHwhMCE9PXQucC5jZWxsRWRpdClyZXR1cm4hMTtmb3IoZT1vLTE7MDw9ZTtlLS0paWYoITA9PT10LnAuY29sTW9kZWxbZV0uZWRpdGFibGUmJighWWUuamdyaWQuaXNGdW5jdGlvbih0LnAuaXNDZWxsRWRpdGFibGUpfHx0LnAuaXNDZWxsRWRpdGFibGUuY2FsbCh0LHQucC5jb2xNb2RlbFtlXS5uYW1lLGksZSkpKXtyPWU7YnJlYWt9ITEhPT1yPyhuPSEwLFllKHQpLmpxR3JpZCgiZWRpdENlbGwiLGksciwhMCxhKSk6KG49ITEsMDx0LnAuc2F2ZWRSb3cubGVuZ3RoJiZZZSh0KS5qcUdyaWQoInNhdmVDZWxsIixpLG8pKX0pLG59LEdyaWROYXY6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGUsdCxyLGw9dGhpcztmdW5jdGlvbiBpKGUsdCxyKXt2YXIgaSxvLGEsbjsidiI9PT1yLnN1YnN0cigwLDEpJiYoaT1ZZShsLmdyaWQuYkRpdilbMF0uY2xpZW50SGVpZ2h0LG49WWUobC5ncmlkLmJEaXYpWzBdLnNjcm9sbFRvcCxvPWwucm93c1tlXS5vZmZzZXRUb3ArbC5yb3dzW2VdLmNsaWVudEhlaWdodCxhPWwucm93c1tlXS5vZmZzZXRUb3AsInZkIj09PXImJmk8PW8mJihZZShsLmdyaWQuYkRpdilbMF0uc2Nyb2xsVG9wPVllKGwuZ3JpZC5iRGl2KVswXS5zY3JvbGxUb3ArbC5yb3dzW2VdLmNsaWVudEhlaWdodCksInZ1Ij09PXIpJiZhPG4mJihZZShsLmdyaWQuYkRpdilbMF0uc2Nyb2xsVG9wPVllKGwuZ3JpZC5iRGl2KVswXS5zY3JvbGxUb3AtbC5yb3dzW2VdLmNsaWVudEhlaWdodCksImgiPT09ciYmKGk9WWUobC5ncmlkLmJEaXYpWzBdLmNsaWVudFdpZHRoLG89WWUobC5ncmlkLmJEaXYpWzBdLnNjcm9sbExlZnQsYT1sLnJvd3NbZV0uY2VsbHNbdF0ub2Zmc2V0TGVmdCtsLnJvd3NbZV0uY2VsbHNbdF0uY2xpZW50V2lkdGgsbj1sLnJvd3NbZV0uY2VsbHNbdF0ub2Zmc2V0TGVmdCxhPj1pK3BhcnNlSW50KG8sMTApP1llKGwuZ3JpZC5iRGl2KVswXS5zY3JvbGxMZWZ0PVllKGwuZ3JpZC5iRGl2KVswXS5zY3JvbGxMZWZ0K2wucm93c1tlXS5jZWxsc1t0XS5jbGllbnRXaWR0aDpuPG8mJihZZShsLmdyaWQuYkRpdilbMF0uc2Nyb2xsTGVmdD1ZZShsLmdyaWQuYkRpdilbMF0uc2Nyb2xsTGVmdC1sLnJvd3NbZV0uY2VsbHNbdF0uY2xpZW50V2lkdGgpKX1mdW5jdGlvbiBvKGUsdCl7dmFyIHIsaTtpZigibGZ0Ij09PXQpZm9yKHI9ZSsxLGk9ZTswPD1pO2ktLSlpZighMCE9PWwucC5jb2xNb2RlbFtpXS5oaWRkZW4pe3I9aTticmVha31pZigicmd0Ij09PXQpZm9yKHI9ZS0xLGk9ZTtpPGwucC5jb2xNb2RlbC5sZW5ndGg7aSsrKWlmKCEwIT09bC5wLmNvbE1vZGVsW2ldLmhpZGRlbil7cj1pO2JyZWFrfXJldHVybiByfWwuZ3JpZCYmITA9PT1sLnAuY2VsbEVkaXQmJihsLnAua252PWwucC5pZCsiX2tuIixlPVllKCI8ZGl2IHN0eWxlPSdwb3NpdGlvbjpmaXhlZDt0b3A6MHB4O3dpZHRoOjFweDtoZWlnaHQ6MXB4OycgdGFiaW5kZXg9JzAnPjxkaXYgdGFiaW5kZXg9Jy0xJyBzdHlsZT0nd2lkdGg6MXB4O2hlaWdodDoxcHg7JyBpZD0nIitsLnAua252KyInPjwvZGl2PjwvZGl2PiIpLFllKGUpLmluc2VydEJlZm9yZShsLmdyaWQuY0RpdiksWWUoIiMiK2wucC5rbnYpLmZvY3VzKCkua2V5ZG93bihmdW5jdGlvbihlKXtzd2l0Y2gocj1lLmtleUNvZGUsInJ0bCI9PT1sLnAuZGlyZWN0aW9uJiYoMzc9PT1yP3I9Mzk6Mzk9PT1yJiYocj0zNykpLHIpe2Nhc2UgMzg6MDxsLnAuaVJvdy0xJiYoaShsLnAuaVJvdy0xLGwucC5pQ29sLCJ2dSIpLFllKGwpLmpxR3JpZCgiZWRpdENlbGwiLGwucC5pUm93LTEsbC5wLmlDb2wsITEsZSkpO2JyZWFrO2Nhc2UgNDA6bC5wLmlSb3crMTw9bC5yb3dzLmxlbmd0aC0xJiYoaShsLnAuaVJvdysxLGwucC5pQ29sLCJ2ZCIpLFllKGwpLmpxR3JpZCgiZWRpdENlbGwiLGwucC5pUm93KzEsbC5wLmlDb2wsITEsZSkpO2JyZWFrO2Nhc2UgMzc6MDw9bC5wLmlDb2wtMSYmKHQ9byhsLnAuaUNvbC0xLCJsZnQiKSxpKGwucC5pUm93LHQsImgiKSxZZShsKS5qcUdyaWQoImVkaXRDZWxsIixsLnAuaVJvdyx0LCExLGUpKTticmVhaztjYXNlIDM5OmwucC5pQ29sKzE8PWwucC5jb2xNb2RlbC5sZW5ndGgtMSYmKHQ9byhsLnAuaUNvbCsxLCJyZ3QiKSxpKGwucC5pUm93LHQsImgiKSxZZShsKS5qcUdyaWQoImVkaXRDZWxsIixsLnAuaVJvdyx0LCExLGUpKTticmVhaztjYXNlIDEzOjA8PXBhcnNlSW50KGwucC5pQ29sLDEwKSYmMDw9cGFyc2VJbnQobC5wLmlSb3csMTApJiZZZShsKS5qcUdyaWQoImVkaXRDZWxsIixsLnAuaVJvdyxsLnAuaUNvbCwhMCxlKTticmVhaztkZWZhdWx0OnJldHVybiEwfXJldHVybiExfSkpfSl9LGdldENoYW5nZWRDZWxsczpmdW5jdGlvbihhKXt2YXIgZT1bXTtyZXR1cm4gYT1hfHwiYWxsIix0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgaSxvPXRoaXM7by5ncmlkJiYhMD09PW8ucC5jZWxsRWRpdCYmWWUoby5yb3dzKS5lYWNoKGZ1bmN0aW9uKHQpe3ZhciByPXt9O1llKHRoaXMpLmhhc0NsYXNzKCJlZGl0ZWQiKSYmKFllKCJ0ZCIsdGhpcykuZWFjaChmdW5jdGlvbihlKXtpZigiY2IiIT09KGk9by5wLmNvbE1vZGVsW2VdLm5hbWUpJiYic3ViZ3JpZCIhPT1pJiYic2MiIT09aSlpZigiZGlydHkiPT09YSl7aWYoWWUodGhpcykuaGFzQ2xhc3MoImRpcnR5LWNlbGwiKSl0cnl7cltpXT1ZZS51bmZvcm1hdC5jYWxsKG8sdGhpcyx7cm93SWQ6by5yb3dzW3RdLmlkLGNvbE1vZGVsOm8ucC5jb2xNb2RlbFtlXX0sZSl9Y2F0Y2goZSl7cltpXT1ZZS5qZ3JpZC5odG1sRGVjb2RlKFllKHRoaXMpLmh0bWwoKSl9fWVsc2UgdHJ5e3JbaV09WWUudW5mb3JtYXQuY2FsbChvLHRoaXMse3Jvd0lkOm8ucm93c1t0XS5pZCxjb2xNb2RlbDpvLnAuY29sTW9kZWxbZV19LGUpfWNhdGNoKGUpe3JbaV09WWUuamdyaWQuaHRtbERlY29kZShZZSh0aGlzKS5odG1sKCkpfX0pLHIuaWQ9dGhpcy5pZCxlLnB1c2gocikpfSl9KSxlfX0pLFllLmV4dGVuZChZZS5qZ3JpZCx7c2hvd01vZGFsOmZ1bmN0aW9uKGUpe2Uudy5zaG93KCl9LGNsb3NlTW9kYWw6ZnVuY3Rpb24oZSl7ZS53LmhpZGUoKS5hdHRyKCJhcmlhLWhpZGRlbiIsInRydWUiKSxlLm8mJmUuby5yZW1vdmUoKX0saGlkZU1vZGFsOmZ1bmN0aW9uKGUsdCl7dmFyIHIsaSxvPSEoISh0PVllLmV4dGVuZCh7anFtOiEwLGdiOiIiLHJlbW92ZW1vZGFsOiExLGZvcm1wcm9wOiExLGZvcm06IiJ9LHR8fHt9KSkuZ2J8fCJzdHJpbmciIT10eXBlb2YgdC5nYnx8IiNnYm94XyIhPT10LmdiLnN1YnN0cigwLDYpKSYmWWUoIiMiK3QuZ2Iuc3Vic3RyKDYpKVswXTtpZih0Lm9uQ2xvc2Upe3ZhciBhPW8/dC5vbkNsb3NlLmNhbGwobyxlKTp0Lm9uQ2xvc2UoZSk7aWYoImJvb2xlYW4iPT10eXBlb2YgYSYmIWEpcmV0dXJufWlmKHQuZm9ybXByb3AmJm8mJnQuZm9ybSYmKCJlZGl0Ij09PXQuZm9ybT8ocj0iIyIrWWUuamdyaWQuanFJRCgiRnJtR3JpZF8iK3QuZ2Iuc3Vic3RyKDYpKSxpPSJmb3JtUHJvcCIpOiJ2aWV3Ij09PXQuZm9ybSYmKHI9IiMiK1llLmpncmlkLmpxSUQoIlZpZXdHcmlkXyIrdC5nYi5zdWJzdHIoNikpLGk9InZpZXdQcm9wIiksWWUobykuZGF0YShpLHt0b3A6WWUuamdyaWQuZmxvYXROdW0oWWUoZSkuY3NzKCJ0b3AiKSksbGVmdDpZZS5qZ3JpZC5mbG9hdE51bShZZShlKS5jc3MoImxlZnQiKSksd2lkdGg6WWUuamdyaWQuZmxvYXROdW0oWWUoZSlbMF0uc3R5bGUud2lkdGgpLGhlaWdodDpZZS5qZ3JpZC5mbG9hdE51bShZZShlKVswXS5zdHlsZS5oZWlnaHQpLGRhdGFoZWlnaHQ6WWUocikuaGVpZ2h0KCksZGF0YXdpZHRoOlllKHIpLndpZHRoKCl9KSksWWUuZm4uanFtJiYhMD09PXQuanFtKVllKGUpLmF0dHIoImFyaWEtaGlkZGVuIiwidHJ1ZSIpLmpxbUhpZGUoKTtlbHNle2lmKCIiIT09dC5nYil0cnl7WWUodC5nYikuZmluZCgiLmpxZ3JpZC1vdmVybGF5IikuZmlyc3QoKS5oaWRlKCl9Y2F0Y2goZSl7fXRyeXtZZSgiLmpxZ3JpZC1vdmVybGF5LW1vZGFsIikuaGlkZSgpfWNhdGNoKGUpe31ZZShlKS5oaWRlKCkuYXR0cigiYXJpYS1oaWRkZW4iLCJ0cnVlIil9dC5yZW1vdmVtb2RhbCYmWWUoZSkucmVtb3ZlKCl9LGZpbmRQb3M6ZnVuY3Rpb24oZSl7ZT1ZZShlKS5vZmZzZXQoKTtyZXR1cm5bZS5sZWZ0LGUudG9wXX0sY3JlYXRlTW9kYWw6ZnVuY3Rpb24ocixlLGksdCxvLGEsbil7aT1ZZS5leHRlbmQoITAse30sWWUuamdyaWQuanFNb2RhbHx8e30saSk7dmFyIGw9dGhpcyxzPSJydGwiPT09WWUoaS5nYm94KS5hdHRyKCJkaXIiKSxkPVllLmpncmlkLnN0eWxlVUlbaS5zdHlsZVVJfHwialF1ZXJ5VUkiXS5tb2RhbCxwPVllLmpncmlkLnN0eWxlVUlbaS5zdHlsZVVJfHwialF1ZXJ5VUkiXS5jb21tb24sYz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx1PShuPVllLmV4dGVuZCh7fSxufHx7fSksYy5jbGFzc05hbWU9InVpLWpxZGlhbG9nICIrZC5tb2RhbCxjLmlkPXIudGhlbW9kYWwsZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpLGg9KHUuY2xhc3NOYW1lPSJ1aS1qcWRpYWxvZy10aXRsZWJhciAiK2QuaGVhZGVyLHUuaWQ9ci5tb2RhbGhlYWQsWWUodSkuYXBwZW5kKCI8c3BhbiBjbGFzcz0ndWktanFkaWFsb2ctdGl0bGUnPiIraS5jYXB0aW9uKyI8L3NwYW4+IiksWWUoIjxhIGNsYXNzPSd1aS1qcWRpYWxvZy10aXRsZWJhci1jbG9zZSAiK3AuY29ybmVyYWxsKyInIGFyaWEtbGFiZWw9J0Nsb3NlJz48L2E+IikuaG92ZXIoZnVuY3Rpb24oKXtoLmFkZENsYXNzKHAuaG92ZXIpfSxmdW5jdGlvbigpe2gucmVtb3ZlQ2xhc3MocC5ob3Zlcil9KS5hcHBlbmQoIjxzcGFuIGNsYXNzPSciK3AuaWNvbl9iYXNlKyIgIitkLmljb25fY2xvc2UrIic+PC9zcGFuPiIpKSxnPShZZSh1KS5hcHBlbmQoaCkscz8oYy5kaXI9InJ0bCIsWWUoIi51aS1qcWRpYWxvZy10aXRsZSIsdSkuY3NzKCJmbG9hdCIsInJpZ2h0IiksWWUoIi51aS1qcWRpYWxvZy10aXRsZWJhci1jbG9zZSIsdSkuY3NzKCJsZWZ0IiwiMC4zZW0iKSk6KGMuZGlyPSJsdHIiLFllKCIudWktanFkaWFsb2ctdGl0bGUiLHUpLmNzcygiZmxvYXQiLCJsZWZ0IiksWWUoIi51aS1qcWRpYWxvZy10aXRsZWJhci1jbG9zZSIsdSkuY3NzKCJyaWdodCIsIjAuM2VtIikpLGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKSxlPShZZShnKS5hZGRDbGFzcygidWktanFkaWFsb2ctY29udGVudCAiK2QuY29udGVudCkuYXR0cigiaWQiLHIubW9kYWxjb250ZW50KSxZZShnKS5hcHBlbmQoZSksYy5hcHBlbmRDaGlsZChnKSxZZShjKS5wcmVwZW5kKHUpLCEwPT09YT9ZZSgiYm9keSIpLmFwcGVuZChjKToic3RyaW5nIj09dHlwZW9mIGE/WWUoYSkuYXBwZW5kKGMpOlllKGMpLmluc2VydEJlZm9yZSh0KSxZZShjKS5jc3Mobiksdm9pZCAwPT09aS5qcU1vZGFsJiYoaS5qcU1vZGFsPSEwKSx7fSk7aWYoWWUuZm4uanFtJiYhMD09PWkuanFNb2RhbD8oMD09PWkubGVmdCYmMD09PWkudG9wJiZpLm92ZXJsYXkmJihnPVtdLGc9WWUuamdyaWQuZmluZFBvcyhvKSxpLmxlZnQ9Z1swXSs0LGkudG9wPWdbMV0rNCxzKSYmIWEmJihpLmxlZnQ9WWUoaS5nYm94KS5vdXRlcldpZHRoKCktKGlzTmFOKGkud2lkdGgpPzMwMDpwYXJzZUludChpLndpZHRoLDEwKSkpLGUudG9wPWkudG9wKyJweCIsZS5sZWZ0PWkubGVmdCsicHgiKTowPT09aS5sZWZ0JiYwPT09aS50b3B8fChlLmxlZnQ9aS5sZWZ0KyJweCIsZS50b3A9aS50b3ArInB4IiksWWUoImEudWktanFkaWFsb2ctdGl0bGViYXItY2xvc2UiLHUpLmNsaWNrKGZ1bmN0aW9uKCl7dmFyIGU9WWUoIiMiK1llLmpncmlkLmpxSUQoci50aGVtb2RhbCkpLmRhdGEoIm9uQ2xvc2UiKXx8aS5vbkNsb3NlLHQ9WWUoIiMiK1llLmpncmlkLmpxSUQoci50aGVtb2RhbCkpLmRhdGEoImdib3giKXx8aS5nYm94O3JldHVybiBsLmhpZGVNb2RhbCgiIyIrWWUuamdyaWQuanFJRChyLnRoZW1vZGFsKSx7Z2I6dCxqcW06aS5qcU1vZGFsLG9uQ2xvc2U6ZSxyZW1vdmVtb2RhbDppLnJlbW92ZW1vZGFsfHwhMSxmb3JtcHJvcDohaS5yZWNyZWF0ZUZvcm18fCExLGZvcm06aS5mb3JtfHwiIn0pLCExfSksMCE9PWkud2lkdGgmJmkud2lkdGh8fChpLndpZHRoPTMwMCksMCE9PWkuaGVpZ2h0JiZpLmhlaWdodHx8KGkuaGVpZ2h0PTIwMCksaS56SW5kZXh8fChuPVllKHQpLnBhcmVudHMoIipbcm9sZT1kaWFsb2ddIikuZmlyc3QoKS5jc3MoInotaW5kZXgiKSxpLnpJbmRleD1uP3BhcnNlSW50KG4sMTApKzI6OTUwKSxZZShjKS5jc3MoWWUuZXh0ZW5kKHt3aWR0aDppc05hTihpLndpZHRoKT8iYXV0byI6aS53aWR0aCsicHgiLGhlaWdodDppc05hTihpLmhlaWdodCk/ImF1dG8iOmkuaGVpZ2h0KyJweCIsekluZGV4OmkuekluZGV4LG92ZXJmbG93OiJoaWRkZW4ifSxlKSkuYXR0cih7dGFiSW5kZXg6Ii0xIixyb2xlOiJkaWFsb2ciLCJhcmlhLWxhYmVsbGVkYnkiOnIubW9kYWxoZWFkLCJhcmlhLWhpZGRlbiI6InRydWUifSksdm9pZCAwPT09aS5kcmFnJiYoaS5kcmFnPSEwKSx2b2lkIDA9PT1pLnJlc2l6ZSYmKGkucmVzaXplPSEwKSxpLmRyYWcpaWYoWWUodSkuY3NzKCJjdXJzb3IiLCJtb3ZlIiksWWUuZm4udGlueURyYWdnYWJsZSlZZShjKS50aW55RHJhZ2dhYmxlKHtoYW5kbGU6IiMiK1llLmpncmlkLmpxSUQodS5pZCl9KTtlbHNlIHRyeXtZZShjKS5kcmFnZ2FibGUoe2hhbmRsZTpZZSgiIyIrWWUuamdyaWQuanFJRCh1LmlkKSl9KX1jYXRjaChlKXt9aWYoaS5yZXNpemUpaWYoWWUuZm4uanFSZXNpemUpWWUoYykuYXBwZW5kKCI8ZGl2IGNsYXNzPSdqcVJlc2l6ZSAiK2QucmVzaXphYmxlKyIgIitwLmljb25fYmFzZSsiICIrZC5pY29uX3Jlc2l6YWJsZSsiJz48L2Rpdj4iKSxZZSgiIyIrWWUuamdyaWQuanFJRChyLnRoZW1vZGFsKSkuanFSZXNpemUoIi5qcVJlc2l6ZSIsISFyLnNjcm9sbGVsbSYmIiMiK1llLmpncmlkLmpxSUQoci5zY3JvbGxlbG0pKTtlbHNlIHRyeXtZZShjKS5yZXNpemFibGUoe2hhbmRsZXM6InNlLCBzdyIsYWxzb1Jlc2l6ZTohIXIuc2Nyb2xsZWxtJiYiIyIrWWUuamdyaWQuanFJRChyLnNjcm9sbGVsbSl9KX1jYXRjaChlKXt9ITA9PT1pLmNsb3NlT25Fc2NhcGUmJlllKGMpLmtleWRvd24oZnVuY3Rpb24oZSl7Mjc9PT1lLndoaWNoJiYoZT1ZZSgiIyIrWWUuamdyaWQuanFJRChyLnRoZW1vZGFsKSkuZGF0YSgib25DbG9zZSIpfHxpLm9uQ2xvc2UsbC5oaWRlTW9kYWwoIiMiK1llLmpncmlkLmpxSUQoci50aGVtb2RhbCkse2diOmkuZ2JveCxqcW06aS5qcU1vZGFsLG9uQ2xvc2U6ZSxyZW1vdmVtb2RhbDppLnJlbW92ZW1vZGFsfHwhMSxmb3JtcHJvcDohaS5yZWNyZWF0ZUZvcm18fCExLGZvcm06aS5mb3JtfHwiIn0pKX0pfSx2aWV3TW9kYWw6ZnVuY3Rpb24oZSx0KXt2YXIgcj0iIjtpZigodD1ZZS5leHRlbmQoe3RvVG9wOiEwLG92ZXJsYXk6MTAsbW9kYWw6ITEsb3ZlcmxheUNsYXNzOiJ1aS13aWRnZXQtb3ZlcmxheSIsb25TaG93OlllLmpncmlkLnNob3dNb2RhbCxvbkhpZGU6WWUuamdyaWQuY2xvc2VNb2RhbCxnYm94OiIiLGpxbTohMCxqcU06ITB9LHR8fHt9KSkuZ2JveCl7dmFyIGk9WWUoIiMiK3QuZ2JveC5zdWJzdHJpbmcoNikpWzBdO3RyeXtyPVllKGkpLmpxR3JpZCgiZ2V0U3R5bGVVSSIsaS5wLnN0eWxlVUkrIi5jb21tb24iLCJvdmVybGF5IiwhMSwianFncmlkLW92ZXJsYXktbW9kYWwiKSx0Lm92ZXJsYXlDbGFzcz1ZZShpKS5qcUdyaWQoImdldFN0eWxlVUkiLGkucC5zdHlsZVVJKyIuY29tbW9uIiwib3ZlcmxheSIsITApfWNhdGNoKGUpe319aWYodm9pZCAwPT09dC5mb2N1c0ZpZWxkJiYodC5mb2N1c0ZpZWxkPTApLCJudW1iZXIiPT10eXBlb2YgdC5mb2N1c0ZpZWxkJiYwPD10LmZvY3VzRmllbGQ/dC5mb2N1c0ZpZWxkPXBhcnNlSW50KHQuZm9jdXNGaWVsZCwxMCk6ImJvb2xlYW4iIT10eXBlb2YgdC5mb2N1c0ZpZWxkfHx0LmZvY3VzRmllbGQ/dC5mb2N1c0ZpZWxkPTA6dC5mb2N1c0ZpZWxkPSExLFllLmZuLmpxbSYmITA9PT10LmpxbSkodC5qcU0/WWUoZSkuYXR0cigiYXJpYS1oaWRkZW4iLCJmYWxzZSIpLmpxbSh0KTpZZShlKS5hdHRyKCJhcmlhLWhpZGRlbiIsImZhbHNlIikpLmpxbVNob3coKTtlbHNlIGlmKCIiIT09dC5nYm94JiYoaT1wYXJzZUludChZZShlKS5jc3MoInotaW5kZXgiKSktMSx0Lm1vZGFsPyhZZSgiLmpxZ3JpZC1vdmVybGF5LW1vZGFsIilbMF18fFllKCJib2R5IikucHJlcGVuZCgiPGRpdiAiK3IrIj48L2Rpdj4iKSxZZSgiLmpxZ3JpZC1vdmVybGF5LW1vZGFsIikuY3NzKCJ6LWluZGV4IixpKS5zaG93KCkpOihZZSh0Lmdib3gpLmZpbmQoIi5qcWdyaWQtb3ZlcmxheSIpLmZpcnN0KCkuY3NzKCJ6LWluZGV4IixpKS5zaG93KCksWWUoZSkuZGF0YSgiZ2JveCIsdC5nYm94KSkpLFllKGUpLnNob3coKS5hdHRyKCJhcmlhLWhpZGRlbiIsImZhbHNlIiksMDw9dC5mb2N1c0ZpZWxkKXRyeXtZZSgiOmlucHV0OnZpc2libGUiLGUpW3QuZm9jdXNGaWVsZF0uZm9jdXMoKX1jYXRjaChlKXt9fSxpbmZvX2RpYWxvZzpmdW5jdGlvbihlLHQscixpKXt2YXIgbyxhPXt3aWR0aDoyOTAsaGVpZ2h0OiJhdXRvIixkYXRhaGVpZ2h0OiJhdXRvIixkcmFnOiEwLHJlc2l6ZTohMSxsZWZ0OndpbmRvdy5pbm5lcldpZHRoLzItMTQ1LHRvcDp3aW5kb3cuaW5uZXJIZWlnaHQvMi0xNTAsekluZGV4OjFlMyxqcU1vZGFsOiEwLG1vZGFsOiExLGNsb3NlT25Fc2NhcGU6ITAsYWxpZ246ImNlbnRlciIsYnV0dG9uYWxpZ246ImNlbnRlciIsYnV0dG9uczpbXX0sbj0oWWUuZXh0ZW5kKCEwLGEsWWUuamdyaWQuanFNb2RhbHx8e30se2NhcHRpb246IjxiPiIrZSsiPC9iPiJ9LGl8fHt9KSxhLmpxTW9kYWwpLGw9dGhpcyxlPVllLmpncmlkLnN0eWxlVUlbYS5zdHlsZVVJfHwialF1ZXJ5VUkiXS5tb2RhbCxzPVllLmpncmlkLnN0eWxlVUlbYS5zdHlsZVVJfHwialF1ZXJ5VUkiXS5jb21tb24sZD0oWWUuZm4uanFtJiYhbiYmKG49ITEpLCIiKTtpZigwPGEuYnV0dG9ucy5sZW5ndGgpZm9yKG89MDtvPGEuYnV0dG9ucy5sZW5ndGg7bysrKXZvaWQgMD09PWEuYnV0dG9uc1tvXS5pZCYmKGEuYnV0dG9uc1tvXS5pZD0iaW5mb19idXR0b25fIitvKSxkKz0iPGEgaWQ9JyIrYS5idXR0b25zW29dLmlkKyInIGNsYXNzPSdmbS1idXR0b24gIitzLmJ1dHRvbisiJz4iK2EuYnV0dG9uc1tvXS50ZXh0KyI8L2E+IjtpPSI8ZGl2IGlkPSdpbmZvX2lkJz4iLGk9KGkrPSI8ZGl2IGlkPSdpbmZvY250JyBzdHlsZT0nbWFyZ2luOjBweDtwYWRkaW5nLWJvdHRvbToxZW07d2lkdGg6MTAwJTtvdmVyZmxvdzphdXRvO3Bvc2l0aW9uOnJlbGF0aXZlO2hlaWdodDoiKyhpc05hTihhLmRhdGFoZWlnaHQpP2EuZGF0YWhlaWdodDphLmRhdGFoZWlnaHQrInB4IikrIjsiKygidGV4dC1hbGlnbjoiK2EuYWxpZ24rIjsiKSsiJz4iK3QrIjwvZGl2PiIpKyhyPyI8ZGl2IGNsYXNzPSciK2UuY29udGVudCsiJyBzdHlsZT0ndGV4dC1hbGlnbjoiK2EuYnV0dG9uYWxpZ24rIjtwYWRkaW5nLWJvdHRvbTowLjhlbTtwYWRkaW5nLXRvcDowLjVlbTtiYWNrZ3JvdW5kLWltYWdlOiBub25lO2JvcmRlci13aWR0aDogMXB4IDAgMCAwOyc+PGEgaWQ9J2Nsb3NlZGlhbG9nJyBjbGFzcz0nZm0tYnV0dG9uICIrcy5idXR0b24rIic+IityKyI8L2E+IitkKyI8L2Rpdj4iOiIiIT09ZD8iPGRpdiBjbGFzcz0nIitlLmNvbnRlbnQrIicgc3R5bGU9J3RleHQtYWxpZ246IithLmJ1dHRvbmFsaWduKyI7cGFkZGluZy1ib3R0b206MC44ZW07cGFkZGluZy10b3A6MC41ZW07YmFja2dyb3VuZC1pbWFnZTogbm9uZTtib3JkZXItd2lkdGg6IDFweCAwIDAgMDsnPiIrZCsiPC9kaXY+IjoiIikrIjwvZGl2PiI7dHJ5eyJmYWxzZSI9PT1ZZSgiI2luZm9fZGlhbG9nIikuYXR0cigiYXJpYS1oaWRkZW4iKSYmWWUuamdyaWQuaGlkZU1vZGFsKCIjaW5mb19kaWFsb2ciLHtqcW06bn0pLFllKCIjaW5mb19kaWFsb2ciKS5yZW1vdmUoKX1jYXRjaChlKXt9dD1ZZSgiLnVpLWpxZ3JpZCIpLmNzcygiZm9udC1zaXplIil8fCIxMXB4IjtZZS5qZ3JpZC5jcmVhdGVNb2RhbCh7dGhlbW9kYWw6ImluZm9fZGlhbG9nIixtb2RhbGhlYWQ6ImluZm9faGVhZCIsbW9kYWxjb250ZW50OiJpbmZvX2NvbnRlbnQiLHNjcm9sbGVsbToiaW5mb2NudCJ9LGksYSwiIiwiIiwhMCx7ImZvbnQtc2l6ZSI6dH0pLGQmJlllLmVhY2goYS5idXR0b25zLGZ1bmN0aW9uKGUpe1llKCIjIitZZS5qZ3JpZC5qcUlEKHRoaXMuaWQpLCIjaW5mb19pZCIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gYS5idXR0b25zW2VdLm9uQ2xpY2suY2FsbChZZSgiI2luZm9fZGlhbG9nIikpLCExfSl9KSxZZSgiI2Nsb3NlZGlhbG9nIiwiI2luZm9faWQiKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGwuaGlkZU1vZGFsKCIjaW5mb19kaWFsb2ciLHtqcW06bixvbkNsb3NlOlllKCIjaW5mb19kaWFsb2ciKS5kYXRhKCJvbkNsb3NlIil8fGEub25DbG9zZSxnYjpZZSgiI2luZm9fZGlhbG9nIikuZGF0YSgiZ2JveCIpfHxhLmdib3h9KSwhMX0pLFllKCIuZm0tYnV0dG9uIiwiI2luZm9fZGlhbG9nIikuaG92ZXIoZnVuY3Rpb24oKXtZZSh0aGlzKS5hZGRDbGFzcyhzLmhvdmVyKX0sZnVuY3Rpb24oKXtZZSh0aGlzKS5yZW1vdmVDbGFzcyhzLmhvdmVyKX0pLFllLmpncmlkLmlzRnVuY3Rpb24oYS5iZWZvcmVPcGVuKSYmYS5iZWZvcmVPcGVuKCksWWUuamdyaWQudmlld01vZGFsKCIjaW5mb19kaWFsb2ciLHtvbkhpZGU6ZnVuY3Rpb24oZSl7ZS53LmhpZGUoKS5yZW1vdmUoKSxlLm8mJmUuby5yZW1vdmUoKX0sbW9kYWw6YS5tb2RhbCxqcW06bn0pLFllLmpncmlkLmlzRnVuY3Rpb24oYS5hZnRlck9wZW4pJiZhLmFmdGVyT3BlbigpO3RyeXtZZSgiI2luZm9fZGlhbG9nIikuZm9jdXMoKX1jYXRjaChlKXt9fSxiaW5kRXY6ZnVuY3Rpb24oZSxyKXtZZS5qZ3JpZC5pc0Z1bmN0aW9uKHIuZGF0YUluaXQpJiZyLmRhdGFJbml0LmNhbGwodGhpcyxlLHIpLHIuZGF0YUV2ZW50cyYmWWUuZWFjaChyLmRhdGFFdmVudHMsZnVuY3Rpb24oKXt2YXIgdD10aGlzLmZuO3ZvaWQgMCE9PXRoaXMuZGF0YT9ZZShlKS5vbih0aGlzLnR5cGUsdGhpcy5kYXRhLGZ1bmN0aW9uKGUpe3QuY2FsbCh0aGlzLGUscil9KTpZZShlKS5vbih0aGlzLnR5cGUsZnVuY3Rpb24oZSl7dC5jYWxsKHRoaXMsZSxyKX0pfSl9LGNyZWF0ZUVsOmZ1bmN0aW9uKGUsdCxyLGksbyl7dmFyIGE9IiIsYz10aGlzO2Z1bmN0aW9uIHUocixlLHQpe3ZhciBpPShpPVsiZGF0YUluaXQiLCJkYXRhRXZlbnRzIiwiZGF0YVVybCIsImJ1aWxkU2VsZWN0Iiwic29wdCIsInNlYXJjaGhpZGRlbiIsImRlZmF1bHRWYWx1ZSIsImF0dHIiLCJjdXN0b21fZWxlbWVudCIsImN1c3RvbV92YWx1ZSIsIm9wZXIiXSkuY29uY2F0KFsiY2FjaGVVcmxEYXRhIiwiZGVsaW1pdGVyIiwic2VwYXJhdG9yIl0pO3ZvaWQgMCE9PXQmJkFycmF5LmlzQXJyYXkodCkmJlllLm1lcmdlKGksdCksWWUuZWFjaChlLGZ1bmN0aW9uKGUsdCl7LTE9PT1ZZS5pbkFycmF5KGUsaSkmJlllKHIpLmF0dHIoZSx0KX0pLGUuaGFzT3duUHJvcGVydHkoImlkIil8fFllKHIpLmF0dHIoImlkIixZZS5qZ3JpZC5yYW5kSWQoKSl9c3dpdGNoKGUpe2Nhc2UidGV4dGFyZWEiOmE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGV4dGFyZWEiKSxpP3QuY29sc3x8WWUoYSkuY3NzKHt3aWR0aDoiOTglIn0pOnQuY29sc3x8KHQuY29scz0yMCksdC5yb3dzfHwodC5yb3dzPTIpLCgiJm5ic3A7Ij09PXJ8fCImIzE2MDsiPT09cnx8MT09PXIubGVuZ3RoJiYxNjA9PT1yLmNoYXJDb2RlQXQoMCkpJiYocj0iIiksYS52YWx1ZT1yLFllKGEpLmF0dHIoe3JvbGU6InRleHRib3giLG11bHRpbGluZToidHJ1ZSJ9KSx1KGEsdCk7YnJlYWs7Y2FzZSJjaGVja2JveCI6KGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSkudHlwZT0iY2hlY2tib3giLHQudmFsdWU/KHI9PT0oZD10LnZhbHVlLnNwbGl0KCI6IikpWzBdJiYoYS5jaGVja2VkPSEwLGEuZGVmYXVsdENoZWNrZWQ9ITApLGEudmFsdWU9ZFswXSxZZShhKS5hdHRyKCJvZmZ2YWwiLGRbMV0pKTooKGQ9KHIrIiIpLnRvTG93ZXJDYXNlKCkpLnNlYXJjaCgvKGZhbHNlfGZ8MHxub3xufG9mZnx1bmRlZmluZWQpL2kpPDAmJiIiIT09ZD8oYS5jaGVja2VkPSEwLGEuZGVmYXVsdENoZWNrZWQ9ITAsYS52YWx1ZT1yKTphLnZhbHVlPSJvbiIsWWUoYSkuYXR0cigib2ZmdmFsIiwib2ZmIikpLFllKGEpLmF0dHIoInJvbGUiLCJjaGVja2JveCIpLHUoYSx0LFsidmFsdWUiXSk7YnJlYWs7Y2FzZSJzZWxlY3QiOihhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpKS5zZXRBdHRyaWJ1dGUoInJvbGUiLCJsaXN0Ym94Iik7dmFyIG4sbCxzPVtdO2lmKCEwPT09dC5tdWx0aXBsZT8obj0hMCxhLm11bHRpcGxlPSJtdWx0aXBsZSIsWWUoYSkuYXR0cigiYXJpYS1tdWx0aXNlbGVjdGFibGUiLCJ0cnVlIikpOm49ITEsbnVsbCE9dC5kYXRhVXJsKXt2YXIgZD1udWxsLGg9dC5wb3N0RGF0YXx8by5wb3N0RGF0YTt0cnl7ZD10LnJvd0lkfWNhdGNoKGUpe31jLnAmJmMucC5pZFByZWZpeCYmKGQ9WWUuamdyaWQuc3RyaXBQcmVmKGMucC5pZFByZWZpeCxkKSksWWUuYWpheChZZS5leHRlbmQoe3VybDpZZS5qZ3JpZC5pc0Z1bmN0aW9uKHQuZGF0YVVybCk/dC5kYXRhVXJsLmNhbGwoYyxkLHIsU3RyaW5nKHQubmFtZSkpOnQuZGF0YVVybCx0eXBlOiJHRVQiLGRhdGFUeXBlOiJodG1sIixkYXRhOlllLmpncmlkLmlzRnVuY3Rpb24oaCk/aC5jYWxsKGMsZCxyLFN0cmluZyh0Lm5hbWUpKTpoLGNvbnRleHQ6e2VsZW06YSxvcHRpb25zOnQsdmw6cn0sc3VjY2VzczpmdW5jdGlvbihlKXt2YXIgdCxyLGk9W10sbz10aGlzLmVsZW0sYT10aGlzLnZsLG49WWUuZXh0ZW5kKHt9LHRoaXMub3B0aW9ucyksbD0hMD09PW4ubXVsdGlwbGUscz0hMD09PW4uY2FjaGVVcmxEYXRhLGQ9IiIscD1bXSxlPVllLmpncmlkLmlzRnVuY3Rpb24obi5idWlsZFNlbGVjdCk/bi5idWlsZFNlbGVjdC5jYWxsKGMsZSk6ZTsoZT0ic3RyaW5nIj09dHlwZW9mIGU/WWUoWWUuamdyaWQudHJpbShlKSkuaHRtbCgpOmUpJiYoWWUobykuYXBwZW5kKGUpLHUobyxuLGg/WyJwb3N0RGF0YSJdOnZvaWQgMCksdm9pZCAwPT09bi5zaXplJiYobi5zaXplPWw/MzoxKSxsPyhlPXZvaWQgMD09PW4ubXVsdGlzZXBhcmF0b3I/IiwiOm4ubXVsdGlzZXBhcmF0b3IsaT1hLnNwbGl0KGUpLGk9WWUubWFwKGksZnVuY3Rpb24oZSl7cmV0dXJuIFllLmpncmlkLnRyaW0oZSl9KSk6aVswXT1ZZS5qZ3JpZC50cmltKGEpLFllKCJvcHRpb24iLG8pLmVhY2goZnVuY3Rpb24oZSl7dD1ZZSh0aGlzKS50ZXh0KCksYT1ZZSh0aGlzKS52YWwoKSxzJiYoZCs9KDAhPT1lPyI7IjoiIikrYSsiOiIrdCksMD09PWUmJm8ubXVsdGlwbGUmJih0aGlzLnNlbGVjdGVkPSExKSxZZSh0aGlzKS5hdHRyKCJyb2xlIiwib3B0aW9uIiksKC0xPFllLmluQXJyYXkoWWUuamdyaWQudHJpbSh0KSxpKXx8LTE8WWUuaW5BcnJheShZZS5qZ3JpZC50cmltKGEpLGkpKSYmKHRoaXMuc2VsZWN0ZWQ9InNlbGVjdGVkIixwLnB1c2goYSkpfSksbi5oYXNPd25Qcm9wZXJ0eSgiY2hlY2tVcGRhdGUiKSYmbi5jaGVja1VwZGF0ZSYmKGMucC5zYXZlZERhdGFbbi5uYW1lXT1wLmpvaW4oIiwiKSkscyYmKCJlZGl0Ij09PW4ub3Blcj9ZZShjKS5qcUdyaWQoInNldENvbFByb3AiLG4ubmFtZSx7ZWRpdG9wdGlvbnM6e2J1aWxkU2VsZWN0Om51bGwsZGF0YVVybDpudWxsLHZhbHVlOmR9fSk6InNlYXJjaCI9PT1uLm9wZXI/WWUoYykuanFHcmlkKCJzZXRDb2xQcm9wIixuLm5hbWUse3NlYXJjaG9wdGlvbnM6e2RhdGFVcmw6bnVsbCx2YWx1ZTpkfX0pOiJmaWx0ZXIiPT09bi5vcGVyJiZZZSgiI2Zib3hfIitjLnAuaWQpWzBdLnAmJihsPVllKCIjZmJveF8iK2MucC5pZClbMF0ucC5jb2x1bW5zLFllLmVhY2gobCxmdW5jdGlvbihlKXtpZihyPXRoaXMuaW5kZXh8fHRoaXMubmFtZSxuLm5hbWU9PT1yKXJldHVybiB0aGlzLnNlYXJjaG9wdGlvbnMuZGF0YVVybD1udWxsLHRoaXMuc2VhcmNob3B0aW9ucy52YWx1ZT1kLCExfSkpKSxZZShjKS50cmlnZ2VySGFuZGxlcigianFHcmlkQWRkRWRpdEFmdGVyU2VsZWN0VXJsQ29tcGxldGUiLFtvXSkpfX0sb3x8e30pKX1lbHNlIGlmKHQudmFsdWUpe3ZvaWQgMD09PXQuc2l6ZSYmKHQuc2l6ZT1uPzM6MSksbiYmKHM9ci5zcGxpdCgiLCIpLHM9WWUubWFwKHMsZnVuY3Rpb24oZSl7cmV0dXJuIFllLmpncmlkLnRyaW0oZSl9KSksImZ1bmN0aW9uIj09dHlwZW9mIHQudmFsdWUmJih0LnZhbHVlPXQudmFsdWUuY2FsbChjLHIsdCkpO3ZhciBwLGcsZixtLHYsaixiPXZvaWQgMD09PXQuc2VwYXJhdG9yPyI6Ijp0LnNlcGFyYXRvcixkPXZvaWQgMD09PXQuZGVsaW1pdGVyPyI7Ijp0LmRlbGltaXRlcjtpZigic3RyaW5nIj09dHlwZW9mIHQudmFsdWUpZm9yKHA9dC52YWx1ZS5zcGxpdChkKSxsPTA7bDxwLmxlbmd0aDtsKyspMjwoZz1wW2xdLnNwbGl0KGIpKS5sZW5ndGgmJihnWzFdPVllLm1hcChnLGZ1bmN0aW9uKGUsdCl7aWYoMDx0KXJldHVybiBlfSkuam9pbihiKSksKGY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3B0aW9uIikpLnNldEF0dHJpYnV0ZSgicm9sZSIsIm9wdGlvbiIpLGYudmFsdWU9Z1swXSxmLmlubmVySFRNTD1nWzFdLDA9PWdbMV0ubGVuZ3RoJiZmLnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsIm5vbmUiKSxhLmFwcGVuZENoaWxkKGYpLG58fFllLmpncmlkLnRyaW0oZ1swXSkhPT1ZZS5qZ3JpZC50cmltKHIpJiZZZS5qZ3JpZC50cmltKGdbMV0pIT09WWUuamdyaWQudHJpbShyKXx8KGYuc2VsZWN0ZWQ9InNlbGVjdGVkIiksbiYmKC0xPFllLmluQXJyYXkoWWUuamdyaWQudHJpbShnWzFdKSxzKXx8LTE8WWUuaW5BcnJheShZZS5qZ3JpZC50cmltKGdbMF0pLHMpKSYmKGYuc2VsZWN0ZWQ9InNlbGVjdGVkIik7ZWxzZSBpZigiW29iamVjdCBBcnJheV0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQudmFsdWUpKWZvcihtPXQudmFsdWUsbD0wO2w8bS5sZW5ndGg7bCsrKTI9PT1tW2xdLmxlbmd0aCYmKHY9bVtsXVswXSxqPW1bbF1bMV0sKGY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3B0aW9uIikpLnNldEF0dHJpYnV0ZSgicm9sZSIsIm9wdGlvbiIpLGYudmFsdWU9diwwPT0oZi5pbm5lckhUTUw9aikubGVuZ3RoJiZmLnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsIm5vbmUiKSxhLmFwcGVuZENoaWxkKGYpLG58fFllLmpncmlkLnRyaW0odikhPT1ZZS5qZ3JpZC50cmltKHIpJiZZZS5qZ3JpZC50cmltKGopIT09WWUuamdyaWQudHJpbShyKXx8KGYuc2VsZWN0ZWQ9InNlbGVjdGVkIiksbikmJigtMTxZZS5pbkFycmF5KFllLmpncmlkLnRyaW0oaikscyl8fC0xPFllLmluQXJyYXkoWWUuamdyaWQudHJpbSh2KSxzKSkmJihmLnNlbGVjdGVkPSJzZWxlY3RlZCIpO2Vsc2UgaWYoIm9iamVjdCI9PXR5cGVvZiB0LnZhbHVlKWZvcih2IGluIG09dC52YWx1ZSltLmhhc093blByb3BlcnR5KHYpJiYoKGY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3B0aW9uIikpLnNldEF0dHJpYnV0ZSgicm9sZSIsIm9wdGlvbiIpLGYudmFsdWU9dixmLmlubmVySFRNTD1tW3ZdLDA9PW1bdl0ubGVuZ3RoJiZmLnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsIm5vbmUiKSxhLmFwcGVuZENoaWxkKGYpLG58fFllLmpncmlkLnRyaW0odikhPT1ZZS5qZ3JpZC50cmltKHIpJiZZZS5qZ3JpZC50cmltKG1bdl0pIT09WWUuamdyaWQudHJpbShyKXx8KGYuc2VsZWN0ZWQ9InNlbGVjdGVkIiksbikmJigtMTxZZS5pbkFycmF5KFllLmpncmlkLnRyaW0obVt2XSkscyl8fC0xPFllLmluQXJyYXkoWWUuamdyaWQudHJpbSh2KSxzKSkmJihmLnNlbGVjdGVkPSJzZWxlY3RlZCIpO3UoYSx0LFsidmFsdWUiXSl9ZWxzZSB1KGEsdCk7YnJlYWs7Y2FzZSJpbWFnZSI6Y2FzZSJmaWxlIjooYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpKS50eXBlPWUsdShhLHQpO2JyZWFrO2Nhc2UiY3VzdG9tIjphPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTt0cnl7aWYoIVllLmpncmlkLmlzRnVuY3Rpb24odC5jdXN0b21fZWxlbWVudCkpdGhyb3ciZTEiO3ZhciB3PXQuY3VzdG9tX2VsZW1lbnQuY2FsbChjLHIsdCk7aWYoIXcpdGhyb3ciZTIiO3c9WWUodykuYWRkQ2xhc3MoImN1c3RvbWVsZW1lbnQiKS5hdHRyKHtpZDp0LmlkLG5hbWU6dC5uYW1lfSksWWUoYSkuZW1wdHkoKS5hcHBlbmQodyl9Y2F0Y2goZSl7ZD1ZZS5qZ3JpZC5nZXRSZWdpb25hbChjLCJlcnJvcnMiKSx3PVllLmpncmlkLmdldFJlZ2lvbmFsKGMsImVkaXQiKTsiZTEiPT09ZT9ZZS5qZ3JpZC5pbmZvX2RpYWxvZyhkLmVycmNhcCwiZnVuY3Rpb24gJ2N1c3RvbV9lbGVtZW50JyAiK3cubXNnLm5vZGVmaW5lZCx3LmJDbG9zZSx7c3R5bGVVSTpjLnAuc3R5bGVVSX0pOiJlMiI9PT1lP1llLmpncmlkLmluZm9fZGlhbG9nKGQuZXJyY2FwLCJmdW5jdGlvbiAnY3VzdG9tX2VsZW1lbnQnICIrdy5tc2cubm92YWx1ZSx3LmJDbG9zZSx7c3R5bGVVSTpjLnAuc3R5bGVVSX0pOlllLmpncmlkLmluZm9fZGlhbG9nKGQuZXJyY2FwLCJzdHJpbmciPT10eXBlb2YgZT9lOmUubWVzc2FnZSx3LmJDbG9zZSx7c3R5bGVVSTpjLnAuc3R5bGVVSX0pfWJyZWFrO2RlZmF1bHQ6ZD0iYnV0dG9uIj09PWU/ImJ1dHRvbiI6InRleHRib3giOyhhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0IikpLnR5cGU9ZSxhLnZhbHVlPXIsImJ1dHRvbiIhPT1lJiYoaT90LnNpemV8fFllKGEpLmNzcyh7d2lkdGg6Ijk2JSJ9KTp0LnNpemV8fCh0LnNpemU9MjApKSxZZShhKS5hdHRyKCJyb2xlIixkKSx1KGEsdCl9cmV0dXJuIGF9LGNoZWNrRGF0ZTpmdW5jdGlvbihlLHQpe3ZhciByPXt9LGk9LTEhPT0oZT1lLnRvTG93ZXJDYXNlKCkpLmluZGV4T2YoIi8iKT8iLyI6LTEhPT1lLmluZGV4T2YoIi0iKT8iLSI6LTEhPT1lLmluZGV4T2YoIi4iKT8iLiI6Ii8iO2lmKGU9ZS5zcGxpdChpKSwzIT09KHQ9dC5zcGxpdChpKSkubGVuZ3RoKXJldHVybiExO2Zvcih2YXIgbz0tMSxhPS0xLG49LTEsbD0wO2w8ZS5sZW5ndGg7bCsrKXt2YXIgcz1pc05hTih0W2xdKT8wOnBhcnNlSW50KHRbbF0sMTApO3JbZVtsXV09cywtMSE9PShkPWVbbF0pLmluZGV4T2YoInkiKSYmKG89bCksLTEhPT1kLmluZGV4T2YoIm0iKSYmKG49bCksLTEhPT1kLmluZGV4T2YoImQiKSYmKGE9bCl9dmFyIGQ9InkiPT09ZVtvXXx8Inl5eXkiPT09ZVtvXT80OiJ5eSI9PT1lW29dPzI6LTE7cmV0dXJuLTEhPT1vJiYoaT1yW2Vbb11dLnRvU3RyaW5nKCksMj09PWQmJjE9PT1pLmxlbmd0aCYmKGQ9MSksaS5sZW5ndGg9PT1kKSYmKDAhPT1yW2Vbb11dfHwiMDAiPT09dFtvXSkmJi0xIT09biYmIShyW2Vbbl1dLnRvU3RyaW5nKCkubGVuZ3RoPDF8fHJbZVtuXV08MXx8MTI8cltlW25dXXx8LTE9PT1hfHxyW2VbYV1dLnRvU3RyaW5nKCkubGVuZ3RoPDF8fHJbZVthXV08MXx8MzE8cltlW2FdXXx8Mj09PXJbZVtuXV0mJnJbZVthXV0+KChpPXJbZVtvXV0pJTQhPTB8fGklMTAwPT0wJiZpJTQwMCE9MD8yODoyOSl8fHJbZVthXV0+WzAsMzEsMjksMzEsMzAsMzEsMzAsMzEsMzEsMzAsMzEsMzAsMzFdW3JbZVtuXV1dKX0saXNFbXB0eTpmdW5jdGlvbihlKXtyZXR1cm4hKHZvaWQgMCE9PWUmJiFlLm1hdGNoKC9eXHMrJC8pJiYiIiE9PWUpfSxjaGVja1RpbWU6ZnVuY3Rpb24oZSl7aWYoIVllLmpncmlkLmlzRW1wdHkoZSkpe2lmKCEoZT1lLm1hdGNoKC9eKFxkezEsMn0pOihcZHsyfSkoW2FwQVBdW01tXSk/JC8pKSlyZXR1cm4hMTtpZihlWzNdKXtpZihlWzFdPDF8fDEyPGVbMV0pcmV0dXJuITF9ZWxzZSBpZigyMzxlWzFdKXJldHVybiExO2lmKDU5PGVbMl0pcmV0dXJuITF9cmV0dXJuITB9LGNoZWNrVmFsdWVzOmZ1bmN0aW9uKGUsdCxyLGkpe2Z1bmN0aW9uIG8oZSl7dmFyIHQscjtyZXR1cm4hKDI8PShlPWUudG9TdHJpbmcoKSkubGVuZ3RoJiYoIi0iPT09ZVswXT8odD1lWzFdLGVbMl0mJihyPWVbMl0pKToodD1lWzBdLGVbMV0mJihyPWVbMV0pKSwiMCI9PT10KSYmIi4iIT09cikmJiJudW1iZXIiPT10eXBlb2YgTnVtYmVyKGUpJiZpc0Zpbml0ZShlKX12YXIgYSxuLGwscyxkLHA9dGhpcyxjPXAucC5jb2xNb2RlbCx1PVllLmpncmlkLmdldFJlZ2lvbmFsKHRoaXMsImVkaXQubXNnIik7aWYodm9pZCAwPT09cilpZigic3RyaW5nIj09dHlwZW9mIHQpe2ZvcihuPTAsZD1jLmxlbmd0aDtuPGQ7bisrKWlmKGNbbl0ubmFtZT09PXQpe2E9Y1tuXS5lZGl0cnVsZXMsbnVsbCE9Y1t0PW5dLmZvcm1vcHRpb25zJiYobD1jW25dLmZvcm1vcHRpb25zLmxhYmVsKTticmVha319ZWxzZSAwPD10JiYoYT1jW3RdLmVkaXRydWxlcyk7ZWxzZSBhPXIsbD12b2lkIDA9PT1pPyJfIjppO2lmKGEpe2lmKGw9bHx8KG51bGwhPXAucC5jb2xOYW1lcz9wLnAuY29sTmFtZXNbdF06Y1t0XS5sYWJlbCksITA9PT1hLnJlcXVpcmVkJiZZZS5qZ3JpZC5pc0VtcHR5KGUpKXJldHVyblshMSxsKyI6ICIrdS5yZXF1aXJlZCwiIl07cj0hMSE9PWEucmVxdWlyZWQ7aWYoITA9PT1hLm51bWJlciYmISghMT09ciYmWWUuamdyaWQuaXNFbXB0eShlKXx8byhlKSkpcmV0dXJuWyExLGwrIjogIit1Lm51bWJlciwiIl07aWYodm9pZCAwIT09YS5taW5WYWx1ZSYmIWlzTmFOKGEubWluVmFsdWUpJiZZZS5qZ3JpZC5mbG9hdE51bShlKTxZZS5qZ3JpZC5mbG9hdE51bShhLm1pblZhbHVlKSlyZXR1cm5bITEsbCsiOiAiK3UubWluVmFsdWUrIiAiK2EubWluVmFsdWUsIiJdO2lmKHZvaWQgMCE9PWEubWF4VmFsdWUmJiFpc05hTihhLm1heFZhbHVlKSYmWWUuamdyaWQuZmxvYXROdW0oZSk+WWUuamdyaWQuZmxvYXROdW0oYS5tYXhWYWx1ZSkpcmV0dXJuWyExLGwrIjogIit1Lm1heFZhbHVlKyIgIithLm1heFZhbHVlLCIiXTtpZighMD09PWEuZW1haWwmJiEoITE9PXImJlllLmpncmlkLmlzRW1wdHkoZSl8fC9eKCgoW2Etel18XGR8WyEjXCQlJidcKlwrXC1cLz1cP1xeX2B7XHx9fl18W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pKyhcLihbYS16XXxcZHxbISNcJCUmJ1wqXCtcLVwvPVw/XF5fYHtcfH1+XXxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkrKSopfCgoXHgyMikoKCgoXHgyMHxceDA5KSooXHgwZFx4MGEpKT8oXHgyMHxceDA5KSspPygoW1x4MDEtXHgwOFx4MGJceDBjXHgwZS1ceDFmXHg3Zl18XHgyMXxbXHgyMy1ceDViXXxbXHg1ZC1ceDdlXXxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSl8KFxcKFtceDAxLVx4MDlceDBiXHgwY1x4MGQtXHg3Zl18W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pKSkpKigoKFx4MjB8XHgwOSkqKFx4MGRceDBhKSk/KFx4MjB8XHgwOSkrKT8oXHgyMikpKUAoKChbYS16XXxcZHxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSl8KChbYS16XXxcZHxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkoW2Etel18XGR8LXxcLnxffH58W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pKihbYS16XXxcZHxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkpKVwuKSsoKFthLXpdfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKXwoKFthLXpdfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKShbYS16XXxcZHwtfFwufF98fnxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkqKFthLXpdfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKSkpXC4/JC9pLnRlc3QoZSkpKXJldHVyblshMSxsKyI6ICIrdS5lbWFpbCwiIl07aWYoITA9PT1hLmludGVnZXImJighMSE9cnx8IVllLmpncmlkLmlzRW1wdHkoZSkpKXtpZighbyhlKSlyZXR1cm5bITEsbCsiOiAiK3UuaW50ZWdlciwiIl07aWYoZSUxIT0wfHwtMSE9PWUuaW5kZXhPZigiLiIpKXJldHVyblshMSxsKyI6ICIrdS5pbnRlZ2VyLCIiXX1pZighMD09PWEuZGF0ZSYmISghMT09ciYmWWUuamdyaWQuaXNFbXB0eShlKXx8KGNbdF0uZm9ybWF0b3B0aW9ucyYmY1t0XS5mb3JtYXRvcHRpb25zLm5ld2Zvcm1hdD8ocz1jW3RdLmZvcm1hdG9wdGlvbnMubmV3Zm9ybWF0LChpPVllLmpncmlkLmdldFJlZ2lvbmFsKHAsImZvcm1hdHRlci5kYXRlLm1hc2tzIikpJiZpLmhhc093blByb3BlcnR5KHMpJiYocz1pW3NdKSk6cz1jW3RdLmRhdGVmbXR8fCJZLW0tZCIsWWUuamdyaWQuY2hlY2tEYXRlKHMsZSkpKSlyZXR1cm5bITEsbCsiOiAiK3UuZGF0ZSsiIC0gIitzLCIiXTtpZighMD09PWEudGltZSYmISghMT09ciYmWWUuamdyaWQuaXNFbXB0eShlKXx8WWUuamdyaWQuY2hlY2tUaW1lKGUpKSlyZXR1cm5bITEsbCsiOiAiK3UuZGF0ZSsiIC0gaGg6bW0gKGFtL3BtKSIsIiJdO2lmKCEwPT09YS51cmwmJiEoITE9PXImJlllLmpncmlkLmlzRW1wdHkoZSl8fC9eKCgoaHR0cHM/KXwoZnRwKSk6XC9cLyhbXC1cd10rXC4pK1x3ezIsM30oXC9bJVwtXHddKyhcLlx3ezIsfSk/KSooKFtcd1wtXC5cP1xcXC8rQCYjO2B+PSUhXSopKFwuXHd7Mix9KT8pKlwvPykvaS50ZXN0KGUpKSlyZXR1cm5bITEsbCsiOiAiK3UudXJsLCIiXTtpZighMD09PWEuY3VzdG9tKWlmKCExIT1yfHwhWWUuamdyaWQuaXNFbXB0eShlKSlyZXR1cm4gWWUuamdyaWQuaXNGdW5jdGlvbihhLmN1c3RvbV9mdW5jKT8oaT1hLmN1c3RvbV9mdW5jLmNhbGwocCxlLGwsdCksQXJyYXkuaXNBcnJheShpKT9pOlshMSx1LmN1c3RvbWFycmF5LCIiXSk6WyExLHUuY3VzdG9tZmNoZWNrLCIiXX1yZXR1cm5bITAsIiIsIiJdfSx2YWxpZGF0ZUZvcm06ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LHI9ITAsaT0wO2k8ZS5lbGVtZW50cy5sZW5ndGg7aSsrKWlmKCgiSU5QVVQiPT09KHQ9ZS5lbGVtZW50c1tpXSkubm9kZU5hbWV8fCJURVhUQVJFQSI9PT10Lm5vZGVOYW1lfHwiU0VMRUNUIj09PXQubm9kZU5hbWUpJiYodm9pZCAwIT09dC53aWxsVmFsaWRhdGU/KCJJTlBVVCI9PT10Lm5vZGVOYW1lJiZ0LnR5cGUhPT10LmdldEF0dHJpYnV0ZSgidHlwZSIpJiZ0LnNldEN1c3RvbVZhbGlkaXR5KFllLmpncmlkLkxlZ2FjeVZhbGlkYXRpb24odCk/IiI6ImVycm9yIiksdC5yZXBvcnRWYWxpZGl0eSgpKToodC52YWxpZGl0eT10LnZhbGlkaXR5fHx7fSx0LnZhbGlkaXR5LnZhbGlkPVllLmpncmlkLkxlZ2FjeVZhbGlkYXRpb24odCkpLCF0LnZhbGlkaXR5LnZhbGlkKSl7cj0hMTticmVha31yZXR1cm4gcn0sTGVnYWN5VmFsaWRhdGlvbjpmdW5jdGlvbihlKXt2YXIgdD0hMCxyPWUudmFsdWUsaT1lLmdldEF0dHJpYnV0ZSgidHlwZSIpLGk9ImNoZWNrYm94Ij09PWl8fCJyYWRpbyI9PT1pLG89ZS5nZXRBdHRyaWJ1dGUoInJlcXVpcmVkIiksYT1lLmdldEF0dHJpYnV0ZSgibWlubGVuZ3RoIiksbj1lLmdldEF0dHJpYnV0ZSgibWF4bGVuZ3RoIiksbD1lLmdldEF0dHJpYnV0ZSgicGF0dGVybiIpO3JldHVybiBlLmRpc2FibGVkfHwodD0odD10JiYoIW98fGkmJmUuY2hlY2tlZHx8IWkmJiIiIT09cikpJiYoaXx8KCFhfHxyLmxlbmd0aD49YSkmJighbnx8ci5sZW5ndGg8PW4pKSkmJmwmJih0PShsPW5ldyBSZWdFeHAobCkpLnRlc3QocikpLHR9LGJ1aWxkQnV0dG9uczpmdW5jdGlvbihlLHIsaSl7dmFyIG87cmV0dXJuIFllLmVhY2goZSxmdW5jdGlvbihlLHQpe3QuaWR8fCh0LmlkPVllLmpncmlkLnJhbmRJZCgpKSx0LnBvc2l0aW9ufHwodC5wb3NpdGlvbj0ibGFzdCIpLHQuc2lkZXx8KHQuc2lkZT0ibGVmdCIpLG89dC5pY29uPyIgZm0tYnV0dG9uLWljb24tIit0LnNpZGUrIic+PHNwYW4gY2xhc3M9JyIraS5pY29uX2Jhc2UrIiAiK3QuaWNvbisiJz48L3NwYW4+IjoiJz4iLG89IjxhICBkYXRhLWluZGV4PSciK2UrIicgaWQ9JyIrdC5pZCsiJyBjbGFzcz0nZm0tYnV0dG9uICIraS5idXR0b24rbyt0LnRleHQrIjwvYT4iLCJsYXN0Ij09PXQucG9zaXRpb24/cis9bzpyPW8rcn0pLHJ9LHNldFNlbE5hdkluZGV4OmZ1bmN0aW9uKHIsaSl7dmFyIGU9WWUoIi51aS1wZy1idXR0b24iLHIucC5wYWdlcik7WWUuZWFjaChlLGZ1bmN0aW9uKGUsdCl7aWYoaT09PXQpcmV0dXJuIHIucC5uYXZJbmRleD1lLCExfSksWWUoaSkuYXR0cigidGFiaW5kZXgiLCIwIil9LGdldEZpcnN0VmlzaWJsZUNvbDpmdW5jdGlvbihlKXtmb3IodmFyIHQ9LTEscj0wO3I8ZS5wLmNvbE1vZGVsLmxlbmd0aDtyKyspaWYoITAhPT1lLnAuY29sTW9kZWxbcl0uaGlkZGVuKXt0PXI7YnJlYWt9cmV0dXJuIHR9LGdldExhc3RWaXNpYmxlQ29sOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0tMSxyPWUucC5jb2xNb2RlbC5sZW5ndGgtMTswPD1yO3ItLSlpZighMCE9PWUucC5jb2xNb2RlbFtyXS5oaWRkZW4pe3Q9cjticmVha31yZXR1cm4gdH19KSxZZS5mbi5qcUZpbHRlcj1mdW5jdGlvbihlKXtpZigic3RyaW5nIj09dHlwZW9mIGUpe3ZhciB0LHI9WWUuZm4uanFGaWx0ZXJbZV07aWYocilyZXR1cm4gdD1ZZS5tYWtlQXJyYXkoYXJndW1lbnRzKS5zbGljZSgxKSxyLmFwcGx5KHRoaXMsdCk7dGhyb3cianFGaWx0ZXIgLSBObyBzdWNoIG1ldGhvZDogIitlfXZhciBxPVllLmV4dGVuZCghMCx7ZmlsdGVyOm51bGwsY29sdW1uczpbXSxzb3J0U3RyYXRlZ3k6bnVsbCxvbkNoYW5nZTpudWxsLGFmdGVyUmVkcmF3Om51bGwsY2hlY2tWYWx1ZXM6bnVsbCxlcnJvcjohMSxlcnJtc2c6IiIsZXJyb3JjaGVjazohMCxzaG93UXVlcnk6ITAsc29wdDpudWxsLG9wczpbXSxvcGVyYW5kczpudWxsLG51bW9wdHM6WyJlcSIsIm5lIiwibHQiLCJsZSIsImd0IiwiZ2UiLCJudSIsIm5uIiwiaW4iLCJuaSJdLHN0cm9wdHM6WyJlcSIsIm5lIiwiYnciLCJibiIsImV3IiwiZW4iLCJjbiIsIm5jIiwibnUiLCJubiIsImluIiwibmkiXSxzdHJhcnI6WyJ0ZXh0Iiwic3RyaW5nIiwiYmxvYiJdLGdyb3VwT3BzOlt7b3A6IkFORCIsdGV4dDoiQU5EIn0se29wOiJPUiIsdGV4dDoiT1IifV0sZ3JvdXBCdXR0b246ITAscnVsZUJ1dHRvbnM6ITAsdW5pcXVlU2VhcmNoRmllbGRzOiExLGRpcmVjdGlvbjoibHRyIixhZGRzdWJncnVwOiJBZGQgc3ViZ3JvdXAiLGFkZHJ1bGU6IkFkZCBydWxlIixkZWxncm91cDoiRGVsZXRlIGdyb3VwIixkZWxydWxlOiJEZWxldGUgcnVsZSIsYXV0b2VuY29kZTohMSx1bmFyeU9wZXJhdGlvbnM6W119LFllLmpncmlkLmZpbHRlcixlfHx7fSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2lmKCF0aGlzLmZpbHRlcil7dGhpcy5wPXEsbnVsbCE9PXRoaXMucC5maWx0ZXImJnZvaWQgMCE9PXRoaXMucC5maWx0ZXJ8fCh0aGlzLnAuZmlsdGVyPXtncm91cE9wOnRoaXMucC5ncm91cE9wc1swXS5vcCxydWxlczpbXSxncm91cHM6W119KSxudWxsIT10aGlzLnAuc29ydFN0cmF0ZWd5JiZZZS5qZ3JpZC5pc0Z1bmN0aW9uKHRoaXMucC5zb3J0U3RyYXRlZ3kpJiZ0aGlzLnAuY29sdW1ucy5zb3J0KHRoaXMucC5zb3J0U3RyYXRlZ3kpO3ZhciBlLHQscj10aGlzLnAuY29sdW1ucy5sZW5ndGgsdz0vbXNpZS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkmJiF3aW5kb3cub3BlcmE7aWYodGhpcy5wLmluaXRGaWx0ZXI9WWUuZXh0ZW5kKCEwLHt9LHRoaXMucC5maWx0ZXIpLHIpe2ZvcihlPTA7ZTxyO2UrKykodD10aGlzLnAuY29sdW1uc1tlXSkuc3R5cGU/dC5pbnB1dHR5cGU9dC5zdHlwZTp0LmlucHV0dHlwZXx8KHQuaW5wdXR0eXBlPSJ0ZXh0IiksdC5zb3J0dHlwZT90LnNlYXJjaHR5cGU9dC5zb3J0dHlwZTp0LnNlYXJjaHR5cGV8fCh0LnNlYXJjaHR5cGU9InN0cmluZyIpLHZvaWQgMD09PXQuaGlkZGVuJiYodC5oaWRkZW49ITEpLHQubGFiZWx8fCh0LmxhYmVsPXQubmFtZSksdC5pbmRleCYmKHQubmFtZT10LmluZGV4KSx0Lmhhc093blByb3BlcnR5KCJzZWFyY2hvcHRpb25zIil8fCh0LnNlYXJjaG9wdGlvbnM9e30pLHQuaGFzT3duUHJvcGVydHkoInNlYXJjaHJ1bGVzIil8fCh0LnNlYXJjaHJ1bGVzPXt9KSx2b2lkIDA9PT10LnNlYXJjaD90LmlubGlzdD0hMDp0LmlubGlzdD10LnNlYXJjaDt2YXIgeT1mdW5jdGlvbigpe3JldHVybiBZZSgiIyIrWWUuamdyaWQuanFJRChxLmlkKSlbMF18fG51bGx9LGk9eSgpLHg9WWUuamdyaWQuc3R5bGVVSVtpLnAuc3R5bGVVSXx8ImpRdWVyeVVJIl0uZmlsdGVyLF89WWUuamdyaWQuc3R5bGVVSVtpLnAuc3R5bGVVSXx8ImpRdWVyeVVJIl0uY29tbW9uLG49KHRoaXMucC5zaG93UXVlcnkmJlllKHRoaXMpLmFwcGVuZCgiPHRhYmxlIGNsYXNzPSdxdWVyeXJlc3VsdCAiK3gudGFibGVfd2lkZ2V0KyInIHN0eWxlPSdkaXNwbGF5OmJsb2NrO21heC13aWR0aDo0NDBweDtib3JkZXI6MHB4IG5vbmU7JyBkaXI9JyIrdGhpcy5wLmRpcmVjdGlvbisiJz48dGJvZHk+PHRyPjx0ZCBjbGFzcz0ncXVlcnknPjwvdGQ+PC90cj48L3Rib2R5PjwvdGFibGU+IiksZnVuY3Rpb24oZSx0KXt2YXIgcj1bITAsIiJdLGk9eSgpO2lmKFllLmpncmlkLmlzRnVuY3Rpb24odC5zZWFyY2hydWxlcykpcj10LnNlYXJjaHJ1bGVzLmNhbGwoaSxlLHQpO2Vsc2UgaWYoWWUuamdyaWQmJlllLmpncmlkLmNoZWNrVmFsdWVzKXRyeXtyPVllLmpncmlkLmNoZWNrVmFsdWVzLmNhbGwoaSxlLC0xLHQuc2VhcmNocnVsZXMsdC5sYWJlbCl9Y2F0Y2goZSl7fXImJnIubGVuZ3RoJiYhMT09PXJbMF0mJihxLmVycm9yPSFyWzBdLHEuZXJybXNnPXJbMV0pfSk7dGhpcy5vbmNoYW5nZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnAuZXJyb3I9ITEsdGhpcy5wLmVycm1zZz0iIiwhIVllLmpncmlkLmlzRnVuY3Rpb24odGhpcy5wLm9uQ2hhbmdlKSYmdGhpcy5wLm9uQ2hhbmdlLmNhbGwodGhpcyx0aGlzLnApfSx0aGlzLnJlRHJhdz1mdW5jdGlvbigpe1llKHRoaXMpLmZpbmQoInRhYmxlLmdyb3VwIikuZmlyc3QoKS5yZW1vdmUoKTt2YXIgZT10aGlzLmNyZWF0ZVRhYmxlRm9yR3JvdXAocS5maWx0ZXIsbnVsbCk7WWUodGhpcykuYXBwZW5kKGUpLFllLmpncmlkLmlzRnVuY3Rpb24odGhpcy5wLmFmdGVyUmVkcmF3KSYmdGhpcy5wLmFmdGVyUmVkcmF3LmNhbGwodGhpcyx0aGlzLnApfSx0aGlzLmNyZWF0ZVRhYmxlRm9yR3JvdXA9ZnVuY3Rpb24oaSxlKXt2YXIgbz10aGlzLHQ9WWUoIjx0YWJsZSBjbGFzcz0nZ3JvdXAgIit4LnRhYmxlX3dpZGdldCsiIHVpLXNlYXJjaC10YWJsZScgc3R5bGU9J2JvcmRlcjowcHggbm9uZTsnPjx0Ym9keT48L3Rib2R5PjwvdGFibGU+Iikscj0ibGVmdCIsYT0oInJ0bCI9PT10aGlzLnAuZGlyZWN0aW9uJiYocj0icmlnaHQiLHQuYXR0cigiZGlyIiwicnRsIikpLG51bGw9PT1lJiZ0LmFwcGVuZCgiPHRyIGNsYXNzPSdlcnJvcicgc3R5bGU9J2Rpc3BsYXk6bm9uZTsnPjx0aCBjb2xzcGFuPSc1JyBjbGFzcz0nIitfLmVycm9yKyInIGFsaWduPSciK3IrIic+PC90aD48L3RyPiIpLFllKCI8dHI+PC90cj4iKSkscj0odC5hcHBlbmQoYSksWWUoIjx0aCBjb2xzcGFuPSc1JyBhbGlnbj0nIityKyInPjwvdGg+IikpO2lmKGEuYXBwZW5kKHIpLCEwPT09dGhpcy5wLnJ1bGVCdXR0b25zKXtmb3IodmFyIG4sbD1ZZSgiPHNlbGVjdCBzaXplPScxJyBjbGFzcz0nb3BzZWwgIit4LnNyU2VsZWN0KyInPjwvc2VsZWN0PiIpLHM9KHIuYXBwZW5kKGwpLCIiKSxkPTA7ZDxxLmdyb3VwT3BzLmxlbmd0aDtkKyspbj1pLmdyb3VwT3A9PT1vLnAuZ3JvdXBPcHNbZF0ub3A/IiBzZWxlY3RlZD0nc2VsZWN0ZWQnIjoiIixzKz0iPG9wdGlvbiB2YWx1ZT0nIitvLnAuZ3JvdXBPcHNbZF0ub3ArIiciK24rIj4iK28ucC5ncm91cE9wc1tkXS50ZXh0KyI8L29wdGlvbj4iO2wuYXBwZW5kKHMpLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7aS5ncm91cE9wPVllKGwpLnZhbCgpLG8ub25jaGFuZ2UoKX0pfXZhciBwLGE9IjxzcGFuPjwvc3Bhbj4iO2lmKHRoaXMucC5ncm91cEJ1dHRvbiYmKGE9WWUoIjxpbnB1dCB0eXBlPSdidXR0b24nIHZhbHVlPScrIHt9JyB0aXRsZT0nIitvLnAuYWRkc3ViZ3J1cCsiJyBjbGFzcz0nYWRkLWdyb3VwICIrXy5idXR0b24rIicvPiIpKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMD09PWkuZ3JvdXBzJiYoaS5ncm91cHM9W10pLGkuZ3JvdXBzLnB1c2goe2dyb3VwT3A6cS5ncm91cE9wc1swXS5vcCxydWxlczpbXSxncm91cHM6W119KSxvLnJlRHJhdygpLG8ub25jaGFuZ2UoKSwhMX0pLHIuYXBwZW5kKGEpLCEwPT09dGhpcy5wLnJ1bGVCdXR0b25zJiYoKGE9WWUoIjxpbnB1dCB0eXBlPSdidXR0b24nIHZhbHVlPScrJyB0aXRsZT0nIitvLnAuYWRkcnVsZSsiJyBjbGFzcz0nYWRkLXJ1bGUgdWktYWRkICIrXy5idXR0b24rIicvPiIpKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7Zm9yKHZvaWQgMD09PWkucnVsZXMmJihpLnJ1bGVzPVtdKSxkPTA7ZDxvLnAuY29sdW1ucy5sZW5ndGg7ZCsrKXt2YXIgZT12b2lkIDA9PT1vLnAuY29sdW1uc1tkXS5zZWFyY2h8fG8ucC5jb2x1bW5zW2RdLnNlYXJjaCx0PSEwPT09by5wLmNvbHVtbnNbZF0uaGlkZGVuO2lmKCEwPT09by5wLmNvbHVtbnNbZF0uc2VhcmNob3B0aW9ucy5zZWFyY2hoaWRkZW4mJmV8fGUmJiF0KXtwPW8ucC5jb2x1bW5zW2RdO2JyZWFrfX12YXIgcjtyZXR1cm4gcCYmKHI9cC5zZWFyY2hvcHRpb25zLnNvcHR8fG8ucC5zb3B0fHwoLTEhPT1ZZS5pbkFycmF5KHAuc2VhcmNodHlwZSxvLnAuc3RyYXJyKT9vLnAuc3Ryb3B0czpvLnAubnVtb3B0cyksaS5ydWxlcy5wdXNoKHtmaWVsZDpwLm5hbWUsb3A6clswXSxkYXRhOiIifSksby5yZURyYXcoKSksITF9KSxyLmFwcGVuZChhKSksbnVsbCE9PWUmJihhPVllKCI8aW5wdXQgdHlwZT0nYnV0dG9uJyB2YWx1ZT0nLScgdGl0bGU9JyIrby5wLmRlbGdyb3VwKyInIGNsYXNzPSdkZWxldGUtZ3JvdXAgIitfLmJ1dHRvbisiJy8+Iiksci5hcHBlbmQoYSksYS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7Zm9yKGQ9MDtkPGUuZ3JvdXBzLmxlbmd0aDtkKyspaWYoZS5ncm91cHNbZF09PT1pKXtlLmdyb3Vwcy5zcGxpY2UoZCwxKTticmVha31yZXR1cm4gby5yZURyYXcoKSxvLm9uY2hhbmdlKCksITF9KSksdm9pZCAwIT09aS5ncm91cHMpZm9yKGQ9MDtkPGkuZ3JvdXBzLmxlbmd0aDtkKyspe3ZhciBjPVllKCI8dHI+PC90cj4iKSx1PSh0LmFwcGVuZChjKSxZZSgiPHRkIGNsYXNzPSdmaXJzdCc+PC90ZD4iKSksdT0oYy5hcHBlbmQodSksWWUoIjx0ZCBjb2xzcGFuPSc0Jz48L3RkPiIpKTt1LmFwcGVuZCh0aGlzLmNyZWF0ZVRhYmxlRm9yR3JvdXAoaS5ncm91cHNbZF0saSkpLGMuYXBwZW5kKHUpfXZvaWQgMD09PWkuZ3JvdXBPcCYmKGkuZ3JvdXBPcD1vLnAuZ3JvdXBPcHNbMF0ub3ApO3ZhciBoPW8ucC5ydWxlQnV0dG9ucyYmby5wLnVuaXF1ZVNlYXJjaEZpZWxkcztpZihoKWZvcihmPTA7ZjxvLnAuY29sdW1ucy5sZW5ndGg7ZisrKW8ucC5jb2x1bW5zW2ZdLmlubGlzdCYmKG8ucC5jb2x1bW5zW2ZdLnNlYXJjaD0hMCk7aWYodm9pZCAwIT09aS5ydWxlcylmb3IoZD0wO2Q8aS5ydWxlcy5sZW5ndGg7ZCsrKWlmKHQuYXBwZW5kKHRoaXMuY3JlYXRlVGFibGVSb3dGb3JSdWxlKGkucnVsZXNbZF0saSkpLGgpZm9yKHZhciBnPWkucnVsZXNbZF0uZmllbGQsZj0wO2Y8by5wLmNvbHVtbnMubGVuZ3RoO2YrKylpZihnPT09by5wLmNvbHVtbnNbZl0ubmFtZSl7by5wLmNvbHVtbnNbZl0uc2VhcmNoPSExO2JyZWFrfXJldHVybiB0fSx0aGlzLmNyZWF0ZVRhYmxlUm93Rm9yUnVsZT1mdW5jdGlvbihhLGUpe2Zvcih2YXIgbixsLHMsdCxkLHA9dGhpcyxjPXkoKSxyPVllKCI8dHI+PC90cj4iKSxpPSIiLG89KHIuYXBwZW5kKCI8dGQgY2xhc3M9J2ZpcnN0Jz48L3RkPiIpLFllKCI8dGQgY2xhc3M9J2NvbHVtbnMnPjwvdGQ+IikpLHU9KHIuYXBwZW5kKG8pLFllKCI8c2VsZWN0IHNpemU9JzEnIGNsYXNzPSciK3guc3JTZWxlY3QrIic+PC9zZWxlY3Q+IikpLGg9W10sZz0oby5hcHBlbmQodSksdS5vbigiY2hhbmdlIixmdW5jdGlvbigpe3ZhciBlO2ZvcihwLnAucnVsZUJ1dHRvbnMmJnAucC51bmlxdWVTZWFyY2hGaWVsZHMmJih0PXBhcnNlSW50KFllKHRoaXMpLmRhdGEoImN1cnIiKSwxMCksZT10aGlzLnNlbGVjdGVkSW5kZXgsMDw9dCkmJihwLnAuY29sdW1uc1t0XS5zZWFyY2g9ITAsWWUodGhpcykuZGF0YSgiY3VyciIsZSkscC5wLmNvbHVtbnNbZV0uc2VhcmNoPSExKSxhLmZpZWxkPVllKHUpLnZhbCgpLGw9WWUodGhpcykucGFyZW50cygidHIiKS5maXJzdCgpLFllKCIuZGF0YSIsbCkuZW1wdHkoKSxmPTA7ZjxwLnAuY29sdW1ucy5sZW5ndGg7ZisrKWlmKHAucC5jb2x1bW5zW2ZdLm5hbWU9PT1hLmZpZWxkKXtzPXAucC5jb2x1bW5zW2ZdO2JyZWFrfWlmKHMpe3Muc2VhcmNob3B0aW9ucy5pZD1ZZS5qZ3JpZC5yYW5kSWQoKSxzLnNlYXJjaG9wdGlvbnMubmFtZT1hLmZpZWxkLHMuc2VhcmNob3B0aW9ucy5vcGVyPSJmaWx0ZXIiLCF3fHwidGV4dCIhPT1zLmlucHV0dHlwZXx8cy5zZWFyY2hvcHRpb25zLnNpemV8fChzLnNlYXJjaG9wdGlvbnMuc2l6ZT0xMCk7dmFyIHQscj1ZZS5qZ3JpZC5jcmVhdGVFbC5jYWxsKGMscy5pbnB1dHR5cGUscy5zZWFyY2hvcHRpb25zLCIiLCEwLHAucC5hamF4U2VsZWN0T3B0aW9uc3x8e30sITApLGk9KFllKHIpLmFkZENsYXNzKCJpbnB1dC1lbG0gIisoInNlbGVjdCI9PT1zLmlucHV0dHlwZT94LnNyU2VsZWN0Onguc3JJbnB1dCkpLG49cy5zZWFyY2hvcHRpb25zLnNvcHR8fHAucC5zb3B0fHwoLTEhPT1ZZS5pbkFycmF5KHMuc2VhcmNodHlwZSxwLnAuc3RyYXJyKT9wLnAuc3Ryb3B0czpwLnAubnVtb3B0cyksIiIpLG89MDtmb3IoaD1bXSxZZS5lYWNoKHAucC5vcHMsZnVuY3Rpb24oKXtoLnB1c2godGhpcy5vcGVyKX0pLGY9MDtmPG4ubGVuZ3RoO2YrKyktMSE9PShkPVllLmluQXJyYXkobltmXSxoKSkmJigwPT09byYmKGEub3A9cC5wLm9wc1tkXS5vcGVyKSxpKz0iPG9wdGlvbiB2YWx1ZT0nIitwLnAub3BzW2RdLm9wZXIrIic+IitwLnAub3BzW2RdLnRleHQrIjwvb3B0aW9uPiIsbysrKTtZZSgiLnNlbGVjdG9wdHMiLGwpLmVtcHR5KCkuYXBwZW5kKGkpLFllKCIuc2VsZWN0b3B0cyIsbClbMF0uc2VsZWN0ZWRJbmRleD0wLFllLmpncmlkLm1zaWUoKSYmWWUuamdyaWQubXNpZXZlcigpPDkmJih0PXBhcnNlSW50KFllKCJzZWxlY3Quc2VsZWN0b3B0cyIsbClbMF0ub2Zmc2V0V2lkdGgsMTApKzEsWWUoIi5zZWxlY3RvcHRzIixsKS53aWR0aCh0KSxZZSgiLnNlbGVjdG9wdHMiLGwpLmNzcygid2lkdGgiLCJhdXRvIikpLFllKCIuZGF0YSIsbCkuYXBwZW5kKHIpLFllLmpncmlkLmJpbmRFdi5jYWxsKGMscixzLnNlYXJjaG9wdGlvbnMpLFllKCIuaW5wdXQtZWxtIixsKS5vbigiY2hhbmdlIixmdW5jdGlvbihlKXtlPWUudGFyZ2V0OyJjdXN0b20iPT09cy5pbnB1dHR5cGUmJlllLmpncmlkLmlzRnVuY3Rpb24ocy5zZWFyY2hvcHRpb25zLmN1c3RvbV92YWx1ZSk/YS5kYXRhPXMuc2VhcmNob3B0aW9ucy5jdXN0b21fdmFsdWUuY2FsbChjLFllKCIuY3VzdG9tZWxlbWVudCIsdGhpcyksImdldCIpOmEuZGF0YT1ZZShlKS52YWwoKSwic2VsZWN0Ij09PXMuaW5wdXR0eXBlJiZzLnNlYXJjaG9wdGlvbnMubXVsdGlwbGUmJihhLmRhdGE9YS5kYXRhLmpvaW4oIiwiKSkscC5vbmNoYW5nZSgpfSksc2V0VGltZW91dChmdW5jdGlvbigpe2EuZGF0YT1ZZShyKS52YWwoKSwoIm51Ij09PWEub3B8fCJubiI9PT1hLm9wfHwwPD1ZZS5pbkFycmF5KGEub3AscC5wLnVuYXJ5T3BlcmF0aW9ucykpJiYoWWUocikuYXR0cigicmVhZG9ubHkiLCJ0cnVlIiksWWUocikuYXR0cigiZGlzYWJsZWQiLCJ0cnVlIikpLCJzZWxlY3QiPT09cy5pbnB1dHR5cGUmJnMuc2VhcmNob3B0aW9ucy5tdWx0aXBsZSYmQXJyYXkuaXNBcnJheShhLmRhdGEpJiYoYS5kYXRhPWEuZGF0YS5qb2luKCIsIikpLHAub25jaGFuZ2UoKX0sMCl9fSksMCksZj0wO2Y8cC5wLmNvbHVtbnMubGVuZ3RoO2YrKyl7dmFyIG09dm9pZCAwPT09cC5wLmNvbHVtbnNbZl0uc2VhcmNofHxwLnAuY29sdW1uc1tmXS5zZWFyY2gsdj0hMD09PXAucC5jb2x1bW5zW2ZdLmhpZGRlbjsoITA9PT1wLnAuY29sdW1uc1tmXS5zZWFyY2hvcHRpb25zLnNlYXJjaGhpZGRlbiYmbXx8bSYmIXYpJiYodD0iIixhLmZpZWxkPT09cC5wLmNvbHVtbnNbZl0ubmFtZSYmKHQ9IiBzZWxlY3RlZD0nc2VsZWN0ZWQnIixnPWYpLGkrPSI8b3B0aW9uIHZhbHVlPSciK3AucC5jb2x1bW5zW2ZdLm5hbWUrIiciK3QrIj4iK3AucC5jb2x1bW5zW2ZdLmxhYmVsKyI8L29wdGlvbj4iKX11LmFwcGVuZChpKSx1LmRhdGEoImN1cnIiLGcpO3ZhciBvPVllKCI8dGQgY2xhc3M9J29wZXJhdG9ycyc+PC90ZD4iKSxqPShyLmFwcGVuZChvKSwocz1xLmNvbHVtbnNbZ10pLnNlYXJjaG9wdGlvbnMuaWQ9WWUuamdyaWQucmFuZElkKCksIXd8fCJ0ZXh0IiE9PXMuaW5wdXR0eXBlfHxzLnNlYXJjaG9wdGlvbnMuc2l6ZXx8KHMuc2VhcmNob3B0aW9ucy5zaXplPTEwKSxzLnNlYXJjaG9wdGlvbnMubmFtZT1hLmZpZWxkLHMuc2VhcmNob3B0aW9ucy5vcGVyPSJmaWx0ZXIiLFllLmpncmlkLmNyZWF0ZUVsLmNhbGwoYyxzLmlucHV0dHlwZSxzLnNlYXJjaG9wdGlvbnMsYS5kYXRhLCEwLHAucC5hamF4U2VsZWN0T3B0aW9uc3x8e30sITApKSxiPSgoIm51Ij09PWEub3B8fCJubiI9PT1hLm9wfHwwPD1ZZS5pbkFycmF5KGEub3AscC5wLnVuYXJ5T3BlcmF0aW9ucykpJiYoWWUoaikuYXR0cigicmVhZG9ubHkiLCJ0cnVlIiksWWUoaikuYXR0cigiZGlzYWJsZWQiLCJ0cnVlIikpLFllKCI8c2VsZWN0IHNpemU9JzEnIGNsYXNzPSdzZWxlY3RvcHRzICIreC5zclNlbGVjdCsiJz48L3NlbGVjdD4iKSk7Zm9yKG8uYXBwZW5kKGIpLGIub24oImNoYW5nZSIsZnVuY3Rpb24oKXthLm9wPVllKGIpLnZhbCgpLGw9WWUodGhpcykucGFyZW50cygidHIiKS5maXJzdCgpO3ZhciBlPVllKCIuaW5wdXQtZWxtIixsKVswXTsibnUiPT09YS5vcHx8Im5uIj09PWEub3B8fDA8PVllLmluQXJyYXkoYS5vcCxwLnAudW5hcnlPcGVyYXRpb25zKT8oYS5kYXRhPSIiLCJTRUxFQ1QiIT09ZS50YWdOYW1lLnRvVXBwZXJDYXNlKCkmJihlLnZhbHVlPSIiKSxlLnNldEF0dHJpYnV0ZSgicmVhZG9ubHkiLCJ0cnVlIiksZS5zZXRBdHRyaWJ1dGUoImRpc2FibGVkIiwidHJ1ZSIpKTooIlNFTEVDVCI9PT1lLnRhZ05hbWUudG9VcHBlckNhc2UoKSYmKGEuZGF0YT1lLnZhbHVlKSxlLnJlbW92ZUF0dHJpYnV0ZSgicmVhZG9ubHkiKSxlLnJlbW92ZUF0dHJpYnV0ZSgiZGlzYWJsZWQiKSkscC5vbmNoYW5nZSgpfSksbj1zLnNlYXJjaG9wdGlvbnMuc29wdHx8cC5wLnNvcHR8fCgtMSE9PVllLmluQXJyYXkocy5zZWFyY2h0eXBlLHAucC5zdHJhcnIpP3AucC5zdHJvcHRzOnAucC5udW1vcHRzKSxpPSIiLFllLmVhY2gocC5wLm9wcyxmdW5jdGlvbigpe2gucHVzaCh0aGlzLm9wZXIpfSksZj0wO2Y8bi5sZW5ndGg7ZisrKS0xIT09KGQ9WWUuaW5BcnJheShuW2ZdLGgpKSYmKHQ9YS5vcD09PXAucC5vcHNbZF0ub3Blcj8iIHNlbGVjdGVkPSdzZWxlY3RlZCciOiIiLGkrPSI8b3B0aW9uIHZhbHVlPSciK3AucC5vcHNbZF0ub3BlcisiJyIrdCsiPiIrcC5wLm9wc1tkXS50ZXh0KyI8L29wdGlvbj4iKTtiLmFwcGVuZChpKTtvPVllKCI8dGQgY2xhc3M9J2RhdGEnPjwvdGQ+Iiksci5hcHBlbmQobyksby5hcHBlbmQoaiksWWUuamdyaWQuYmluZEV2LmNhbGwoYyxqLHMuc2VhcmNob3B0aW9ucyksWWUoaikuYWRkQ2xhc3MoImlucHV0LWVsbSAiKygic2VsZWN0Ij09PXMuaW5wdXR0eXBlP3guc3JTZWxlY3Q6eC5zcklucHV0KSkub24oImNoYW5nZSIsZnVuY3Rpb24oKXthLmRhdGE9ImN1c3RvbSI9PT1zLmlucHV0dHlwZT9zLnNlYXJjaG9wdGlvbnMuY3VzdG9tX3ZhbHVlLmNhbGwoYyxZZSgiLmN1c3RvbWVsZW1lbnQiLHRoaXMpLCJnZXQiKTpZZSh0aGlzKS52YWwoKSxwLm9uY2hhbmdlKCl9KSxvPVllKCI8dGQ+PC90ZD4iKTtyZXR1cm4gci5hcHBlbmQobyksITA9PT10aGlzLnAucnVsZUJ1dHRvbnMmJihqPVllKCI8aW5wdXQgdHlwZT0nYnV0dG9uJyB2YWx1ZT0nLScgdGl0bGU9JyIrcC5wLmRlbHJ1bGUrIicgY2xhc3M9J2RlbGV0ZS1ydWxlIHVpLWRlbCAiK18uYnV0dG9uKyInLz4iKSxvLmFwcGVuZChqKSxqLm9uKCJjbGljayIsZnVuY3Rpb24oKXtmb3IoZj0wO2Y8ZS5ydWxlcy5sZW5ndGg7ZisrKWlmKGUucnVsZXNbZl09PT1hKXtlLnJ1bGVzLnNwbGljZShmLDEpO2JyZWFrfXJldHVybiBwLnJlRHJhdygpLHAub25jaGFuZ2UoKSwhMX0pKSxyfSx0aGlzLmdldFN0cmluZ0Zvckdyb3VwPWZ1bmN0aW9uKGUpe3ZhciB0LHI9IigiO2lmKHZvaWQgMCE9PWUuZ3JvdXBzKWZvcih0PTA7dDxlLmdyb3Vwcy5sZW5ndGg7dCsrKXsxPHIubGVuZ3RoJiYocis9IiAiK2UuZ3JvdXBPcCsiICIpO3RyeXtyKz10aGlzLmdldFN0cmluZ0Zvckdyb3VwKGUuZ3JvdXBzW3RdKX1jYXRjaChlKXthbGVydChlKX19aWYodm9pZCAwIT09ZS5ydWxlcyl0cnl7Zm9yKHQ9MDt0PGUucnVsZXMubGVuZ3RoO3QrKykxPHIubGVuZ3RoJiYocis9IiAiK2UuZ3JvdXBPcCsiICIpLHIrPXRoaXMuZ2V0U3RyaW5nRm9yUnVsZShlLnJ1bGVzW3RdKX1jYXRjaChlKXthbGVydChlKX1yZXR1cm4iKCkiPT09KHIrPSIpIik/IiI6cn0sdGhpcy5nZXRTdHJpbmdGb3JSdWxlPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyLGk9IiIsbz0iIixhPTA7YTx0aGlzLnAub3BzLmxlbmd0aDthKyspaWYodGhpcy5wLm9wc1thXS5vcGVyPT09ZS5vcCl7aT10aGlzLnAub3BlcmFuZHMuaGFzT3duUHJvcGVydHkoZS5vcCk/dGhpcy5wLm9wZXJhbmRzW2Uub3BdOiIiLG89dGhpcy5wLm9wc1thXS5vcGVyO2JyZWFrfWZvcihhPTA7YTx0aGlzLnAuY29sdW1ucy5sZW5ndGg7YSsrKWlmKHRoaXMucC5jb2x1bW5zW2FdLm5hbWU9PT1lLmZpZWxkKXt0PXRoaXMucC5jb2x1bW5zW2FdO2JyZWFrfXJldHVybiB2b2lkIDA9PT10PyIiOihyPXRoaXMucC5hdXRvZW5jb2RlP1llLmpncmlkLmh0bWxFbmNvZGUoZS5kYXRhKTplLmRhdGEsImJ3IiE9PW8mJiJibiIhPT1vfHwocis9IiUiKSwiZXciIT09byYmImVuIiE9PW98fChyPSIlIityKSwiY24iIT09byYmIm5jIiE9PW98fChyPSIlIityKyIlIiksImluIiE9PW8mJiJuaSIhPT1vfHwocj0iICgiK3IrIikiKSxxLmVycm9yY2hlY2smJm4oZS5kYXRhLHQpLC0xIT09WWUuaW5BcnJheSh0LnNlYXJjaHR5cGUsWyJpbnQiLCJpbnRlZ2VyIiwiZmxvYXQiLCJudW1iZXIiLCJjdXJyZW5jeSJdKXx8Im5uIj09PW98fCJudSI9PT1vfHwwPD1ZZS5pbkFycmF5KGUub3AsdGhpcy5wLnVuYXJ5T3BlcmF0aW9ucyk/ZS5maWVsZCsiICIraSsiICIrcjplLmZpZWxkKyIgIitpKycgIicrcisnIicpfSx0aGlzLnJlc2V0RmlsdGVyPWZ1bmN0aW9uKCl7dGhpcy5wLmZpbHRlcj1ZZS5leHRlbmQoITAse30sdGhpcy5wLmluaXRGaWx0ZXIpLHRoaXMucmVEcmF3KCksdGhpcy5vbmNoYW5nZSgpfSx0aGlzLmhpZGVFcnJvcj1mdW5jdGlvbigpe1llKCJ0aC4iK18uZXJyb3IsdGhpcykuaHRtbCgiIiksWWUoInRyLmVycm9yIix0aGlzKS5oaWRlKCl9LHRoaXMuc2hvd0Vycm9yPWZ1bmN0aW9uKCl7WWUoInRoLiIrXy5lcnJvcix0aGlzKS5odG1sKFllLmpncmlkLnN0cmlwU2NyaXB0KHRoaXMucC5lcnJtc2cpKSxZZSgidHIuZXJyb3IiLHRoaXMpLnNob3coKX0sdGhpcy50b1VzZXJGcmllbmRseVN0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFN0cmluZ0Zvckdyb3VwKHEuZmlsdGVyKX0sdGhpcy50b1N0cmluZz1mdW5jdGlvbigpe3ZhciBvPXRoaXM7cmV0dXJuIGZ1bmN0aW9uIGUodCl7dmFyIHIsaT0iKCI7aWYodm9pZCAwIT09dC5ncm91cHMpZm9yKHI9MDtyPHQuZ3JvdXBzLmxlbmd0aDtyKyspMTxpLmxlbmd0aCYmKCJPUiI9PT10Lmdyb3VwT3A/aSs9IiB8fCAiOmkrPSIgJiYgIiksaSs9ZSh0Lmdyb3Vwc1tyXSk7aWYodm9pZCAwIT09dC5ydWxlcylmb3Iocj0wO3I8dC5ydWxlcy5sZW5ndGg7cisrKTE8aS5sZW5ndGgmJigiT1IiPT09dC5ncm91cE9wP2krPSIgfHwgIjppKz0iICYmICIpLGkrPWZ1bmN0aW9uKGUpe2lmKG8ucC5lcnJvcmNoZWNrKXtmb3IodmFyIHQscj0wO3I8by5wLmNvbHVtbnMubGVuZ3RoO3IrKylpZihvLnAuY29sdW1uc1tyXS5uYW1lPT09ZS5maWVsZCl7dD1vLnAuY29sdW1uc1tyXTticmVha310JiZuKGUuZGF0YSx0KX1yZXR1cm4gZS5vcCsiKGl0ZW0uIitlLmZpZWxkKyIsJyIrZS5kYXRhKyInKSJ9KHQucnVsZXNbcl0pO3JldHVybiIoKSI9PShpKz0iKSIpPyIiOml9KHRoaXMucC5maWx0ZXIpfSx0aGlzLnJlRHJhdygpLHRoaXMucC5zaG93UXVlcnkmJnRoaXMub25jaGFuZ2UoKSx0aGlzLmZpbHRlcj0hMH19fSl9LFllLmV4dGVuZChZZS5mbi5qcUZpbHRlcix7dG9TUUxTdHJpbmc6ZnVuY3Rpb24oKXt2YXIgZT0iIjtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZT10aGlzLnRvVXNlckZyaWVuZGx5U3RyaW5nKCl9KSxlfSxmaWx0ZXJEYXRhOmZ1bmN0aW9uKCl7dmFyIGU7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2U9dGhpcy5wLmZpbHRlcn0pLGV9LGdldFBhcmFtZXRlcjpmdW5jdGlvbihyKXt2YXIgaT1udWxsO3JldHVybiB2b2lkIDAhPT1yJiZ0aGlzLmVhY2goZnVuY3Rpb24oZSx0KXt0LnAuaGFzT3duUHJvcGVydHkocikmJihpPXQucFtyXSl9KSxpfHx0aGlzWzBdLnB9LHJlc2V0RmlsdGVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3RoaXMucmVzZXRGaWx0ZXIoKX0pfSxhZGRGaWx0ZXI6ZnVuY3Rpb24oZSl7InN0cmluZyI9PXR5cGVvZiBlJiYoZT1ZZS5qZ3JpZC5wYXJzZShlKSksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dGhpcy5wLmZpbHRlcj1lLHRoaXMucmVEcmF3KCksdGhpcy5vbmNoYW5nZSgpfSl9fSksWWUuZXh0ZW5kKFllLmpncmlkLHtmaWx0ZXJSZWZhY3RvcjpmdW5jdGlvbihlKXt2YXIgdCxyLGksbyxhLG4sbD17fTt0cnl7aWYoKGw9InN0cmluZyI9PXR5cGVvZiBlLnJ1bGVHcm91cD9ZZS5qZ3JpZC5wYXJzZShlLnJ1bGVHcm91cCk6ZS5ydWxlR3JvdXApLnJ1bGVzJiZsLnJ1bGVzLmxlbmd0aClmb3IodD1sLnJ1bGVzLHI9MDtyPHQubGVuZ3RoO3IrKyluPShpPXRbcl0pLmZpZWxkLC0xPFllLmluQXJyYXkobixlLnNzZmllbGQpJiYxPChvPWkuZGF0YS5zcGxpdChlLnNwbGl0U2VsZWN0KSkubGVuZ3RoJiYodm9pZCAwPT09bC5ncm91cHMmJihsLmdyb3Vwcz1bXSksYT17Z3JvdXBPcDplLmdyb3VwT3BTZWxlY3QsZ3JvdXBzOltdLHJ1bGVzOltdfSxsLmdyb3Vwcy5wdXNoKGEpLFllLmVhY2gobyxmdW5jdGlvbihlKXtvW2VdJiZhLnJ1bGVzLnB1c2goe2RhdGE6b1tlXSxvcDppLm9wLGZpZWxkOmkuZmllbGR9KX0pLHQuc3BsaWNlKHIsMSksci0tKX1jYXRjaChlKXt9cmV0dXJuIGx9fSksWWUuamdyaWQuZXh0ZW5kKHtmaWx0ZXJUb29sYmFyOmZ1bmN0aW9uKFMpe3ZhciBpPVllLmpncmlkLmdldFJlZ2lvbmFsKHRoaXNbMF0sInNlYXJjaCIpO3JldHVybiBTPVllLmV4dGVuZCh7YXV0b3NlYXJjaDohMCxhdXRvc2VhcmNoRGVsYXk6NTAwLHNlYXJjaE9uRW50ZXI6ITAsYmVmb3JlU2VhcmNoOm51bGwsYWZ0ZXJTZWFyY2g6bnVsbCxiZWZvcmVDbGVhcjpudWxsLGFmdGVyQ2xlYXI6bnVsbCxvbkNsZWFyU2VhcmNoVmFsdWU6bnVsbCx1cmw6IiIsc3RyaW5nUmVzdWx0OiExLGdyb3VwT3A6IkFORCIsZGVmYXVsdFNlYXJjaDoiYnciLHNlYXJjaE9wZXJhdG9yczohMSxyZXNldEljb246IngiLHNwbGl0U2VsZWN0OiIsIixncm91cE9wU2VsZWN0OiJPUiIsZXJyb3JjaGVjazohMCxvcGVyYW5kczp7ZXE6Ij09IixuZToiISIsbHQ6IjwiLGxlOiI8PSIsZ3Q6Ij4iLGdlOiI+PSIsYnc6Il4iLGJuOiIhXiIsaW46Ij0iLG5pOiIhPSIsZXc6InwiLGVuOiIhQCIsY246In4iLG5jOiIhfiIsbnU6IiMiLG5uOiIhIyIsYnQ6Ii4uLiJ9LGRpc2FibGVkS2V5czpbOSwxNiwxNywxOCwxOSwyMCwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCwzMCw0NSwxMTIsMTEzLDExNCwxMTUsMTE2LDExNywxMTgsMTE5LDEyMCwxMjEsMTIyLDEyMywxNDQsMTQ1XX0saSxTfHx7fSksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIEQ9dGhpcyxHPVtdO2lmKCFELnAuZmlsdGVyVG9vbGJhcil7aWYoWWUoRCkuZGF0YSgiZmlsdGVyVG9vbGJhciIpfHxZZShEKS5kYXRhKCJmaWx0ZXJUb29sYmFyIixTKSxELnAuZm9yY2VfcmVnaW9uYWwmJihTPVllLmV4dGVuZChTLGkpKSx2b2lkIDAhPT1ELnAuY3VzdG9tRmlsdGVyRGVmKWZvcih2YXIgZSBpbiBELnAuY3VzdG9tRmlsdGVyRGVmKUQucC5jdXN0b21GaWx0ZXJEZWYuaGFzT3duUHJvcGVydHkoZSkmJiFTLm9wZXJhbmRzLmhhc093blByb3BlcnR5KGUpJiYoUy5vZGF0YS5wdXNoKHtvcGVyOmUsdGV4dDpELnAuY3VzdG9tRmlsdGVyRGVmW2VdLnRleHR9KSxTLm9wZXJhbmRzW2VdPUQucC5jdXN0b21GaWx0ZXJEZWZbZV0ub3BlcmFuZCwhMD09PUQucC5jdXN0b21GaWx0ZXJEZWZbZV0udW5hcnkpJiZHLnB1c2goZSk7dmFyIHUsaCx0LGcsZj1ZZS5qZ3JpZC5zdHlsZVVJW0QucC5zdHlsZVVJfHwialF1ZXJ5VUkiXS5maWx0ZXIscD1ZZS5qZ3JpZC5zdHlsZVVJW0QucC5zdHlsZVVJfHwialF1ZXJ5VUkiXS5jb21tb24sbT1ZZS5qZ3JpZC5zdHlsZVVJW0QucC5zdHlsZVVJfHwialF1ZXJ5VUkiXS5iYXNlLHY9ZnVuY3Rpb24oZSl7dm9pZCAwPT09ZSYmKGU9MSk7dmFyIHIsaSxvLGEsbj17fSxsPTAscz17fSxkPSExLHA9W10sYz1bXSx1PXt9LGg9W10sZz0hMSxmPVshMCwiIiwiIl0sbT0hMTtpZihZZS5lYWNoKEQucC5jb2xNb2RlbCxmdW5jdGlvbigpe3ZhciBlLHQ9ITE7aWYoaT10aGlzLmluZGV4fHx0aGlzLm5hbWUsYT10aGlzLnNlYXJjaG9wdGlvbnN8fHt9LCEwPT09dGhpcy5mcm96ZW4mJiEwPT09RC5wLmZyb3plbkNvbHVtbnM/KGU9WWUoIiNnc18iK0QucC5pZFByZWZpeCtZZS5qZ3JpZC5qcUlEKHRoaXMubmFtZSksRC5ncmlkLmZoRGl2KSx0PSEwKTplPVllKCIjZ3NfIitELnAuaWRQcmVmaXgrWWUuamdyaWQuanFJRCh0aGlzLm5hbWUpLEQuZ3JpZC5oRGl2KSx2b2lkIDA9PT1lWzBdJiYoZT1ZZSgiI2dzXyIrRC5wLmlkUHJlZml4K1llLmpncmlkLmpxSUQodGhpcy5uYW1lKSxELmdyaWQuaERpdikpLG89Uy5zZWFyY2hPcGVyYXRvcnMmJmEuc2VhcmNoT3Blck1lbnU/ZS5wYXJlbnRzKCJ0YWJsZS51aS1zZWFyY2gtdGFibGUiKS5maW5kKCJ0ZC51aS1zZWFyY2gtb3BlciIpLmNoaWxkcmVuKCJhIikuYXR0cigic29wZXIiKXx8Uy5kZWZhdWx0U2VhcmNoOmEuc29wdD9hLnNvcHRbMF06InNlbGVjdCI9PT10aGlzLnN0eXBlPyJlcSI6Uy5kZWZhdWx0U2VhcmNoLCJjdXN0b20iPT09dGhpcy5zdHlwZSYmWWUuamdyaWQuaXNGdW5jdGlvbihhLmN1c3RvbV92YWx1ZSkmJjA8ZS5sZW5ndGg/KHI9YS5jdXN0b21fdmFsdWUuY2FsbChELGUsImdldCIpLGgucHVzaChpKSk6cj1lLnZhbCgpLCJzZWxlY3QiPT09dGhpcy5zdHlwZSYmYS5tdWx0aXBsZSYmQXJyYXkuaXNBcnJheShyKT9yPTA8ci5sZW5ndGg/KGQ9ITAscC5wdXNoKGkpLDE9PT1yLmxlbmd0aD9yWzBdOnIpOiIiOiJidCIhPT1vJiYidGV4dCI9PT10aGlzLnN0eXBlJiYhMD09PWEuc3BsaXRTZWFyY2hXb3JkJiZjLnB1c2goaSksdGhpcy5zZWFyY2hydWxlcyYmUy5lcnJvcmNoZWNrJiYoWWUuamdyaWQuaXNGdW5jdGlvbih0aGlzLnNlYXJjaHJ1bGVzKT9mPXRoaXMuc2VhcmNocnVsZXMuY2FsbChELHIsdGhpcyk6WWUuamdyaWQmJlllLmpncmlkLmNoZWNrVmFsdWVzJiYoZj1ZZS5qZ3JpZC5jaGVja1ZhbHVlcy5jYWxsKEQsciwtMSx0aGlzLnNlYXJjaHJ1bGVzLHRoaXMubGFiZWx8fHRoaXMubmFtZSkpLGYpJiZmLmxlbmd0aCYmITE9PT1mWzBdKXJldHVybiB0aGlzLnNlYXJjaHJ1bGVzLmhhc093blByb3BlcnR5KCJ2YWxpZGF0aW9uRXJyb3IiKSYmKG09dGhpcy5zZWFyY2hydWxlcy52YWxpZGF0aW9uRXJyb3IpLCExO2lmKCJidCI9PT1vJiYoZz0hMCksdCYmImNiIiE9PWkmJiJybiIhPT1pJiYic3ViZ3JpZCIhPT1pJiYic2MiIT09aSYmKHVbaV09cikscnx8Im51Ij09PW98fCJubiI9PT1vfHwwPD1ZZS5pbkFycmF5KG8sRykpbltpXT1yLHNbaV09byxsKys7ZWxzZSB0cnl7ZGVsZXRlIEQucC5wb3N0RGF0YVtpXX1jYXRjaChlKXt9fSksITE9PT1mWzBdKVllLmpncmlkLmlzRnVuY3Rpb24obSk/bS5jYWxsKEQsZlsxXSk6KHY9WWUuamdyaWQuZ2V0UmVnaW9uYWwoRCwiZXJyb3JzIiksWWUuamdyaWQuaW5mb19kaWFsb2codi5lcnJjYXAsZlsxXSwiIix7c3R5bGVVSTpELnAuc3R5bGVVSX0pKTtlbHNle3ZhciB0LHY9MDxsO2lmKCEwPT09Uy5zdHJpbmdSZXN1bHR8fCJsb2NhbCI9PT1ELnAuZGF0YXR5cGV8fCEwPT09Uy5zZWFyY2hPcGVyYXRvcnMpe3ZhciBqLGIsdyx5LHgsXyxxPSd7Imdyb3VwT3AiOiInK1MuZ3JvdXBPcCsnIiwicnVsZXMiOlsnLEM9MDtpZihZZS5lYWNoKG4sZnVuY3Rpb24oZSx0KXswPEMmJihxKz0iLCIpLHE9KHE9KHErPSd7ImZpZWxkIjoiJytlKyciLCcpKycib3AiOiInK3NbZV0rJyIsJykrJyJkYXRhIjoiJysodCs9IiIpLnJlcGxhY2UoL1xcL2csIlxcXFwiKS5yZXBsYWNlKC9cIi9nLCdcXCInKSsnIn0nLEMrK30pLHErPSJdfSIsZCYmKGo9WWUuamdyaWQuZmlsdGVyUmVmYWN0b3Ioe3J1bGVHcm91cDpxLHNzZmllbGQ6cCxzcGxpdFNlbGVjdDpTLnNwbGl0U2VsZWN0LGdyb3VwT3BTZWxlY3Q6Uy5ncm91cE9wU2VsZWN0fSkpLGcmJihqPVllLmlzUGxhaW5PYmplY3Qoaik/ajpZZS5qZ3JpZC5wYXJzZShxKSkucnVsZXMmJmoucnVsZXMubGVuZ3RoKWZvcihiPWoucnVsZXMsdz0wO3c8Yi5sZW5ndGg7dysrKSJidCI9PT0oeT1iW3ddKS5vcCYmMTwoeD15LmRhdGEuc3BsaXQoIi4uLiIpKS5sZW5ndGgmJih2b2lkIDA9PT1qLmdyb3VwcyYmKGouZ3JvdXBzPVtdKSxfPXtncm91cE9wOiJBTkQiLGdyb3VwczpbXSxydWxlczpbXX0sai5ncm91cHMucHVzaChfKSxZZS5lYWNoKHgsZnVuY3Rpb24oZSl7eFtlXSYmXy5ydWxlcy5wdXNoKHtkYXRhOnhbZV0sb3A6MD09PWU/ImdlIjoibGUiLGZpZWxkOnkuZmllbGR9KX0pLGIuc3BsaWNlKHcsMSksdy0tKTtjLmxlbmd0aCYmKGo9WWUuamdyaWQuZmlsdGVyUmVmYWN0b3Ioe3J1bGVHcm91cDpxLHNzZmllbGQ6YyxzcGxpdFNlbGVjdDphLnNwbGl0U2VhcmNoU2VwYXJhdG9yfHwiOyIsZ3JvdXBPcFNlbGVjdDoiT1IifSkpLChnfHxkfHxjLmxlbmd0aCkmJihxPUpTT04uc3RyaW5naWZ5KGopKSwhMD09PUQucC5tZXJnZVNlYXJjaCYmRC5wLnNlYXJjaE1vZHVsZXMuaGFzT3duUHJvcGVydHkoImZpbHRlclRvb2xiYXIiKSYmITEhPT1ELnAuc2VhcmNoTW9kdWxlcy5maWx0ZXJUb29sYmFyPyhELnAuc2VhcmNoTW9kdWxlcy5maWx0ZXJUb29sYmFyPTA8Qz9xOm51bGwsdj0hMCxZZS5leHRlbmQoRC5wLnBvc3REYXRhLHtmaWx0ZXJzOlllLmpncmlkLnNwbGl0U2VhcmNoKEQucC5zZWFyY2hNb2R1bGVzKX0pKTpZZS5leHRlbmQoRC5wLnBvc3REYXRhLHtmaWx0ZXJzOnF9KSxZZS5lYWNoKFsic2VhcmNoRmllbGQiLCJzZWFyY2hTdHJpbmciLCJzZWFyY2hPcGVyIl0sZnVuY3Rpb24oZSx0KXtELnAucG9zdERhdGEuaGFzT3duUHJvcGVydHkodCkmJmRlbGV0ZSBELnAucG9zdERhdGFbdF19KX1lbHNlIFllLmV4dGVuZChELnAucG9zdERhdGEsbik7Uy51cmwmJih0PUQucC51cmwsWWUoRCkuanFHcmlkKCJzZXRHcmlkUGFyYW0iLHt1cmw6Uy51cmx9KSk7dmFyIEk9InN0b3AiPT09WWUoRCkudHJpZ2dlckhhbmRsZXIoImpxR3JpZFRvb2xiYXJCZWZvcmVTZWFyY2giKTsoST0hSSYmWWUuamdyaWQuaXNGdW5jdGlvbihTLmJlZm9yZVNlYXJjaCk/Uy5iZWZvcmVTZWFyY2guY2FsbChEKTpJKXx8WWUoRCkuanFHcmlkKCJzZXRHcmlkUGFyYW0iLHtzZWFyY2g6dn0pLnRyaWdnZXIoInJlbG9hZEdyaWQiLFt7cGFnZTplfV0pLHQmJlllKEQpLmpxR3JpZCgic2V0R3JpZFBhcmFtIix7dXJsOnR9KSxZZShEKS50cmlnZ2VySGFuZGxlcigianFHcmlkVG9vbGJhckFmdGVyU2VhcmNoIiksWWUuamdyaWQuaXNGdW5jdGlvbihTLmFmdGVyU2VhcmNoKSYmUy5hZnRlclNlYXJjaC5jYWxsKEQpLEQucC5mcm96ZW5Db2x1bW5zJiZGKHUscyxwLGgpfX0sRj1mdW5jdGlvbihlLGEsdCxuKXt2YXIgbD1ZZSgiLnVpLXNlYXJjaC10b29sYmFyIixELmdyaWQuaERpdikscz1ZZSgiLnVpLXNlYXJjaC10b29sYmFyIixELmdyaWQuZmhEaXYpO1llLmVhY2goZSxmdW5jdGlvbihlLHQpe3ZhciByLGksbztTLnNlYXJjaE9wZXJhdG9ycyYmKHI9YVtlXSkmJihZZSgiLnVpLXNlYXJjaC10YWJsZSAudWktc2VhcmNoLW9wZXIgW2NvbG5hbWU9J3VzZXJJZCddIixsKS5hdHRyKHtzb3BlcjpyfSkudGV4dChTLm9wZXJhbmRzW3JdKSxZZSgiLnVpLXNlYXJjaC10YWJsZSAudWktc2VhcmNoLW9wZXIgW2NvbG5hbWU9J3VzZXJJZCddIixzKS5hdHRyKHtzb3BlcjpyfSkudGV4dChTLm9wZXJhbmRzW3JdKSksLTE8WWUuaW5BcnJheShlLG4pPyhyPVllLmpncmlkLmdldEVsZW1CeUF0dHJWYWwoRC5wLmNvbE1vZGVsLCJuYW1lIixlKSkmJnIuc2VhcmNob3B0aW9ucyYmKHI9ci5zZWFyY2hvcHRpb25zfHx7fSxZZS5qZ3JpZC5pc0Z1bmN0aW9uKHIuY3VzdG9tX3ZhbHVlKSkmJihpPVllKCIjZ3NfIitELnAuaWRQcmVmaXgrWWUuamdyaWQuanFJRChlKSxELmdyaWQuZmhEaXYpLG89WWUoIiNnc18iK0QucC5pZFByZWZpeCtZZS5qZ3JpZC5qcUlEKGUpLEQuZ3JpZC5oRGl2KSxyLmN1c3RvbV92YWx1ZS5jYWxsKEQsaSwic2V0Iix0KSxyLmN1c3RvbV92YWx1ZS5jYWxsKEQsbywic2V0Iix0KSk6KFllKCIjZ3NfIitELnAuaWRQcmVmaXgrWWUuamdyaWQuanFJRChlKSxsKS52YWwodCksWWUoIiNnc18iK0QucC5pZFByZWZpeCtZZS5qZ3JpZC5qcUlEKGUpLHMpLnZhbCh0KSl9KX0saj1ZZSgiPHRyIGNsYXNzPSd1aS1zZWFyY2gtdG9vbGJhcicgcm9sZT0ncm93Jz48L3RyPiIpLGI9KFMucmVzdG9yZUZyb21GaWx0ZXJzJiYodD0hMD09PUQucC5tZXJnZVNlYXJjaCYmRC5wLnNlYXJjaE1vZHVsZXMuaGFzT3duUHJvcGVydHkoImZpbHRlclRvb2xiYXIiKSYmITEhPT1ELnAuc2VhcmNoTW9kdWxlcy5maWx0ZXJUb29sYmFyP0QucC5zZWFyY2hNb2R1bGVzLmZpbHRlclRvb2xiYXI6RC5wLnBvc3REYXRhLmZpbHRlcnMpJiYoInN0cmluZyI9PXR5cGVvZiB0JiYodD1ZZS5qZ3JpZC5wYXJzZSh0KSksaD0hKCF0LnJ1bGVzfHwhdC5ydWxlcy5sZW5ndGgpJiZ0LnJ1bGVzKSxuZXcgU2V0KFMuZGlzYWJsZWRLZXlzKSk7aWYoYi5zaXplIT09Uy5kaXNhYmxlZEtleXMubGVuZ3RoKWZvcih2YXIgcj0wO3I8Uy5kaXNhYmxlZEtleXMubGVuZ3RoO3IrKykoYj1uZXcgU2V0KS5hZGQoUy5kaXNhYmxlZEtleXNbcl0pO2kuZmlsdGVyRm9yJiYoZz1pLmZpbHRlckZvciksRC5wLmNvbFNwYW5IZWFkZXIubGVuZ3RoJiZZZShEKS5qcUdyaWQoImRlc3Ryb3lDb2xTcGFuSGVhZGVyIiwhMSksWWUuZWFjaChELnAuY29sTW9kZWwsZnVuY3Rpb24oZSl7dmFyIHQscixpLG89dGhpcyxhPSIiLG49Ij0iLGw9WWUoIjx0aCByb2xlPSdjb2x1bW5oZWFkZXInIGNsYXNzPSciK20uaGVhZGVyQm94KyIgdWktdGgtIitELnAuZGlyZWN0aW9uKyIgIisoby5sYWJlbENsYXNzZXN8fCIiKSsiJyBpZD0nZ3NoXyIrRC5wLmlkKyJfIitvLm5hbWUrIic+PC90aD4iKSxzPVllKCc8ZGl2PjxzcGFuIGFyaWEtbGFiZWw9ImVtcHR5IiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPmVtcHR5PC9zcGFuPjwvZGl2PicpLGQ9WWUoIjx0YWJsZSBjbGFzcz0ndWktc2VhcmNoLXRhYmxlJyBjZWxsc3BhY2luZz0nMCc+PHRyPjx0ZCBjbGFzcz0ndWktc2VhcmNoLW9wZXInIGhlYWRlcnM9Jyc+PC90ZD48dGQgY2xhc3M9J3VpLXNlYXJjaC1pbnB1dCcgaGVhZGVycz0nJz48L3RkPjx0ZCBjbGFzcz0ndWktc2VhcmNoLWNsZWFyJyBoZWFkZXJzPScnPjwvdGQ+PC90cj48L3RhYmxlPiIpO2lmKCEwPT09dGhpcy5oaWRkZW4mJlllKGwpLmNzcygiZGlzcGxheSIsIm5vbmUiKSx0aGlzLnNlYXJjaD0hMSE9PXRoaXMuc2VhcmNoLHZvaWQgMD09PXRoaXMuc3R5cGUmJih0aGlzLnN0eXBlPSJ0ZXh0IiksdGhpcy5zZWFyY2hvcHRpb25zPXRoaXMuc2VhcmNob3B0aW9uc3x8e30sdm9pZCAwPT09dGhpcy5zZWFyY2hvcHRpb25zLnNlYXJjaE9wZXJNZW51JiYodGhpcy5zZWFyY2hvcHRpb25zLnNlYXJjaE9wZXJNZW51PSEwKSxlPXZvaWQgMCE9PWc/ZysiICIrRC5wLmNvbE5hbWVzW2VdOkQucC5jb2xOYW1lc1tlXSx0PVllLmV4dGVuZCh7fSx0aGlzLnNlYXJjaG9wdGlvbnMse25hbWU6by5pbmRleHx8by5uYW1lLGlkOiJnc18iK0QucC5pZFByZWZpeCtvLm5hbWUsb3Blcjoic2VhcmNoIix0aXRsZTplfSksdGhpcy5zZWFyY2gpe2lmKFMucmVzdG9yZUZyb21GaWx0ZXJzJiZoKWZvcih2YXIgcD0hMSxjPTA7YzxoLmxlbmd0aDtjKyspaWYoaFtjXS5maWVsZClpZigoby5pbmRleHx8by5uYW1lKT09PWhbY10uZmllbGQpe3A9aFtjXTticmVha31pZihTLnNlYXJjaE9wZXJhdG9ycyl7Zm9yKHI9dC5zb3B0P3Quc29wdFswXToic2VsZWN0Ij09PW8uc3R5cGU/ImVxIjpTLmRlZmF1bHRTZWFyY2gsUy5yZXN0b3JlRnJvbUZpbHRlcnMmJnAmJihyPXAub3ApLGk9MDtpPFMub2RhdGEubGVuZ3RoO2krKylpZihTLm9kYXRhW2ldLm9wZXI9PT1yKXtuPVMub3BlcmFuZHNbcl18fCIiO2JyZWFrfWU9bnVsbCE9dC5zZWFyY2h0aXRsZT90LnNlYXJjaHRpdGxlOlMub3BlcmFuZFRpdGxlLGE9dGhpcy5zZWFyY2hvcHRpb25zLnNlYXJjaE9wZXJNZW51PyI8YSB0aXRsZT0nIitlKyInIHNvcGVyPSciK3IrIicgY2xhc3M9J3NvcHRjbGFzcycgY29sbmFtZT0nIit0aGlzLm5hbWUrIic+IituKyI8L2E+IjoiIn1zd2l0Y2goWWUoInRkIixkKS5lcSgwKS5hdHRyKCJjb2x1bW5hbWUiLG8ubmFtZSkuYXBwZW5kKGEpLHZvaWQgMD09PXQuY2xlYXJTZWFyY2gmJih0LmNsZWFyU2VhcmNoPSEwKSx0LmNsZWFyU2VhcmNoPyhlPVMucmVzZXRUaXRsZXx8IkNsZWFyIFNlYXJjaCBWYWx1ZSIsWWUoInRkIixkKS5lcSgyKS5hcHBlbmQoIjxhIHRpdGxlPSciK2UrIicgdGFiaW5kZXg9JzAnIHN0eWxlPSdwYWRkaW5nLXJpZ2h0OiAwLjNlbTtwYWRkaW5nLWxlZnQ6IDAuM2VtOycgY2xhc3M9J2NsZWFyc2VhcmNoY2xhc3MnPiIrUy5yZXNldEljb24rIjwvYT4iKSk6WWUoInRkIixkKS5lcSgyKS5oaWRlKCksdGhpcy5zdXJsJiYodC5kYXRhVXJsPXRoaXMuc3VybCksZT0iIix0LmRlZmF1bHRWYWx1ZSYmKGU9WWUuamdyaWQuaXNGdW5jdGlvbih0LmRlZmF1bHRWYWx1ZSk/dC5kZWZhdWx0VmFsdWUuY2FsbChEKTp0LmRlZmF1bHRWYWx1ZSksUy5yZXN0b3JlRnJvbUZpbHRlcnMmJnAmJihlPXAuZGF0YSksZT1ZZS5qZ3JpZC5jcmVhdGVFbC5jYWxsKEQsdGhpcy5zdHlwZSx0LGUsITEsWWUuZXh0ZW5kKHt9LFllLmpncmlkLmFqYXhPcHRpb25zLEQucC5hamF4U2VsZWN0T3B0aW9uc3x8e30pKSwiY3VzdG9tIiE9PXRoaXMuc3R5cGUmJigic2VsZWN0Ij09PXRoaXMuc3R5cGU/WWUoZSkuYWRkQ2xhc3MoZi5zclNlbGVjdCk6WWUoZSkuYWRkQ2xhc3MoZi5zcklucHV0KSksWWUoInRkIixkKS5lcSgxKS5hcHBlbmQoZSksWWUocykuYXBwZW5kKGQpLG51bGw9PXQuZGF0YUV2ZW50cyYmKHQuZGF0YUV2ZW50cz1bXSksdGhpcy5zdHlwZSl7Y2FzZSJzZWxlY3QiOiEwPT09Uy5hdXRvc2VhcmNoJiZ0LmRhdGFFdmVudHMucHVzaCh7dHlwZToiY2hhbmdlIixmbjpmdW5jdGlvbigpe3JldHVybiB2KCksITF9fSk7YnJlYWs7Y2FzZSJ0ZXh0IjpjYXNlImN1c3RvbSI6ITA9PT1TLmF1dG9zZWFyY2gmJihTLnNlYXJjaE9uRW50ZXI/dC5kYXRhRXZlbnRzLnB1c2goe3R5cGU6ImtleXByZXNzIixmbjpmdW5jdGlvbihlKXtyZXR1cm4gMTM9PT0oZS5jaGFyQ29kZXx8ZS5rZXlDb2RlfHwwKT8odigpLCExKTp0aGlzfX0pOnQuZGF0YUV2ZW50cy5wdXNoKHt0eXBlOiJrZXlkb3duIixmbjpmdW5jdGlvbihlKXtlPWUud2hpY2g7aWYoIWIuaGFzKGUpKXtpZigxMz09PWUpcmV0dXJuITE7dSYmY2xlYXJUaW1lb3V0KHUpLHU9c2V0VGltZW91dChmdW5jdGlvbigpe3YoKX0sUy5hdXRvc2VhcmNoRGVsYXkpfX19KSl9WWUuamdyaWQuYmluZEV2LmNhbGwoRCxlLHQpfVllKGwpLmFwcGVuZChzKSxZZShqKS5hcHBlbmQobCksUy5zZWFyY2hPcGVyYXRvcnMmJiIiIT09YXx8WWUoInRkIixkKS5lcSgwKS5oaWRlKCl9KSxZZSgidGFibGUgdGhlYWQiLEQuZ3JpZC5oRGl2KS5hcHBlbmQoaiksUy5zZWFyY2hPcGVyYXRvcnMmJihZZSgiLnNvcHRjbGFzcyIsaikuY2xpY2soZnVuY3Rpb24oZSl7dmFyIHQ9WWUodGhpcykub2Zmc2V0KCkscj10LmxlZnQsdD10LnRvcCxpPXRoaXM7WWUoIiNzb3B0X21lbnUiKS5yZW1vdmUoKSxyPXBhcnNlSW50KHIsMTApLHQ9cGFyc2VJbnQodCwxMCkrMTg7dmFyIG8sYT0nPHVsIGlkPSJzb3B0X21lbnUiIGNsYXNzPSJ1aS1zZWFyY2gtbWVudSBtb2RhbC1jb250ZW50IiByb2xlPSJtZW51IiB0YWJpbmRleD0iMCIgc3R5bGU9ImZvbnQtc2l6ZTonKyhZZSgiLnVpLWpxZ3JpZCIpLmNzcygiZm9udC1zaXplIil8fCIxMXB4IikrIjtsZWZ0OiIrcisicHg7dG9wOiIrdCsncHg7Ij4nLG49WWUoaSkuYXR0cigic29wZXIiKSxsPVtdLHI9WWUoaSkuYXR0cigiY29sbmFtZSIpLHM9WWUuamdyaWQuZ2V0RWxlbUJ5QXR0clZhbChELnAuY29sTW9kZWwsIm5hbWUiLHIsITApO2lmKC0xIT09cyl7dmFyIHQ9RC5wLmNvbE1vZGVsW3NdLGQ9WWUuZXh0ZW5kKHt9LHQuc2VhcmNob3B0aW9ucyk7Zm9yKGQuc29wdHx8KGQuc29wdD1bXSxkLnNvcHRbMF09InNlbGVjdCI9PT10LnN0eXBlPyJlcSI6Uy5kZWZhdWx0U2VhcmNoKSxZZS5lYWNoKFMub2RhdGEsZnVuY3Rpb24oKXtsLnB1c2godGhpcy5vcGVyKX0pLHM9MDtzPGQuc29wdC5sZW5ndGg7cysrKS0xIT09KG89WWUuaW5BcnJheShkLnNvcHRbc10sbCkpJiYoYSs9JzxsaSBjbGFzcz0idWktbWVudS1pdGVtICcrKG49PT1TLm9kYXRhW29dLm9wZXI/cC5oaWdobGlnaHQ6IiIpKyciIHJvbGU9InByZXNlbnRhdGlvbiI+PGEgY2xhc3M9IicrcC5jb3JuZXJhbGwrJyBnLW1lbnUtaXRlbSIgdGFiaW5kZXg9IjAiIHJvbGU9Im1lbnVpdGVtIiB2YWx1ZT0iJytTLm9kYXRhW29dLm9wZXIrJyIgb3Blcj0iJytTLm9wZXJhbmRzW1Mub2RhdGFbb10ub3Blcl0rJyI+PHRhYmxlIGNsYXNzPSJ1aS1jb21tb24tdGFibGUiPjx0cj48dGQgY2xhc3M9Im9wZXJzaWduIj4nK1Mub3BlcmFuZHNbUy5vZGF0YVtvXS5vcGVyXSsiPC90ZD48dGQ+IitTLm9kYXRhW29dLnRleHQrIjwvdGQ+PC90cj48L3RhYmxlPjwvYT48L2xpPiIpO2ErPSI8L3VsPiIsWWUoImJvZHkiKS5hcHBlbmQoYSksWWUoIiNzb3B0X21lbnUiKS5hZGRDbGFzcygidWktbWVudSAiK2YubWVudV93aWRnZXQpLFllKCIjc29wdF9tZW51ID4gbGkgPiBhIikuaG92ZXIoZnVuY3Rpb24oKXtZZSh0aGlzKS5hZGRDbGFzcyhwLmhvdmVyKX0sZnVuY3Rpb24oKXtZZSh0aGlzKS5yZW1vdmVDbGFzcyhwLmhvdmVyKX0pLmNsaWNrKGZ1bmN0aW9uKCl7dmFyIGU9WWUodGhpcykuYXR0cigidmFsdWUiKSx0PVllKHRoaXMpLmF0dHIoIm9wZXIiKTtZZShEKS50cmlnZ2VySGFuZGxlcigianFHcmlkVG9vbGJhclNlbGVjdE9wZXIiLFtlLHQsaV0pLFllKCIjc29wdF9tZW51IikuaGlkZSgpLFllKGkpLnRleHQodCkuYXR0cigic29wZXIiLGUpLCEwPT09Uy5hdXRvc2VhcmNoJiYodD1ZZShpKS5wYXJlbnQoKS5uZXh0KCkuY2hpbGRyZW4oKVswXSxZZSh0KS52YWwoKXx8Im51Ij09PWV8fCJubiI9PT1lfHwwPD1ZZS5pbkFycmF5KGUsRykpJiZ2KCl9KX1lLnN0b3BQcm9wYWdhdGlvbigpfSksWWUoImJvZHkiKS5vbigiY2xpY2siLGZ1bmN0aW9uKGUpeyJzb3B0Y2xhc3MiIT09ZS50YXJnZXQuY2xhc3NOYW1lJiZZZSgiI3NvcHRfbWVudSIpLnJlbW92ZSgpfSkpLFllKCIuY2xlYXJzZWFyY2hjbGFzcyIsaikuY2xpY2soZnVuY3Rpb24oKXt2YXIgZSx0PVllKHRoaXMpLnBhcmVudHMoInRyIikuZmlyc3QoKSxyPVllKCJ0ZC51aS1zZWFyY2gtb3BlciIsdCkuYXR0cigiY29sdW1uYW1lIiksaT1ZZSgidGQudWktc2VhcmNoLW9wZXIgYSIsdCkuYXR0cigic29wZXIiKTtpZigtMT09PShyPVllLmpncmlkLmdldEVsZW1CeUF0dHJWYWwoRC5wLmNvbE1vZGVsLCJuYW1lIixyLCEwKSkpcmV0dXJuITE7dmFyIG89RC5wLmNvbE1vZGVsW3JdLGE9WWUuZXh0ZW5kKHt9LG8uc2VhcmNob3B0aW9uc3x8e30pLG49YS5kZWZhdWx0VmFsdWV8fCIiLGw9KCJzZWxlY3QiPT09by5zdHlwZT8obD1ZZSgidGQudWktc2VhcmNoLWlucHV0IHNlbGVjdCIsdCksbj9sLnZhbChuKTpsWzBdLnNlbGVjdGVkSW5kZXg9MCk6KGw9WWUoInRkLnVpLXNlYXJjaC1pbnB1dCBpbnB1dCIsdCkpLnZhbChuKSxZZShEKS50cmlnZ2VySGFuZGxlcigianFHcmlkVG9vbGJhckNsZWFyVmFsIixbbFswXSxyLGEsbl0pLFllLmpncmlkLmlzRnVuY3Rpb24oUy5vbkNsZWFyU2VhcmNoVmFsdWUpJiZTLm9uQ2xlYXJTZWFyY2hWYWx1ZS5jYWxsKEQsbFswXSxyLGEsbiksIiIpOygibnUiPT09aXx8Im5uIj09PWl8fDA8PVllLmluQXJyYXkoaSxHKSkmJihlPWEuc29wdD9hLnNvcHRbMF06InNlbGVjdCI9PT1vLnN0eXBlPyJlcSI6Uy5kZWZhdWx0U2VhcmNoLGw9bnVsbCE9RC5wLmN1c3RvbUZpbHRlckRlZiYmbnVsbCE9RC5wLmN1c3RvbUZpbHRlckRlZltlXT9ELnAuY3VzdG9tRmlsdGVyRGVmW2VdLm9wZXJhbmQ6Uy5vcGVyYW5kc1tlXXx8IiIsKGU9PT1pP1llKCJ0ZC51aS1zZWFyY2gtb3BlciBhIix0KS5hdHRyKCJzb3BlciIsImR1bW15Iik6WWUoInRkLnVpLXNlYXJjaC1vcGVyIGEiLHQpLmF0dHIoInNvcGVyIixlKSkudGV4dChsKSksITA9PT1TLmF1dG9zZWFyY2gmJih2KCksZT09PWkpJiZZZSgidGQudWktc2VhcmNoLW9wZXIgYSIsdCkuYXR0cigic29wZXIiLGUpLnRleHQobCl9KSxZZSgiLmNsZWFyc2VhcmNoY2xhc3MiLGopLmtleWRvd24oZnVuY3Rpb24oZSl7MTM9PT1lLmtleUNvZGUmJlllKCIuY2xlYXJzZWFyY2hjbGFzcyIsaikudHJpZ2dlcigiY2xpY2siKX0pLFllKEQuZ3JpZC5oRGl2KS5vbigic2Nyb2xsIixmdW5jdGlvbihlKXtELmdyaWQuaFNjcm9sbHx8KEQuZ3JpZC5iU2Nyb2xsPSEwLEQuZ3JpZC5iRGl2LnNjcm9sbExlZnQ9RC5ncmlkLmhEaXYuc2Nyb2xsTGVmdCxELnAuZm9vdGVycm93JiYoRC5ncmlkLnNEaXYuc2Nyb2xsTGVmdD1ELmdyaWQuYkRpdi5zY3JvbGxMZWZ0KSxELnAuaGVhZGVycm93JiYoRC5ncmlkLmhyRGl2LnNjcm9sbExlZnQ9RC5ncmlkLmJEaXYuc2Nyb2xsTGVmdCkpLEQuZ3JpZC5oU2Nyb2xsPSExfSksRC5wLmNvbFNwYW5IZWFkZXIubGVuZ3RoJiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7WWUoRCkuanFHcmlkKCJzZXRDb2xTcGFuSGVhZGVyIil9LDApLHRoaXMucC5maWx0ZXJUb29sYmFyPSEwLHRoaXMudHJpZ2dlclRvb2xiYXI9dix0aGlzLmNsZWFyVG9vbGJhcj1mdW5jdGlvbihlKXt2YXIgdCxyLGksbyxhLG4sbD17fSxzPXt9LGQ9MCxwPShlPSJib29sZWFuIiE9dHlwZW9mIGV8fGUsWWUuZWFjaChELnAuY29sTW9kZWwsZnVuY3Rpb24oKXtzd2l0Y2gocj1ZZSgiI2dzXyIrRC5wLmlkUHJlZml4K1llLmpncmlkLmpxSUQodGhpcy5uYW1lKSwhMD09PXRoaXMuZnJvemVuJiYhMD09PUQucC5mcm96ZW5Db2x1bW5zP0QuZ3JpZC5maERpdjpELmdyaWQuaERpdiksdGhpcy5zZWFyY2hvcHRpb25zJiZ2b2lkIDAhPT10aGlzLnNlYXJjaG9wdGlvbnMuZGVmYXVsdFZhbHVlJiYoaT10aGlzLnNlYXJjaG9wdGlvbnMuZGVmYXVsdFZhbHVlKSx0PXRoaXMuaW5kZXh8fHRoaXMubmFtZSxzW3RdPXRoaXMuc2VhcmNob3B0aW9ucyYmdGhpcy5zZWFyY2hvcHRpb25zLnNvcHQ/dGhpcy5zZWFyY2hvcHRpb25zLnNvcHRbMF06Uy5kZWZhdWx0U2VhcmNofHwiZXEiLHRoaXMuc3R5cGUpe2Nhc2Uic2VsZWN0IjppZihyLmZpbmQoIm9wdGlvbiIpLmVhY2goZnVuY3Rpb24oZSl7aWYoMD09PWUmJih0aGlzLnNlbGVjdGVkPSEwKSxZZSh0aGlzKS52YWwoKT09PWkpcmV0dXJuISh0aGlzLnNlbGVjdGVkPSEwKX0pLHZvaWQgMCE9PWkpbFt0XT1pLGQrKztlbHNlIHRyeXtkZWxldGUgRC5wLnBvc3REYXRhW3RdfWNhdGNoKGUpe31icmVhaztjYXNlInRleHQiOmlmKHIudmFsKGl8fCIiKSx2b2lkIDAhPT1pKWxbdF09aSxkKys7ZWxzZSB0cnl7ZGVsZXRlIEQucC5wb3N0RGF0YVt0XX1jYXRjaChlKXt9YnJlYWs7Y2FzZSJjdXN0b20iOlllLmpncmlkLmlzRnVuY3Rpb24odGhpcy5zZWFyY2hvcHRpb25zLmN1c3RvbV92YWx1ZSkmJjA8ci5sZW5ndGgmJnRoaXMuc2VhcmNob3B0aW9ucy5jdXN0b21fdmFsdWUuY2FsbChELHIsInNldCIsaXx8IiIpfX0pLDA8ZCksYz0oKEQucC5yZXNldHNlYXJjaD0hMCk9PT1TLnN0cmluZ1Jlc3VsdHx8ImxvY2FsIj09PUQucC5kYXRhdHlwZT8obz0neyJncm91cE9wIjoiJytTLmdyb3VwT3ArJyIsInJ1bGVzIjpbJyxhPTAsWWUuZWFjaChsLGZ1bmN0aW9uKGUsdCl7MDxhJiYobys9IiwiKSxvPShvPShvKz0neyJmaWVsZCI6IicrZSsnIiwnKSsnIm9wIjoiJytzW2VdKyciLCcpKyciZGF0YSI6IicrKHQrPSIiKS5yZXBsYWNlKC9cXC9nLCJcXFxcIikucmVwbGFjZSgvXCIvZywnXFwiJykrJyJ9JyxhKyssUy5zZWFyY2hPcGVyYXRvcnMmJihyPVllKCIjZ3NfIitELnAuaWRQcmVmaXgrWWUuamdyaWQuanFJRChlKSwhMD09PXRoaXMuZnJvemVuJiYhMD09PUQucC5mcm96ZW5Db2x1bW5zP0QuZ3JpZC5maERpdjpELmdyaWQuaERpdikpLnBhcmVudHMoInRhYmxlLnVpLXNlYXJjaC10YWJsZSIpLmZpbmQoInRkLnVpLXNlYXJjaC1vcGVyIikuY2hpbGRyZW4oImEiKS5hdHRyKCJzb3BlciIsc1tlXSkuaHRtbChTLm9wZXJhbmRzW3NbZV1dKX0pLG8rPSJdfSIsITA9PT1ELnAubWVyZ2VTZWFyY2gmJkQucC5zZWFyY2hNb2R1bGVzLmhhc093blByb3BlcnR5KCJmaWx0ZXJUb29sYmFyIikmJiExIT09RC5wLnNlYXJjaE1vZHVsZXMuZmlsdGVyVG9vbGJhcj8oRC5wLnNlYXJjaE1vZHVsZXMuZmlsdGVyVG9vbGJhcj0wPGE/bzpudWxsLHA9ITAsWWUuZXh0ZW5kKEQucC5wb3N0RGF0YSx7ZmlsdGVyczpZZS5qZ3JpZC5zcGxpdFNlYXJjaChELnAuc2VhcmNoTW9kdWxlcyl9KSk6WWUuZXh0ZW5kKEQucC5wb3N0RGF0YSx7ZmlsdGVyczpvfSksWWUuZWFjaChbInNlYXJjaEZpZWxkIiwic2VhcmNoU3RyaW5nIiwic2VhcmNoT3BlciJdLGZ1bmN0aW9uKGUsdCl7RC5wLnBvc3REYXRhLmhhc093blByb3BlcnR5KHQpJiZkZWxldGUgRC5wLnBvc3REYXRhW3RdfSkpOlllLmV4dGVuZChELnAucG9zdERhdGEsbCksUy51cmwmJihuPUQucC51cmwsWWUoRCkuanFHcmlkKCJzZXRHcmlkUGFyYW0iLHt1cmw6Uy51cmx9KSksInN0b3AiPT09WWUoRCkudHJpZ2dlckhhbmRsZXIoImpxR3JpZFRvb2xiYXJCZWZvcmVDbGVhciIpKTsoYz0hYyYmWWUuamdyaWQuaXNGdW5jdGlvbihTLmJlZm9yZUNsZWFyKT9TLmJlZm9yZUNsZWFyLmNhbGwoRCk6Yyl8fGUmJlllKEQpLmpxR3JpZCgic2V0R3JpZFBhcmFtIix7c2VhcmNoOnB9KS50cmlnZ2VyKCJyZWxvYWRHcmlkIixbe3BhZ2U6MX1dKSxuJiZZZShEKS5qcUdyaWQoInNldEdyaWRQYXJhbSIse3VybDpufSksWWUoRCkudHJpZ2dlckhhbmRsZXIoImpxR3JpZFRvb2xiYXJBZnRlckNsZWFyIiksWWUuamdyaWQuaXNGdW5jdGlvbihTLmFmdGVyQ2xlYXIpJiZTLmFmdGVyQ2xlYXIoKX0sdGhpcy50b2dnbGVUb29sYmFyPWZ1bmN0aW9uKCl7dmFyIGU9WWUoInRyLnVpLXNlYXJjaC10b29sYmFyIixELmdyaWQuaERpdik7ITA9PT1ELnAuZnJvemVuQ29sdW1ucyYmWWUoRCkuanFHcmlkKCJkZXN0cm95RnJvemVuQ29sdW1ucyIpLCJub25lIj09PWUuY3NzKCJkaXNwbGF5Iik/ZS5zaG93KCk6ZS5oaWRlKCksITA9PT1ELnAuZnJvemVuQ29sdW1ucyYmWWUoRCkuanFHcmlkKCJzZXRGcm96ZW5Db2x1bW5zIil9fX0pfSxkZXN0cm95RmlsdGVyVG9vbGJhcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt0aGlzLnAuZmlsdGVyVG9vbGJhciYmKHRoaXMudHJpZ2dlclRvb2xiYXI9bnVsbCx0aGlzLmNsZWFyVG9vbGJhcj1udWxsLHRoaXMudG9nZ2xlVG9vbGJhcj1udWxsLHRoaXMucC5maWx0ZXJUb29sYmFyPSExLFllKHRoaXMuZ3JpZC5oRGl2KS5maW5kKCJ0YWJsZSB0aGVhZCB0ci51aS1zZWFyY2gtdG9vbGJhciIpLnJlbW92ZSgpKX0pfSxyZWZyZXNoRmlsdGVyVG9vbGJhcjpmdW5jdGlvbihnKXtyZXR1cm4gZz1ZZS5leHRlbmQoITAse2ZpbHRlcnM6IiIsb25DbGVhclZhbDpudWxsLG9uU2V0VmFsOm51bGx9LGd8fHt9KSx0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgbyxhLG4sZSxsLHMsZCxwPXRoaXMsYz1wLnAuY29sTW9kZWwsdT1wLnAuY29sTW9kZWwubGVuZ3RoLGg9W107aWYocC5wLmZpbHRlclRvb2xiYXIpe2ZvcihhPVllKHApLmRhdGEoImZpbHRlclRvb2xiYXIiKSxvPTA7bzx1O28rKyl7c3dpdGNoKGgucHVzaChjW29dLmluZGV4fHxjW29dLm5hbWUpLG49WWUoIiNnc18iK3AucC5pZFByZWZpeCtZZS5qZ3JpZC5qcUlEKGNbb10ubmFtZSkpLGNbb10uc3R5cGUpe2Nhc2Uic2VsZWN0IjpjYXNlInRleHQiOm4udmFsKCIiKX1ZZS5qZ3JpZC5pc0Z1bmN0aW9uKGcub25DbGVhclZhbCkmJmcub25DbGVhclZhbC5jYWxsKHAsbixjW29dLm5hbWUpfSJzdHJpbmciPT10eXBlb2YgZy5maWx0ZXJzJiYoZy5maWx0ZXJzLmxlbmd0aD9lPWcuZmlsdGVyczpwLnAucG9zdERhdGEuaGFzT3duUHJvcGVydHkoImZpbHRlcnMiKSYmKGU9cC5wLnBvc3REYXRhLmZpbHRlcnMpLGU9WWUuamdyaWQucGFyc2UoZSkpLFllLmlzUGxhaW5PYmplY3QoZSkmJiFmdW5jdGlvbiBlKHQpe2lmKHQmJnQucnVsZXMpe2ZvcihsPXQucnVsZXMsdT1sLmxlbmd0aCxvPTA7bzx1O28rKyl7dmFyIHI7cz1sW29dLC0xIT09KGQ9WWUuaW5BcnJheShzLmZpZWxkLGgpKSYmMDwobj1ZZSgiI2dzXyIrcC5wLmlkUHJlZml4K1llLmpncmlkLmpxSUQoY1tkXS5uYW1lKSkpLmxlbmd0aCYmKCJzZWxlY3QiPT09Y1tkXS5zdHlwZT9uLmZpbmQoIm9wdGlvblt2YWx1ZT0nIitZZS5qZ3JpZC5qcUlEKHMuZGF0YSkrIiddIikucHJvcCgic2VsZWN0ZWQiLCEwKToidGV4dCI9PT1jW2RdLnN0eXBlJiZuLnZhbChzLmRhdGEpLFllLmpncmlkLmlzRnVuY3Rpb24oZy5vblNldFZhbCkmJmcub25TZXRWYWwuY2FsbChwLG4sY1tkXS5uYW1lKSxhKSYmYS5zZWFyY2hPcGVyYXRvcnMmJihyPW4ucGFyZW50KCkucHJldigpKS5oYXNDbGFzcygidWktc2VhcmNoLW9wZXIiKSYmKFllKCIuc29wdGNsYXNzIixyKS5hdHRyKCJzb3BlciIscy5vcCksYS5vcGVyYW5kcy5oYXNPd25Qcm9wZXJ0eShzLm9wKSkmJlllKCIuc29wdGNsYXNzIixyKS5odG1sKFllLmpncmlkLnN0cmlwU2NyaXB0KGEub3BlcmFuZHNbcy5vcF0pKX1pZih0Lmdyb3Vwcylmb3IodmFyIGk9MDtpPHQuZ3JvdXBzLmxlbmd0aDtpKyspZSh0Lmdyb3Vwc1tpXSl9fShlKX19KX0sc2VhcmNoR3JpZDpmdW5jdGlvbihrKXt2YXIgZT1ZZS5qZ3JpZC5nZXRSZWdpb25hbCh0aGlzWzBdLCJzZWFyY2giKTtyZXR1cm4gaz1ZZS5leHRlbmQoITAse3JlY3JlYXRlRmlsdGVyOiExLGRyYWc6ITAsc0ZpZWxkOiJzZWFyY2hGaWVsZCIsc1ZhbHVlOiJzZWFyY2hTdHJpbmciLHNPcGVyOiJzZWFyY2hPcGVyIixzRmlsdGVyOiJmaWx0ZXJzIixsb2FkRGVmYXVsdHM6ITAsYmVmb3JlU2hvd1NlYXJjaDpudWxsLGFmdGVyU2hvd1NlYXJjaDpudWxsLG9uSW5pdGlhbGl6ZVNlYXJjaDpudWxsLGFmdGVyUmVkcmF3Om51bGwsYWZ0ZXJDaGFuZ2U6bnVsbCxzb3J0U3RyYXRlZ3k6bnVsbCxjbG9zZUFmdGVyU2VhcmNoOiExLGNsb3NlQWZ0ZXJSZXNldDohMSxjbG9zZU9uRXNjYXBlOiExLHNlYXJjaE9uRW50ZXI6ITEsbXVsdGlwbGVTZWFyY2g6ITEsbXVsdGlwbGVHcm91cDohMSx0b3A6MCxsZWZ0OjAsanFNb2RhbDohMCxtb2RhbDohMSxyZXNpemU6ITAsd2lkdGg6NDUwLGhlaWdodDoiYXV0byIsZGF0YWhlaWdodDoiYXV0byIsc2hvd1F1ZXJ5OiExLGVycm9yY2hlY2s6ITAsc29wdDpudWxsLHN0cmluZ1Jlc3VsdDp2b2lkIDAsb25DbG9zZTpudWxsLG9uU2VhcmNoOm51bGwsb25SZXNldDpudWxsLHRvVG9wOiEwLG92ZXJsYXk6MzAsY29sdW1uczpbXSx0bXBsTmFtZXM6bnVsbCx0bXBsRmlsdGVyczpudWxsLHRtcGxMYWJlbDoiIFRlbXBsYXRlOiAiLHNob3dPbkxvYWQ6ITEsbGF5ZXI6bnVsbCxzcGxpdFNlbGVjdDoiLCIsZ3JvdXBPcFNlbGVjdDoiT1IiLG9wZXJhbmRzOntlcToiPSIsbmU6Ijw+IixsdDoiPCIsbGU6Ijw9IixndDoiPiIsZ2U6Ij49IixidzoiTElLRSIsYm46Ik5PVCBMSUtFIixpbjoiSU4iLG5pOiJOT1QgSU4iLGV3OiJMSUtFIixlbjoiTk9UIExJS0UiLGNuOiJMSUtFIixuYzoiTk9UIExJS0UiLG51OiJJUyBOVUxMIixubjoiSVNOT1QgTlVMTCJ9LGJ1dHRvbnM6W119LGUsa3x8e30pLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBvPXRoaXM7aWYoby5ncmlkKXt2YXIgdCxyLGk9ImZib3hfIitvLnAuaWQsYT0hMCxuPSEwLGw9e3RoZW1vZGFsOiJzZWFyY2htb2QiK2ksbW9kYWxoZWFkOiJzZWFyY2hoZCIraSxtb2RhbGNvbnRlbnQ6InNlYXJjaGNudCIraSxzY3JvbGxlbG06aX0sZT1bXSxzPVllLmpncmlkLnN0eWxlVUlbby5wLnN0eWxlVUl8fCJqUXVlcnlVSSJdLmZpbHRlcixkPVllLmpncmlkLnN0eWxlVUlbby5wLnN0eWxlVUl8fCJqUXVlcnlVSSJdLmNvbW1vbjtpZihrLnN0eWxlVUk9by5wLnN0eWxlVUksInN0cmluZyI9PXR5cGVvZih0PVllLmlzUGxhaW5PYmplY3Qoby5wLl9zYXZlZEZpbHRlcikmJiFZZS5pc0VtcHR5T2JqZWN0KG8ucC5fc2F2ZWRGaWx0ZXIpP28ucC5fc2F2ZWRGaWx0ZXI6KCEwPT09by5wLm1lcmdlU2VhcmNoJiZvLnAuc2VhcmNoTW9kdWxlcy5oYXNPd25Qcm9wZXJ0eSgic2VhcmNoR3JpZCIpJiYhMSE9PW8ucC5zZWFyY2hNb2R1bGVzLnNlYXJjaEdyaWQmJlllLmV4dGVuZChvLnAucG9zdERhdGEse2ZpbHRlcnM6WWUuamdyaWQuc3BsaXRTZWFyY2goby5wLnNlYXJjaE1vZHVsZXMpfSksby5wLnBvc3REYXRhW2suc0ZpbHRlcl0pKSYmKHQ9WWUuamdyaWQucGFyc2UodCkpLCEwPT09ay5yZWNyZWF0ZUZpbHRlciYmWWUoIiMiK1llLmpncmlkLmpxSUQobC50aGVtb2RhbCkpLnJlbW92ZSgpLHZvaWQgMCE9PVllKCIjIitZZS5qZ3JpZC5qcUlEKGwudGhlbW9kYWwpKVswXSlTKFllKCIjZmJveF8iK1llLmpncmlkLmpxSUQoby5wLmlkKSkpO2Vsc2V7dmFyIHAsYyx1PVllKCI8ZGl2PjxkaXYgaWQ9JyIraSsiJyBjbGFzcz0nc2VhcmNoRmlsdGVyJyBzdHlsZT0nb3ZlcmZsb3c6YXV0byc+PC9kaXY+PC9kaXY+IikuaW5zZXJ0QmVmb3JlKCIjZ3ZpZXdfIitZZS5qZ3JpZC5qcUlEKG8ucC5pZCkpLGg9ImxlZnQiLGc9IiIsZj0oInJ0bCI9PT1vLnAuZGlyZWN0aW9uJiYoaD0icmlnaHQiLGc9IiBzdHlsZT0ndGV4dC1hbGlnbjpsZWZ0JyIsdS5hdHRyKCJkaXIiLCJydGwiKSksWWUuZXh0ZW5kKFtdLG8ucC5jb2xNb2RlbCkpLG09IjxhIGlkPSciK2krIl9zZWFyY2gnIGNsYXNzPSdmbS1idXR0b24gIitkLmJ1dHRvbisiIGZtLWJ1dHRvbi1pY29uLXJpZ2h0IHVpLXNlYXJjaCc+PHNwYW4gY2xhc3M9JyIrZC5pY29uX2Jhc2UrIiAiK3MuaWNvbl9zZWFyY2grIic+PC9zcGFuPiIray5GaW5kKyI8L2E+Iix2PSI8YSBpZD0nIitpKyJfcmVzZXQnIGNsYXNzPSdmbS1idXR0b24gIitkLmJ1dHRvbisiIGZtLWJ1dHRvbi1pY29uLWxlZnQgdWktcmVzZXQnPjxzcGFuIGNsYXNzPSciK2QuaWNvbl9iYXNlKyIgIitzLmljb25fcmVzZXQrIic+PC9zcGFuPiIray5SZXNldCsiPC9hPiIsaj0iIixiPSIiLHc9ITEseT0tMSx4PSExLF89W10sbT0oay5zaG93UXVlcnkmJihqPSI8YSBpZD0nIitpKyJfcXVlcnknIGNsYXNzPSdmbS1idXR0b24gIitkLmJ1dHRvbisiIGZtLWJ1dHRvbi1pY29uLWxlZnQnPjxzcGFuIGNsYXNzPSciK2QuaWNvbl9iYXNlKyIgIitzLmljb25fcXVlcnkrIic+PC9zcGFuPlF1ZXJ5PC9hPiIpLFllLmpncmlkLmJ1aWxkQnV0dG9ucyhrLmJ1dHRvbnMsaittLGQpKSxxPW51bGw7aWYoWWUobykuanFHcmlkKCJpc0dyb3VwSGVhZGVyT24iKSYmKEY9WWUoInRhYmxlLnVpLWpxZ3JpZC1odGFibGUiLG8uZ3JpZC5oRGl2KS5maW5kKCIuanFnLXNlY29uZC1yb3ctaGVhZGVyIiksYz1vLnAuZ3JvdXBIZWFkZXIubGVuZ3RoLHZvaWQgMCE9PUZbMF0pJiYocT1vLnAuZ3JvdXBIZWFkZXJbYy0xXSksay5jb2x1bW5zLmxlbmd0aClmPWsuY29sdW1ucyxwPWZbeT0wXS5pbmRleHx8ZlswXS5uYW1lO2Vsc2V7aWYobnVsbCE9PXEpZm9yKHZhciBDPTA7QzxmLmxlbmd0aDtDKyspe3ZhciBJPVllLmpncmlkLmluQ29sdW1uSGVhZGVyKGZbQ10ubmFtZSxxLmdyb3VwSGVhZGVycyk7aWYoMDw9SSl7ZltDXS5sYWJlbD1xLmdyb3VwSGVhZGVyc1tJXS50aXRsZVRleHQrIjo6IitvLnAuY29sTmFtZXNbQ107Zm9yKHZhciBEPTE7RDw9cS5ncm91cEhlYWRlcnNbSV0ubnVtYmVyT2ZDb2x1bW5zLTE7RCsrKWZbQytEXS5sYWJlbD1xLmdyb3VwSGVhZGVyc1tJXS50aXRsZVRleHQrIjo6IitvLnAuY29sTmFtZXNbQytEXTtDPUMrcS5ncm91cEhlYWRlcnNbSV0ubnVtYmVyT2ZDb2x1bW5zLTF9fVllLmVhY2goZixmdW5jdGlvbihlLHQpe3ZhciByLGk7dC5sYWJlbHx8KHQubGFiZWw9by5wLmNvbE5hbWVzW2VdKSwhdyYmKHI9dm9pZCAwPT09dC5zZWFyY2h8fHQuc2VhcmNoLGk9ITA9PT10LmhpZGRlbix0LnNlYXJjaG9wdGlvbnMmJiEwPT09dC5zZWFyY2hvcHRpb25zLnNlYXJjaGhpZGRlbiYmcnx8ciYmIWkpJiYodz0hMCxwPXQuaW5kZXh8fHQubmFtZSx5PWUpLCJzZWxlY3QiPT09dC5zdHlwZSYmdC5zZWFyY2hvcHRpb25zJiZ0LnNlYXJjaG9wdGlvbnMubXVsdGlwbGUmJih4PSEwLF8ucHVzaCh0LmluZGV4fHx0Lm5hbWUpKX0pfWlmKCghdCYmcHx8ITE9PT1rLm11bHRpcGxlU2VhcmNoKSYmKEY9ImVxIiwwPD15JiZmW3ldLnNlYXJjaG9wdGlvbnMmJmZbeV0uc2VhcmNob3B0aW9ucy5zb3B0P0Y9Zlt5XS5zZWFyY2hvcHRpb25zLnNvcHRbMF06ay5zb3B0JiZrLnNvcHQubGVuZ3RoJiYoRj1rLnNvcHRbMF0pLHQ9e2dyb3VwT3A6IkFORCIscnVsZXM6W3tmaWVsZDpwLG9wOkYsZGF0YToiIn1dfSksdz0hMSxrLnRtcGxOYW1lcyYmay50bXBsTmFtZXMubGVuZ3RoJiYodz0hMCxiPShiPSI8dHI+PHRkIGNsYXNzPSd1aS1zZWFyY2gtbGFiZWwnPiIray50bXBsTGFiZWwrIjwvdGQ+IikrIjx0ZD48c2VsZWN0IHNpemU9JzEnIGNsYXNzPSd1aS10ZW1wbGF0ZSAiK3Muc3JTZWxlY3QrIic+PG9wdGlvbiB2YWx1ZT0nZGVmYXVsdCc+RGVmYXVsdDwvb3B0aW9uPiIsWWUuZWFjaChrLnRtcGxOYW1lcyxmdW5jdGlvbihlLHQpe2IrPSI8b3B0aW9uIHZhbHVlPSciK2UrIic+Iit0KyI8L29wdGlvbj4ifSksYis9Ijwvc2VsZWN0PjwvdGQ+PC90cj4iKSx2b2lkIDAhPT1vLnAuY3VzdG9tRmlsdGVyRGVmKWZvcih2YXIgRyBpbiBvLnAuY3VzdG9tRmlsdGVyRGVmKW8ucC5jdXN0b21GaWx0ZXJEZWYuaGFzT3duUHJvcGVydHkoRykmJiFrLm9wZXJhbmRzLmhhc093blByb3BlcnR5KEcpJiYoay5vZGF0YS5wdXNoKHtvcGVyOkcsdGV4dDpvLnAuY3VzdG9tRmlsdGVyRGVmW0ddLnRleHR9KSxrLm9wZXJhbmRzW0ddPW8ucC5jdXN0b21GaWx0ZXJEZWZbR10ub3BlcmFuZCwhMD09PW8ucC5jdXN0b21GaWx0ZXJEZWZbR10udW5hcnkpJiZlLnB1c2goRyk7Yz0iPHRhYmxlIGNsYXNzPSdFZGl0VGFibGUnIHN0eWxlPSdib3JkZXI6MHB4IG5vbmU7bWFyZ2luLXRvcDo1cHgnIGlkPSciK2krIl8yJz48dGJvZHk+PHRyPjx0ZCBjb2xzcGFuPScyJz48aHIgY2xhc3M9JyIrZC5jb250ZW50KyInIHN0eWxlPSdtYXJnaW46MXB4Jy8+PC90ZD48L3RyPiIrYisiPHRyPjx0ZCBjbGFzcz0nRWRpdEJ1dHRvbicgc3R5bGU9J3RleHQtYWxpZ246IitoKyInPiIrdisiPC90ZD48dGQgY2xhc3M9J0VkaXRCdXR0b24nICIrZysiPiIrbSsiPC90ZD48L3RyPjwvdGJvZHk+PC90YWJsZT4iLGk9WWUuamdyaWQuanFJRChpKSxZZSgiIyIraSkuanFGaWx0ZXIoe2NvbHVtbnM6Zixzb3J0U3RyYXRlZ3k6ay5zb3J0U3RyYXRlZ3ksZmlsdGVyOmsubG9hZERlZmF1bHRzP3Q6bnVsbCxzaG93UXVlcnk6ay5zaG93UXVlcnksZXJyb3JjaGVjazprLmVycm9yY2hlY2ssc29wdDprLnNvcHQsZ3JvdXBCdXR0b246ay5tdWx0aXBsZUdyb3VwLHJ1bGVCdXR0b25zOmsubXVsdGlwbGVTZWFyY2gsdW5pcXVlU2VhcmNoRmllbGRzOmsudW5pcXVlU2VhcmNoRmllbGRzLGFmdGVyUmVkcmF3OmsuYWZ0ZXJSZWRyYXcsb3BzOmsub2RhdGEsb3BlcmFuZHM6ay5vcGVyYW5kcyxhamF4U2VsZWN0T3B0aW9uczpvLnAuYWpheFNlbGVjdE9wdGlvbnMsZ3JvdXBPcHM6ay5ncm91cE9wcyxhZGRzdWJncnVwOmsuYWRkc3ViZ3J1cCxhZGRydWxlOmsuYWRkcnVsZSxkZWxncm91cDprLmRlbGdyb3VwLGRlbHJ1bGU6ay5kZWxydWxlLGF1dG9lbmNvZGU6by5wLmF1dG9lbmNvZGUsdW5hcnlPcGVyYXRpb25zOmUsb25DaGFuZ2U6ZnVuY3Rpb24oKXt0aGlzLnAuc2hvd1F1ZXJ5JiZZZSgiLnF1ZXJ5Iix0aGlzKS50ZXh0KHRoaXMudG9Vc2VyRnJpZW5kbHlTdHJpbmcoKSksWWUuamdyaWQuaXNGdW5jdGlvbihrLmFmdGVyQ2hhbmdlKSYmay5hZnRlckNoYW5nZS5jYWxsKG8sWWUoIiMiK2kpLGspfSxkaXJlY3Rpb246by5wLmRpcmVjdGlvbixpZDpvLnAuaWR9KSx1LmFwcGVuZChjKSxZZSgiIyIraSsiXzIiKS5maW5kKCJbZGF0YS1pbmRleF0iKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIHQ9cGFyc2VJbnQoWWUodGhpcykuYXR0cigiZGF0YS1pbmRleCIpLDEwKTswPD10JiZZZSh0aGlzKS5vbigiY2xpY2siLGZ1bmN0aW9uKGUpe2suYnV0dG9uc1t0XS5jbGljay5jYWxsKG8sWWUoIiMiK2kpLGssZSl9KX0pLHcmJmsudG1wbEZpbHRlcnMmJmsudG1wbEZpbHRlcnMubGVuZ3RoJiZZZSgiLnVpLXRlbXBsYXRlIix1KS5vbigiY2hhbmdlIixmdW5jdGlvbigpe3ZhciBlPVllKHRoaXMpLnZhbCgpO3JldHVybiJkZWZhdWx0Ij09PWU/WWUoIiMiK2kpLmpxRmlsdGVyKCJhZGRGaWx0ZXIiLHQpOlllKCIjIitpKS5qcUZpbHRlcigiYWRkRmlsdGVyIixrLnRtcGxGaWx0ZXJzW3BhcnNlSW50KGUsMTApXSksITF9KSwhMD09PWsubXVsdGlwbGVHcm91cCYmKGsubXVsdGlwbGVTZWFyY2g9ITApLFllKG8pLnRyaWdnZXJIYW5kbGVyKCJqcUdyaWRGaWx0ZXJJbml0aWFsaXplIixbWWUoIiMiK2kpXSksWWUuamdyaWQuaXNGdW5jdGlvbihrLm9uSW5pdGlhbGl6ZVNlYXJjaCkmJmsub25Jbml0aWFsaXplU2VhcmNoLmNhbGwobyxZZSgiIyIraSkpLGsuZ2JveD0iI2dib3hfIitZZS5qZ3JpZC5qcUlEKG8ucC5pZCk7dmFyIEY9WWUoIi51aS1qcWdyaWQiKS5jc3MoImZvbnQtc2l6ZSIpfHwiMTFweCI7ay5sYXllcj9ZZS5qZ3JpZC5jcmVhdGVNb2RhbChsLHUsaywiI2d2aWV3XyIrWWUuamdyaWQuanFJRChvLnAuaWQpLFllKCIjZ2JveF8iK1llLmpncmlkLmpxSUQoby5wLmlkKSlbMF0sInN0cmluZyI9PXR5cGVvZiBrLmxheWVyPyIjIitZZS5qZ3JpZC5qcUlEKGsubGF5ZXIpOmsubGF5ZXIsInN0cmluZyI9PXR5cGVvZiBrLmxheWVyP3twb3NpdGlvbjoicmVsYXRpdmUiLCJmb250LXNpemUiOkZ9OnsiZm9udC1zaXplIjpGfSk6WWUuamdyaWQuY3JlYXRlTW9kYWwobCx1LGssIiNndmlld18iK1llLmpncmlkLmpxSUQoby5wLmlkKSxZZSgiI2dib3hfIitZZS5qZ3JpZC5qcUlEKG8ucC5pZCkpWzBdLG51bGwseyJmb250LXNpemUiOkZ9KSwoay5zZWFyY2hPbkVudGVyfHxrLmNsb3NlT25Fc2NhcGUpJiZZZSgiIyIrWWUuamdyaWQuanFJRChsLnRoZW1vZGFsKSkua2V5ZG93bihmdW5jdGlvbihlKXt2YXIgdD1ZZShlLnRhcmdldCk7cmV0dXJuIWsuc2VhcmNoT25FbnRlcnx8MTMhPT1lLndoaWNofHx0Lmhhc0NsYXNzKCJhZGQtZ3JvdXAiKXx8dC5oYXNDbGFzcygiYWRkLXJ1bGUiKXx8dC5oYXNDbGFzcygiZGVsZXRlLWdyb3VwIil8fHQuaGFzQ2xhc3MoImRlbGV0ZS1ydWxlIil8fHQuaGFzQ2xhc3MoImZtLWJ1dHRvbiIpJiZ0LmlzKCJbaWQkPV9xdWVyeV0iKT9rLmNsb3NlT25Fc2NhcGUmJjI3PT09ZS53aGljaD8oWWUoIiMiK1llLmpncmlkLmpxSUQobC5tb2RhbGhlYWQpKS5maW5kKCIudWktanFkaWFsb2ctdGl0bGViYXItY2xvc2UiKS5jbGljaygpLCExKTp2b2lkIDA6KFllKCIjIitpKyJfc2VhcmNoIikuY2xpY2soKSwhMSl9KSxqJiZZZSgiIyIraSsiX3F1ZXJ5Iikub24oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBZZSgiLnF1ZXJ5cmVzdWx0Iix1KS50b2dnbGUoKSwhMX0pLHZvaWQgMD09PWsuc3RyaW5nUmVzdWx0JiYoay5zdHJpbmdSZXN1bHQ9ay5tdWx0aXBsZVNlYXJjaCksWWUoIiMiK2krIl9zZWFyY2giKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7dmFyIGUsdD17fTtyZXR1cm4ocj1ZZSgiIyIraSkpLmZpbmQoIi5pbnB1dC1lbG06Zm9jdXMiKS5jaGFuZ2UoKSx4JiZrLm11bHRpcGxlU2VhcmNoPyhvLnAuX3NhdmVkRmlsdGVyPXt9LGU9WWUuamdyaWQuZmlsdGVyUmVmYWN0b3Ioe3J1bGVHcm91cDpZZS5leHRlbmQoITAse30sci5qcUZpbHRlcigiZmlsdGVyRGF0YSIpKSxzc2ZpZWxkOl8sc3BsaXRTZWxlY3Q6ay5zcGxpdFNlbGVjdCxncm91cE9wU2VsZWN0OmsuZ3JvdXBPcFNlbGVjdH0pLG8ucC5fc2F2ZWRGaWx0ZXI9WWUuZXh0ZW5kKCEwLHt9LHIuanFGaWx0ZXIoImZpbHRlckRhdGEiKSkpOmU9ci5qcUZpbHRlcigiZmlsdGVyRGF0YSIpLGsuZXJyb3JjaGVjayYmKHJbMF0uaGlkZUVycm9yKCksay5zaG93UXVlcnl8fHIuanFGaWx0ZXIoInRvU1FMU3RyaW5nIiksclswXS5wLmVycm9yKT9yWzBdLnNob3dFcnJvcigpOihrLnN0cmluZ1Jlc3VsdD8odFtrLnNGaWx0ZXJdPUpTT04uc3RyaW5naWZ5KGUpLFllLmVhY2goW2suc0ZpZWxkLGsuc1ZhbHVlLGsuc09wZXJdLGZ1bmN0aW9uKCl7dFt0aGlzXT0iIn0pKTprLm11bHRpcGxlU2VhcmNoPyh0W2suc0ZpbHRlcl09ZSxZZS5lYWNoKFtrLnNGaWVsZCxrLnNWYWx1ZSxrLnNPcGVyXSxmdW5jdGlvbigpe3RbdGhpc109IiJ9KSk6KHRbay5zRmllbGRdPWUucnVsZXNbMF0uZmllbGQsdFtrLnNWYWx1ZV09ZS5ydWxlc1swXS5kYXRhLHRbay5zT3Blcl09ZS5ydWxlc1swXS5vcCx0W2suc0ZpbHRlcl09IiIpLCJzdHJpbmciIT10eXBlb2YgdFtrLnNGaWx0ZXJdJiYodFtrLnNGaWx0ZXJdPUpTT04uc3RyaW5naWZ5KHRbay5zRmlsdGVyXSkpLChvLnAuc2VhcmNoPSEwKT09PW8ucC5tZXJnZVNlYXJjaCYmby5wLnNlYXJjaE1vZHVsZXMuaGFzT3duUHJvcGVydHkoInNlYXJjaEdyaWQiKSYmITEhPT1vLnAuc2VhcmNoTW9kdWxlcy5zZWFyY2hHcmlkJiZrLm11bHRpcGxlU2VhcmNoPygiIiE9PXRbay5zRmlsdGVyXT9vLnAuc2VhcmNoTW9kdWxlcy5zZWFyY2hHcmlkPXRbay5zRmlsdGVyXTpvLnAuc2VhcmNoTW9kdWxlcy5zZWFyY2hHcmlkPW51bGwsWWUuZXh0ZW5kKG8ucC5wb3N0RGF0YSx7ZmlsdGVyczpZZS5qZ3JpZC5zcGxpdFNlYXJjaChvLnAuc2VhcmNoTW9kdWxlcyl9KSk6WWUuZXh0ZW5kKG8ucC5wb3N0RGF0YSx0KSwhMSE9PShuPShuPXZvaWQgMD09PShuPVllKG8pLnRyaWdnZXJIYW5kbGVyKCJqcUdyaWRGaWx0ZXJTZWFyY2giKSk/ITA6bikmJlllLmpncmlkLmlzRnVuY3Rpb24oay5vblNlYXJjaCk/ay5vblNlYXJjaC5jYWxsKG8sby5wLmZpbHRlcnMpOm4pJiZZZShvKS50cmlnZ2VyKCJyZWxvYWRHcmlkIixbe3BhZ2U6MX1dKSxrLmNsb3NlQWZ0ZXJTZWFyY2gmJlllLmpncmlkLmhpZGVNb2RhbCgiIyIrWWUuamdyaWQuanFJRChsLnRoZW1vZGFsKSx7Z2I6IiNnYm94XyIrWWUuamdyaWQuanFJRChvLnAuaWQpLGpxbTprLmpxTW9kYWwsb25DbG9zZTprLm9uQ2xvc2V9KSksITF9KSxZZSgiIyIraSsiX3Jlc2V0Iikub24oImNsaWNrIixmdW5jdGlvbigpe3ZhciBlPXt9LHQ9WWUoIiMiK2kpO3JldHVybiBvLnAuc2VhcmNoPSExLCEoby5wLnJlc2V0c2VhcmNoPSEwKT09PWsubXVsdGlwbGVTZWFyY2g/ZVtrLnNGaWVsZF09ZVtrLnNWYWx1ZV09ZVtrLnNPcGVyXT0iIjplW2suc0ZpbHRlcl09IiIsdFswXS5yZXNldEZpbHRlcigpLHcmJlllKCIudWktdGVtcGxhdGUiLHUpLnZhbCgiZGVmYXVsdCIpLCEwPT09by5wLm1lcmdlU2VhcmNoJiZvLnAuc2VhcmNoTW9kdWxlcy5oYXNPd25Qcm9wZXJ0eSgic2VhcmNoR3JpZCIpJiYhMSE9PW8ucC5zZWFyY2hNb2R1bGVzLnNlYXJjaEdyaWQ/KG8ucC5zZWFyY2hNb2R1bGVzLnNlYXJjaEdyaWQ9bnVsbCxZZS5leHRlbmQoby5wLnBvc3REYXRhLHtmaWx0ZXJzOlllLmpncmlkLnNwbGl0U2VhcmNoKG8ucC5zZWFyY2hNb2R1bGVzKX0pLG8ucC5zZWFyY2g9ITApOlllLmV4dGVuZChvLnAucG9zdERhdGEsZSksITEhPT0obj0obj12b2lkIDA9PT0obj1ZZShvKS50cmlnZ2VySGFuZGxlcigianFHcmlkRmlsdGVyUmVzZXQiKSk/ITA6bikmJlllLmpncmlkLmlzRnVuY3Rpb24oay5vblJlc2V0KT9rLm9uUmVzZXQuY2FsbChvKTpuKSYmWWUobykudHJpZ2dlcigicmVsb2FkR3JpZCIsW3twYWdlOjF9XSksay5jbG9zZUFmdGVyUmVzZXQmJlllLmpncmlkLmhpZGVNb2RhbCgiIyIrWWUuamdyaWQuanFJRChsLnRoZW1vZGFsKSx7Z2I6IiNnYm94XyIrWWUuamdyaWQuanFJRChvLnAuaWQpLGpxbTprLmpxTW9kYWwsb25DbG9zZTprLm9uQ2xvc2V9KSwhMX0pLFMoWWUoIiMiK2kpKSxZZSgiLmZtLWJ1dHRvbjpub3QoLiIrZC5kaXNhYmxlZCsiKSIsdSkuaG92ZXIoZnVuY3Rpb24oKXtZZSh0aGlzKS5hZGRDbGFzcyhkLmhvdmVyKX0sZnVuY3Rpb24oKXtZZSh0aGlzKS5yZW1vdmVDbGFzcyhkLmhvdmVyKX0pfX1mdW5jdGlvbiBTKGUpeyhhPShhPXZvaWQgMD09PShhPVllKG8pLnRyaWdnZXJIYW5kbGVyKCJqcUdyaWRGaWx0ZXJCZWZvcmVTaG93IixbZV0pKT8hMDphKSYmWWUuamdyaWQuaXNGdW5jdGlvbihrLmJlZm9yZVNob3dTZWFyY2gpP2suYmVmb3JlU2hvd1NlYXJjaC5jYWxsKG8sZSk6YSkmJihZZS5qZ3JpZC52aWV3TW9kYWwoIiMiK1llLmpncmlkLmpxSUQobC50aGVtb2RhbCkse2dib3g6IiNnYm94XyIrWWUuamdyaWQuanFJRChvLnAuaWQpLGpxbTprLmpxTW9kYWwsbW9kYWw6ay5tb2RhbCxvdmVybGF5Omsub3ZlcmxheSx0b1RvcDprLnRvVG9wfSksWWUobykudHJpZ2dlckhhbmRsZXIoImpxR3JpZEZpbHRlckFmdGVyU2hvdyIsW2VdKSxZZS5qZ3JpZC5pc0Z1bmN0aW9uKGsuYWZ0ZXJTaG93U2VhcmNoKSkmJmsuYWZ0ZXJTaG93U2VhcmNoLmNhbGwobyxlKX19KX0sZmlsdGVySW5wdXQ6ZnVuY3Rpb24obixsKXtyZXR1cm4gbD1ZZS5leHRlbmQoITAse2RlZmF1bHRTZWFyY2g6ImNuIixncm91cE9wOiJPUiIsc2VhcmNoQWxsOiExLGJlZm9yZVNlYXJjaDpudWxsLGFmdGVyU2VhcmNoOm51bGwsc2VsZWN0Rmlyc3RGb3VuZDohMSxmaXJzdEZvdW5kVGltZW91dDozMH0sbHx8e30pLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBlLHQscixpLG8sYT10aGlzO2EuZ3JpZCYmKHQ9J3siZ3JvdXBPcCI6IicrbC5ncm91cE9wKyciLCJydWxlcyI6Wycscj0wLG4rPSIiLFllLmVhY2goYS5wLmNvbE1vZGVsLGZ1bmN0aW9uKCl7ZT10aGlzLmluZGV4fHx0aGlzLm5hbWUsaT10aGlzLnNlYXJjaG9wdGlvbnN8fHt9LGk9bC5kZWZhdWx0U2VhcmNofHwoaS5zb3B0P2kuc29wdFswXTpsLmRlZmF1bHRTZWFyY2gpLCh2b2lkIDA9PT10aGlzLnNlYXJjaHx8dGhpcy5zZWFyY2h8fGwuc2VhcmNoQWxsKSYmIiIhPT1uJiYoMDxyJiYodCs9IiwiKSx0PSh0PXQrJ3siZmllbGQiOiInK2UrJyIsIm9wIjoiJytpKyciLCcpKyciZGF0YSI6Iicrbi5yZXBsYWNlKC9cXC9nLCJcXFxcIikucmVwbGFjZSgvXCIvZywnXFwiJykrJyJ9JyxyKyspfSksdCs9Il19IiwhMD09PWEucC5tZXJnZVNlYXJjaCYmYS5wLnNlYXJjaE1vZHVsZXMuaGFzT3duUHJvcGVydHkoImZpbHRlcklucHV0IikmJiExIT09YS5wLnNlYXJjaE1vZHVsZXMuZmlsdGVySW5wdXQ/KGEucC5zZWFyY2hNb2R1bGVzLmZpbHRlcklucHV0PTA8cj90Om51bGwsWWUuZXh0ZW5kKGEucC5wb3N0RGF0YSx7ZmlsdGVyczpZZS5qZ3JpZC5zcGxpdFNlYXJjaChhLnAuc2VhcmNoTW9kdWxlcyl9KSk6WWUuZXh0ZW5kKGEucC5wb3N0RGF0YSx7ZmlsdGVyczp0fSksWWUuZWFjaChbInNlYXJjaEZpZWxkIiwic2VhcmNoU3RyaW5nIiwic2VhcmNoT3BlciJdLGZ1bmN0aW9uKGUsdCl7YS5wLnBvc3REYXRhLmhhc093blByb3BlcnR5KHQpJiZkZWxldGUgYS5wLnBvc3REYXRhW3RdfSksKG89IShvPSJzdG9wIj09PVllKGEpLnRyaWdnZXJIYW5kbGVyKCJqcUdyaWRGaWx0ZXJJbnB1dEJlZm9yZVNlYXJjaCIpKSYmWWUuamdyaWQuaXNGdW5jdGlvbihsLmJlZm9yZVNlYXJjaCk/bC5iZWZvcmVTZWFyY2guY2FsbChhKTpvKXx8WWUoYSkuanFHcmlkKCJzZXRHcmlkUGFyYW0iLHtzZWFyY2g6ITB9KS50cmlnZ2VyKCJyZWxvYWRHcmlkIixbe3BhZ2U6MX1dKSxsLnNlbGVjdEZpcnN0Rm91bmQmJnNldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgZT1ZZShhKS5qcUdyaWQoImdldEdyaWRSb3dCeUluZGV4IiwxKTtZZShhKS5qcUdyaWQoInNldFNlbGVjdGlvbiIsZS5pZCwhMSl9LGwuZmlyc3RGb3VuZFRpbWVvdXQpLFllKGEpLnRyaWdnZXJIYW5kbGVyKCJqcUdyaWRGaWx0ZXJJbnB1dEFmdGVyU2VhcmNoIiksWWUuamdyaWQuaXNGdW5jdGlvbihsLmFmdGVyU2VhcmNoKSkmJmwuYWZ0ZXJTZWFyY2guY2FsbChhKX0pfSxhdXRvU2VsZWN0OmZ1bmN0aW9uKHMpe3JldHVybiBzPVllLmV4dGVuZCghMCx7ZmllbGQ6IiIsZGlyZWN0aW9uOiJhc2MiLHNyY19kYXRlOiJZLW0tZCIsYWxsVmFsdWVzOiJBbGwiLGNvdW50X2l0ZW06ITAsY3JlYXRlX3ZhbHVlOiEwfSxzfHx7fSksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGUsdD10aGlzLHI9IiI7aWYocy5maWVsZCYmdC5wLmRhdGEmJkFycmF5LmlzQXJyYXkodC5wLmRhdGEpKXt2YXIgaSxvLGEsbixsPVtdO3RyeXtuPShhPVllLmpncmlkLmZyb20uY2FsbCh0LHQucC5kYXRhKS5ncm91cEJ5KHMuZmllbGQscy5kaXJlY3Rpb24sInRleHQiLHMuc3JjX2RhdGUpKS5sZW5ndGh9Y2F0Y2goZSl7fWlmKGEmJmEubGVuZ3RoKXtmb3Iobz1ZZSgiI2dzaF8iK3QucC5pZCsiXyIrcy5maWVsZCkuZmluZCgidGQudWktc2VhcmNoLWlucHV0ID4gc2VsZWN0Iiksbj1hLmxlbmd0aCxzLmFsbFZhbHVlcyYmKHI9IjxvcHRpb24gdmFsdWU9Jyc+IitzLmFsbFZhbHVlcysiPC9vcHRpb24+IixsLnB1c2goIjoiK3MuYWxsVmFsdWVzKSk7bi0tOyllPWFbbl0saT1zLmNvdW50X2l0ZW0/IiAoIitlLml0ZW1zLmxlbmd0aCsiKSI6IiIscis9IjxvcHRpb24gdmFsdWU9JyIrZS51bmlxdWUrIic+IitlLnVuaXF1ZStpKyI8L29wdGlvbj4iLGwucHVzaChlLnVuaXF1ZSsiOiIrZS51bmlxdWUraSk7by5hcHBlbmQociksby5vbigiY2hhbmdlIixmdW5jdGlvbigpe3QudHJpZ2dlclRvb2xiYXIoKX0pLHMuY3JlYXRlX3ZhbHVlJiYobz1ZZS5qZ3JpZC5nZXRFbGVtQnlBdHRyVmFsKHQucC5jb2xNb2RlbCwibmFtZSIscy5maWVsZCwhMSksWWUuaXNFbXB0eU9iamVjdChvKXx8KG8uc2VhcmNob3B0aW9ucz9ZZS5leHRlbmQoby5zZWFyY2hvcHRpb25zLHt2YWx1ZTpsLmpvaW4oIjsiKX0pOihvLnNlYXJjaG9wdGlvbnM9e30sby5zZWFyY2hvcHRpb25zLnZhbHVlPWwuam9pbigiOyIpKSkpfX19KX19KTt2YXIgaSxKPXt9O1llLmpncmlkLmV4dGVuZCh7ZWRpdEdyaWRSb3c6ZnVuY3Rpb24oWCxLKXt2YXIgZT1ZZS5qZ3JpZC5nZXRSZWdpb25hbCh0aGlzWzBdLCJlZGl0IiksdD10aGlzWzBdLnAuc3R5bGVVSSwkPVllLmpncmlkLnN0eWxlVUlbdF0uZm9ybWVkaXQsWT1ZZS5qZ3JpZC5zdHlsZVVJW3RdLmNvbW1vbjtyZXR1cm4gSz1ZZS5leHRlbmQoITAse3RvcDowLGxlZnQ6MCx3aWR0aDoiNTAwIixkYXRhd2lkdGg6ImF1dG8iLGhlaWdodDoiYXV0byIsZGF0YWhlaWdodDoiYXV0byIsbW9kYWw6ITEsb3ZlcmxheTozMCxkcmFnOiEwLHJlc2l6ZTohMCx1cmw6bnVsbCxtdHlwZToiUE9TVCIsY2xlYXJBZnRlckFkZDohMCxjbG9zZUFmdGVyRWRpdDohMSxyZWxvYWRBZnRlclN1Ym1pdDohMCxvbkluaXRpYWxpemVGb3JtOm51bGwsYmVmb3JlSW5pdERhdGE6bnVsbCxiZWZvcmVTaG93Rm9ybTpudWxsLGFmdGVyU2hvd0Zvcm06bnVsbCxiZWZvcmVTdWJtaXQ6bnVsbCxhZnRlclN1Ym1pdDpudWxsLG9uY2xpY2tTdWJtaXQ6bnVsbCxhZnRlckNvbXBsZXRlOm51bGwsb25jbGlja1BnQnV0dG9uczpudWxsLGFmdGVyY2xpY2tQZ0J1dHRvbnM6bnVsbCxlZGl0RGF0YTp7fSxyZWNyZWF0ZUZvcm06ITEsanFNb2RhbDohMCxjbG9zZU9uRXNjYXBlOiExLGFkZGVkcm93OiJmaXJzdCIsdG9waW5mbzoiIixib3R0b21pbmZvOiIiLHNhdmVpY29uOltdLGNsb3NlaWNvbjpbXSxzYXZla2V5OlshMSwxM10sbmF2a2V5czpbITEsMzgsNDBdLGNoZWNrT25TdWJtaXQ6ITEsY2hlY2tPblVwZGF0ZTohMSxwcm9jZXNzaW5nOiExLG9uQ2xvc2U6bnVsbCxhamF4RWRpdE9wdGlvbnM6e30sc2VyaWFsaXplRWRpdERhdGE6bnVsbCx2aWV3UGFnZXJCdXR0b25zOiEwLG92ZXJsYXlDbGFzczpZLm92ZXJsYXkscmVtb3ZlbW9kYWw6ITAsZm9ybToiZWRpdCIsdGVtcGxhdGU6bnVsbCxmb2N1c0ZpZWxkOiEwLGVkaXRzZWxlY3RlZDohMSxodG1sNUNoZWNrOiExLGJ1dHRvbnM6W119LGUsS3x8e30pLEpbWWUodGhpcylbMF0ucC5pZF09Syx0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgdT10aGlzO2lmKHUuZ3JpZCYmWCl7dS5wLnNhdmVkRGF0YT17fTt2YXIgaCxnLHIsZSxmPXUucC5pZCxtPSJGcm1HcmlkXyIrZix0PSJUYmxHcmlkXyIrZix2PSIjIitZZS5qZ3JpZC5qcUlEKHQpLGo9e3RoZW1vZGFsOiJlZGl0bW9kIitmLG1vZGFsaGVhZDoiZWRpdGhkIitmLG1vZGFsY29udGVudDoiZWRpdGNudCIrZixzY3JvbGxlbG06bX0saT0hMCxvPTEsYT0wLG49InN0cmluZyI9PXR5cGVvZiBKW3UucC5pZF0udGVtcGxhdGUmJjA8Slt1LnAuaWRdLnRlbXBsYXRlLmxlbmd0aCxiPVllLmpncmlkLmdldFJlZ2lvbmFsKHRoaXMsImVycm9ycyIpLEE9KEpbdS5wLmlkXS5zdHlsZVVJPXUucC5zdHlsZVVJfHwialF1ZXJ5VUkiLFllLmpncmlkLmlzTW9iaWxlKCkmJihKW3UucC5pZF0ucmVzaXplPSExKSwibmV3Ij09PVg/KFg9Il9lbXB0eSIsZz0iYWRkIixLLmNhcHRpb249Slt1LnAuaWRdLmFkZENhcHRpb24pOihLLmNhcHRpb249Slt1LnAuaWRdLmVkaXRDYXB0aW9uLGc9ImVkaXQiKSxLLnJlY3JlYXRlRm9ybXx8WWUodSkuZGF0YSgiZm9ybVByb3AiKSYmWWUuZXh0ZW5kKEpbWWUodGhpcylbMF0ucC5pZF0sWWUodSkuZGF0YSgiZm9ybVByb3AiKSksITApLGw9KEsuY2hlY2tPblVwZGF0ZSYmSy5qcU1vZGFsJiYhSy5tb2RhbCYmKEE9ITEpLGlzTmFOKEpbWWUodGhpcylbMF0ucC5pZF0uZGF0YWhlaWdodCk/SltZZSh0aGlzKVswXS5wLmlkXS5kYXRhaGVpZ2h0OkpbWWUodGhpcylbMF0ucC5pZF0uZGF0YWhlaWdodCsicHgiKSxzPWlzTmFOKEpbWWUodGhpcylbMF0ucC5pZF0uZGF0YXdpZHRoKT9KW1llKHRoaXMpWzBdLnAuaWRdLmRhdGF3aWR0aDpKW1llKHRoaXMpWzBdLnAuaWRdLmRhdGF3aWR0aCsicHgiLHc9WWUoIjxmb3JtIG5hbWU9J0Zvcm1Qb3N0JyBpZD0nIittKyInIGNsYXNzPSdGb3JtR3JpZCcgb25TdWJtaXQ9J3JldHVybiBmYWxzZTsnIHN0eWxlPSd3aWR0aDoiK3MrIjtoZWlnaHQ6IitsKyI7Jz48L2Zvcm0+IikuZGF0YSgiZGlzYWJsZWQiLCExKSxkPW4/KHM9SltZZSh0aGlzKVswXS5wLmlkXS50ZW1wbGF0ZSxsPSIiLHI9bD0ic3RyaW5nIj09dHlwZW9mIHM/cy5yZXBsYWNlKC9ceyhbXHdcLV0rKSg/Olw6KFtcd1wuXSopKD86XCgoLio/KT9cKSk/KT9cfS9nLGZ1bmN0aW9uKGUsdCl7cmV0dXJuJzxzcGFuIGlkPSInK3QrJyIgPjwvc3Bhbj4nfSk6bCx2KToocj1ZZSgiPHRhYmxlIGlkPSciK3QrIicgY2xhc3M9J0VkaXRUYWJsZSB1aS1jb21tb24tdGFibGUnPjx0Ym9keT48L3Rib2R5PjwvdGFibGU+IiksdisiXzIiKSxtPSIjIitZZS5qZ3JpZC5qcUlEKG0pO2lmKFllKHcpLmFwcGVuZCgiPGRpdiBjbGFzcz0nRm9ybUVycm9yICIrWS5lcnJvcisiJyBzdHlsZT0nZGlzcGxheTpub25lOyc+PC9kaXY+IiksWWUodykuYXBwZW5kKCI8ZGl2IGNsYXNzPSd0aW5mbyB0b3BpbmZvJz4iK0pbdS5wLmlkXS50b3BpbmZvKyI8L2Rpdj4iKSxZZSh1LnAuY29sTW9kZWwpLmVhY2goZnVuY3Rpb24oKXt2YXIgZT10aGlzLmZvcm1vcHRpb25zO289TWF0aC5tYXgobyxlJiZlLmNvbHBvc3x8MCksYT1NYXRoLm1heChhLGUmJmUucm93cG9zfHwwKX0pLFllKHcpLmFwcGVuZChyKSwhMSE9PShpPShpPXZvaWQgMD09PShpPVllKHUpLnRyaWdnZXJIYW5kbGVyKCJqcUdyaWRBZGRFZGl0QmVmb3JlSW5pdERhdGEiLFt3LGddKSk/ITA6aSkmJlllLmpncmlkLmlzRnVuY3Rpb24oSlt1LnAuaWRdLmJlZm9yZUluaXREYXRhKT9KW3UucC5pZF0uYmVmb3JlSW5pdERhdGEuY2FsbCh1LHcsZyk6aSkpe2lmKCJfZW1wdHkiIT09WCYmdm9pZCAwIT09dS5wLnNhdmVkUm93JiYwPHUucC5zYXZlZFJvdy5sZW5ndGgmJlllLmpncmlkLmlzRnVuY3Rpb24oWWUuZm4uanFHcmlkLnJlc3RvcmVSb3cpKWZvcihlPTA7ZTx1LnAuc2F2ZWRSb3cubGVuZ3RoO2UrKylpZih1LnAuc2F2ZWRSb3dbZV0uaWQ9PT1YKXtZZSh1KS5qcUdyaWQoInJlc3RvcmVSb3ciLFgpO2JyZWFrfWZvcih2YXIgcCxjLHkseCxULF8sUCxxPVgsQz11LEk9cixEPW8sRz0wLEY9ITEsQj0iIixFPTE7RTw9RDtFKyspQis9Ijx0ZCBjbGFzcz0nQ2FwdGlvblREJz48L3RkPjx0ZCBjbGFzcz0nRGF0YVREJz48L3RkPiI7Il9lbXB0eSIhPT1xJiYoRj1ZZShDKS5qcUdyaWQoImdldEluZCIscSkpLFllKEMucC5jb2xNb2RlbCkuZWFjaChmdW5jdGlvbih0KXtpZihwPXRoaXMubmFtZSxjPSghdGhpcy5lZGl0cnVsZXN8fCEwIT09dGhpcy5lZGl0cnVsZXMuZWRpdGhpZGRlbikmJiEwPT09dGhpcy5oaWRkZW4sVD1jPyJzdHlsZT0nZGlzcGxheTpub25lJyI6IiIsImNiIiE9PXAmJiJzdWJncmlkIiE9PXAmJiEwPT09dGhpcy5lZGl0YWJsZSYmInJuIiE9PXAmJiJzYyIhPT1wKXtpZighMT09PUYpeD0iIjtlbHNlIGlmKHA9PT1DLnAuRXhwYW5kQ29sdW1uJiYhMD09PUMucC50cmVlR3JpZCl4PVllKCJ0ZFtyb2xlPSdncmlkY2VsbCddIixDLnJvd3NbRl0pLmVxKHQpLnRleHQoKTtlbHNle3RyeXt4PVllLnVuZm9ybWF0LmNhbGwoQyxZZSgidGRbcm9sZT0nZ3JpZGNlbGwnXSIsQy5yb3dzW0ZdKS5lcSh0KSx7cm93SWQ6cSxjb2xNb2RlbDp0aGlzfSx0KX1jYXRjaChlKXt4PXRoaXMuZWRpdHR5cGUmJiJ0ZXh0YXJlYSI9PT10aGlzLmVkaXR0eXBlP1llKCJ0ZFtyb2xlPSdncmlkY2VsbCddIixDLnJvd3NbRl0pLmVxKHQpLnRleHQoKTpZZSgidGRbcm9sZT0nZ3JpZGNlbGwnXSIsQy5yb3dzW0ZdKS5lcSh0KS5odG1sKCl9eCYmIiZuYnNwOyIhPT14JiYiJiMxNjA7IiE9PXgmJigxIT09eC5sZW5ndGh8fDE2MCE9PXguY2hhckNvZGVBdCgwKSl8fCh4PSIiKX12YXIgZSxyPVllLmV4dGVuZCh7fSx0aGlzLmVkaXRvcHRpb25zfHx7fSx7aWQ6cCxuYW1lOnAscm93SWQ6cSxvcGVyOmcsbW9kdWxlOiJmb3JtIixjaGVja1VwZGF0ZTpKW3UucC5pZF0uY2hlY2tPblN1Ym1pdHx8Slt1LnAuaWRdLmNoZWNrT25VcGRhdGV9KSxpPVllLmV4dGVuZCh7fSx7ZWxtcHJlZml4OiIiLGVsbXN1ZmZpeDoiIixyb3dhYm92ZTohMSxyb3djb250ZW50OiIifSx0aGlzLmZvcm1vcHRpb25zfHx7fSksbz1wYXJzZUludChpLnJvd3BvcywxMCl8fEcrMSxhPXBhcnNlSW50KDIqKHBhcnNlSW50KGkuY29scG9zLDEwKXx8MSksMTApOyJfZW1wdHkiPT09cSYmci5kZWZhdWx0VmFsdWUmJih4PVllLmpncmlkLmlzRnVuY3Rpb24oci5kZWZhdWx0VmFsdWUpP3IuZGVmYXVsdFZhbHVlLmNhbGwodSk6ci5kZWZhdWx0VmFsdWUpLHRoaXMuZWRpdHR5cGV8fCh0aGlzLmVkaXR0eXBlPSJ0ZXh0IiksdS5wLmF1dG9lbmNvZGUmJih4PVllLmpncmlkLmh0bWxEZWNvZGUoeCkpLF89WWUuamdyaWQuY3JlYXRlRWwuY2FsbCh1LHRoaXMuZWRpdHR5cGUscix4LCExLFllLmV4dGVuZCh7fSxZZS5qZ3JpZC5hamF4T3B0aW9ucyxDLnAuYWpheFNlbGVjdE9wdGlvbnN8fHt9KSksInNlbGVjdCI9PT10aGlzLmVkaXR0eXBlJiYoeD1ZZShfKS52YWwoKSwic2VsZWN0LW11bHRpcGxlIj09PVllKF8pLmdldCgwKS50eXBlKSYmKHg9eCYmeC5qb2luKCIsIikpLCJjaGVja2JveCI9PT10aGlzLmVkaXR0eXBlJiYoeD1ZZShfKS5pcygiOmNoZWNrZWQiKT9ZZShfKS52YWwoKTpZZShfKS5hdHRyKCJvZmZ2YWwiKSksWWUoXykuYWRkQ2xhc3MoIkZvcm1FbGVtZW50IiksInNlbGVjdCI9PT10aGlzLmVkaXR0eXBlP1llKF8pLmFkZENsYXNzKCQuc2VsZWN0Q2xhc3MpOi0xPFllLmluQXJyYXkodGhpcy5lZGl0dHlwZSxbInRleHQiLCJ0ZXh0YXJlYSIsInBhc3N3b3JkIiwiY29sb3IiLCJkYXRlIiwiZGF0ZXRpbWUiLCJkYXRldGltZS1sb2NhbCIsImVtYWlsIiwibW9udGgiLCJudW1iZXIiLCJyYW5nZSIsInNlYXJjaCIsInRlbCIsInRpbWUiLCJ1cmwiLCJ3ZWVrIl0pJiZZZShfKS5hZGRDbGFzcygkLmlucHV0Q2xhc3MpLFA9ITAsbj8oZT1ZZSh3KS5maW5kKCIjIitwKSkubGVuZ3RoP2UucmVwbGFjZVdpdGgoXyk6UD0hMTooeT1ZZShJKS5maW5kKCJ0cltyb3dwb3M9IitvKyJdIiksaS5yb3dhYm92ZSYmKGU9WWUoIjx0cj48dGQgY2xhc3M9J2NvbnRlbnRpbmZvJyBjb2xzcGFuPSciKzIqRCsiJz4iK2kucm93Y29udGVudCsiPC90ZD48L3RyPiIpLFllKEkpLmFwcGVuZChlKSxlWzBdLnJwPW8pLDA9PT15Lmxlbmd0aCYmKHk9WWUoMTxEPyI8dHIgcm93cG9zPSciK28rIic+PC90cj4iOiI8dHIgIitUKyIgcm93cG9zPSciK28rIic+PC90cj4iKS5hZGRDbGFzcygiRm9ybURhdGEiKS5hdHRyKCJpZCIsInRyXyIrcCksWWUoeSkuYXBwZW5kKEIpLFllKEkpLmFwcGVuZCh5KSx5WzBdLnJwPW8pLFllKCJ0ZCIseVswXSkuZXEoYS0yKS5odG1sKCI8bGFiZWwgZm9yPSciK3ArIic+Iisodm9pZCAwPT09aS5sYWJlbD9DLnAuY29sTmFtZXNbdF06aS5sYWJlbCkrIjwvbGFiZWw+IiksWWUoInRkIix5WzBdKS5lcShhLTEpLmFwcGVuZChpLmVsbXByZWZpeCkuYXBwZW5kKF8pLmFwcGVuZChpLmVsbXN1ZmZpeCksMTxEJiZjJiYoWWUoInRkIix5WzBdKS5lcShhLTIpLmhpZGUoKSxZZSgidGQiLHlbMF0pLmVxKGEtMSkuaGlkZSgpKSksKEpbdS5wLmlkXS5jaGVja09uU3VibWl0fHxKW3UucC5pZF0uY2hlY2tPblVwZGF0ZSkmJlAmJih1LnAuc2F2ZWREYXRhW3BdPXgpLCJjdXN0b20iPT09dGhpcy5lZGl0dHlwZSYmWWUuamdyaWQuaXNGdW5jdGlvbihyLmN1c3RvbV92YWx1ZSkmJnIuY3VzdG9tX3ZhbHVlLmNhbGwodSxZZSgiIyIrcCxfKSwic2V0Iix4KSxZZS5qZ3JpZC5iaW5kRXYuY2FsbCh1LF8sciksRyxHKyt9fSksMDxHJiYoKG4/KGs9IjxkaXYgY2xhc3M9J0Zvcm1EYXRhJyBzdHlsZT0nZGlzcGxheTpub25lJz48aW5wdXQgY2xhc3M9J0Zvcm1FbGVtZW50JyBpZD0naWRfZycgdHlwZT0ndGV4dCcgbmFtZT0nIitDLnAuaWQrIl9pZCcgdmFsdWU9JyIrcSsiJy8+IixZZSh3KSk6KChrPVllKCI8dHIgY2xhc3M9J0Zvcm1EYXRhJyBzdHlsZT0nZGlzcGxheTpub25lJz48dGQgY2xhc3M9J0NhcHRpb25URCc+PC90ZD48dGQgY29sc3Bhbj0nIisoMipELTEpKyInIGNsYXNzPSdEYXRhVEQnPjxpbnB1dCBjbGFzcz0nRm9ybUVsZW1lbnQnIGlkPSdpZF9nJyB0eXBlPSd0ZXh0JyBuYW1lPSciK0MucC5pZCsiX2lkJyB2YWx1ZT0nIitxKyInLz48L3RkPjwvdHI+IikpWzBdLnJwPUcrOTk5LFllKEkpKSkuYXBwZW5kKGspLEpbdS5wLmlkXS5jaGVja09uU3VibWl0fHxKW3UucC5pZF0uY2hlY2tPblVwZGF0ZSkmJih1LnAuc2F2ZWREYXRhW0MucC5pZCsiX2lkIl09cSk7dmFyIFMscz0icnRsIj09PXUucC5kaXJlY3Rpb24sbD0iPGEgaWQ9JyIrKHM/Im5EYXRhIjoicERhdGEiKSsiJyBjbGFzcz0nZm0tYnV0dG9uICIrWS5idXR0b24rIic+PHNwYW4gY2xhc3M9JyIrWS5pY29uX2Jhc2UrIiAiKyQuaWNvbl9wcmV2KyInPjwvc3Bhbj48L2E+IixpPSI8YSBpZD0nIisocz8icERhdGEiOiJuRGF0YSIpKyInIGNsYXNzPSdmbS1idXR0b24gIitZLmJ1dHRvbisiJz48c3BhbiBjbGFzcz0nIitZLmljb25fYmFzZSsiICIrJC5pY29uX25leHQrIic+PC9zcGFuPjwvYT4iLGs9IjxhIGlkPSdzRGF0YScgY2xhc3M9J2ZtLWJ1dHRvbiAiK1kuYnV0dG9uKyInPiIrSy5iU3VibWl0KyI8L2E+IixSPSI8YSBpZD0nY0RhdGEnIGNsYXNzPSdmbS1idXR0b24gIitZLmJ1dHRvbisiJz4iK0suYkNhbmNlbCsiPC9hPiIsTj1BcnJheS5pc0FycmF5KEpbdS5wLmlkXS5idXR0b25zKT9ZZS5qZ3JpZC5idWlsZEJ1dHRvbnMoSlt1LnAuaWRdLmJ1dHRvbnMsaytSLFkpOmsrUixOPSI8dGFibGUgc3R5bGU9J2hlaWdodDphdXRvJyBjbGFzcz0nRWRpdFRhYmxlIHVpLWNvbW1vbi10YWJsZScgaWQ9JyIrdCsiXzInPjx0Ym9keT48dHI+PHRkIGNvbHNwYW49JzInPjxociBjbGFzcz0nIitZLmNvbnRlbnQrIicgc3R5bGU9J21hcmdpbjoxcHgnLz48L3RkPjwvdHI+PHRyIGlkPSdBY3RfQnV0dG9ucyc+PHRkIGNsYXNzPSduYXZCdXR0b24nPiIrKHM/aStsOmwraSkrIjwvdGQ+PHRkIGNsYXNzPSdFZGl0QnV0dG9uJz4iK04rIjwvdGQ+PC90cj4iLHo9KE4rPSI8L3Rib2R5PjwvdGFibGU+IiwwPGEmJihTPVtdLFllLmVhY2goWWUocilbMF0ucm93cyxmdW5jdGlvbihlLHQpe1NbZV09dH0pLFMuc29ydChmdW5jdGlvbihlLHQpe3JldHVybiBlLnJwPnQucnA/MTplLnJwPHQucnA/LTE6MH0pLFllLmVhY2goUyxmdW5jdGlvbihlLHQpe1llKCJ0Ym9keSIscikuYXBwZW5kKHQpfSkpLEsuZ2JveD0iI2dib3hfIitZZS5qZ3JpZC5qcUlEKGYpLCExKSx0PSghMD09PUsuY2xvc2VPbkVzY2FwZSYmKEsuY2xvc2VPbkVzY2FwZT0hMSx6PSEwKSxsPW4/KFllKHcpLmZpbmQoIiNwRGF0YSIpLnJlcGxhY2VXaXRoKGwpLFllKHcpLmZpbmQoIiNuRGF0YSIpLnJlcGxhY2VXaXRoKGkpLFllKHcpLmZpbmQoIiNzRGF0YSIpLnJlcGxhY2VXaXRoKGspLFllKHcpLmZpbmQoIiNjRGF0YSIpLnJlcGxhY2VXaXRoKFIpLFllKCI8ZGl2IGlkPSIrdCsiPjwvZGl2PiIpLmFwcGVuZCh3KSk6WWUoIjxkaXY+PC9kaXY+IikuYXBwZW5kKHcpLmFwcGVuZChOKSxZZSh3KS5hcHBlbmQoIjxkaXYgY2xhc3M9J2JpbmZvIHRvcGluZm8gYm90dG9taW5mbyc+IitKW3UucC5pZF0uYm90dG9taW5mbysiPC9kaXY+IiksWWUoIi51aS1qcWdyaWQiKS5jc3MoImZvbnQtc2l6ZSIpfHwiMTFweCIpLHQ9KFllLmpncmlkLmNyZWF0ZU1vZGFsKGosbCxKW1llKHRoaXMpWzBdLnAuaWRdLCIjZ3ZpZXdfIitZZS5qZ3JpZC5qcUlEKHUucC5pZCksWWUoIiNnYm94XyIrWWUuamdyaWQuanFJRCh1LnAuaWQpKVswXSxudWxsLHsiZm9udC1zaXplIjp0fSkscyYmKFllKCIjcERhdGEsICNuRGF0YSIsdisiXzIiKS5jc3MoImZsb2F0IiwicmlnaHQiKSxZZSgiLkVkaXRCdXR0b24iLHYrIl8yIikuY3NzKCJ0ZXh0LWFsaWduIiwibGVmdCIpKSxKW3UucC5pZF0udG9waW5mbyYmWWUoIi50aW5mbyIsbSkuc2hvdygpLEpbdS5wLmlkXS5ib3R0b21pbmZvJiZZZSgiLmJpbmZvIixtKS5zaG93KCksbD1udWxsLFllKCIjIitZZS5qZ3JpZC5qcUlEKGoudGhlbW9kYWwpKS5rZXlkb3duKGZ1bmN0aW9uKGUpe3ZhciB0PWUudGFyZ2V0O3JldHVybiEwIT09WWUobSkuZGF0YSgiZGlzYWJsZWQiKSYmKCEwPT09Slt1LnAuaWRdLnNhdmVrZXlbMF0mJmUud2hpY2g9PT1KW3UucC5pZF0uc2F2ZWtleVsxXSYmIlRFWFRBUkVBIiE9PXQudGFnTmFtZT8oWWUoIiNzRGF0YSIsdisiXzIiKS50cmlnZ2VyKCJjbGljayIpLCExKToyNz09PWUud2hpY2g/KE8oKSYmeiYmWWUuamdyaWQuaGlkZU1vZGFsKCIjIitZZS5qZ3JpZC5qcUlEKGoudGhlbW9kYWwpLHtnYjpLLmdib3gsanFtOksuanFNb2RhbCxvbkNsb3NlOkpbdS5wLmlkXS5vbkNsb3NlLHJlbW92ZW1vZGFsOkpbdS5wLmlkXS5yZW1vdmVtb2RhbCxmb3JtcHJvcDohSlt1LnAuaWRdLnJlY3JlYXRlRm9ybSxmb3JtOkpbdS5wLmlkXS5mb3JtfSksITEpOiEwPT09Slt1LnAuaWRdLm5hdmtleXNbMF0/Il9lbXB0eSI9PT1ZZSgiI2lkX2ciLHYpLnZhbCgpfHwoZS53aGljaD09PUpbdS5wLmlkXS5uYXZrZXlzWzFdPyhZZSgiI3BEYXRhIixkKS50cmlnZ2VyKCJjbGljayIpLCExKTplLndoaWNoPT09Slt1LnAuaWRdLm5hdmtleXNbMl0/KFllKCIjbkRhdGEiLGQpLnRyaWdnZXIoImNsaWNrIiksITEpOnZvaWQgMCk6dm9pZCAwKX0pLEsuY2hlY2tPblVwZGF0ZSYmKFllKCJhLnVpLWpxZGlhbG9nLXRpdGxlYmFyLWNsb3NlIHNwYW4iLCIjIitZZS5qZ3JpZC5qcUlEKGoudGhlbW9kYWwpKS5yZW1vdmVDbGFzcygianFtQ2xvc2UiKSxZZSgiYS51aS1qcWRpYWxvZy10aXRsZWJhci1jbG9zZSIsIiMiK1llLmpncmlkLmpxSUQoai50aGVtb2RhbCkpLm9mZigiY2xpY2siKS5jbGljayhmdW5jdGlvbigpe3JldHVybiBPKCkmJlllLmpncmlkLmhpZGVNb2RhbCgiIyIrWWUuamdyaWQuanFJRChqLnRoZW1vZGFsKSx7Z2I6IiNnYm94XyIrWWUuamdyaWQuanFJRChmKSxqcW06Sy5qcU1vZGFsLG9uQ2xvc2U6Slt1LnAuaWRdLm9uQ2xvc2UscmVtb3ZlbW9kYWw6Slt1LnAuaWRdLnJlbW92ZW1vZGFsLGZvcm1wcm9wOiFKW3UucC5pZF0ucmVjcmVhdGVGb3JtLGZvcm06Slt1LnAuaWRdLmZvcm19KSwhMX0pKSxLLnNhdmVpY29uPVllLmV4dGVuZChbITAsImxlZnQiLCQuaWNvbl9zYXZlXSxLLnNhdmVpY29uKSxLLmNsb3NlaWNvbj1ZZS5leHRlbmQoWyEwLCJsZWZ0IiwkLmljb25fY2xvc2VdLEsuY2xvc2VpY29uKSwhMD09PUsuc2F2ZWljb25bMF0mJlllKCIjc0RhdGEiLGQpLmFkZENsYXNzKCJyaWdodCI9PT1LLnNhdmVpY29uWzFdPyJmbS1idXR0b24taWNvbi1yaWdodCI6ImZtLWJ1dHRvbi1pY29uLWxlZnQiKS5hcHBlbmQoIjxzcGFuIGNsYXNzPSciK1kuaWNvbl9iYXNlKyIgIitLLnNhdmVpY29uWzJdKyInPjwvc3Bhbj4iKSwhMD09PUsuY2xvc2VpY29uWzBdJiZZZSgiI2NEYXRhIixkKS5hZGRDbGFzcygicmlnaHQiPT09Sy5jbG9zZWljb25bMV0/ImZtLWJ1dHRvbi1pY29uLXJpZ2h0IjoiZm0tYnV0dG9uLWljb24tbGVmdCIpLmFwcGVuZCgiPHNwYW4gY2xhc3M9JyIrWS5pY29uX2Jhc2UrIiAiK0suY2xvc2VpY29uWzJdKyInPjwvc3Bhbj4iKSwoSlt1LnAuaWRdLmNoZWNrT25TdWJtaXR8fEpbdS5wLmlkXS5jaGVja09uVXBkYXRlKSYmKGs9IjxhIGlkPSdzTmV3JyBjbGFzcz0nZm0tYnV0dG9uICIrWS5idXR0b24rIicgc3R5bGU9J3otaW5kZXg6MTAwMic+IitLLmJZZXMrIjwvYT4iLGk9IjxhIGlkPSduTmV3JyBjbGFzcz0nZm0tYnV0dG9uICIrWS5idXR0b24rIicgc3R5bGU9J3otaW5kZXg6MTAwMjttYXJnaW4tbGVmdDo1cHgnPiIrSy5iTm8rIjwvYT4iLFI9IjxhIGlkPSdjTmV3JyBjbGFzcz0nZm0tYnV0dG9uICIrWS5idXR0b24rIicgc3R5bGU9J3otaW5kZXg6MTAwMjttYXJnaW4tbGVmdDo1cHg7Jz4iK0suYkV4aXQrIjwvYT4iLE49Sy56SW5kZXh8fDk5OSxOKyssWWUoIiMiK2oudGhlbW9kYWwpLmFwcGVuZCgiPGRpdiBjbGFzcz0nIitLLm92ZXJsYXlDbGFzcysiIGpxZ3JpZC1vdmVybGF5IGNvbmZpcm0nIHN0eWxlPSd6LWluZGV4OiIrTisiO2Rpc3BsYXk6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTsnPiYjMTYwOzwvZGl2PjxkaXYgY2xhc3M9J2NvbmZpcm0gdWktanFjb25maXJtICIrWS5jb250ZW50KyInIHN0eWxlPSd6LWluZGV4OiIrKDErTikrIic+IitLLnNhdmVEYXRhKyI8YnIvPjxici8+IitrK2krUisiPC9kaXY+IiksWWUoIiNzTmV3IiwiIyIrWWUuamdyaWQuanFJRChqLnRoZW1vZGFsKSkuY2xpY2soZnVuY3Rpb24oKXtyZXR1cm4gVSgpLFllKG0pLmRhdGEoImRpc2FibGVkIiwhMSksWWUoIi5jb25maXJtIiwiIyIrWWUuamdyaWQuanFJRChqLnRoZW1vZGFsKSkuaGlkZSgpLCExfSksWWUoIiNuTmV3IiwiIyIrWWUuamdyaWQuanFJRChqLnRoZW1vZGFsKSkuY2xpY2soZnVuY3Rpb24oKXtyZXR1cm4gWWUoIi5jb25maXJtIiwiIyIrWWUuamdyaWQuanFJRChqLnRoZW1vZGFsKSkuaGlkZSgpLFllKG0pLmRhdGEoImRpc2FibGVkIiwhMSksc2V0VGltZW91dChmdW5jdGlvbigpe1llKCI6aW5wdXQ6dmlzaWJsZSIsbSlbMF0uZm9jdXMoKX0sMCksITF9KSxZZSgiI2NOZXciLCIjIitZZS5qZ3JpZC5qcUlEKGoudGhlbW9kYWwpKS5jbGljayhmdW5jdGlvbigpe3JldHVybiBZZSgiLmNvbmZpcm0iLCIjIitZZS5qZ3JpZC5qcUlEKGoudGhlbW9kYWwpKS5oaWRlKCksWWUobSkuZGF0YSgiZGlzYWJsZWQiLCExKSxZZS5qZ3JpZC5oaWRlTW9kYWwoIiMiK1llLmpncmlkLmpxSUQoai50aGVtb2RhbCkse2diOiIjZ2JveF8iK1llLmpncmlkLmpxSUQoZiksanFtOksuanFNb2RhbCxvbkNsb3NlOkpbdS5wLmlkXS5vbkNsb3NlLHJlbW92ZW1vZGFsOkpbdS5wLmlkXS5yZW1vdmVtb2RhbCxmb3JtcHJvcDohSlt1LnAuaWRdLnJlY3JlYXRlRm9ybSxmb3JtOkpbdS5wLmlkXS5mb3JtfSksITF9KSksWWUodSkudHJpZ2dlckhhbmRsZXIoImpxR3JpZEFkZEVkaXRJbml0aWFsaXplRm9ybSIsW1llKG0pLGddKSxZZS5qZ3JpZC5pc0Z1bmN0aW9uKEpbdS5wLmlkXS5vbkluaXRpYWxpemVGb3JtKSYmSlt1LnAuaWRdLm9uSW5pdGlhbGl6ZUZvcm0uY2FsbCh1LFllKG0pLGcpLCJfZW1wdHkiIT09WCYmSlt1LnAuaWRdLnZpZXdQYWdlckJ1dHRvbnM/WWUoIiNwRGF0YSwjbkRhdGEiLGQpLnNob3coKTpZZSgiI3BEYXRhLCNuRGF0YSIsZCkuaGlkZSgpLFllKHUpLnRyaWdnZXJIYW5kbGVyKCJqcUdyaWRBZGRFZGl0QmVmb3JlU2hvd0Zvcm0iLFtZZShtKSxnXSksWWUuamdyaWQuaXNGdW5jdGlvbihKW3UucC5pZF0uYmVmb3JlU2hvd0Zvcm0pJiZKW3UucC5pZF0uYmVmb3JlU2hvd0Zvcm0uY2FsbCh1LFllKG0pLGcpLFEoKSxZZSgiIyIrWWUuamdyaWQuanFJRChqLnRoZW1vZGFsKSkuZGF0YSgib25DbG9zZSIsSlt1LnAuaWRdLm9uQ2xvc2UpLFllLmpncmlkLnZpZXdNb2RhbCgiIyIrWWUuamdyaWQuanFJRChqLnRoZW1vZGFsKSx7Z2JveDoiI2dib3hfIitZZS5qZ3JpZC5qcUlEKGYpLGpxbTpLLmpxTW9kYWwsb3ZlcmxheTpLLm92ZXJsYXksbW9kYWw6Sy5tb2RhbCxvdmVybGF5Q2xhc3M6Sy5vdmVybGF5Q2xhc3MsZm9jdXNGaWVsZDpLLmZvY3VzRmllbGQsb25IaWRlOmZ1bmN0aW9uKGUpe3ZhciB0PVllKCIjZWRpdG1vZCIrZilbMF0uc3R5bGUud2lkdGgscj1ZZSgiI2VkaXRtb2QiK2YpWzBdLnN0eWxlLmhlaWdodCxyPVsiMTAwJSIsImF1dG8iXS5pbmNsdWRlcyhyKT9yOlllLmpncmlkLmZsb2F0TnVtKHIsMjAwKSx0PVsiMTAwJSIsImF1dG8iXS5pbmNsdWRlcyh0KT90OlllLmpncmlkLmZsb2F0TnVtKHQsMzAwKTtZZSh1KS5kYXRhKCJmb3JtUHJvcCIse3RvcDpZZS5qZ3JpZC5mbG9hdE51bShZZShlLncpLmNzcygidG9wIikpLGxlZnQ6cGFyc2VGbG9hdChZZShlLncpLmNzcygibGVmdCIpKSx3aWR0aDp0LGhlaWdodDpyLGRhdGFoZWlnaHQ6WWUobSkuaGVpZ2h0KCksZGF0YXdpZHRoOlllKG0pLndpZHRoKCl9KSxlLncucmVtb3ZlKCksZS5vJiZlLm8ucmVtb3ZlKCl9fSksQXx8WWUoIi4iK1llLmpncmlkLmpxSUQoSy5vdmVybGF5Q2xhc3MpKS5jbGljayhmdW5jdGlvbigpe3JldHVybiBPKCkmJlllLmpncmlkLmhpZGVNb2RhbCgiIyIrWWUuamdyaWQuanFJRChqLnRoZW1vZGFsKSx7Z2I6IiNnYm94XyIrWWUuamdyaWQuanFJRChmKSxqcW06Sy5qcU1vZGFsLG9uQ2xvc2U6Slt1LnAuaWRdLm9uQ2xvc2UscmVtb3ZlbW9kYWw6Slt1LnAuaWRdLnJlbW92ZW1vZGFsLGZvcm1wcm9wOiFKW3UucC5pZF0ucmVjcmVhdGVGb3JtLGZvcm06Slt1LnAuaWRdLmZvcm19KSwhMX0pLFllKCIuZm0tYnV0dG9uIiwiIyIrWWUuamdyaWQuanFJRChqLnRoZW1vZGFsKSkuaG92ZXIoZnVuY3Rpb24oKXtZZSh0aGlzKS5hZGRDbGFzcyhZLmhvdmVyKX0sZnVuY3Rpb24oKXtZZSh0aGlzKS5yZW1vdmVDbGFzcyhZLmhvdmVyKX0pLFllKCIjc0RhdGEiLGQpLmNsaWNrKGZ1bmN0aW9uKCl7cmV0dXJuIGg9e30sWWUoIi5Gb3JtRXJyb3IiLG0pLmhpZGUoKSxIKCksIl9lbXB0eSIhPT1oW3UucC5pZCsiX2lkIl0mJiEwPT09Sy5jaGVja09uU3VibWl0JiZMKGgsdS5wLnNhdmVkRGF0YSk/KFllKG0pLmRhdGEoImRpc2FibGVkIiwhMCksWWUoIi5jb25maXJtIiwiIyIrWWUuamdyaWQuanFJRChqLnRoZW1vZGFsKSkuc2hvdygpKTpVKCksITF9KSxZZSgiI2NEYXRhIixkKS5jbGljayhmdW5jdGlvbigpe3JldHVybiBPKCkmJlllLmpncmlkLmhpZGVNb2RhbCgiIyIrWWUuamdyaWQuanFJRChqLnRoZW1vZGFsKSx7Z2I6IiNnYm94XyIrWWUuamdyaWQuanFJRChmKSxqcW06Sy5qcU1vZGFsLG9uQ2xvc2U6Slt1LnAuaWRdLm9uQ2xvc2UscmVtb3ZlbW9kYWw6Slt1LnAuaWRdLnJlbW92ZW1vZGFsLGZvcm1wcm9wOiFKW3UucC5pZF0ucmVjcmVhdGVGb3JtLGZvcm06Slt1LnAuaWRdLmZvcm19KSwhMX0pLFllKGQpLmZpbmQoIltkYXRhLWluZGV4XSIpLmVhY2goZnVuY3Rpb24oKXt2YXIgdD1wYXJzZUludChZZSh0aGlzKS5hdHRyKCJkYXRhLWluZGV4IiksMTApOzA8PXQmJksuYnV0dG9uc1t0XS5oYXNPd25Qcm9wZXJ0eSgiY2xpY2siKSYmWWUodGhpcykub24oImNsaWNrIixmdW5jdGlvbihlKXtLLmJ1dHRvbnNbdF0uY2xpY2suY2FsbCh1LFllKG0pWzBdLEpbdS5wLmlkXSxlKX0pfSksWWUoIiNuRGF0YSIsZCkuY2xpY2soZnVuY3Rpb24oKXtpZihPKCkpe1llKCIuRm9ybUVycm9yIixtKS5oaWRlKCk7dmFyIGUsdD1XKCk7aWYodFswXT1wYXJzZUludCh0WzBdLDEwKSwtMSE9PXRbMF0mJnRbMV1bdFswXSsxXSl7aWYoWWUodSkudHJpZ2dlckhhbmRsZXIoImpxR3JpZEFkZEVkaXRDbGlja1BnQnV0dG9ucyIsWyJuZXh0IixZZShtKSx0WzFdW3RbMF1dXSksWWUuamdyaWQuaXNGdW5jdGlvbihLLm9uY2xpY2tQZ0J1dHRvbnMpJiZ2b2lkIDAhPT0oZT1LLm9uY2xpY2tQZ0J1dHRvbnMuY2FsbCh1LCJuZXh0IixZZShtKSx0WzFdW3RbMF1dKSkmJiExPT09ZSlyZXR1cm4hMTtpZihZZSgiIyIrWWUuamdyaWQuanFJRCh0WzFdW3RbMF0rMV0pKS5oYXNDbGFzcyhZLmRpc2FibGVkKSlyZXR1cm4hMTtNKHRbMV1bdFswXSsxXSx1LG0pLHUucC5tdWx0aXNlbGVjdCYmSlt1LnAuaWRdLmVkaXRzZWxlY3RlZHx8WWUodSkuanFHcmlkKCJzZXRTZWxlY3Rpb24iLHRbMV1bdFswXSsxXSksWWUodSkudHJpZ2dlckhhbmRsZXIoImpxR3JpZEFkZEVkaXRBZnRlckNsaWNrUGdCdXR0b25zIixbIm5leHQiLFllKG0pLHRbMV1bdFswXV1dKSxZZS5qZ3JpZC5pc0Z1bmN0aW9uKEsuYWZ0ZXJjbGlja1BnQnV0dG9ucykmJksuYWZ0ZXJjbGlja1BnQnV0dG9ucy5jYWxsKHUsIm5leHQiLFllKG0pLHRbMV1bdFswXSsxXSksUSgpLFYodFswXSsxLHQpfX1yZXR1cm4hMX0pLFllKCIjcERhdGEiLGQpLmNsaWNrKGZ1bmN0aW9uKCl7aWYoTygpKXtZZSgiLkZvcm1FcnJvciIsbSkuaGlkZSgpO3ZhciBlLHQ9VygpO2lmKC0xIT09dFswXSYmdFsxXVt0WzBdLTFdKXtpZihZZSh1KS50cmlnZ2VySGFuZGxlcigianFHcmlkQWRkRWRpdENsaWNrUGdCdXR0b25zIixbInByZXYiLFllKG0pLHRbMV1bdFswXV1dKSxZZS5qZ3JpZC5pc0Z1bmN0aW9uKEsub25jbGlja1BnQnV0dG9ucykmJnZvaWQgMCE9PShlPUsub25jbGlja1BnQnV0dG9ucy5jYWxsKHUsInByZXYiLFllKG0pLHRbMV1bdFswXV0pKSYmITE9PT1lKXJldHVybiExO2lmKFllKCIjIitZZS5qZ3JpZC5qcUlEKHRbMV1bdFswXS0xXSkpLmhhc0NsYXNzKFkuZGlzYWJsZWQpKXJldHVybiExO00odFsxXVt0WzBdLTFdLHUsbSksdS5wLm11bHRpc2VsZWN0JiZKW3UucC5pZF0uZWRpdHNlbGVjdGVkfHxZZSh1KS5qcUdyaWQoInNldFNlbGVjdGlvbiIsdFsxXVt0WzBdLTFdKSxZZSh1KS50cmlnZ2VySGFuZGxlcigianFHcmlkQWRkRWRpdEFmdGVyQ2xpY2tQZ0J1dHRvbnMiLFsicHJldiIsWWUobSksdFsxXVt0WzBdXV0pLFllLmpncmlkLmlzRnVuY3Rpb24oSy5hZnRlcmNsaWNrUGdCdXR0b25zKSYmSy5hZnRlcmNsaWNrUGdCdXR0b25zLmNhbGwodSwicHJldiIsWWUobSksdFsxXVt0WzBdLTFdKSxRKCksVih0WzBdLTEsdCl9fXJldHVybiExfSksWWUodSkudHJpZ2dlckhhbmRsZXIoImpxR3JpZEFkZEVkaXRBZnRlclNob3dGb3JtIixbWWUobSksZ10pLFllLmpncmlkLmlzRnVuY3Rpb24oSlt1LnAuaWRdLmFmdGVyU2hvd0Zvcm0pJiZKW3UucC5pZF0uYWZ0ZXJTaG93Rm9ybS5jYWxsKHUsWWUobSksZyksVygpKTtWKHRbMF0sdCksdGhpcy5yZWZyZXNoRWRpdEZvcm09ZnVuY3Rpb24oZSx0KXshKHQ9dm9pZCAwPT09dD8hMTp0KSYmWCE9PWV8fE0oZSx0aGlzLG0pLHQmJihYPWUpfX19ZnVuY3Rpb24gSCgpe3ZhciBlLHQsaT17fTtmb3IoZSBpbiBZZSh2KS5maW5kKCIuRm9ybUVsZW1lbnQiKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGUsdD1ZZSgiLmN1c3RvbWVsZW1lbnQiLHRoaXMpO2lmKHQubGVuZ3RoKXt2YXIgdD10WzBdLHI9WWUodCkuYXR0cigibmFtZSIpO1llLmVhY2godS5wLmNvbE1vZGVsLGZ1bmN0aW9uKCl7aWYodGhpcy5uYW1lPT09ciYmdGhpcy5lZGl0b3B0aW9ucyYmWWUuamdyaWQuaXNGdW5jdGlvbih0aGlzLmVkaXRvcHRpb25zLmN1c3RvbV92YWx1ZSkpe3RyeXtpZihoW3JdPXRoaXMuZWRpdG9wdGlvbnMuY3VzdG9tX3ZhbHVlLmNhbGwodSxZZSgiIyIrWWUuamdyaWQuanFJRChyKSx2KSwiZ2V0Iiksdm9pZCAwPT09aFtyXSl0aHJvdyJlMSJ9Y2F0Y2goZSl7ImUxIj09PWU/WWUuamdyaWQuaW5mb19kaWFsb2coYi5lcnJjYXAsImZ1bmN0aW9uICdjdXN0b21fdmFsdWUnICIrSltZZSh0aGlzKVswXV0ucC5tc2cubm92YWx1ZSxKW1llKHRoaXMpWzBdXS5wLmJDbG9zZSx7c3R5bGVVSTpKW1llKHRoaXMpWzBdXS5wLnN0eWxlVUl9KTpZZS5qZ3JpZC5pbmZvX2RpYWxvZyhiLmVycmNhcCxlLm1lc3NhZ2UsSltZZSh0aGlzKVswXV0ucC5iQ2xvc2Use3N0eWxlVUk6SltZZSh0aGlzKVswXV0ucC5zdHlsZVVJfSl9cmV0dXJuITB9fSl9ZWxzZXtzd2l0Y2goWWUodGhpcykuZ2V0KDApLnR5cGUpe2Nhc2UiY2hlY2tib3giOlllKHRoaXMpLmlzKCI6Y2hlY2tlZCIpP2hbdGhpcy5uYW1lXT1ZZSh0aGlzKS52YWwoKTooZT1ZZSh0aGlzKS5hdHRyKCJvZmZ2YWwiKSxoW3RoaXMubmFtZV09ZSk7YnJlYWs7Y2FzZSJzZWxlY3Qtb25lIjpoW3RoaXMubmFtZV09WWUodGhpcykudmFsKCk7YnJlYWs7Y2FzZSJzZWxlY3QtbXVsdGlwbGUiOmhbdGhpcy5uYW1lXT1ZZSh0aGlzKS52YWwoKSxoW3RoaXMubmFtZV09aFt0aGlzLm5hbWVdP2hbdGhpcy5uYW1lXS5qb2luKCIsIik6IiI7YnJlYWs7Y2FzZSJyYWRpbyI6aWYoaS5oYXNPd25Qcm9wZXJ0eSh0aGlzLm5hbWUpKXJldHVybiEwO2lbdGhpcy5uYW1lXT12b2lkIDA9PT1ZZSh0aGlzKS5hdHRyKCJvZmZ2YWwiKT8ib2ZmIjpZZSh0aGlzKS5hdHRyKCJvZmZ2YWwiKTticmVhaztkZWZhdWx0OmhbdGhpcy5uYW1lXT1ZZSh0aGlzKS52YWwoKX11LnAuYXV0b2VuY29kZSYmKGhbdGhpcy5uYW1lXT1ZZS5qZ3JpZC5odG1sRW5jb2RlKGhbdGhpcy5uYW1lXSkpfX0pLGkpaS5oYXNPd25Qcm9wZXJ0eShlKSYmKHQ9WWUoJ2lucHV0W25hbWU9IicrZSsnIl06Y2hlY2tlZCcsdikudmFsKCksaFtlXT12b2lkIDAhPT10P3Q6aVtlXSx1LnAuYXV0b2VuY29kZSkmJihoW2VdPVllLmpncmlkLmh0bWxFbmNvZGUoaFtlXSkpfWZ1bmN0aW9uIE0ocixpLG8pe3ZhciBhLG4sZSx0LGwscyxkPTAscD0oKEpbdS5wLmlkXS5jaGVja09uU3VibWl0fHxKW3UucC5pZF0uY2hlY2tPblVwZGF0ZSkmJih1LnAuc2F2ZWREYXRhPXt9LHUucC5zYXZlZERhdGFbaS5wLmlkKyJfaWQiXT1yKSxpLnAuY29sTW9kZWwpOyJfZW1wdHkiPT09cj8oWWUocCkuZWFjaChmdW5jdGlvbigpe2E9dGhpcy5uYW1lLGw9WWUuZXh0ZW5kKHt9LHRoaXMuZWRpdG9wdGlvbnN8fHt9KSwoZT1ZZSgiIyIrWWUuamdyaWQuanFJRChhKSxvKSkmJmUubGVuZ3RoJiZudWxsIT09ZVswXSYmKHQ9IiIsImN1c3RvbSI9PT10aGlzLmVkaXR0eXBlJiZZZS5qZ3JpZC5pc0Z1bmN0aW9uKGwuY3VzdG9tX3ZhbHVlKT9sLmN1c3RvbV92YWx1ZS5jYWxsKHUsWWUoIiMiK2EsbyksInNldCIsdCk6bC5kZWZhdWx0VmFsdWU/KHQ9WWUuamdyaWQuaXNGdW5jdGlvbihsLmRlZmF1bHRWYWx1ZSk/bC5kZWZhdWx0VmFsdWUuY2FsbCh1KTpsLmRlZmF1bHRWYWx1ZSwiY2hlY2tib3giPT09ZVswXS50eXBlPyhsPXQudG9Mb3dlckNhc2UoKSkuc2VhcmNoKC8oZmFsc2V8ZnwwfG5vfG58b2ZmfHVuZGVmaW5lZCkvaSk8MCYmIiIhPT1sPyhlWzBdLmNoZWNrZWQ9ITAsZVswXS5kZWZhdWx0Q2hlY2tlZD0hMCxlWzBdLnZhbHVlPXQpOihlWzBdLmNoZWNrZWQ9ITEsZVswXS5kZWZhdWx0Q2hlY2tlZD0hMSk6ZS52YWwodCkpOiJjaGVja2JveCI9PT1lWzBdLnR5cGU/KGVbMF0uY2hlY2tlZD0hMSxlWzBdLmRlZmF1bHRDaGVja2VkPSExLHQ9WWUoZSkuYXR0cigib2ZmdmFsIikpOmVbMF0udHlwZSYmInNlbGVjdCI9PT1lWzBdLnR5cGUuc3Vic3RyKDAsNik/ZVswXS5zZWxlY3RlZEluZGV4PTA6ZS52YWwodCksITAhPT1KW3UucC5pZF0uY2hlY2tPblN1Ym1pdCYmIUpbdS5wLmlkXS5jaGVja09uVXBkYXRlfHwodS5wLnNhdmVkRGF0YVthXT10KSl9KSxZZSgiI2lkX2ciLG8pLnZhbChyKSk6KHM9WWUoaSkuanFHcmlkKCJnZXRJbmQiLHIsITApKSYmKFllKCd0ZFtyb2xlPSJncmlkY2VsbCJdJyxzKS5lYWNoKGZ1bmN0aW9uKHQpe2lmKCJjYiIhPT0oYT1wW3RdLm5hbWUpJiYic3ViZ3JpZCIhPT1hJiYicm4iIT09YSYmITA9PT1wW3RdLmVkaXRhYmxlJiYic2MiIT09YSl7aWYoYT09PWkucC5FeHBhbmRDb2x1bW4mJiEwPT09aS5wLnRyZWVHcmlkKW49WWUodGhpcykudGV4dCgpO2Vsc2UgdHJ5e249WWUudW5mb3JtYXQuY2FsbChpLFllKHRoaXMpLHtyb3dJZDpyLGNvbE1vZGVsOnBbdF19LHQpfWNhdGNoKGUpe249InRleHRhcmVhIj09PXBbdF0uZWRpdHR5cGU/WWUodGhpcykudGV4dCgpOlllKHRoaXMpLmh0bWwoKX1zd2l0Y2godS5wLmF1dG9lbmNvZGUmJihuPVllLmpncmlkLmh0bWxEZWNvZGUobikpLCEwIT09Slt1LnAuaWRdLmNoZWNrT25TdWJtaXQmJiFKW3UucC5pZF0uY2hlY2tPblVwZGF0ZXx8KHUucC5zYXZlZERhdGFbYV09biksYT1ZZS5qZ3JpZC5qcUlEKGEpLHBbdF0uZWRpdHR5cGUpe2Nhc2Uic2VsZWN0Ijp2YXIgZT1uLnNwbGl0KCIsIiksZT1ZZS5tYXAoZSxmdW5jdGlvbihlKXtyZXR1cm4gWWUuamdyaWQudHJpbShlKX0pO1llKCIjIithKyIgb3B0aW9uIixvKS5lYWNoKGZ1bmN0aW9uKCl7IShwW3RdLmVkaXRvcHRpb25zLm11bHRpcGxlfHxZZS5qZ3JpZC50cmltKG4pIT09WWUuamdyaWQudHJpbShZZSh0aGlzKS50ZXh0KCkpJiZlWzBdIT09WWUuamdyaWQudHJpbShZZSh0aGlzKS50ZXh0KCkpJiZlWzBdIT09WWUuamdyaWQudHJpbShZZSh0aGlzKS52YWwoKSkpfHxwW3RdLmVkaXRvcHRpb25zLm11bHRpcGxlJiYoLTE8WWUuaW5BcnJheShZZS5qZ3JpZC50cmltKFllKHRoaXMpLnRleHQoKSksZSl8fC0xPFllLmluQXJyYXkoWWUuamdyaWQudHJpbShZZSh0aGlzKS52YWwoKSksZSkpP3RoaXMuc2VsZWN0ZWQ9ITA6dGhpcy5zZWxlY3RlZD0hMX0pLCEwIT09Slt1LnAuaWRdLmNoZWNrT25TdWJtaXQmJiFKW3UucC5pZF0uY2hlY2tPblVwZGF0ZXx8KG49WWUoIiMiK2EsbykudmFsKCkscFt0XS5lZGl0b3B0aW9ucy5tdWx0aXBsZSYmKG49bi5qb2luKCIsIikpLHUucC5zYXZlZERhdGFbYV09bik7YnJlYWs7Y2FzZSJjaGVja2JveCI6bj1TdHJpbmcobikscFt0XS5lZGl0b3B0aW9ucyYmcFt0XS5lZGl0b3B0aW9ucy52YWx1ZT9wW3RdLmVkaXRvcHRpb25zLnZhbHVlLnNwbGl0KCI6IilbMF09PT1uP1llKCIjIithLG8pW3UucC51c2VQcm9wPyJwcm9wIjoiYXR0ciJdKHtjaGVja2VkOiEwLGRlZmF1bHRDaGVja2VkOiEwfSk6WWUoIiMiK2EsbylbdS5wLnVzZVByb3A/InByb3AiOiJhdHRyIl0oe2NoZWNrZWQ6ITEsZGVmYXVsdENoZWNrZWQ6ITF9KToobj1uLnRvTG93ZXJDYXNlKCkpLnNlYXJjaCgvKGZhbHNlfGZ8MHxub3xufG9mZnx1bmRlZmluZWQpL2kpPDAmJiIiIT09bj8oWWUoIiMiK2EsbylbdS5wLnVzZVByb3A/InByb3AiOiJhdHRyIl0oImNoZWNrZWQiLCEwKSxZZSgiIyIrYSxvKVt1LnAudXNlUHJvcD8icHJvcCI6ImF0dHIiXSgiZGVmYXVsdENoZWNrZWQiLCEwKSk6KFllKCIjIithLG8pW3UucC51c2VQcm9wPyJwcm9wIjoiYXR0ciJdKCJjaGVja2VkIiwhMSksWWUoIiMiK2EsbylbdS5wLnVzZVByb3A/InByb3AiOiJhdHRyIl0oImRlZmF1bHRDaGVja2VkIiwhMSkpLCEwIT09Slt1LnAuaWRdLmNoZWNrT25TdWJtaXQmJiFKW3UucC5pZF0uY2hlY2tPblVwZGF0ZXx8KG49WWUoIiMiK2EsbykuaXMoIjpjaGVja2VkIik/WWUoIiMiK2EsbykudmFsKCk6WWUoIiMiK2EsbykuYXR0cigib2ZmdmFsIiksdS5wLnNhdmVkRGF0YVthXT1uKTticmVhaztjYXNlImN1c3RvbSI6dHJ5e2lmKCFwW3RdLmVkaXRvcHRpb25zfHwhWWUuamdyaWQuaXNGdW5jdGlvbihwW3RdLmVkaXRvcHRpb25zLmN1c3RvbV92YWx1ZSkpdGhyb3ciZTEiO3BbdF0uZWRpdG9wdGlvbnMuY3VzdG9tX3ZhbHVlLmNhbGwodSxZZSgiIyIrYSxvKSwic2V0IixuKX1jYXRjaChlKXsiZTEiPT09ZT9ZZS5qZ3JpZC5pbmZvX2RpYWxvZyhiLmVycmNhcCwiZnVuY3Rpb24gJ2N1c3RvbV92YWx1ZScgIitKW1llKHRoaXMpWzBdXS5wLm1zZy5ub2RlZmluZWQsWWUucnBfZ2VbWWUodGhpcylbMF1dLnAuYkNsb3NlLHtzdHlsZVVJOkpbWWUodGhpcylbMF1dLnAuc3R5bGVVSX0pOlllLmpncmlkLmluZm9fZGlhbG9nKGIuZXJyY2FwLGUubWVzc2FnZSxZZS5ycF9nZVtZZSh0aGlzKVswXV0ucC5iQ2xvc2Use3N0eWxlVUk6SltZZSh0aGlzKVswXV0ucC5zdHlsZVVJfSl9YnJlYWs7ZGVmYXVsdDooIiZuYnNwOyI9PT1ufHwiJiMxNjA7Ij09PW58fDE9PT1uLmxlbmd0aCYmMTYwPT09bi5jaGFyQ29kZUF0KDApKSYmKG49IiIpLFllKCIjIithLG8pLnZhbChuKX1kKyt9fSksMDxkKSYmKFllKCIjaWRfZyIsdikudmFsKHIpLCEwIT09Slt1LnAuaWRdLmNoZWNrT25TdWJtaXQmJiFKW3UucC5pZF0uY2hlY2tPblVwZGF0ZXx8KHUucC5zYXZlZERhdGFbaS5wLmlkKyJfaWQiXT1yKSl9ZnVuY3Rpb24gVSgpe3ZhciBvLGEsbixlLHQsbCxyLHM9WyEwLCIiLCIiXSxpPXt9LGQ9dS5wLnBybU5hbWVzLHA9WWUodSkudHJpZ2dlckhhbmRsZXIoImpxR3JpZEFkZEVkaXRCZWZvcmVDaGVja1ZhbHVlcyIsW2gsWWUobSksZ10pO2lmKHAmJiJvYmplY3QiPT10eXBlb2YgcCYmKGg9cCksWWUuamdyaWQuaXNGdW5jdGlvbihKW3UucC5pZF0uYmVmb3JlQ2hlY2tWYWx1ZXMpJiYocD1KW3UucC5pZF0uYmVmb3JlQ2hlY2tWYWx1ZXMuY2FsbCh1LGgsWWUobSksZykpJiYib2JqZWN0Ij09dHlwZW9mIHAmJihoPXApLCFKW3UucC5pZF0uaHRtbDVDaGVja3x8WWUuamdyaWQudmFsaWRhdGVGb3JtKHdbMF0pKXtmb3IoZSBpbiBoKWlmKGguaGFzT3duUHJvcGVydHkoZSkmJiExPT09KHM9WWUuamdyaWQuY2hlY2tWYWx1ZXMuY2FsbCh1LGhbZV0sZSkpWzBdKWJyZWFrO2lmKFllLmVhY2godS5wLmNvbE1vZGVsLGZ1bmN0aW9uKGUsdCl7dC5lZGl0b3B0aW9ucyYmITA9PT10LmVkaXRvcHRpb25zLk51bGxJZkVtcHR5JiZoLmhhc093blByb3BlcnR5KHQubmFtZSkmJiIiPT09aFt0Lm5hbWVdJiYoaFt0Lm5hbWVdPSJudWxsIil9KSwocz1zWzBdJiYodm9pZCAwPT09KGk9WWUodSkudHJpZ2dlckhhbmRsZXIoImpxR3JpZEFkZEVkaXRDbGlja1N1Ym1pdCIsW0pbdS5wLmlkXSxoLGddKSkmJlllLmpncmlkLmlzRnVuY3Rpb24oSlt1LnAuaWRdLm9uY2xpY2tTdWJtaXQpJiYoaT1KW3UucC5pZF0ub25jbGlja1N1Ym1pdC5jYWxsKHUsSlt1LnAuaWRdLGgsZyl8fHt9KSwocz12b2lkIDA9PT0ocz1ZZSh1KS50cmlnZ2VySGFuZGxlcigianFHcmlkQWRkRWRpdEJlZm9yZVN1Ym1pdCIsW2gsWWUobSksZ10pKT9bITAsIiIsIiJdOnMpWzBdKSYmWWUuamdyaWQuaXNGdW5jdGlvbihKW3UucC5pZF0uYmVmb3JlU3VibWl0KT9KW3UucC5pZF0uYmVmb3JlU3VibWl0LmNhbGwodSxoLFllKG0pLGcpOnMpWzBdJiYhSlt1LnAuaWRdLnByb2Nlc3Npbmcpe2lmKEpbdS5wLmlkXS5wcm9jZXNzaW5nPSEwLFllKCIjc0RhdGEiLHYrIl8yIikuYWRkQ2xhc3MoWS5hY3RpdmUpLHA9Slt1LnAuaWRdLnVybHx8WWUodSkuanFHcmlkKCJnZXRHcmlkUGFyYW0iLCJlZGl0dXJsIiksbj1kLm9wZXIsYT0iY2xpZW50QXJyYXkiPT09cHx8InN0b3JhZ2UiPT09cD91LnAua2V5TmFtZTpkLmlkLGhbbl09Il9lbXB0eSI9PT1ZZS5qZ3JpZC50cmltKGhbdS5wLmlkKyJfaWQiXSk/ZC5hZGRvcGVyOmQuZWRpdG9wZXIsKGhbbl0hPT1kLmFkZG9wZXJ8fHZvaWQgMD09PWhbYV0pJiYoaFthXT1oW3UucC5pZCsiX2lkIl0pLGRlbGV0ZSBoW3UucC5pZCsiX2lkIl0saD1ZZS5leHRlbmQoaCxKW3UucC5pZF0uZWRpdERhdGEsaSksITA9PT11LnAudHJlZUdyaWQpZm9yKHQgaW4gaFtuXT09PWQuYWRkb3BlciYmKGw9WWUodSkuanFHcmlkKCJnZXRHcmlkUGFyYW0iLCJzZWxyb3ciKSxpPSJhZGphY2VuY3kiPT09dS5wLnRyZWVHcmlkTW9kZWw/dS5wLnRyZWVSZWFkZXIucGFyZW50X2lkX2ZpZWxkOiJwYXJlbnRfaWQiLGhbaV09bCksdS5wLnRyZWVSZWFkZXIpdS5wLnRyZWVSZWFkZXIuaGFzT3duUHJvcGVydHkodCkmJihyPXUucC50cmVlUmVhZGVyW3RdLCFoLmhhc093blByb3BlcnR5KHIpfHxoW25dPT09ZC5hZGRvcGVyJiYicGFyZW50X2lkX2ZpZWxkIj09PXR8fGRlbGV0ZSBoW3JdKTtoW2FdPVllLmpncmlkLnN0cmlwUHJlZih1LnAuaWRQcmVmaXgsaFthXSk7dmFyIGM9WWUuZXh0ZW5kKHt1cmw6cCx0eXBlOkpbdS5wLmlkXS5tdHlwZSxkYXRhOlllLmpncmlkLmlzRnVuY3Rpb24oSlt1LnAuaWRdLnNlcmlhbGl6ZUVkaXREYXRhKT9KW3UucC5pZF0uc2VyaWFsaXplRWRpdERhdGEuY2FsbCh1LGgpOmgsc3VjY2VzczpmdW5jdGlvbihlLHQscil7aWYoWWUoIiNzRGF0YSIsdisiXzIiKS5yZW1vdmVDbGFzcyhZLmFjdGl2ZSksaFthXT11LnAuaWRQcmVmaXgraFthXSwzMDA8PXIuc3RhdHVzJiYzMDQhPT1yLnN0YXR1cz8oc1swXT0hMSxzWzFdPVllKHUpLnRyaWdnZXJIYW5kbGVyKCJqcUdyaWRBZGRFZGl0RXJyb3JUZXh0Rm9ybWF0IixbcixnXSksWWUuamdyaWQuaXNGdW5jdGlvbihKW3UucC5pZF0uZXJyb3JUZXh0Rm9ybWF0KT9zWzFdPUpbdS5wLmlkXS5lcnJvclRleHRGb3JtYXQuY2FsbCh1LHIsZyk6c1sxXT10KyIgU3RhdHVzOiAnIityLnN0YXR1c1RleHQrIicuIEVycm9yIGNvZGU6ICIrci5zdGF0dXMpOihzPXZvaWQgMD09PShzPVllKHUpLnRyaWdnZXJIYW5kbGVyKCJqcUdyaWRBZGRFZGl0QWZ0ZXJTdWJtaXQiLFtyLGgsZ10pKT9bITAsIiIsIiJdOnMpWzBdJiZZZS5qZ3JpZC5pc0Z1bmN0aW9uKEpbdS5wLmlkXS5hZnRlclN1Ym1pdCkmJihzPUpbdS5wLmlkXS5hZnRlclN1Ym1pdC5jYWxsKHUscixoLGcpKSwhMT09PXNbMF0pWWUoIi5Gb3JtRXJyb3IiLG0pLmh0bWwoc1sxXSksWWUoIi5Gb3JtRXJyb3IiLG0pLnNob3coKTtlbHNlIGlmKHUucC5hdXRvZW5jb2RlJiZZZS5lYWNoKGgsZnVuY3Rpb24oZSx0KXtoW2VdPVllLmpncmlkLmh0bWxEZWNvZGUodCl9KSxoW25dPT09ZC5hZGRvcGVyPyhzWzJdfHwoc1syXT1ZZS5qZ3JpZC5yYW5kSWQoKSksbnVsbD09aFthXXx8aFthXT09PXUucC5pZFByZWZpeCsiX2VtcHR5Inx8IiI9PT1oW2FdP2hbYV09c1syXTpzWzJdPWhbYV0sSlt1LnAuaWRdLnJlbG9hZEFmdGVyU3VibWl0P1llKHUpLnRyaWdnZXIoInJlbG9hZEdyaWQiKTohMD09PXUucC50cmVlR3JpZD9ZZSh1KS5qcUdyaWQoImFkZENoaWxkTm9kZSIsc1syXSxsLGgpOlllKHUpLmpxR3JpZCgiYWRkUm93RGF0YSIsc1syXSxoLEsuYWRkZWRyb3cpLEpbdS5wLmlkXS5jbG9zZUFmdGVyQWRkPyghMCE9PXUucC50cmVlR3JpZCYmWWUodSkuanFHcmlkKCJzZXRTZWxlY3Rpb24iLHNbMl0pLFllLmpncmlkLmhpZGVNb2RhbCgiIyIrWWUuamdyaWQuanFJRChqLnRoZW1vZGFsKSx7Z2I6IiNnYm94XyIrWWUuamdyaWQuanFJRChmKSxqcW06Sy5qcU1vZGFsLG9uQ2xvc2U6Slt1LnAuaWRdLm9uQ2xvc2UscmVtb3ZlbW9kYWw6Slt1LnAuaWRdLnJlbW92ZW1vZGFsLGZvcm1wcm9wOiFKW3UucC5pZF0ucmVjcmVhdGVGb3JtLGZvcm06Slt1LnAuaWRdLmZvcm19KSk6Slt1LnAuaWRdLmNsZWFyQWZ0ZXJBZGQmJk0oIl9lbXB0eSIsdSxtKSk6KEpbdS5wLmlkXS5yZWxvYWRBZnRlclN1Ym1pdD8oWWUodSkudHJpZ2dlcigicmVsb2FkR3JpZCIpLEpbdS5wLmlkXS5jbG9zZUFmdGVyRWRpdHx8c2V0VGltZW91dChmdW5jdGlvbigpe1llKHUpLmpxR3JpZCgic2V0U2VsZWN0aW9uIixoW2FdKX0sMWUzKSk6ITA9PT11LnAudHJlZUdyaWQ/WWUodSkuanFHcmlkKCJzZXRUcmVlUm93IixoW2FdLGgpOlllKHUpLmpxR3JpZCgic2V0Um93RGF0YSIsaFthXSxoKSxKW3UucC5pZF0uY2xvc2VBZnRlckVkaXQmJlllLmpncmlkLmhpZGVNb2RhbCgiIyIrWWUuamdyaWQuanFJRChqLnRoZW1vZGFsKSx7Z2I6IiNnYm94XyIrWWUuamdyaWQuanFJRChmKSxqcW06Sy5qcU1vZGFsLG9uQ2xvc2U6Slt1LnAuaWRdLm9uQ2xvc2UscmVtb3ZlbW9kYWw6Slt1LnAuaWRdLnJlbW92ZW1vZGFsLGZvcm1wcm9wOiFKW3UucC5pZF0ucmVjcmVhdGVGb3JtLGZvcm06Slt1LnAuaWRdLmZvcm19KSksKFllLmpncmlkLmlzRnVuY3Rpb24oSlt1LnAuaWRdLmFmdGVyQ29tcGxldGUpfHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoWWUuX2RhdGEoWWUodSlbMF0sImV2ZW50cyIpLCJqcUdyaWRBZGRFZGl0QWZ0ZXJDb21wbGV0ZSIpKSYmKG89cixzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7WWUodSkudHJpZ2dlckhhbmRsZXIoImpxR3JpZEFkZEVkaXRBZnRlckNvbXBsZXRlIixbbyxoLFllKG0pLGddKTt0cnl7Slt1LnAuaWRdLmFmdGVyQ29tcGxldGUuY2FsbCh1LG8saCxZZShtKSxnKX1jYXRjaChlKXt9bz1udWxsfSw1MDApKSwoSlt1LnAuaWRdLmNoZWNrT25TdWJtaXR8fEpbdS5wLmlkXS5jaGVja09uVXBkYXRlKSYmKFllKG0pLmRhdGEoImRpc2FibGVkIiwhMSksIl9lbXB0eSIhPT11LnAuc2F2ZWREYXRhW3UucC5pZCsiX2lkIl0pKWZvcih2YXIgaSBpbiB1LnAuc2F2ZWREYXRhKXUucC5zYXZlZERhdGEuaGFzT3duUHJvcGVydHkoaSkmJmhbaV0mJih1LnAuc2F2ZWREYXRhW2ldPWhbaV0pO0pbdS5wLmlkXS5wcm9jZXNzaW5nPSExO3RyeXtZZSgiOmlucHV0OnZpc2libGUiLG0pWzBdLmZvY3VzKCl9Y2F0Y2goZSl7fX19LFllLmpncmlkLmFqYXhPcHRpb25zLEpbdS5wLmlkXS5hamF4RWRpdE9wdGlvbnMpO2MudXJsfHxKW3UucC5pZF0udXNlRGF0YVByb3h5fHwoWWUuamdyaWQuaXNGdW5jdGlvbih1LnAuZGF0YVByb3h5KT9KW3UucC5pZF0udXNlRGF0YVByb3h5PSEwOihzWzBdPSExLHNbMV0rPSIgIitiLm5vdXJsKSksc1swXSYmKEpbdS5wLmlkXS51c2VEYXRhUHJveHk/ITE9PT0oaT12b2lkIDA9PT0oaT11LnAuZGF0YVByb3h5LmNhbGwodSxjLCJzZXRfIit1LnAuaWQpKT9bITAsIiJdOmkpWzBdPyhzWzBdPSExLHNbMV09aVsxXXx8IkVycm9yIHByb2Nlc3NpbmcgdGhlIHJvdyEiKTooYy5kYXRhLm9wZXI9PT1kLmFkZG9wZXImJkpbdS5wLmlkXS5jbG9zZUFmdGVyQWRkJiZZZS5qZ3JpZC5oaWRlTW9kYWwoIiMiK1llLmpncmlkLmpxSUQoai50aGVtb2RhbCkse2diOiIjZ2JveF8iK1llLmpncmlkLmpxSUQoZiksanFtOksuanFNb2RhbCxvbkNsb3NlOkpbdS5wLmlkXS5vbkNsb3NlLHJlbW92ZW1vZGFsOkpbdS5wLmlkXS5yZW1vdmVtb2RhbCxmb3JtcHJvcDohSlt1LnAuaWRdLnJlY3JlYXRlRm9ybSxmb3JtOkpbdS5wLmlkXS5mb3JtfSksYy5kYXRhLm9wZXI9PT1kLmVkaXRvcGVyJiZKW3UucC5pZF0uY2xvc2VBZnRlckVkaXQmJlllLmpncmlkLmhpZGVNb2RhbCgiIyIrWWUuamdyaWQuanFJRChqLnRoZW1vZGFsKSx7Z2I6IiNnYm94XyIrWWUuamdyaWQuanFJRChmKSxqcW06Sy5qcU1vZGFsLG9uQ2xvc2U6Slt1LnAuaWRdLm9uQ2xvc2UscmVtb3ZlbW9kYWw6Slt1LnAuaWRdLnJlbW92ZW1vZGFsLGZvcm1wcm9wOiFKW3UucC5pZF0ucmVjcmVhdGVGb3JtLGZvcm06Slt1LnAuaWRdLmZvcm19KSk6ImNsaWVudEFycmF5Ij09PWMudXJsPyhKW3UucC5pZF0ucmVsb2FkQWZ0ZXJTdWJtaXQ9ITEsaD1jLmRhdGEsYy5zdWNjZXNzKGgsIiIse3N0YXR1czoyMDAsc3RhdHVzVGV4dDoiIn0pKToic3RvcmFnZSI9PT1jLnVybD9oW25dPT09ZC5hZGRvcGVyPygiX2VtcHR5Ij09PWhbYV0mJihoW2FdPSIiKSxZZSh1KS5qcUdyaWQoImFkZFN0b3JhZ2VSZWNvcmQiLGgpLnRoZW4oZnVuY3Rpb24oZSl7ImNvbXBsZXRlIj09PWUudHlwZSYmYy5zdWNjZXNzKGgsIiIse3N0YXR1czoyMDAsc3RhdHVzVGV4dDoiIn0pfSkuY2F0Y2goZnVuY3Rpb24oZSl7WWUuamdyaWQuaW5mb19kaWFsb2coIkVycm9yIixlLnRhcmdldC5lcnJvci5uYW1lKyIgOiAiK2UudGFyZ2V0LmVycm9yLm1lc3NhZ2UsIkNsb3NlIil9KSk6aFtuXT09PWQuZWRpdG9wZXImJlllKHUpLmpxR3JpZCgidXBkYXRlU3RvcmFnZVJlY29yZCIsaCkudGhlbihmdW5jdGlvbihlKXsiY29tcGxldGUiPT09ZS50eXBlJiZjLnN1Y2Nlc3MoaCwiIix7c3RhdHVzOjIwMCxzdGF0dXNUZXh0OiIifSl9KS5jYXRjaChmdW5jdGlvbihlKXtZZS5qZ3JpZC5pbmZvX2RpYWxvZygiRXJyb3IiLGUudGFyZ2V0LmVycm9yLm5hbWUrIiA6ICIrZS50YXJnZXQuZXJyb3IubWVzc2FnZSwiQ2xvc2UiKX0pOlllLmFqYXgoYykpfSExPT09c1swXSYmKFllKG0pLnNjcm9sbFRvcCgwKSxZZSgiLkZvcm1FcnJvciIsbSkuaHRtbChzWzFdKSxZZSgiLkZvcm1FcnJvciIsbSkuc2hvdygpKX19ZnVuY3Rpb24gTChlLHQpe3ZhciByLGk9ITE7aWYoIShpPSEoWWUuaXNQbGFpbk9iamVjdChlKSYmWWUuaXNQbGFpbk9iamVjdCh0KSYmT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZSkubGVuZ3RoPT09T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModCkubGVuZ3RoKSkpZm9yKHIgaW4gdClpZih0Lmhhc093blByb3BlcnR5KHIpKXtpZighZS5oYXNPd25Qcm9wZXJ0eShyKSl7aT0hMDticmVha31pZihlW3JdIT09dFtyXSl7aT0hMDticmVha319cmV0dXJuIGl9ZnVuY3Rpb24gTygpe3ZhciBlPSEwO3JldHVybiBZZSgiLkZvcm1FcnJvciIsbSkuaGlkZSgpLEpbdS5wLmlkXS5jaGVja09uVXBkYXRlJiYoaD17fSxIKCksTChoLHUucC5zYXZlZERhdGEpKSYmKFllKG0pLmRhdGEoImRpc2FibGVkIiwhMCksWWUoIi5jb25maXJtIiwiIyIrai50aGVtb2RhbCkuc2hvdygpLGU9ITEpLGV9ZnVuY3Rpb24gVihlLHQpe3ZhciByPXRbMV0ubGVuZ3RoLTE7MD09PWV8fHZvaWQgMCE9PXRbMV1bZS0xXSYmWWUoIiMiK1llLmpncmlkLmpxSUQodFsxXVtlLTFdKSkuaGFzQ2xhc3MoWS5kaXNhYmxlZCk/WWUoIiNwRGF0YSIsZCkuYWRkQ2xhc3MoWS5kaXNhYmxlZCk6WWUoIiNwRGF0YSIsZCkucmVtb3ZlQ2xhc3MoWS5kaXNhYmxlZCksZT09PXJ8fHZvaWQgMCE9PXRbMV1bZSsxXSYmWWUoIiMiK1llLmpncmlkLmpxSUQodFsxXVtlKzFdKSkuaGFzQ2xhc3MoWS5kaXNhYmxlZCk/WWUoIiNuRGF0YSIsZCkuYWRkQ2xhc3MoWS5kaXNhYmxlZCk6WWUoIiNuRGF0YSIsZCkucmVtb3ZlQ2xhc3MoWS5kaXNhYmxlZCl9ZnVuY3Rpb24gVygpe3ZhciBlPVllKHUpLmpxR3JpZCgiZ2V0RGF0YUlEcyIpLHQ9WWUoIiNpZF9nIix2KS52YWwoKTtpZih1LnAubXVsdGlzZWxlY3QmJkpbdS5wLmlkXS5lZGl0c2VsZWN0ZWQpe2Zvcih2YXIgcj1bXSxpPTAsbz1lLmxlbmd0aDtpPG87aSsrKS0xIT09WWUuaW5BcnJheShlW2ldLHUucC5zZWxhcnJyb3cpJiZyLnB1c2goZVtpXSk7cmV0dXJuW1llLmluQXJyYXkodCxyKSxyXX1yZXR1cm5bWWUuaW5BcnJheSh0LGUpLGVdfWZ1bmN0aW9uIFEoKXtpZihKW3UucC5pZF0uY2hlY2tPblN1Ym1pdHx8Slt1LnAuaWRdLmNoZWNrT25VcGRhdGUpe3ZhciBlLHQscj1bXSxpPXt9LHI9WWUubWFwKHUucC5zYXZlZERhdGEsZnVuY3Rpb24oZSx0KXtyZXR1cm4gdH0pO2ZvcihlIGluIFllKCIuRm9ybUVsZW1lbnQiLHcpLmVhY2goZnVuY3Rpb24oKXtpZigiIiE9PVllLmpncmlkLnRyaW0odGhpcy5uYW1lKSYmLTE9PT1yLmluZGV4T2YodGhpcy5uYW1lKSl7dmFyIGU9WWUodGhpcykudmFsKCksdD1ZZSh0aGlzKS5nZXQoMCkudHlwZTtpZigiY2hlY2tib3giPT09dClZZSh0aGlzKS5pcygiOmNoZWNrZWQiKXx8KGU9WWUodGhpcykuYXR0cigib2ZmdmFsIikpO2Vsc2UgaWYoInNlbGVjdC1tdWx0aXBsZSI9PT10KWU9ZS5qb2luKCIsIik7ZWxzZSBpZigicmFkaW8iPT09dCl7aWYoaS5oYXNPd25Qcm9wZXJ0eSh0aGlzLm5hbWUpKXJldHVybiEwO2lbdGhpcy5uYW1lXT12b2lkIDA9PT1ZZSh0aGlzKS5hdHRyKCJvZmZ2YWwiKT8ib2ZmIjpZZSh0aGlzKS5hdHRyKCJvZmZ2YWwiKX11LnAuc2F2ZWREYXRhW3RoaXMubmFtZV09ZX19KSxpKWkuaGFzT3duUHJvcGVydHkoZSkmJih0PVllKCdpbnB1dFtuYW1lPSInK2UrJyJdOmNoZWNrZWQnLHcpLnZhbCgpLHUucC5zYXZlZERhdGFbZV09dm9pZCAwIT09dD90OmlbZV0pfX19KX0sdmlld0dyaWRSb3c6ZnVuY3Rpb24oUCxCKXt2YXIgZT1ZZS5qZ3JpZC5nZXRSZWdpb25hbCh0aGlzWzBdLCJ2aWV3IiksdD10aGlzWzBdLnAuc3R5bGVVSSxFPVllLmpncmlkLnN0eWxlVUlbdF0uZm9ybWVkaXQsej1ZZS5qZ3JpZC5zdHlsZVVJW3RdLmNvbW1vbjtyZXR1cm4gQj1ZZS5leHRlbmQoITAse3RvcDowLGxlZnQ6MCx3aWR0aDo1MDAsZGF0YXdpZHRoOiJhdXRvIixoZWlnaHQ6ImF1dG8iLGRhdGFoZWlnaHQ6ImF1dG8iLG1vZGFsOiExLG92ZXJsYXk6MzAsZHJhZzohMCxyZXNpemU6ITAsanFNb2RhbDohMCxjbG9zZU9uRXNjYXBlOiExLGxhYmVsc3dpZHRoOiJhdXRvIixjbG9zZWljb246W10sbmF2a2V5czpbITEsMzgsNDBdLG9uQ2xvc2U6bnVsbCxiZWZvcmVTaG93Rm9ybTpudWxsLGJlZm9yZUluaXREYXRhOm51bGwsdmlld1BhZ2VyQnV0dG9uczohMCxyZWNyZWF0ZUZvcm06ITEscmVtb3ZlbW9kYWw6ITAsZm9ybToidmlldyIsYnV0dG9uczpbXX0sZSxCfHx7fSksSltZZSh0aGlzKVswXS5wLmlkXT1CLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBhPXRoaXM7aWYoYS5ncmlkJiZQKXt2YXIgaT1hLnAuaWQsbz0iVmlld0dyaWRfIitZZS5qZ3JpZC5qcUlEKGkpLGw9IlZpZXdUYmxfIitZZS5qZ3JpZC5qcUlEKGkpLHI9IlZpZXdHcmlkXyIraSxlPSJWaWV3VGJsXyIraSx0PXt0aGVtb2RhbDoidmlld21vZCIraSxtb2RhbGhlYWQ6InZpZXdoZCIraSxtb2RhbGNvbnRlbnQ6InZpZXdjbnQiK2ksc2Nyb2xsZWxtOm99LG49ITAscz0xLGQ9MCxwPShKW2EucC5pZF0uc3R5bGVVST1hLnAuc3R5bGVVSXx8ImpRdWVyeVVJIixCLnJlY3JlYXRlRm9ybXx8WWUoYSkuZGF0YSgidmlld1Byb3AiKSYmWWUuZXh0ZW5kKEpbWWUodGhpcylbMF0ucC5pZF0sWWUoYSkuZGF0YSgidmlld1Byb3AiKSksaXNOYU4oSltZZSh0aGlzKVswXS5wLmlkXS5kYXRhaGVpZ2h0KT9KW1llKHRoaXMpWzBdLnAuaWRdLmRhdGFoZWlnaHQ6SltZZSh0aGlzKVswXS5wLmlkXS5kYXRhaGVpZ2h0KyJweCIpLGM9aXNOYU4oSltZZSh0aGlzKVswXS5wLmlkXS5kYXRhd2lkdGgpP0pbWWUodGhpcylbMF0ucC5pZF0uZGF0YXdpZHRoOkpbWWUodGhpcylbMF0ucC5pZF0uZGF0YXdpZHRoKyJweCIsYz1ZZSgiPGZvcm0gbmFtZT0nRm9ybVBvc3QnIGlkPSciK3IrIicgY2xhc3M9J0Zvcm1HcmlkJyBzdHlsZT0nd2lkdGg6IitjKyI7aGVpZ2h0OiIrcCsiOyc+PC9mb3JtPiIpLHU9WWUoIjx0YWJsZSBpZD0nIitlKyInIGNsYXNzPSdFZGl0VGFibGUgVmlld1RhYmxlJz48dGJvZHk+PC90Ym9keT48L3RhYmxlPiIpO2lmKFllKGEucC5jb2xNb2RlbCkuZWFjaChmdW5jdGlvbigpe3ZhciBlPXRoaXMuZm9ybW9wdGlvbnM7cz1NYXRoLm1heChzLGUmJmUuY29scG9zfHwwKSxkPU1hdGgubWF4KGQsZSYmZS5yb3dwb3N8fDApfSksWWUoYykuYXBwZW5kKHUpLCExIT09KG49KG49dm9pZCAwPT09KG49WWUoYSkudHJpZ2dlckhhbmRsZXIoImpxR3JpZFZpZXdSb3dCZWZvcmVJbml0RGF0YSIsW2NdKSk/ITA6bikmJlllLmpncmlkLmlzRnVuY3Rpb24oSlthLnAuaWRdLmJlZm9yZUluaXREYXRhKT9KW2EucC5pZF0uYmVmb3JlSW5pdERhdGEuY2FsbChhLGMpOm4pKXtmb3IodmFyIGgsZyxmLG0sdixqLGIsdyxwPVAseT1hLHg9dSxfPXMscT0wLEM9Ijx0ZCBjbGFzcz0nQ2FwdGlvblREIGZvcm0tdmlldy1sYWJlbCAiK3ouY29udGVudCsiJyB3aWR0aD0nIitCLmxhYmVsc3dpZHRoKyInPjwvdGQ+PHRkIGNsYXNzPSdEYXRhVEQgZm9ybS12aWV3LWRhdGEgdWktaGVscGVyLXJlc2V0ICIrei5jb250ZW50KyInPjwvdGQ+IixJPSIiLEE9Ijx0ZCBjbGFzcz0nQ2FwdGlvblREIGZvcm0tdmlldy1sYWJlbCAiK3ouY29udGVudCsiJz48L3RkPjx0ZCBjbGFzcz0nRGF0YVREIGZvcm0tdmlldy1kYXRhICIrei5jb250ZW50KyInPjwvdGQ+IixUPVsiaW50ZWdlciIsIm51bWJlciIsImN1cnJlbmN5Il0sRD0wLEc9MCxGPTE7Rjw9XztGKyspSSs9MT09PUY/QzpBO1llKHkucC5jb2xNb2RlbCkuZWFjaChmdW5jdGlvbigpeyhnPSghdGhpcy5lZGl0cnVsZXN8fCEwIT09dGhpcy5lZGl0cnVsZXMuZWRpdGhpZGRlbikmJiEwPT09dGhpcy5oaWRkZW4pfHwicmlnaHQiIT09dGhpcy5hbGlnbnx8KHRoaXMuZm9ybWF0dGVyJiYtMSE9PVllLmluQXJyYXkodGhpcy5mb3JtYXR0ZXIsVCk/RD1NYXRoLm1heChELHBhcnNlSW50KHRoaXMud2lkdGgsMTApKTpHPU1hdGgubWF4KEcscGFyc2VJbnQodGhpcy53aWR0aCwxMCkpKX0pLGo9MCE9PUQ/RDowIT09Rz9HOjAsdj1ZZSh5KS5qcUdyaWQoImdldEluZCIscCksWWUoeS5wLmNvbE1vZGVsKS5lYWNoKGZ1bmN0aW9uKGUpe3ZhciB0LHIsaSxvO2g9dGhpcy5uYW1lLGc9KCF0aGlzLmVkaXRydWxlc3x8ITAhPT10aGlzLmVkaXRydWxlcy5lZGl0aGlkZGVuKSYmITA9PT10aGlzLmhpZGRlbixtPWc/InN0eWxlPSdkaXNwbGF5Om5vbmUnIjoiIix3PSJib29sZWFuIiE9dHlwZW9mIHRoaXMudmlld2FibGV8fHRoaXMudmlld2FibGUsImNiIiE9PWgmJiJzdWJncmlkIiE9PWgmJiJybiIhPT1oJiZ3JiYic2MiIT09aCYmKHc9ITE9PT12PyIiOmg9PT15LnAuRXhwYW5kQ29sdW1uJiYhMD09PXkucC50cmVlR3JpZD9ZZSgidGQiLHkucm93c1t2XSkuZXEoZSkudGV4dCgpOlllKCJ0ZCIseS5yb3dzW3ZdKS5lcShlKS5odG1sKCksYj0icmlnaHQiPT09dGhpcy5hbGlnbiYmMCE9PWosdD1ZZS5leHRlbmQoe30se3Jvd2Fib3ZlOiExLHJvd2NvbnRlbnQ6IiJ9LHRoaXMuZm9ybW9wdGlvbnN8fHt9KSxyPXBhcnNlSW50KHQucm93cG9zLDEwKXx8cSsxLGk9cGFyc2VJbnQoMioocGFyc2VJbnQodC5jb2xwb3MsMTApfHwxKSwxMCksdC5yb3dhYm92ZSYmKG89WWUoIjx0cj48dGQgY2xhc3M9J2NvbnRlbnRpbmZvJyBjb2xzcGFuPSciKzIqXysiJz4iK3Qucm93Y29udGVudCsiPC90ZD48L3RyPiIpLFllKHgpLmFwcGVuZChvKSxvWzBdLnJwPXIpLDA9PT0oZj1ZZSh4KS5maW5kKCJ0cltyb3dwb3M9IityKyJdIikpLmxlbmd0aCYmKGY9WWUoIjx0ciAiK20rIiByb3dwb3M9JyIrcisiJz48L3RyPiIpLmFkZENsYXNzKCJGb3JtRGF0YSIpLmF0dHIoImlkIiwidHJ2XyIraCksWWUoZikuYXBwZW5kKEkpLFllKHgpLmFwcGVuZChmKSxmWzBdLnJwPXIpLFllKCJ0ZCIsZlswXSkuZXEoaS0yKS5odG1sKCI8Yj4iKyh2b2lkIDA9PT10LmxhYmVsP3kucC5jb2xOYW1lc1tlXTp0LmxhYmVsKSsiPC9iPiIpLFllKCJ0ZCIsZlswXSkuZXEoaS0xKS5hcHBlbmQoIjxzcGFuPiIrdysiPC9zcGFuPiIpLmF0dHIoImlkIiwidl8iK2gpLGImJlllKCJ0ZCIsZlswXSkuZXEoaS0xKS5maW5kKCJzcGFuIikuY3NzKHsidGV4dC1hbGlnbiI6InJpZ2h0Iix3aWR0aDpqKyJweCJ9KSxxLHErKyl9KSwwPHEmJigocD1ZZSgiPHRyIGNsYXNzPSdGb3JtRGF0YScgc3R5bGU9J2Rpc3BsYXk6bm9uZSc+PHRkIGNsYXNzPSdDYXB0aW9uVEQnPjwvdGQ+PHRkIGNvbHNwYW49JyIrKDIqXy0xKSsiJyBjbGFzcz0nRGF0YVREJz48aW5wdXQgY2xhc3M9J0Zvcm1FbGVtZW50JyBpZD0naWRfZycgdHlwZT0ndGV4dCcgbmFtZT0naWQnIHZhbHVlPSciK3ArIicvPjwvdGQ+PC90cj4iKSlbMF0ucnA9cSs5OSxZZSh4KS5hcHBlbmQocCkpO3ZhciBTLGU9InJ0bCI9PT1hLnAuZGlyZWN0aW9uLG49IjxhIGlkPSciKyhlPyJuRGF0YSI6InBEYXRhIikrIicgY2xhc3M9J2ZtLWJ1dHRvbiAiK3ouYnV0dG9uKyInPjxzcGFuIGNsYXNzPSciK3ouaWNvbl9iYXNlKyIgIitFLmljb25fcHJldisiJz48L3NwYW4+PC9hPiIscD0iPGEgaWQ9JyIrKGU/InBEYXRhIjoibkRhdGEiKSsiJyBjbGFzcz0nZm0tYnV0dG9uICIrei5idXR0b24rIic+PHNwYW4gY2xhc3M9JyIrei5pY29uX2Jhc2UrIiAiK0UuaWNvbl9uZXh0KyInPjwvc3Bhbj48L2E+IixrPSI8YSBpZD0nY0RhdGEnIGNsYXNzPSdmbS1idXR0b24gIit6LmJ1dHRvbisiJz4iK0IuYkNsb3NlKyI8L2E+IixrPUFycmF5LmlzQXJyYXkoSlthLnAuaWRdLmJ1dHRvbnMpP1llLmpncmlkLmJ1aWxkQnV0dG9ucyhKW2EucC5pZF0uYnV0dG9ucyxrLHopOmssYz0oMDxkJiYoUz1bXSxZZS5lYWNoKFllKHUpWzBdLnJvd3MsZnVuY3Rpb24oZSx0KXtTW2VdPXR9KSxTLnNvcnQoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5ycD50LnJwPzE6ZS5ycDx0LnJwPy0xOjB9KSxZZS5lYWNoKFMsZnVuY3Rpb24oZSx0KXtZZSgidGJvZHkiLHUpLmFwcGVuZCh0KX0pKSxCLmdib3g9IiNnYm94XyIrWWUuamdyaWQuanFJRChpKSxZZSgiPGRpdj48L2Rpdj4iKS5hcHBlbmQoYykuYXBwZW5kKCI8dGFibGUgYm9yZGVyPScwJyBjbGFzcz0nRWRpdFRhYmxlJyBpZD0nIitsKyJfMic+PHRib2R5Pjx0ciBpZD0nQWN0X0J1dHRvbnMnPjx0ZCBjbGFzcz0nbmF2QnV0dG9uJyB3aWR0aD0nIitCLmxhYmVsc3dpZHRoKyInPiIrKGU/cCtuOm4rcCkrIjwvdGQ+PHRkIGNsYXNzPSdFZGl0QnV0dG9uJz4iK2srIjwvdGQ+PC90cj48L3Rib2R5PjwvdGFibGU+IikpLG49WWUoIi51aS1qcWdyaWQiKS5jc3MoImZvbnQtc2l6ZSIpfHwiMTFweCIscD0oWWUuamdyaWQuY3JlYXRlTW9kYWwodCxjLEpbWWUodGhpcylbMF0ucC5pZF0sIiNndmlld18iK1llLmpncmlkLmpxSUQoYS5wLmlkKSxZZSgiI2d2aWV3XyIrWWUuamdyaWQuanFJRChhLnAuaWQpKVswXSxudWxsLHsiZm9udC1zaXplIjpufSksZSYmKFllKCIjcERhdGEsICNuRGF0YSIsIiMiK2wrIl8yIikuY3NzKCJmbG9hdCIsInJpZ2h0IiksWWUoIi5FZGl0QnV0dG9uIiwiIyIrbCsiXzIiKS5jc3MoInRleHQtYWxpZ24iLCJsZWZ0IikpLEIudmlld1BhZ2VyQnV0dG9uc3x8WWUoIiNwRGF0YSwgI25EYXRhIiwiIyIrbCsiXzIiKS5oaWRlKCksWWUoIiMiK3QudGhlbW9kYWwpLmtleWRvd24oZnVuY3Rpb24oZSl7cmV0dXJuIDI3PT09ZS53aGljaD8oSlthLnAuaWRdLmNsb3NlT25Fc2NhcGUmJlllLmpncmlkLmhpZGVNb2RhbCgiIyIrWWUuamdyaWQuanFJRCh0LnRoZW1vZGFsKSx7Z2I6Qi5nYm94LGpxbTpCLmpxTW9kYWwsb25DbG9zZTpCLm9uQ2xvc2UscmVtb3ZlbW9kYWw6SlthLnAuaWRdLnJlbW92ZW1vZGFsLGZvcm1wcm9wOiFKW2EucC5pZF0ucmVjcmVhdGVGb3JtLGZvcm06SlthLnAuaWRdLmZvcm19KSwhMSk6ITA9PT1CLm5hdmtleXNbMF0/ZS53aGljaD09PUIubmF2a2V5c1sxXT8oWWUoIiNwRGF0YSIsIiMiK2wrIl8yIikudHJpZ2dlcigiY2xpY2siKSwhMSk6ZS53aGljaD09PUIubmF2a2V5c1syXT8oWWUoIiNuRGF0YSIsIiMiK2wrIl8yIikudHJpZ2dlcigiY2xpY2siKSwhMSk6dm9pZCAwOnZvaWQgMH0pLEIuY2xvc2VpY29uPVllLmV4dGVuZChbITAsImxlZnQiLEUuaWNvbl9jbG9zZV0sQi5jbG9zZWljb24pLCEwPT09Qi5jbG9zZWljb25bMF0mJlllKCIjY0RhdGEiLCIjIitsKyJfMiIpLmFkZENsYXNzKCJyaWdodCI9PT1CLmNsb3NlaWNvblsxXT8iZm0tYnV0dG9uLWljb24tcmlnaHQiOiJmbS1idXR0b24taWNvbi1sZWZ0IikuYXBwZW5kKCI8c3BhbiBjbGFzcz0nIit6Lmljb25fYmFzZSsiICIrQi5jbG9zZWljb25bMl0rIic+PC9zcGFuPiIpLFllKGEpLnRyaWdnZXJIYW5kbGVyKCJqcUdyaWRWaWV3Um93QmVmb3JlU2hvd0Zvcm0iLFtZZSgiIyIrbyldKSxZZS5qZ3JpZC5pc0Z1bmN0aW9uKEIuYmVmb3JlU2hvd0Zvcm0pJiZCLmJlZm9yZVNob3dGb3JtLmNhbGwoYSxZZSgiIyIrbykpLFllLmpncmlkLnZpZXdNb2RhbCgiIyIrWWUuamdyaWQuanFJRCh0LnRoZW1vZGFsKSx7Z2JveDoiI2dib3hfIitZZS5qZ3JpZC5qcUlEKGkpLGpxbTpCLmpxTW9kYWwsb3ZlcmxheTpCLm92ZXJsYXksbW9kYWw6Qi5tb2RhbCxvbkhpZGU6ZnVuY3Rpb24oZSl7dmFyIHQ9InJ0bCI9PT1ZZSgiI2dib3hfIitZZS5qZ3JpZC5qcUlEKGkpKS5hdHRyKCJkaXIiKSxyPXBhcnNlRmxvYXQoWWUoIiN2aWV3bW9kIitpKVswXS5zdHlsZS53aWR0aCk7WWUoYSkuZGF0YSgidmlld1Byb3AiLHt0b3A6cGFyc2VGbG9hdChZZShlLncpLmNzcygidG9wIikpLGxlZnQ6dD9ZZSgiI2dib3hfIitZZS5qZ3JpZC5qcUlEKGkpKS5vdXRlcldpZHRoKCktci1wYXJzZUZsb2F0KFllKGUudykuY3NzKCJsZWZ0IikpKzEyOnBhcnNlRmxvYXQoWWUoZS53KS5jc3MoImxlZnQiKSksd2lkdGg6WWUoZS53KS53aWR0aCgpLGhlaWdodDpZZShlLncpLmhlaWdodCgpLGRhdGFoZWlnaHQ6WWUoIiMiK28pLmhlaWdodCgpLGRhdGF3aWR0aDpZZSgiIyIrbykud2lkdGgoKX0pLGUudy5yZW1vdmUoKSxlLm8mJmUuby5yZW1vdmUoKX19KSxZZSgiLmZtLWJ1dHRvbjpub3QoLiIrei5kaXNhYmxlZCsiKSIsIiMiK2wrIl8yIikuaG92ZXIoZnVuY3Rpb24oKXtZZSh0aGlzKS5hZGRDbGFzcyh6LmhvdmVyKX0sZnVuY3Rpb24oKXtZZSh0aGlzKS5yZW1vdmVDbGFzcyh6LmhvdmVyKX0pLFIoKSxZZSgiI2NEYXRhIiwiIyIrbCsiXzIiKS5jbGljayhmdW5jdGlvbigpe3JldHVybiBZZS5qZ3JpZC5oaWRlTW9kYWwoIiMiK1llLmpncmlkLmpxSUQodC50aGVtb2RhbCkse2diOiIjZ2JveF8iK1llLmpncmlkLmpxSUQoaSksanFtOkIuanFNb2RhbCxvbkNsb3NlOkIub25DbG9zZSxyZW1vdmVtb2RhbDpKW2EucC5pZF0ucmVtb3ZlbW9kYWwsZm9ybXByb3A6IUpbYS5wLmlkXS5yZWNyZWF0ZUZvcm0sZm9ybTpKW2EucC5pZF0uZm9ybX0pLCExfSksWWUoIiMiK2wrIl8yIikuZmluZCgiW2RhdGEtaW5kZXhdIikuZWFjaChmdW5jdGlvbigpe3ZhciB0PXBhcnNlSW50KFllKHRoaXMpLmF0dHIoImRhdGEtaW5kZXgiKSwxMCk7MDw9dCYmQi5idXR0b25zW3RdLmhhc093blByb3BlcnR5KCJjbGljayIpJiZZZSh0aGlzKS5vbigiY2xpY2siLGZ1bmN0aW9uKGUpe0IuYnV0dG9uc1t0XS5jbGljay5jYWxsKGEsWWUoIiMiK3IpWzBdLEpbYS5wLmlkXSxlKX0pfSksWWUoIiNuRGF0YSIsIiMiK2wrIl8yIikuY2xpY2soZnVuY3Rpb24oKXtZZSgiI0Zvcm1FcnJvciIsIiMiK2wpLmhpZGUoKTt2YXIgZT1PKCk7cmV0dXJuIGVbMF09cGFyc2VJbnQoZVswXSwxMCksLTEhPT1lWzBdJiZlWzFdW2VbMF0rMV0mJihZZShhKS50cmlnZ2VySGFuZGxlcigianFHcmlkVmlld1Jvd0NsaWNrUGdCdXR0b25zIixbIm5leHQiLFllKCIjIitvKSxlWzFdW2VbMF1dXSksWWUuamdyaWQuaXNGdW5jdGlvbihCLm9uY2xpY2tQZ0J1dHRvbnMpJiZCLm9uY2xpY2tQZ0J1dHRvbnMuY2FsbChhLCJuZXh0IixZZSgiIyIrbyksZVsxXVtlWzBdXSksTihlWzFdW2VbMF0rMV0sYSksYS5wLm11bHRpc2VsZWN0JiZKW2EucC5pZF0udmlld3NlbGVjdGVkfHxZZShhKS5qcUdyaWQoInNldFNlbGVjdGlvbiIsZVsxXVtlWzBdKzFdKSxZZShhKS50cmlnZ2VySGFuZGxlcigianFHcmlkVmlld1Jvd0FmdGVyQ2xpY2tQZ0J1dHRvbnMiLFsibmV4dCIsWWUoIiMiK28pLGVbMV1bZVswXSsxXV0pLFllLmpncmlkLmlzRnVuY3Rpb24oQi5hZnRlcmNsaWNrUGdCdXR0b25zKSYmQi5hZnRlcmNsaWNrUGdCdXR0b25zLmNhbGwoYSwibmV4dCIsWWUoIiMiK28pLGVbMV1bZVswXSsxXSksTShlWzBdKzEsZSkpLFIoKSwhMX0pLFllKCIjcERhdGEiLCIjIitsKyJfMiIpLmNsaWNrKGZ1bmN0aW9uKCl7WWUoIiNGb3JtRXJyb3IiLCIjIitsKS5oaWRlKCk7dmFyIGU9TygpO3JldHVybi0xIT09ZVswXSYmZVsxXVtlWzBdLTFdJiYoWWUoYSkudHJpZ2dlckhhbmRsZXIoImpxR3JpZFZpZXdSb3dDbGlja1BnQnV0dG9ucyIsWyJwcmV2IixZZSgiIyIrbyksZVsxXVtlWzBdXV0pLFllLmpncmlkLmlzRnVuY3Rpb24oQi5vbmNsaWNrUGdCdXR0b25zKSYmQi5vbmNsaWNrUGdCdXR0b25zLmNhbGwoYSwicHJldiIsWWUoIiMiK28pLGVbMV1bZVswXV0pLE4oZVsxXVtlWzBdLTFdLGEpLGEucC5tdWx0aXNlbGVjdCYmSlthLnAuaWRdLnZpZXdzZWxlY3RlZHx8WWUoYSkuanFHcmlkKCJzZXRTZWxlY3Rpb24iLGVbMV1bZVswXS0xXSksWWUoYSkudHJpZ2dlckhhbmRsZXIoImpxR3JpZFZpZXdSb3dBZnRlckNsaWNrUGdCdXR0b25zIixbInByZXYiLFllKCIjIitvKSxlWzFdW2VbMF0tMV1dKSxZZS5qZ3JpZC5pc0Z1bmN0aW9uKEIuYWZ0ZXJjbGlja1BnQnV0dG9ucykmJkIuYWZ0ZXJjbGlja1BnQnV0dG9ucy5jYWxsKGEsInByZXYiLFllKCIjIitvKSxlWzFdW2VbMF0tMV0pLE0oZVswXS0xLGUpKSxSKCksITF9KSxPKCkpO00ocFswXSxwKSx0aGlzLnJlZnJlc2hWaWV3Rm9ybT1mdW5jdGlvbihlLHQpeyEodD12b2lkIDA9PT10PyExOnQpJiZQIT09ZXx8TihlLHRoaXMpLHQmJihQPWUpfX19ZnVuY3Rpb24gUigpeyEwIT09SlthLnAuaWRdLmNsb3NlT25Fc2NhcGUmJiEwIT09SlthLnAuaWRdLm5hdmtleXNbMF18fHNldFRpbWVvdXQoZnVuY3Rpb24oKXtZZSgiLnVpLWpxZGlhbG9nLXRpdGxlYmFyLWNsb3NlIiwiIyIrWWUuamdyaWQuanFJRCh0Lm1vZGFsaGVhZCkpLmF0dHIoInRhYmluZGV4IiwiLTEiKS5mb2N1cygpfSwwKX1mdW5jdGlvbiBOKGUsdCl7dmFyIHIsaSxvLGE9MCxuPVllKHQpLmpxR3JpZCgiZ2V0SW5kIixlLCEwKTtuJiYoWWUoInRkIixuKS5lYWNoKGZ1bmN0aW9uKGUpe3I9dC5wLmNvbE1vZGVsW2VdLm5hbWUsaT0oIXQucC5jb2xNb2RlbFtlXS5lZGl0cnVsZXN8fCEwIT09dC5wLmNvbE1vZGVsW2VdLmVkaXRydWxlcy5lZGl0aGlkZGVuKSYmITA9PT10LnAuY29sTW9kZWxbZV0uaGlkZGVuLCJjYiIhPT1yJiYic3ViZ3JpZCIhPT1yJiYicm4iIT09ciYmInNjIiE9PXImJihvPXI9PT10LnAuRXhwYW5kQ29sdW1uJiYhMD09PXQucC50cmVlR3JpZD9ZZSh0aGlzKS50ZXh0KCk6WWUodGhpcykuaHRtbCgpLHI9WWUuamdyaWQuanFJRCgidl8iK3IpLFllKCIjIityKyIgc3BhbiIsIiMiK2wpLmh0bWwobyksaSYmWWUoIiMiK3IsIiMiK2wpLnBhcmVudHMoInRyIikuZmlyc3QoKS5oaWRlKCksYSsrKX0pLDA8YSkmJlllKCIjaWRfZyIsIiMiK2wpLnZhbChlKX1mdW5jdGlvbiBNKGUsdCl7dmFyIHI9dFsxXS5sZW5ndGgtMTswPT09ZT9ZZSgiI3BEYXRhIiwiIyIrbCsiXzIiKS5hZGRDbGFzcyh6LmRpc2FibGVkKTp2b2lkIDAhPT10WzFdW2UtMV0mJlllKCIjIitZZS5qZ3JpZC5qcUlEKHRbMV1bZS0xXSkpLmhhc0NsYXNzKHouZGlzYWJsZWQpP1llKCIjcERhdGEiLGwrIl8yIikuYWRkQ2xhc3Moei5kaXNhYmxlZCk6WWUoIiNwRGF0YSIsIiMiK2wrIl8yIikucmVtb3ZlQ2xhc3Moei5kaXNhYmxlZCksZT09PXI/WWUoIiNuRGF0YSIsIiMiK2wrIl8yIikuYWRkQ2xhc3Moei5kaXNhYmxlZCk6dm9pZCAwIT09dFsxXVtlKzFdJiZZZSgiIyIrWWUuamdyaWQuanFJRCh0WzFdW2UrMV0pKS5oYXNDbGFzcyh6LmRpc2FibGVkKT9ZZSgiI25EYXRhIixsKyJfMiIpLmFkZENsYXNzKHouZGlzYWJsZWQpOlllKCIjbkRhdGEiLCIjIitsKyJfMiIpLnJlbW92ZUNsYXNzKHouZGlzYWJsZWQpfWZ1bmN0aW9uIE8oKXt2YXIgZT1ZZShhKS5qcUdyaWQoImdldERhdGFJRHMiKSx0PVllKCIjaWRfZyIsIiMiK2wpLnZhbCgpO2lmKGEucC5tdWx0aXNlbGVjdCYmSlthLnAuaWRdLnZpZXdzZWxlY3RlZCl7Zm9yKHZhciByPVtdLGk9MCxvPWUubGVuZ3RoO2k8bztpKyspLTEhPT1ZZS5pbkFycmF5KGVbaV0sYS5wLnNlbGFycnJvdykmJnIucHVzaChlW2ldKTtyZXR1cm5bWWUuaW5BcnJheSh0LHIpLHJdfXJldHVybltZZS5pbkFycmF5KHQsZSksZV19fSl9LGRlbEdyaWRSb3c6ZnVuY3Rpb24oaCxnKXt2YXIgZT1ZZS5qZ3JpZC5nZXRSZWdpb25hbCh0aGlzWzBdLCJkZWwiKSx0PXRoaXNbMF0ucC5zdHlsZVVJLGY9WWUuamdyaWQuc3R5bGVVSVt0XS5mb3JtZWRpdCxtPVllLmpncmlkLnN0eWxlVUlbdF0uY29tbW9uO3JldHVybiBnPVllLmV4dGVuZCghMCx7dG9wOjAsbGVmdDowLHdpZHRoOjI0MCxoZWlnaHQ6ImF1dG8iLGRhdGFoZWlnaHQ6ImF1dG8iLG1vZGFsOiExLG92ZXJsYXk6MzAsZHJhZzohMCxyZXNpemU6ITAsdXJsOiIiLG10eXBlOiJQT1NUIixyZWxvYWRBZnRlclN1Ym1pdDohMCxiZWZvcmVTaG93Rm9ybTpudWxsLGJlZm9yZUluaXREYXRhOm51bGwsYWZ0ZXJTaG93Rm9ybTpudWxsLGJlZm9yZVN1Ym1pdDpudWxsLG9uY2xpY2tTdWJtaXQ6bnVsbCxhZnRlclN1Ym1pdDpudWxsLGpxTW9kYWw6ITAsY2xvc2VPbkVzY2FwZTohMSxkZWxEYXRhOnt9LGRlbGljb246W10sY2FuY2VsaWNvbjpbXSxvbkNsb3NlOm51bGwsYWpheERlbE9wdGlvbnM6e30scHJvY2Vzc2luZzohMSxzZXJpYWxpemVEZWxEYXRhOm51bGwsdXNlRGF0YVByb3h5OiExfSxlLGd8fHt9KSxKW1llKHRoaXMpWzBdLnAuaWRdPWcsdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGw9dGhpcztpZihsLmdyaWQmJmgpe3ZhciBzLGksbyxkPWwucC5pZCxwPXt9LGU9ITAsYz0iRGVsVGJsXyIrWWUuamdyaWQuanFJRChkKSxyPSJEZWxUYmxfIitkLHU9e3RoZW1vZGFsOiJkZWxtb2QiK2QsbW9kYWxoZWFkOiJkZWxoZCIrZCxtb2RhbGNvbnRlbnQ6ImRlbGNudCIrZCxzY3JvbGxlbG06Y307aWYoSltsLnAuaWRdLnN0eWxlVUk9bC5wLnN0eWxlVUl8fCJqUXVlcnlVSSIsQXJyYXkuaXNBcnJheShoKSYmKGg9aC5qb2luKCkpLHZvaWQgMCE9PVllKCIjIitZZS5qZ3JpZC5qcUlEKHUudGhlbW9kYWwpKVswXSl7aWYoITE9PT0oZT0oZT12b2lkIDA9PT0oZT1ZZShsKS50cmlnZ2VySGFuZGxlcigianFHcmlkRGVsUm93QmVmb3JlSW5pdERhdGEiLFtZZSgiIyIrYyldKSk/ITA6ZSkmJlllLmpncmlkLmlzRnVuY3Rpb24oSltsLnAuaWRdLmJlZm9yZUluaXREYXRhKT9KW2wucC5pZF0uYmVmb3JlSW5pdERhdGEuY2FsbChsLFllKCIjIitjKSk6ZSkpcmV0dXJuO1llKCIjRGVsRGF0YT50ZCIsIiMiK2MpLnRleHQoaCksWWUoIiNEZWxFcnJvciIsIiMiK2MpLmhpZGUoKSwhMD09PUpbbC5wLmlkXS5wcm9jZXNzaW5nJiYoSltsLnAuaWRdLnByb2Nlc3Npbmc9ITEsWWUoIiNkRGF0YSIsIiMiK2MpLnJlbW92ZUNsYXNzKG0uYWN0aXZlKSl9ZWxzZXt2YXIgdD1pc05hTihKW2wucC5pZF0uZGF0YWhlaWdodCk/SltsLnAuaWRdLmRhdGFoZWlnaHQ6SltsLnAuaWRdLmRhdGFoZWlnaHQrInB4IixhPWlzTmFOKGcuZGF0YXdpZHRoKT9nLmRhdGF3aWR0aDpnLmRhdGF3aWR0aCsicHgiLGE9IjxkaXYgaWQ9JyIrcisiJyBjbGFzcz0nZm9ybWRhdGEnIHN0eWxlPSd3aWR0aDoiK2ErIjtvdmVyZmxvdzphdXRvO3Bvc2l0aW9uOnJlbGF0aXZlO2hlaWdodDoiK3QrIjsnPiIsdD0oYT0oYT0oYT1hKyI8dGFibGUgY2xhc3M9J0RlbFRhYmxlJz48dGJvZHk+IisoIjx0ciBpZD0nRGVsRXJyb3InIHN0eWxlPSdkaXNwbGF5Om5vbmUnPjx0ZCBjbGFzcz0nIittLmVycm9yKyInPjwvdGQ+PC90cj4iKSkrKCI8dHIgaWQ9J0RlbERhdGEnIHN0eWxlPSdkaXNwbGF5Om5vbmUnPjx0ZCA+IitoKyI8L3RkPjwvdHI+IikpKygnPHRyPjx0ZCBjbGFzcz0iZGVsbXNnIiBzdHlsZT0id2hpdGUtc3BhY2U6cHJlOyI+JytKW2wucC5pZF0ubXNnKyI8L3RkPjwvdHI+PHRyPjx0ZCA+JiMxNjA7PC90ZD48L3RyPiIpKyI8L3Rib2R5PjwvdGFibGU+PC9kaXY+IiwiPGEgaWQ9J2REYXRhJyBjbGFzcz0nZm0tYnV0dG9uICIrbS5idXR0b24rIic+IitnLmJTdWJtaXQrIjwvYT4iKSxuPSI8YSBpZD0nZURhdGEnIGNsYXNzPSdmbS1idXR0b24gIittLmJ1dHRvbisiJz4iK2cuYkNhbmNlbCsiPC9hPiIsdD1BcnJheS5pc0FycmF5KEpbbC5wLmlkXS5idXR0b25zKT9ZZS5qZ3JpZC5idWlsZEJ1dHRvbnMoSltsLnAuaWRdLmJ1dHRvbnMsdCtuLG0pOnQrbixuPVllKCIudWktanFncmlkIikuY3NzKCJmb250LXNpemUiKXx8IjExcHgiO2lmKGErPSI8dGFibGUgY2xhc3M9J0VkaXRUYWJsZSB1aS1jb21tb24tdGFibGUnIGlkPSciK2MrIl8yJz48dGJvZHk+PHRyPjx0ZD48aHIgY2xhc3M9JyIrbS5jb250ZW50KyInIHN0eWxlPSdtYXJnaW46MXB4Jy8+PC90ZD48L3RyPjx0cj48dGQgY2xhc3M9J0RlbEJ1dHRvbiBFZGl0QnV0dG9uJz4iK3QrIjwvdGQ+PC90cj48L3Rib2R5PjwvdGFibGU+IixnLmdib3g9IiNnYm94XyIrWWUuamdyaWQuanFJRChkKSxZZS5qZ3JpZC5jcmVhdGVNb2RhbCh1LGEsSltsLnAuaWRdLCIjZ3ZpZXdfIitZZS5qZ3JpZC5qcUlEKGwucC5pZCksWWUoIiNndmlld18iK1llLmpncmlkLmpxSUQobC5wLmlkKSlbMF0sbnVsbCx7ImZvbnQtc2l6ZSI6bn0pLFllKCIuZm0tYnV0dG9uIiwiIyIrYysiXzIiKS5ob3ZlcihmdW5jdGlvbigpe1llKHRoaXMpLmFkZENsYXNzKG0uaG92ZXIpfSxmdW5jdGlvbigpe1llKHRoaXMpLnJlbW92ZUNsYXNzKG0uaG92ZXIpfSksZy5kZWxpY29uPVllLmV4dGVuZChbITAsImxlZnQiLGYuaWNvbl9kZWxdLEpbbC5wLmlkXS5kZWxpY29uKSxnLmNhbmNlbGljb249WWUuZXh0ZW5kKFshMCwibGVmdCIsZi5pY29uX2NhbmNlbF0sSltsLnAuaWRdLmNhbmNlbGljb24pLCEwPT09Zy5kZWxpY29uWzBdJiZZZSgiI2REYXRhIiwiIyIrYysiXzIiKS5hZGRDbGFzcygicmlnaHQiPT09Zy5kZWxpY29uWzFdPyJmbS1idXR0b24taWNvbi1yaWdodCI6ImZtLWJ1dHRvbi1pY29uLWxlZnQiKS5hcHBlbmQoIjxzcGFuIGNsYXNzPSciK20uaWNvbl9iYXNlKyIgIitnLmRlbGljb25bMl0rIic+PC9zcGFuPiIpLCEwPT09Zy5jYW5jZWxpY29uWzBdJiZZZSgiI2VEYXRhIiwiIyIrYysiXzIiKS5hZGRDbGFzcygicmlnaHQiPT09Zy5jYW5jZWxpY29uWzFdPyJmbS1idXR0b24taWNvbi1yaWdodCI6ImZtLWJ1dHRvbi1pY29uLWxlZnQiKS5hcHBlbmQoIjxzcGFuIGNsYXNzPSciK20uaWNvbl9iYXNlKyIgIitnLmNhbmNlbGljb25bMl0rIic+PC9zcGFuPiIpLFllKCIjZERhdGEiLCIjIitjKyJfMiIpLmNsaWNrKGZ1bmN0aW9uKCl7dmFyIGUsYT1bITAsIiJdLG49WWUoIiNEZWxEYXRhPnRkIiwiIyIrYykudGV4dCgpO2lmKHA9e30sdm9pZCAwPT09KHA9WWUobCkudHJpZ2dlckhhbmRsZXIoImpxR3JpZERlbFJvd0NsaWNrU3VibWl0IixbSltsLnAuaWRdLG5dKSkmJlllLmpncmlkLmlzRnVuY3Rpb24oSltsLnAuaWRdLm9uY2xpY2tTdWJtaXQpJiYocD1KW2wucC5pZF0ub25jbGlja1N1Ym1pdC5jYWxsKGwsSltsLnAuaWRdLG4pfHx7fSksKGE9KGE9dm9pZCAwPT09KGE9WWUobCkudHJpZ2dlckhhbmRsZXIoImpxR3JpZERlbFJvd0JlZm9yZVN1Ym1pdCIsW25dKSk/WyEwLCIiLCIiXTphKVswXSYmWWUuamdyaWQuaXNGdW5jdGlvbihKW2wucC5pZF0uYmVmb3JlU3VibWl0KT9KW2wucC5pZF0uYmVmb3JlU3VibWl0LmNhbGwobCxuKTphKVswXSYmIUpbbC5wLmlkXS5wcm9jZXNzaW5nKXtpZihKW2wucC5pZF0ucHJvY2Vzc2luZz0hMCxpPWwucC5wcm1OYW1lcyxzPVllLmV4dGVuZCh7fSxKW2wucC5pZF0uZGVsRGF0YSxwKSxvPWkub3BlcixzW29dPWkuZGVsb3BlcixvPWkuaWQsIShuPVN0cmluZyhuKS5zcGxpdCgiLCIpKS5sZW5ndGgpcmV0dXJuITE7Zm9yKGUgaW4gbiluLmhhc093blByb3BlcnR5KGUpJiYobltlXT1ZZS5qZ3JpZC5zdHJpcFByZWYobC5wLmlkUHJlZml4LG5bZV0pKTtzW29dPW4uam9pbigpLFllKHRoaXMpLmFkZENsYXNzKG0uYWN0aXZlKTt2YXIgdCxyPVllLmV4dGVuZCh7dXJsOkpbbC5wLmlkXS51cmx8fFllKGwpLmpxR3JpZCgiZ2V0R3JpZFBhcmFtIiwiZWRpdHVybCIpLHR5cGU6SltsLnAuaWRdLm10eXBlLGRhdGE6WWUuamdyaWQuaXNGdW5jdGlvbihKW2wucC5pZF0uc2VyaWFsaXplRGVsRGF0YSk/SltsLnAuaWRdLnNlcmlhbGl6ZURlbERhdGEuY2FsbChsLHMpOnMsc3VjY2VzczpmdW5jdGlvbihlLHQscil7dmFyIGksbztpZihZZSgiI2REYXRhIiwiIyIrYysiXzIiKS5yZW1vdmVDbGFzcyhtLmFjdGl2ZSksMzAwPD1yLnN0YXR1cyYmMzA0IT09ci5zdGF0dXM/KGFbMF09ITEsYVsxXT1ZZShsKS50cmlnZ2VySGFuZGxlcigianFHcmlkRGVsUm93RXJyb3JUZXh0Rm9ybWF0Iixbcl0pLFllLmpncmlkLmlzRnVuY3Rpb24oSltsLnAuaWRdLmVycm9yVGV4dEZvcm1hdCkmJihhWzFdPUpbbC5wLmlkXS5lcnJvclRleHRGb3JtYXQuY2FsbChsLHIpKSx2b2lkIDA9PT1hWzFdJiYoYVsxXT10KyIgU3RhdHVzOiAnIityLnN0YXR1c1RleHQrIicuIEVycm9yIGNvZGU6ICIrci5zdGF0dXMpKTooYT12b2lkIDA9PT0oYT1ZZShsKS50cmlnZ2VySGFuZGxlcigianFHcmlkRGVsUm93QWZ0ZXJTdWJtaXQiLFtyLHNdKSk/WyEwLCIiLCIiXTphKVswXSYmWWUuamdyaWQuaXNGdW5jdGlvbihKW2wucC5pZF0uYWZ0ZXJTdWJtaXQpJiYoYT1KW2wucC5pZF0uYWZ0ZXJTdWJtaXQuY2FsbChsLHIscykpLCExPT09YVswXSlZZSgiI0RlbEVycm9yPnRkIiwiIyIrYykuaHRtbChhWzFdKSxZZSgiI0RlbEVycm9yIiwiIyIrYykuc2hvdygpO2Vsc2V7aWYoSltsLnAuaWRdLnJlbG9hZEFmdGVyU3VibWl0JiYibG9jYWwiIT09bC5wLmRhdGF0eXBlKVllKGwpLnRyaWdnZXIoInJlbG9hZEdyaWQiKTtlbHNle2lmKCEwPT09bC5wLnRyZWVHcmlkKXRyeXtZZShsKS5qcUdyaWQoImRlbFRyZWVOb2RlIixsLnAuaWRQcmVmaXgrblswXSwhMCl9Y2F0Y2goZSl7fWVsc2UgZm9yKGk9MDtpPG4ubGVuZ3RoO2krKylZZShsKS5qcUdyaWQoImRlbFJvd0RhdGEiLGwucC5pZFByZWZpeCtuW2ldKTtsLnAuc2Vscm93PW51bGwsbC5wLnNlbGFycnJvdz1bXX0oWWUuamdyaWQuaXNGdW5jdGlvbihKW2wucC5pZF0uYWZ0ZXJDb21wbGV0ZSl8fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChZZS5fZGF0YShZZShsKVswXSwiZXZlbnRzIiksImpxR3JpZERlbFJvd0FmdGVyQ29tcGxldGUiKSkmJihvPXIsc2V0VGltZW91dChmdW5jdGlvbigpe1llKGwpLnRyaWdnZXJIYW5kbGVyKCJqcUdyaWREZWxSb3dBZnRlckNvbXBsZXRlIixbbyxzXSk7dHJ5e0pbbC5wLmlkXS5hZnRlckNvbXBsZXRlLmNhbGwobCxvLHMpfWNhdGNoKGUpe319LDUwMCkpfUpbbC5wLmlkXS5wcm9jZXNzaW5nPSExLGFbMF0mJlllLmpncmlkLmhpZGVNb2RhbCgiIyIrWWUuamdyaWQuanFJRCh1LnRoZW1vZGFsKSx7Z2I6IiNnYm94XyIrWWUuamdyaWQuanFJRChkKSxqcW06Zy5qcU1vZGFsLG9uQ2xvc2U6SltsLnAuaWRdLm9uQ2xvc2V9KX19LFllLmpncmlkLmFqYXhPcHRpb25zLEpbbC5wLmlkXS5hamF4RGVsT3B0aW9ucyk7ci51cmx8fEpbbC5wLmlkXS51c2VEYXRhUHJveHl8fChZZS5qZ3JpZC5pc0Z1bmN0aW9uKGwucC5kYXRhUHJveHkpP0pbbC5wLmlkXS51c2VEYXRhUHJveHk9ITA6KGFbMF09ITEsYVsxXSs9IiAiK1llLmpncmlkLmdldFJlZ2lvbmFsKGwsImVycm9ycy5ub3VybCIpKSksYVswXSYmKEpbbC5wLmlkXS51c2VEYXRhUHJveHk/ITE9PT0odD12b2lkIDA9PT0odD1sLnAuZGF0YVByb3h5LmNhbGwobCxyLCJkZWxfIitsLnAuaWQpKT9bITAsIiJdOnQpWzBdPyhhWzBdPSExLGFbMV09dFsxXXx8IkVycm9yIGRlbGV0aW5nIHRoZSBzZWxlY3RlZCByb3chIik6WWUuamdyaWQuaGlkZU1vZGFsKCIjIitZZS5qZ3JpZC5qcUlEKHUudGhlbW9kYWwpLHtnYjoiI2dib3hfIitZZS5qZ3JpZC5qcUlEKGQpLGpxbTpnLmpxTW9kYWwsb25DbG9zZTpKW2wucC5pZF0ub25DbG9zZX0pOiJjbGllbnRBcnJheSI9PT1yLnVybD8ocz1yLmRhdGEsci5zdWNjZXNzKHtzdGF0dXM6MjAwLHN0YXR1c1RleHQ6IiJ9LCIiKSk6InN0b3JhZ2UiPT09ci51cmw/WWUobCkuanFHcmlkKCJkZWxldGVTdG9yYWdlUmVjb3JkIixuKS50aGVuKGZ1bmN0aW9uKGUpeyJjb21wbGV0ZSI9PT1lLnR5cGUmJnIuc3VjY2VzcyhuLCIiLHtzdGF0dXM6MjAwLHN0YXR1c1RleHQ6IiJ9KX0pLmNhdGNoKGZ1bmN0aW9uKGUpe1llLmpncmlkLmluZm9fZGlhbG9nKCJFcnJvciIsZS50YXJnZXQuZXJyb3IubmFtZSsiIDogIitlLnRhcmdldC5lcnJvci5tZXNzYWdlLCJDbG9zZSIpfSk6WWUuYWpheChyKSl9cmV0dXJuITE9PT1hWzBdJiYoWWUoIiNEZWxFcnJvcj50ZCIsIiMiK2MpLmh0bWwoYVsxXSksWWUoIiNEZWxFcnJvciIsIiMiK2MpLnNob3coKSksITF9KSxZZSgiI2VEYXRhIiwiIyIrYysiXzIiKS5jbGljayhmdW5jdGlvbigpe3JldHVybiBZZS5qZ3JpZC5oaWRlTW9kYWwoIiMiK1llLmpncmlkLmpxSUQodS50aGVtb2RhbCkse2diOiIjZ2JveF8iK1llLmpncmlkLmpxSUQoZCksanFtOkpbbC5wLmlkXS5qcU1vZGFsLG9uQ2xvc2U6SltsLnAuaWRdLm9uQ2xvc2V9KSwhMX0pLFllKCIjIitjKyJfMiIpLmZpbmQoIltkYXRhLWluZGV4XSIpLmVhY2goZnVuY3Rpb24oKXt2YXIgdD1wYXJzZUludChZZSh0aGlzKS5hdHRyKCJkYXRhLWluZGV4IiksMTApOzA8PXQmJmcuYnV0dG9uc1t0XS5oYXNPd25Qcm9wZXJ0eSgiY2xpY2siKSYmWWUodGhpcykub24oImNsaWNrIixmdW5jdGlvbihlKXtnLmJ1dHRvbnNbdF0uY2xpY2suY2FsbChsLFllKCIjIityKVswXSxKW2wucC5pZF0sZSl9KX0pLCExPT09KGU9KGU9dm9pZCAwPT09KGU9WWUobCkudHJpZ2dlckhhbmRsZXIoImpxR3JpZERlbFJvd0JlZm9yZUluaXREYXRhIixbWWUoIiMiK2MpXSkpPyEwOmUpJiZZZS5qZ3JpZC5pc0Z1bmN0aW9uKEpbbC5wLmlkXS5iZWZvcmVJbml0RGF0YSk/SltsLnAuaWRdLmJlZm9yZUluaXREYXRhLmNhbGwobCxZZSgiIyIrYykpOmUpKXJldHVybn1ZZShsKS50cmlnZ2VySGFuZGxlcigianFHcmlkRGVsUm93QmVmb3JlU2hvd0Zvcm0iLFtZZSgiIyIrYyldKSxZZS5qZ3JpZC5pc0Z1bmN0aW9uKEpbbC5wLmlkXS5iZWZvcmVTaG93Rm9ybSkmJkpbbC5wLmlkXS5iZWZvcmVTaG93Rm9ybS5jYWxsKGwsWWUoIiMiK2MpKSxZZS5qZ3JpZC52aWV3TW9kYWwoIiMiK1llLmpncmlkLmpxSUQodS50aGVtb2RhbCkse2dib3g6IiNnYm94XyIrWWUuamdyaWQuanFJRChkKSxqcW06SltsLnAuaWRdLmpxTW9kYWwsb3ZlcmxheTpKW2wucC5pZF0ub3ZlcmxheSxtb2RhbDpKW2wucC5pZF0ubW9kYWx9KSxZZShsKS50cmlnZ2VySGFuZGxlcigianFHcmlkRGVsUm93QWZ0ZXJTaG93Rm9ybSIsW1llKCIjIitjKV0pLFllLmpncmlkLmlzRnVuY3Rpb24oSltsLnAuaWRdLmFmdGVyU2hvd0Zvcm0pJiZKW2wucC5pZF0uYWZ0ZXJTaG93Rm9ybS5jYWxsKGwsWWUoIiMiK2MpKSwhMD09PUpbbC5wLmlkXS5jbG9zZU9uRXNjYXBlJiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7WWUoIi51aS1qcWRpYWxvZy10aXRsZWJhci1jbG9zZSIsIiMiK1llLmpncmlkLmpxSUQodS5tb2RhbGhlYWQpKS5hdHRyKCJ0YWJpbmRleCIsIi0xIikuZm9jdXMoKX0sMCl9fSl9LG5hdkdyaWQ6ZnVuY3Rpb24oZyxmLG0sdixqLGIsdyl7dmFyIHk9WWUuamdyaWQuZ2V0UmVnaW9uYWwodGhpc1swXSwibmF2IikseD10aGlzWzBdLnAuc3R5bGVVSSxlPVllLmpncmlkLnN0eWxlVUlbeF0ubmF2aWdhdG9yLF89WWUuamdyaWQuc3R5bGVVSVt4XS5jb21tb247cmV0dXJuIGY9WWUuZXh0ZW5kKHtlZGl0OiEwLGVkaXRpY29uOmUuaWNvbl9lZGl0X25hdixhZGQ6ITAsYWRkaWNvbjplLmljb25fYWRkX25hdixkZWw6ITAsZGVsaWNvbjplLmljb25fZGVsX25hdixzZWFyY2g6ITAsc2VhcmNoaWNvbjplLmljb25fc2VhcmNoX25hdixyZWZyZXNoOiEwLHJlZnJlc2hpY29uOmUuaWNvbl9yZWZyZXNoX25hdixyZWZyZXNoc3RhdGU6ImZpcnN0cGFnZSIsdmlldzohMSx2aWV3aWNvbjplLmljb25fdmlld19uYXYscG9zaXRpb246ImxlZnQiLGNsb3NlT25Fc2NhcGU6ITAsYmVmb3JlUmVmcmVzaDpudWxsLGFmdGVyUmVmcmVzaDpudWxsLGNsb25lVG9Ub3A6ITEsYWxlcnR3aWR0aDoyMDAsYWxlcnRoZWlnaHQ6ImF1dG8iLGFsZXJ0dG9wOm51bGwsYWxlcnRsZWZ0Om51bGwsYWxlcnR6SW5kZXg6bnVsbCxkcm9wbWVudTohMSxuYXZCdXR0b25UZXh0OiIifSx5LGZ8fHt9KSx0aGlzLmVhY2goZnVuY3Rpb24oKXtpZighdGhpcy5wLm5hdkdyaWQpe3ZhciB0LHI9e3RoZW1vZGFsOiJhbGVydG1vZF8iK3RoaXMucC5pZCxtb2RhbGhlYWQ6ImFsZXJ0aGRfIit0aGlzLnAuaWQsbW9kYWxjb250ZW50OiJhbGVydGNudF8iK3RoaXMucC5pZH0saT10aGlzO2lmKGkuZ3JpZCYmInN0cmluZyI9PXR5cGVvZiBnKXtZZShpKS5kYXRhKCJuYXZHcmlkIil8fFllKGkpLmRhdGEoIm5hdkdyaWQiLGYpLHQ9WWUoaSkuZGF0YSgibmF2R3JpZCIpLGkucC5mb3JjZV9yZWdpb25hbCYmKHQ9WWUuZXh0ZW5kKHQseSkpLHZvaWQgMD09PVllKCIjIityLnRoZW1vZGFsKVswXSYmKHQuYWxlcnR0b3B8fHQuYWxlcnRsZWZ0fHwoKG89WWUuamdyaWQuZmluZFBvcyh0aGlzKSlbMF09TWF0aC5yb3VuZChvWzBdKSxvWzFdPU1hdGgucm91bmQob1sxXSksMD09PShlPWlzTmFOKHRoaXMucC5oZWlnaHQpP1llKGkuZ3JpZC5iRGl2KS5oZWlnaHQoKTp0aGlzLnAuaGVpZ2h0KSYmKGU9MjAwKSx0LmFsZXJ0bGVmdD1vWzBdK3RoaXMucC53aWR0aC8yLXBhcnNlSW50KHQuYWxlcnR3aWR0aCwxMCkvMix0LmFsZXJ0dG9wPW9bMV0rZS8yLTI1KSxvPVllKCIudWktanFncmlkIikuY3NzKCJmb250LXNpemUiKXx8IjExcHgiLFllLmpncmlkLmNyZWF0ZU1vZGFsKHIsIjxkaXY+Iit0LmFsZXJ0dGV4dCsiPC9kaXY+PHNwYW4gdGFiaW5kZXg9JzAnPjxzcGFuIHRhYmluZGV4PSctMScgaWQ9J2pxZ19hbHJ0Jz48L3NwYW4+PC9zcGFuPiIse2dib3g6IiNnYm94XyIrWWUuamdyaWQuanFJRChpLnAuaWQpLGpxTW9kYWw6ITAsZHJhZzohMCxyZXNpemU6ITAsY2FwdGlvbjp0LmFsZXJ0Y2FwLHRvcDp0LmFsZXJ0dG9wLGxlZnQ6dC5hbGVydGxlZnQsd2lkdGg6dC5hbGVydHdpZHRoLGhlaWdodDp0LmFsZXJ0aGVpZ2h0LGNsb3NlT25Fc2NhcGU6dC5jbG9zZU9uRXNjYXBlLHpJbmRleDp0LmFsZXJ0ekluZGV4LHN0eWxlVUk6aS5wLnN0eWxlVUl9LCIjZ3ZpZXdfIitZZS5qZ3JpZC5qcUlEKGkucC5pZCksWWUoIiNnYm94XyIrWWUuamdyaWQuanFJRChpLnAuaWQpKVswXSwhMCx7ImZvbnQtc2l6ZSI6b30pKTt2YXIgZSxvLGEsbj0xLGw9ZnVuY3Rpb24oKXtZZSh0aGlzKS5oYXNDbGFzcyhfLmRpc2FibGVkKXx8WWUodGhpcykuYWRkQ2xhc3MoXy5ob3Zlcil9LHM9ZnVuY3Rpb24oKXtZZSh0aGlzKS5yZW1vdmVDbGFzcyhfLmhvdmVyKX07Zm9yKHQuY2xvbmVUb1RvcCYmaS5wLnRvcHBhZ2VyJiYobj0yKSxhPTA7YTxuO2ErKyl7dmFyIGQscCxjLHU9WWUoIjx0YWJsZSBjbGFzcz0ndWktcGctdGFibGUgbmF2dGFibGUgdWktY29tbW9uLXRhYmxlJz48dGJvZHk+PHRyPjwvdHI+PC90Ym9keT48L3RhYmxlPiIpLGg9Ijx0ZCBjbGFzcz0ndWktcGctYnV0dG9uICIrXy5kaXNhYmxlZCsiJyBzdHlsZT0nd2lkdGg6NHB4Oyc+PHNwYW4gY2xhc3M9J3VpLXNlcGFyYXRvcic+PC9zcGFuPjwvdGQ+IjswPT09YT8oMD09PShwPWcpLmluZGV4T2YoIiMiKSYmKHA9cC5zdWJzdHJpbmcoMSkscD0iIyIrWWUuamdyaWQuanFJRChwKSksYz1pLnAuaWQscD09PWkucC50b3BwYWdlciYmKGMrPSJfdG9wIixuPTEpKToocD1pLnAudG9wcGFnZXIsYz1pLnAuaWQrIl90b3AiKSwicnRsIj09PWkucC5kaXJlY3Rpb24mJlllKHUpLmF0dHIoImRpciIsInJ0bCIpLmNzcygiZmxvYXQiLCJyaWdodCIpLHY9dnx8e30sdC5hZGQmJihkPVllKCI8dGQgY2xhc3M9J3VpLXBnLWJ1dHRvbiAiK18uY29ybmVyYWxsKyInPjwvdGQ+IiksWWUoZCkuYXBwZW5kKCI8ZGl2IGNsYXNzPSd1aS1wZy1kaXYnPjxzcGFuIGNsYXNzPSciK18uaWNvbl9iYXNlKyIgIit0LmFkZGljb24rIic+PC9zcGFuPiIrdC5hZGR0ZXh0KyI8L2Rpdj4iKSxZZSgidHIiLHUpLmFwcGVuZChkKSxZZShkLHUpLmF0dHIoe3RpdGxlOnQuYWRkdGl0bGV8fCIiLGlkOnYuaWR8fCJhZGRfIitjfSkuY2xpY2soZnVuY3Rpb24oKXtyZXR1cm4gWWUodGhpcykuaGFzQ2xhc3MoXy5kaXNhYmxlZCl8fChZZS5qZ3JpZC5zZXRTZWxOYXZJbmRleChpLHRoaXMpLFllLmpncmlkLmlzRnVuY3Rpb24odC5hZGRmdW5jKT90LmFkZGZ1bmMuY2FsbChpKTpZZShpKS5qcUdyaWQoImVkaXRHcmlkUm93IiwibmV3Iix2KSksITF9KS5ob3ZlcihsLHMpLGQ9bnVsbCksbT1tfHx7fSx0LmVkaXQmJihkPVllKCI8dGQgY2xhc3M9J3VpLXBnLWJ1dHRvbiAiK18uY29ybmVyYWxsKyInPjwvdGQ+IiksWWUoZCkuYXBwZW5kKCI8ZGl2IGNsYXNzPSd1aS1wZy1kaXYnPjxzcGFuIGNsYXNzPSciK18uaWNvbl9iYXNlKyIgIit0LmVkaXRpY29uKyInPjwvc3Bhbj4iK3QuZWRpdHRleHQrIjwvZGl2PiIpLFllKCJ0ciIsdSkuYXBwZW5kKGQpLFllKGQsdSkuYXR0cih7dGl0bGU6dC5lZGl0dGl0bGV8fCIiLGlkOm0uaWR8fCJlZGl0XyIrY30pLmNsaWNrKGZ1bmN0aW9uKCl7dmFyIGU7cmV0dXJuIFllKHRoaXMpLmhhc0NsYXNzKF8uZGlzYWJsZWQpfHwoKGU9aS5wLnNlbHJvdyk/KFllLmpncmlkLnNldFNlbE5hdkluZGV4KGksdGhpcyksWWUuamdyaWQuaXNGdW5jdGlvbih0LmVkaXRmdW5jKT90LmVkaXRmdW5jLmNhbGwoaSxlKTpZZShpKS5qcUdyaWQoImVkaXRHcmlkUm93IixlLG0pKTooWWUuamdyaWQudmlld01vZGFsKCIjIityLnRoZW1vZGFsLHtnYm94OiIjZ2JveF8iK1llLmpncmlkLmpxSUQoaS5wLmlkKSxqcW06ITB9KSxZZSgiI2pxZ19hbHJ0IikuZm9jdXMoKSkpLCExfSkuaG92ZXIobCxzKSxkPW51bGwpLHc9d3x8e30sdC52aWV3JiYoZD1ZZSgiPHRkIGNsYXNzPSd1aS1wZy1idXR0b24gIitfLmNvcm5lcmFsbCsiJz48L3RkPiIpLFllKGQpLmFwcGVuZCgiPGRpdiBjbGFzcz0ndWktcGctZGl2Jz48c3BhbiBjbGFzcz0nIitfLmljb25fYmFzZSsiICIrdC52aWV3aWNvbisiJz48L3NwYW4+Iit0LnZpZXd0ZXh0KyI8L2Rpdj4iKSxZZSgidHIiLHUpLmFwcGVuZChkKSxZZShkLHUpLmF0dHIoe3RpdGxlOnQudmlld3RpdGxlfHwiIixpZDp3LmlkfHwidmlld18iK2N9KS5jbGljayhmdW5jdGlvbigpe3ZhciBlO3JldHVybiBZZSh0aGlzKS5oYXNDbGFzcyhfLmRpc2FibGVkKXx8KChlPWkucC5zZWxyb3cpPyhZZS5qZ3JpZC5zZXRTZWxOYXZJbmRleChpLHRoaXMpLFllLmpncmlkLmlzRnVuY3Rpb24odC52aWV3ZnVuYyk/dC52aWV3ZnVuYy5jYWxsKGksZSk6WWUoaSkuanFHcmlkKCJ2aWV3R3JpZFJvdyIsZSx3KSk6KFllLmpncmlkLnZpZXdNb2RhbCgiIyIrci50aGVtb2RhbCx7Z2JveDoiI2dib3hfIitZZS5qZ3JpZC5qcUlEKGkucC5pZCksanFtOiEwfSksWWUoIiNqcWdfYWxydCIpLmZvY3VzKCkpKSwhMX0pLmhvdmVyKGwscyksZD1udWxsKSxqPWp8fHt9LHQuZGVsJiYoZD1ZZSgiPHRkIGNsYXNzPSd1aS1wZy1idXR0b24gIitfLmNvcm5lcmFsbCsiJz48L3RkPiIpLFllKGQpLmFwcGVuZCgiPGRpdiBjbGFzcz0ndWktcGctZGl2Jz48c3BhbiBjbGFzcz0nIitfLmljb25fYmFzZSsiICIrdC5kZWxpY29uKyInPjwvc3Bhbj4iK3QuZGVsdGV4dCsiPC9kaXY+IiksWWUoInRyIix1KS5hcHBlbmQoZCksWWUoZCx1KS5hdHRyKHt0aXRsZTp0LmRlbHRpdGxlfHwiIixpZDpqLmlkfHwiZGVsXyIrY30pLmNsaWNrKGZ1bmN0aW9uKCl7dmFyIGU7cmV0dXJuIFllKHRoaXMpLmhhc0NsYXNzKF8uZGlzYWJsZWQpfHwoaS5wLm11bHRpc2VsZWN0PzA9PT0oZT1pLnAuc2VsYXJycm93KS5sZW5ndGgmJihlPW51bGwpOmU9aS5wLnNlbHJvdyxlPyhZZS5qZ3JpZC5zZXRTZWxOYXZJbmRleChpLHRoaXMpLFllLmpncmlkLmlzRnVuY3Rpb24odC5kZWxmdW5jKT90LmRlbGZ1bmMuY2FsbChpLGUpOlllKGkpLmpxR3JpZCgiZGVsR3JpZFJvdyIsZSxqKSk6KFllLmpncmlkLnZpZXdNb2RhbCgiIyIrci50aGVtb2RhbCx7Z2JveDoiI2dib3hfIitZZS5qZ3JpZC5qcUlEKGkucC5pZCksanFtOiEwfSksWWUoIiNqcWdfYWxydCIpLmZvY3VzKCkpKSwhMX0pLmhvdmVyKGwscyksZD1udWxsKSwodC5hZGR8fHQuZWRpdHx8dC5kZWx8fHQudmlldykmJlllKCJ0ciIsdSkuYXBwZW5kKGgpLGI9Ynx8e30sdC5zZWFyY2gmJihkPVllKCI8dGQgY2xhc3M9J3VpLXBnLWJ1dHRvbiAiK18uY29ybmVyYWxsKyInPjwvdGQ+IiksWWUoZCkuYXBwZW5kKCI8ZGl2IGNsYXNzPSd1aS1wZy1kaXYnPjxzcGFuIGNsYXNzPSciK18uaWNvbl9iYXNlKyIgIit0LnNlYXJjaGljb24rIic+PC9zcGFuPiIrdC5zZWFyY2h0ZXh0KyI8L2Rpdj4iKSxZZSgidHIiLHUpLmFwcGVuZChkKSxZZShkLHUpLmF0dHIoe3RpdGxlOnQuc2VhcmNodGl0bGV8fCIiLGlkOmIuaWR8fCJzZWFyY2hfIitjfSkuY2xpY2soZnVuY3Rpb24oKXtyZXR1cm4gWWUodGhpcykuaGFzQ2xhc3MoXy5kaXNhYmxlZCl8fChZZS5qZ3JpZC5zZXRTZWxOYXZJbmRleChpLHRoaXMpLFllLmpncmlkLmlzRnVuY3Rpb24odC5zZWFyY2hmdW5jKT90LnNlYXJjaGZ1bmMuY2FsbChpLGIpOlllKGkpLmpxR3JpZCgic2VhcmNoR3JpZCIsYikpLCExfSkuaG92ZXIobCxzKSxiLnNob3dPbkxvYWQmJiEwPT09Yi5zaG93T25Mb2FkJiZZZShkLHUpLmNsaWNrKCksZD1udWxsKSx0LnJlZnJlc2gmJihkPVllKCI8dGQgY2xhc3M9J3VpLXBnLWJ1dHRvbiAiK18uY29ybmVyYWxsKyInPjwvdGQ+IiksWWUoZCkuYXBwZW5kKCI8ZGl2IGNsYXNzPSd1aS1wZy1kaXYnPjxzcGFuIGNsYXNzPSciK18uaWNvbl9iYXNlKyIgIit0LnJlZnJlc2hpY29uKyInPjwvc3Bhbj4iK3QucmVmcmVzaHRleHQrIjwvZGl2PiIpLFllKCJ0ciIsdSkuYXBwZW5kKGQpLFllKGQsdSkuYXR0cih7dGl0bGU6dC5yZWZyZXNodGl0bGV8fCIiLGlkOiJyZWZyZXNoXyIrY30pLmNsaWNrKGZ1bmN0aW9uKCl7aWYoIVllKHRoaXMpLmhhc0NsYXNzKF8uZGlzYWJsZWQpKXtZZS5qZ3JpZC5pc0Z1bmN0aW9uKHQuYmVmb3JlUmVmcmVzaCkmJnQuYmVmb3JlUmVmcmVzaC5jYWxsKGkpLGkucC5zZWFyY2g9ITEsaS5wLnJlc2V0c2VhcmNoPSEwO3RyeXtpZigiY3VycmVudGZpbHRlciIhPT10LnJlZnJlc2hzdGF0ZSl7dmFyIGU9aS5wLmlkO2kucC5wb3N0RGF0YS5maWx0ZXJzPSIiO3RyeXtZZSgiI2Zib3hfIitZZS5qZ3JpZC5qcUlEKGUpKS5qcUZpbHRlcigicmVzZXRGaWx0ZXIiKX1jYXRjaChlKXt9WWUuamdyaWQuaXNGdW5jdGlvbihpLmNsZWFyVG9vbGJhcikmJmkuY2xlYXJUb29sYmFyLmNhbGwoaSwhMSl9fWNhdGNoKGUpe31zd2l0Y2godC5yZWZyZXNoc3RhdGUpe2Nhc2UiZmlyc3RwYWdlIjpZZShpKS50cmlnZ2VyKCJyZWxvYWRHcmlkIixbe3BhZ2U6MX1dKTticmVhaztjYXNlImN1cnJlbnQiOmNhc2UiY3VycmVudGZpbHRlciI6WWUoaSkudHJpZ2dlcigicmVsb2FkR3JpZCIsW3tjdXJyZW50OiEwfV0pfVllLmpncmlkLmlzRnVuY3Rpb24odC5hZnRlclJlZnJlc2gpJiZ0LmFmdGVyUmVmcmVzaC5jYWxsKGkpLFllLmpncmlkLnNldFNlbE5hdkluZGV4KGksdGhpcyl9cmV0dXJuITF9KS5ob3ZlcihsLHMpLGQ9bnVsbCksaD1ZZSgiLnVpLWpxZ3JpZCIpLmNzcygiZm9udC1zaXplIil8fCIxMXB4IixZZSgiYm9keSIpLmFwcGVuZCgiPGRpdiBpZD0ndGVzdHBnMicgY2xhc3M9J3VpLWpxZ3JpZCAiK1llLmpncmlkLnN0eWxlVUlbeF0uYmFzZS5lbnRyaWVCb3grIicgc3R5bGU9J2ZvbnQtc2l6ZToiK2grIjt2aXNpYmlsaXR5OmhpZGRlbjsnID48L2Rpdj4iKSxoPVllKHUpLmNsb25lKCkuYXBwZW5kVG8oIiN0ZXN0cGcyIikud2lkdGgoKSxZZSgiI3Rlc3RwZzIiKS5yZW1vdmUoKSxpLnAuX252dGQmJih0LmRyb3BtZW51Pyh1PW51bGwsWWUoaSkuanFHcmlkKCJfYnVpbGROYXZNZW51IixwLGMsZixtLHYsaixiLHcpKTpoPmkucC5fbnZ0ZFswXT8oaS5wLnJlc3BvbnNpdmU/KHU9bnVsbCxZZShpKS5qcUdyaWQoIl9idWlsZE5hdk1lbnUiLHAsYyxmLG0sdixqLGIsdykpOlllKHArIl8iK3QucG9zaXRpb24scCkuYXBwZW5kKHUpLndpZHRoKGgpLGkucC5fbnZ0ZFswXT1oKTpZZShwKyJfIit0LnBvc2l0aW9uLHApLmFwcGVuZCh1KSxpLnAuX252dGRbMV09aCksaS5wLm5hdkdyaWQ9ITB9aS5wLnN0b3JlTmF2T3B0aW9ucyYmKGkucC5uYXZPcHRpb25zPXQsaS5wLmVkaXRPcHRpb25zPW0saS5wLmFkZE9wdGlvbnM9dixpLnAuZGVsT3B0aW9ucz1qLGkucC5zZWFyY2hPcHRpb25zPWIsaS5wLnZpZXdPcHRpb25zPXcsaS5wLm5hdkJ1dHRvbnM9W10pfX19KX0sbmF2QnV0dG9uQWRkOmZ1bmN0aW9uKHMsZCl7dmFyIHA9dGhpc1swXS5wLnN0eWxlVUksZT1ZZS5qZ3JpZC5zdHlsZVVJW3BdLm5hdmlnYXRvcjtyZXR1cm4gZD1ZZS5leHRlbmQoe2NhcHRpb246Im5ld0J1dHRvbiIsdGl0bGU6IiIsYnV0dG9uaWNvbjplLmljb25fbmV3YnV0dG9uX25hdixvbkNsaWNrQnV0dG9uOm51bGwscG9zaXRpb246Imxhc3QiLGN1cnNvcjoicG9pbnRlciIsaW50ZXJuYWw6ITF9LGR8fHt9KSx0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgdCxyLGUsaSxvLGEsbixsO3RoaXMuZ3JpZCYmInN0cmluZyI9PXR5cGVvZiBzJiYoMD09PXMuaW5kZXhPZigiIyIpJiYocz1zLnN1YnN0cmluZygxKSkscz0iIyIrWWUuamdyaWQuanFJRChzKSxsPVllKCIubmF2dGFibGUiLHMpWzBdLHI9WWUuamdyaWQuc3R5bGVVSVtwXS5jb21tb24uZGlzYWJsZWQsZT1ZZS5qZ3JpZC5zdHlsZVVJW3BdLmNvbW1vbi5ob3ZlcixpPVllLmpncmlkLnN0eWxlVUlbcF0uY29tbW9uLmNvcm5lcmFsbCxhPVllLmpncmlkLnN0eWxlVUlbcF0uY29tbW9uLmljb25fYmFzZSwodD10aGlzKS5wLnN0b3JlTmF2T3B0aW9ucyYmIWQuaW50ZXJuYWwmJnQucC5uYXZCdXR0b25zLnB1c2goW3MsZF0pLGw/ZC5pZCYmdm9pZCAwIT09WWUoIiMiK1llLmpncmlkLmpxSUQoZC5pZCksbClbMF18fChuPVllKCI8dGQ+PC90ZD4iKSwiTk9ORSI9PT1kLmJ1dHRvbmljb24udG9TdHJpbmcoKS50b1VwcGVyQ2FzZSgpP1llKG4pLmFkZENsYXNzKCJ1aS1wZy1idXR0b24gIitpKS5hcHBlbmQoIjxkaXYgY2xhc3M9J3VpLXBnLWRpdic+IitkLmNhcHRpb24rIjwvZGl2PiIpOlllKG4pLmFkZENsYXNzKCJ1aS1wZy1idXR0b24gIitpKS5hcHBlbmQoIjxkaXYgY2xhc3M9J3VpLXBnLWRpdic+PHNwYW4gY2xhc3M9JyIrYSsiICIrZC5idXR0b25pY29uKyInPjwvc3Bhbj4iK2QuY2FwdGlvbisiPC9kaXY+IiksZC5pZCYmWWUobikuYXR0cigiaWQiLGQuaWQpLCJmaXJzdCIhPT1kLnBvc2l0aW9ufHwwPT09bC5yb3dzWzBdLmNlbGxzLmxlbmd0aD9ZZSgidHIiLGwpLmFwcGVuZChuKTpZZSgidHIgdGQiLGwpLmVxKDApLmJlZm9yZShuKSxZZShuLGwpLmF0dHIoInRpdGxlIixkLnRpdGxlfHwiIikuY2xpY2soZnVuY3Rpb24oZSl7cmV0dXJuIFllKHRoaXMpLmhhc0NsYXNzKHIpfHwoWWUuamdyaWQuc2V0U2VsTmF2SW5kZXgodCx0aGlzKSxZZS5qZ3JpZC5pc0Z1bmN0aW9uKGQub25DbGlja0J1dHRvbikmJmQub25DbGlja0J1dHRvbi5jYWxsKHQsZSkpLCExfSkuaG92ZXIoZnVuY3Rpb24oKXtZZSh0aGlzKS5oYXNDbGFzcyhyKXx8WWUodGhpcykuYWRkQ2xhc3MoZSl9LGZ1bmN0aW9uKCl7WWUodGhpcykucmVtb3ZlQ2xhc3MoZSl9KSk6KGw9WWUoIi5kcm9wZG93bm1lbnUiLHMpWzBdKSYmKG89WWUobCkudmFsKCksYT1kLmlkfHxZZS5qZ3JpZC5yYW5kSWQoKSxuPVllKCc8bGkgY2xhc3M9InVpLW1lbnUtaXRlbSIgcm9sZT0icHJlc2VudGF0aW9uIj48YSBjbGFzcz0iJytpKycgZy1tZW51LWl0ZW0iIHRhYmluZGV4PSIwIiByb2xlPSJtZW51aXRlbSIgaWQ9IicrYSsnIj4nKyhkLmNhcHRpb258fGQudGl0bGUpKyI8L2E+PC9saT4iKSxvKSYmKCJmaXJzdCI9PT1kLnBvc2l0aW9uP1llKCIjIitvKS5wcmVwZW5kKG4pOlllKCIjIitvKS5hcHBlbmQobiksWWUobikub24oImNsaWNrIixmdW5jdGlvbihlKXtyZXR1cm4gWWUodGhpcykuaGFzQ2xhc3Mocil8fChZZSgiIyIrbykuaGlkZSgpLFllLmpncmlkLmlzRnVuY3Rpb24oZC5vbkNsaWNrQnV0dG9uKSYmZC5vbkNsaWNrQnV0dG9uLmNhbGwodCxlKSksITF9KS5maW5kKCJhIikuaG92ZXIoZnVuY3Rpb24oKXtZZSh0aGlzKS5oYXNDbGFzcyhyKXx8WWUodGhpcykuYWRkQ2xhc3MoZSl9LGZ1bmN0aW9uKCl7WWUodGhpcykucmVtb3ZlQ2xhc3MoZSl9KSkpfSl9LG5hdlNlcGFyYXRvckFkZDpmdW5jdGlvbihyLGkpe3ZhciBlPXRoaXNbMF0ucC5zdHlsZVVJLG89WWUuamdyaWQuc3R5bGVVSVtlXS5jb21tb247cmV0dXJuIGk9WWUuZXh0ZW5kKHtzZXBjbGFzczoidWktc2VwYXJhdG9yIixzZXBjb250ZW50OiIiLHBvc2l0aW9uOiJsYXN0In0saXx8e30pLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBlLHQ7dGhpcy5ncmlkJiYoInN0cmluZyI9PXR5cGVvZiByJiYwIT09ci5pbmRleE9mKCIjIikmJihyPSIjIitZZS5qZ3JpZC5qcUlEKHIpKSx0PVllKCIubmF2dGFibGUiLHIpWzBdLHRoaXMucC5zdG9yZU5hdk9wdGlvbnMmJnRoaXMucC5uYXZCdXR0b25zLnB1c2goW3IsaV0pLHQ/KGU9Ijx0ZCBjbGFzcz0ndWktcGctYnV0dG9uICIrby5kaXNhYmxlZCsiJyBzdHlsZT0nd2lkdGg6NHB4Oyc+PHNwYW4gY2xhc3M9JyIraS5zZXBjbGFzcysiJz48L3NwYW4+IitpLnNlcGNvbnRlbnQrIjwvdGQ+IiwiZmlyc3QiIT09aS5wb3NpdGlvbnx8MD09PXQucm93c1swXS5jZWxscy5sZW5ndGg/WWUoInRyIix0KS5hcHBlbmQoZSk6WWUoInRyIHRkIix0KS5lcSgwKS5iZWZvcmUoZSkpOih0PVllKCIuZHJvcGRvd25tZW51IixyKVswXSxlPSI8bGkgY2xhc3M9J3VpLW1lbnUtaXRlbSAiK28uZGlzYWJsZWQrIicgc3R5bGU9J3dpZHRoOjEwMCUnIHJvbGU9J3ByZXNlbnRhdGlvbic+PGhyIGNsYXNzPSd1aS1zZXBhcmF0b3ItbGknPjwvbGk+Iix0JiYodD1ZZSh0KS52YWwoKSkmJigiZmlyc3QiPT09aS5wb3NpdGlvbj9ZZSgiIyIrdCkucHJlcGVuZChlKTpZZSgiIyIrdCkuYXBwZW5kKGUpKSkpfSl9LF9idWlsZE5hdk1lbnU6ZnVuY3Rpb24ocCxjLHUsaCxnLGYsbSx2KXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGUsdCxyLGk9dGhpcyxvPVllLmpncmlkLmdldFJlZ2lvbmFsKGksIm5hdiIpLGE9aS5wLnN0eWxlVUksbj1ZZS5qZ3JpZC5zdHlsZVVJW2FdLmZpbHRlcixsPVllLmpncmlkLnN0eWxlVUlbYV0uY29tbW9uLHM9ImZvcm1fbWVudV8iK1llLmpncmlkLnJhbmRJZCgpLGE9dS5uYXZCdXR0b25UZXh0fHxvLnNlbGVjdGNhcHRpb258fCJBY3Rpb25zIixvPSI8YnV0dG9uIGNsYXNzPSdkcm9wZG93bm1lbnUgIitsLmJ1dHRvbisiJyB2YWx1ZT0nIitzKyInPiIrYSsiPC9idXR0b24+IixkPShZZShwKyJfIit1LnBvc2l0aW9uLHApLmFwcGVuZChvKSx7dGhlbW9kYWw6ImFsZXJ0bW9kXyIrdGhpcy5wLmlkLG1vZGFsaGVhZDoiYWxlcnRoZF8iK3RoaXMucC5pZCxtb2RhbGNvbnRlbnQ6ImFsZXJ0Y250XyIrdGhpcy5wLmlkfSk7YT1ZZSgiLnVpLWpxZ3JpZCIpLmNzcygiZm9udC1zaXplIil8fCIxMXB4IixyPVllKCc8dWwgaWQ9IicrcysnIiBjbGFzcz0idWktbmF2LW1lbnUgbW9kYWwtY29udGVudCIgcm9sZT0ibWVudSIgdGFiaW5kZXg9IjAiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Zm9udC1zaXplOicrYSsnIj48L3VsPicpLHUuYWRkJiYoZT0oZz1nfHx7fSkuaWR8fCJhZGRfIitjLHQ9WWUoJzxsaSBjbGFzcz0idWktbWVudS1pdGVtIiByb2xlPSJwcmVzZW50YXRpb24iPjxhIGNsYXNzPSInK2wuY29ybmVyYWxsKycgZy1tZW51LWl0ZW0iIHRhYmluZGV4PSIwIiByb2xlPSJtZW51aXRlbSIgaWQ9IicrZSsnIj4nKyh1LmFkZHRleHR8fHUuYWRkdGl0bGUpKyI8L2E+PC9saT4iKS5jbGljayhmdW5jdGlvbigpe3JldHVybiBZZSh0aGlzKS5oYXNDbGFzcyhsLmRpc2FibGVkKXx8KFllLmpncmlkLmlzRnVuY3Rpb24odS5hZGRmdW5jKT91LmFkZGZ1bmMuY2FsbChpKTpZZShpKS5qcUdyaWQoImVkaXRHcmlkUm93IiwibmV3IixnKSxZZShyKS5oaWRlKCkpLCExfSksWWUocikuYXBwZW5kKHQpKSx1LmVkaXQmJihlPShoPWh8fHt9KS5pZHx8ImVkaXRfIitjLHQ9WWUoJzxsaSBjbGFzcz0idWktbWVudS1pdGVtIiByb2xlPSJwcmVzZW50YXRpb24iPjxhIGNsYXNzPSInK2wuY29ybmVyYWxsKycgZy1tZW51LWl0ZW0iIHRhYmluZGV4PSIwIiByb2xlPSJtZW51aXRlbSIgaWQ9IicrZSsnIj4nKyh1LmVkaXR0ZXh0fHx1LmVkaXR0aXRsZSkrIjwvYT48L2xpPiIpLmNsaWNrKGZ1bmN0aW9uKCl7dmFyIGU7cmV0dXJuIFllKHRoaXMpLmhhc0NsYXNzKGwuZGlzYWJsZWQpfHwoKGU9aS5wLnNlbHJvdyk/WWUuamdyaWQuaXNGdW5jdGlvbih1LmVkaXRmdW5jKT91LmVkaXRmdW5jLmNhbGwoaSxlKTpZZShpKS5qcUdyaWQoImVkaXRHcmlkUm93IixlLGgpOihZZS5qZ3JpZC52aWV3TW9kYWwoIiMiK2QudGhlbW9kYWwse2dib3g6IiNnYm94XyIrWWUuamdyaWQuanFJRChpLnAuaWQpLGpxbTohMH0pLFllKCIjanFnX2FscnQiKS5mb2N1cygpKSxZZShyKS5oaWRlKCkpLCExfSksWWUocikuYXBwZW5kKHQpKSx1LnZpZXcmJihlPSh2PXZ8fHt9KS5pZHx8InZpZXdfIitjLHQ9WWUoJzxsaSBjbGFzcz0idWktbWVudS1pdGVtIiByb2xlPSJwcmVzZW50YXRpb24iPjxhIGNsYXNzPSInK2wuY29ybmVyYWxsKycgZy1tZW51LWl0ZW0iIHRhYmluZGV4PSIwIiByb2xlPSJtZW51aXRlbSIgaWQ9IicrZSsnIj4nKyh1LnZpZXd0ZXh0fHx1LnZpZXd0aXRsZSkrIjwvYT48L2xpPiIpLmNsaWNrKGZ1bmN0aW9uKCl7dmFyIGU7cmV0dXJuIFllKHRoaXMpLmhhc0NsYXNzKGwuZGlzYWJsZWQpfHwoKGU9aS5wLnNlbHJvdyk/WWUuamdyaWQuaXNGdW5jdGlvbih1LmVkaXRmdW5jKT91LnZpZXdmdW5jLmNhbGwoaSxlKTpZZShpKS5qcUdyaWQoInZpZXdHcmlkUm93IixlLHYpOihZZS5qZ3JpZC52aWV3TW9kYWwoIiMiK2QudGhlbW9kYWwse2dib3g6IiNnYm94XyIrWWUuamdyaWQuanFJRChpLnAuaWQpLGpxbTohMH0pLFllKCIjanFnX2FscnQiKS5mb2N1cygpKSxZZShyKS5oaWRlKCkpLCExfSksWWUocikuYXBwZW5kKHQpKSx1LmRlbCYmKGU9KGY9Znx8e30pLmlkfHwiZGVsXyIrYyx0PVllKCc8bGkgY2xhc3M9InVpLW1lbnUtaXRlbSIgcm9sZT0icHJlc2VudGF0aW9uIj48YSBjbGFzcz0iJytsLmNvcm5lcmFsbCsnIGctbWVudS1pdGVtIiB0YWJpbmRleD0iMCIgcm9sZT0ibWVudWl0ZW0iIGlkPSInK2UrJyI+JysodS5kZWx0ZXh0fHx1LmRlbHRpdGxlKSsiPC9hPjwvbGk+IikuY2xpY2soZnVuY3Rpb24oKXt2YXIgZTtyZXR1cm4gWWUodGhpcykuaGFzQ2xhc3MobC5kaXNhYmxlZCl8fChpLnAubXVsdGlzZWxlY3Q/MD09PShlPWkucC5zZWxhcnJyb3cpLmxlbmd0aCYmKGU9bnVsbCk6ZT1pLnAuc2Vscm93LGU/WWUuamdyaWQuaXNGdW5jdGlvbih1LmRlbGZ1bmMpP3UuZGVsZnVuYy5jYWxsKGksZSk6WWUoaSkuanFHcmlkKCJkZWxHcmlkUm93IixlLGYpOihZZS5qZ3JpZC52aWV3TW9kYWwoIiMiK2QudGhlbW9kYWwse2dib3g6IiNnYm94XyIrWWUuamdyaWQuanFJRChpLnAuaWQpLGpxbTohMH0pLFllKCIjanFnX2FscnQiKS5mb2N1cygpKSxZZShyKS5oaWRlKCkpLCExfSksWWUocikuYXBwZW5kKHQpKSwodS5hZGR8fHUuZWRpdHx8dS5kZWx8fHUudmlldykmJlllKHIpLmFwcGVuZCgiPGxpIGNsYXNzPSd1aS1tZW51LWl0ZW0gIitsLmRpc2FibGVkKyInIHN0eWxlPSd3aWR0aDoxMDAlJyByb2xlPSdwcmVzZW50YXRpb24nPjxociBjbGFzcz0ndWktc2VwYXJhdG9yLWxpJz48L2xpPiIpLHUuc2VhcmNoJiYoZT0obT1tfHx7fSkuaWR8fCJzZWFyY2hfIitjLHQ9WWUoJzxsaSBjbGFzcz0idWktbWVudS1pdGVtIiByb2xlPSJwcmVzZW50YXRpb24iPjxhIGNsYXNzPSInK2wuY29ybmVyYWxsKycgZy1tZW51LWl0ZW0iIHRhYmluZGV4PSIwIiByb2xlPSJtZW51aXRlbSIgaWQ9IicrZSsnIj4nKyh1LnNlYXJjaHRleHR8fHUuc2VhcmNodGl0bGUpKyI8L2E+PC9saT4iKS5jbGljayhmdW5jdGlvbigpe3JldHVybiBZZSh0aGlzKS5oYXNDbGFzcyhsLmRpc2FibGVkKXx8KFllLmpncmlkLmlzRnVuY3Rpb24odS5zZWFyY2hmdW5jKT91LnNlYXJjaGZ1bmMuY2FsbChpLG0pOlllKGkpLmpxR3JpZCgic2VhcmNoR3JpZCIsbSksWWUocikuaGlkZSgpKSwhMX0pLFllKHIpLmFwcGVuZCh0KSxtLnNob3dPbkxvYWQpJiYhMD09PW0uc2hvd09uTG9hZCYmWWUodCkuY2xpY2soKSx1LnJlZnJlc2gmJihlPW0uaWR8fCJzZWFyY2hfIitjLHQ9WWUoJzxsaSBjbGFzcz0idWktbWVudS1pdGVtIiByb2xlPSJwcmVzZW50YXRpb24iPjxhIGNsYXNzPSInK2wuY29ybmVyYWxsKycgZy1tZW51LWl0ZW0iIHRhYmluZGV4PSIwIiByb2xlPSJtZW51aXRlbSIgaWQ9IicrZSsnIj4nKyh1LnJlZnJlc2h0ZXh0fHx1LnJlZnJlc2h0aXRsZSkrIjwvYT48L2xpPiIpLmNsaWNrKGZ1bmN0aW9uKCl7aWYoIVllKHRoaXMpLmhhc0NsYXNzKGwuZGlzYWJsZWQpKXtZZS5qZ3JpZC5pc0Z1bmN0aW9uKHUuYmVmb3JlUmVmcmVzaCkmJnUuYmVmb3JlUmVmcmVzaC5jYWxsKGkpLGkucC5zZWFyY2g9ITEsaS5wLnJlc2V0c2VhcmNoPSEwO3RyeXtpZigiY3VycmVudGZpbHRlciIhPT11LnJlZnJlc2hzdGF0ZSl7dmFyIGU9aS5wLmlkO2kucC5wb3N0RGF0YS5maWx0ZXJzPSIiO3RyeXtZZSgiI2Zib3hfIitZZS5qZ3JpZC5qcUlEKGUpKS5qcUZpbHRlcigicmVzZXRGaWx0ZXIiKX1jYXRjaChlKXt9WWUuamdyaWQuaXNGdW5jdGlvbihpLmNsZWFyVG9vbGJhcikmJmkuY2xlYXJUb29sYmFyLmNhbGwoaSwhMSl9fWNhdGNoKGUpe31zd2l0Y2godS5yZWZyZXNoc3RhdGUpe2Nhc2UiZmlyc3RwYWdlIjpZZShpKS50cmlnZ2VyKCJyZWxvYWRHcmlkIixbe3BhZ2U6MX1dKTticmVhaztjYXNlImN1cnJlbnQiOmNhc2UiY3VycmVudGZpbHRlciI6WWUoaSkudHJpZ2dlcigicmVsb2FkR3JpZCIsW3tjdXJyZW50OiEwfV0pfVllLmpncmlkLmlzRnVuY3Rpb24odS5hZnRlclJlZnJlc2gpJiZ1LmFmdGVyUmVmcmVzaC5jYWxsKGkpLFllKHIpLmhpZGUoKX1yZXR1cm4hMX0pLFllKHIpLmFwcGVuZCh0KSksWWUocikuaGlkZSgpLFllKCJib2R5IikuYXBwZW5kKHIpLFllKCIjIitzKS5hZGRDbGFzcygidWktbWVudSAiK24ubWVudV93aWRnZXQpLFllKCIjIitzKyIgPiBsaSA+IGEiKS5ob3ZlcihmdW5jdGlvbigpe1llKHRoaXMpLmFkZENsYXNzKGwuaG92ZXIpfSxmdW5jdGlvbigpe1llKHRoaXMpLnJlbW92ZUNsYXNzKGwuaG92ZXIpfSksWWUoIi5kcm9wZG93bm1lbnUiLHArIl8iK3UucG9zaXRpb24pLm9uKCJjbGljayIsZnVuY3Rpb24oZSl7dmFyIHQ9WWUodGhpcykub2Zmc2V0KCkscj10LmxlZnQsdD1wYXJzZUludCh0LnRvcCksaT1ZZSh0aGlzKS52YWwoKTtZZSgiIyIraSkuc2hvdygpLmNzcyh7dG9wOnQtKFllKCIjIitpKS5oZWlnaHQoKSsxMCkrInB4IixsZWZ0OnIrInB4In0pLGUuc3RvcFByb3BhZ2F0aW9uKCl9KSxZZSgiYm9keSIpLm9uKCJjbGljayIsZnVuY3Rpb24oZSl7WWUoZS50YXJnZXQpLmhhc0NsYXNzKCJkcm9wZG93bm1lbnUiKXx8WWUoIiMiK3MpLmhpZGUoKX0pfSl9LEdyaWRUb0Zvcm06ZnVuY3Rpb24oaSxvKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGUsdD10aGlzO2lmKHQuZ3JpZCl7dmFyIHI9WWUodCkuanFHcmlkKCJnZXRSb3dEYXRhIixpKTtpZihyKWZvcihlIGluIHIpci5oYXNPd25Qcm9wZXJ0eShlKSYmKFllKCJbbmFtZT0iK1llLmpncmlkLmpxSUQoZSkrIl0iLG8pLmlzKCJpbnB1dDpyYWRpbyIpfHxZZSgiW25hbWU9IitZZS5qZ3JpZC5qcUlEKGUpKyJdIixvKS5pcygiaW5wdXQ6Y2hlY2tib3giKT9ZZSgiW25hbWU9IitZZS5qZ3JpZC5qcUlEKGUpKyJdIixvKS5lYWNoKGZ1bmN0aW9uKCl7WWUodGhpcykudmFsKCk9PXJbZV0/WWUodGhpcylbdC5wLnVzZVByb3A/InByb3AiOiJhdHRyIl0oImNoZWNrZWQiLCEwKTpZZSh0aGlzKVt0LnAudXNlUHJvcD8icHJvcCI6ImF0dHIiXSgiY2hlY2tlZCIsITEpfSk6WWUoIltuYW1lPSIrWWUuamdyaWQuanFJRChlKSsiXSIsbykudmFsKHJbZV0pKX19KX0sRm9ybVRvR3JpZDpmdW5jdGlvbih0LGksbyxhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGUscjt0aGlzLmdyaWQmJihvPW98fCJzZXQiLGE9YXx8ImZpcnN0IixlPVllKGkpLnNlcmlhbGl6ZUFycmF5KCkscj17fSxZZS5lYWNoKGUsZnVuY3Rpb24oZSx0KXtyW3QubmFtZV09dC52YWx1ZX0pLCJhZGQiPT09bz9ZZSh0aGlzKS5qcUdyaWQoImFkZFJvd0RhdGEiLHQscixhKToic2V0Ij09PW8mJlllKHRoaXMpLmpxR3JpZCgic2V0Um93RGF0YSIsdCxyKSl9KX19KSxZZS5qZ3JpZC5leHRlbmQoe2dyb3VwaW5nSW5pdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtZZS5leHRlbmQodGhpcy5wLmdyb3VwaW5nVmlldyx7Z3JvdXBGaWVsZDpbXSxncm91cE9yZGVyOltdLGdyb3VwVGV4dDpbXSxncm91cENvbHVtblNob3c6W10sZ3JvdXBTdW1tYXJ5OltdLHNob3dTdW1tYXJ5T25IaWRlOiExLHNvcnRpdGVtczpbXSxzb3J0bmFtZXM6W10sc3VtbWFyeTpbXSxzdW1tYXJ5dmFsOltdLHBsdXNpY29uOiIiLG1pbnVzaWNvbjoiIixkaXNwbGF5RmllbGQ6W10sZ3JvdXBTdW1tYXJ5UG9zOltdLGZvcm1hdERpc3BsYXlGaWVsZDpbXSxfbG9jZ3I6ITF9LCEwKX0pfSxncm91cGluZ1NldHVwOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBlLHQscixpPXRoaXMsbz1pLnAuY29sTW9kZWwsYT1pLnAuZ3JvdXBpbmdWaWV3LG49WWUuamdyaWQuc3R5bGVVSVtpLnAuc3R5bGVVSXx8ImpRdWVyeVVJIl0uZ3JvdXBpbmc7aWYobnVsbD09PWF8fCJvYmplY3QiIT10eXBlb2YgYSYmIVllLmpncmlkLmlzRnVuY3Rpb24oYSkpaS5wLmdyb3VwaW5nPSExO2Vsc2UgaWYoYS5wbHVzaWNvbnx8KGEucGx1c2ljb249bi5pY29uX3BsdXMpLGEubWludXNpY29ufHwoYS5taW51c2ljb249bi5pY29uX21pbnVzKSxhLmdyb3VwRmllbGQubGVuZ3RoKXtmb3Iodm9pZCAwPT09YS52aXNpYmlsdHlPbk5leHRHcm91cGluZyYmKGEudmlzaWJpbHR5T25OZXh0R3JvdXBpbmc9W10pLGEubGFzdHZhbHVlcz1bXSxhLl9sb2Nncnx8KGEuZ3JvdXBzPVtdKSxhLmNvdW50ZXJzPVtdLGU9MDtlPGEuZ3JvdXBGaWVsZC5sZW5ndGg7ZSsrKWEuZ3JvdXBPcmRlcltlXXx8KGEuZ3JvdXBPcmRlcltlXT0iYXNjIiksYS5ncm91cFRleHRbZV18fChhLmdyb3VwVGV4dFtlXT0iezB9IiksImJvb2xlYW4iIT10eXBlb2YgYS5ncm91cENvbHVtblNob3dbZV0mJihhLmdyb3VwQ29sdW1uU2hvd1tlXT0hMCksImJvb2xlYW4iIT10eXBlb2YgYS5ncm91cFN1bW1hcnlbZV0mJihhLmdyb3VwU3VtbWFyeVtlXT0hMSksYS5ncm91cFN1bW1hcnlQb3NbZV18fChhLmdyb3VwU3VtbWFyeVBvc1tlXT0iZm9vdGVyIiksITA9PT1hLmdyb3VwQ29sdW1uU2hvd1tlXT8oYS52aXNpYmlsdHlPbk5leHRHcm91cGluZ1tlXT0hMCxZZShpKS5qcUdyaWQoInNob3dDb2wiLGEuZ3JvdXBGaWVsZFtlXSkpOihhLnZpc2liaWx0eU9uTmV4dEdyb3VwaW5nW2VdPVllKCIjIitZZS5qZ3JpZC5qcUlEKGkucC5pZCsiXyIrYS5ncm91cEZpZWxkW2VdKSkuaXMoIjp2aXNpYmxlIiksWWUoaSkuanFHcmlkKCJoaWRlQ29sIixhLmdyb3VwRmllbGRbZV0pKTtmb3IoYS5zdW1tYXJ5PVtdLGEuaGlkZUZpcnN0R3JvdXBDb2wmJkFycmF5LmlzQXJyYXkoYS5mb3JtYXREaXNwbGF5RmllbGQpJiYhWWUuamdyaWQuaXNGdW5jdGlvbihhLmZvcm1hdERpc3BsYXlGaWVsZFswXSkmJihhLmZvcm1hdERpc3BsYXlGaWVsZFswXT1mdW5jdGlvbihlKXtyZXR1cm4gZX0pLHQ9MCxyPW8ubGVuZ3RoO3Q8cjt0KyspYS5oaWRlRmlyc3RHcm91cENvbCYmIW9bdF0uaGlkZGVuJiZhLmdyb3VwRmllbGRbMF09PT1vW3RdLm5hbWUmJihvW3RdLmZvcm1hdHRlcj1mdW5jdGlvbigpe3JldHVybiIifSksb1t0XS5zdW1tYXJ5VHlwZSYmKG9bdF0uc3VtbWFyeURpdmlkZXI/YS5zdW1tYXJ5LnB1c2goe25tOm9bdF0ubmFtZSxzdDpvW3RdLnN1bW1hcnlUeXBlLHY6IiIsc2Q6b1t0XS5zdW1tYXJ5RGl2aWRlcix2ZDoiIixzcjpvW3RdLnN1bW1hcnlSb3VuZCxzcnQ6b1t0XS5zdW1tYXJ5Um91bmRUeXBlfHwicm91bmQifSk6YS5zdW1tYXJ5LnB1c2goe25tOm9bdF0ubmFtZSxzdDpvW3RdLnN1bW1hcnlUeXBlLHY6IiIsc3I6b1t0XS5zdW1tYXJ5Um91bmQsc3J0Om9bdF0uc3VtbWFyeVJvdW5kVHlwZXx8InJvdW5kIn0pKX1lbHNlIGkucC5ncm91cGluZz0hMX0pfSxncm91cGluZ1ByZXBhcmU6ZnVuY3Rpb24oZCxwKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Zm9yKHZhciBlLHQscixpPXRoaXMucC5ncm91cGluZ1ZpZXcsbz10aGlzLGE9ZnVuY3Rpb24oKXtZZS5qZ3JpZC5pc0Z1bmN0aW9uKHRoaXMuc3QpP3RoaXMudj10aGlzLnN0LmNhbGwobyx0aGlzLnYsdGhpcy5ubSxkKToodGhpcy52PVllKG8pLmpxR3JpZCgiZ3JvdXBpbmdDYWxjdWxhdGlvbnMuaGFuZGxlciIsdGhpcy5zdCx0aGlzLnYsdGhpcy5ubSx0aGlzLnNyLHRoaXMuc3J0LGQpLCJhdmciPT09dGhpcy5zdC50b0xvd2VyQ2FzZSgpJiZ0aGlzLnNkJiYodGhpcy52ZD1ZZShvKS5qcUdyaWQoImdyb3VwaW5nQ2FsY3VsYXRpb25zLmhhbmRsZXIiLHRoaXMuc3QsdGhpcy52ZCx0aGlzLnNkLHRoaXMuc3IsdGhpcy5zcnQsZCkpKX0sbj1pLmdyb3VwRmllbGQubGVuZ3RoLGw9MCxzPTA7czxuO3MrKyllPWkuZ3JvdXBGaWVsZFtzXSxyPWkuZGlzcGxheUZpZWxkW3NdLHQ9ZFtlXSxudWxsPT0ocj1udWxsPT1yP251bGw6ZFtyXSkmJihyPXQpLHZvaWQgMCE9PXQmJigwPT09cD8oaS5ncm91cHMucHVzaCh7aWR4OnMsZGF0YUluZGV4OmUsdmFsdWU6dCxkaXNwbGF5VmFsdWU6cixzdGFydFJvdzpwLGNudDoxLHN1bW1hcnk6W119KSxpLmxhc3R2YWx1ZXNbc109dCxpLmNvdW50ZXJzW3NdPXtjbnQ6MSxwb3M6aS5ncm91cHMubGVuZ3RoLTEsc3VtbWFyeTpZZS5leHRlbmQoITAsW10saS5zdW1tYXJ5KX0pOiJvYmplY3QiPT10eXBlb2YgdHx8KEFycmF5LmlzQXJyYXkoaS5pc0luVGhlU2FtZUdyb3VwKSYmWWUuamdyaWQuaXNGdW5jdGlvbihpLmlzSW5UaGVTYW1lR3JvdXBbc10pP2kuaXNJblRoZVNhbWVHcm91cFtzXS5jYWxsKG8saS5sYXN0dmFsdWVzW3NdLHQscyxpKTppLmxhc3R2YWx1ZXNbc109PT10KT8xPT09bD8oaS5ncm91cHMucHVzaCh7aWR4OnMsZGF0YUluZGV4OmUsdmFsdWU6dCxkaXNwbGF5VmFsdWU6cixzdGFydFJvdzpwLGNudDoxLHN1bW1hcnk6W119KSxpLmxhc3R2YWx1ZXNbc109dCxpLmNvdW50ZXJzW3NdPXtjbnQ6MSxwb3M6aS5ncm91cHMubGVuZ3RoLTEsc3VtbWFyeTpZZS5leHRlbmQoITAsW10saS5zdW1tYXJ5KX0pOihpLmNvdW50ZXJzW3NdLmNudCs9MSxpLmdyb3Vwc1tpLmNvdW50ZXJzW3NdLnBvc10uY250PWkuY291bnRlcnNbc10uY250KTooaS5ncm91cHMucHVzaCh7aWR4OnMsZGF0YUluZGV4OmUsdmFsdWU6dCxkaXNwbGF5VmFsdWU6cixzdGFydFJvdzpwLGNudDoxLHN1bW1hcnk6W119KSxpLmxhc3R2YWx1ZXNbc109dCxpLmNvdW50ZXJzW3NdPXtjbnQ6bD0xLHBvczppLmdyb3Vwcy5sZW5ndGgtMSxzdW1tYXJ5OlllLmV4dGVuZCghMCxbXSxpLnN1bW1hcnkpfSksWWUuZWFjaChpLmNvdW50ZXJzW3NdLnN1bW1hcnksYSksaS5ncm91cHNbaS5jb3VudGVyc1tzXS5wb3NdLnN1bW1hcnk9aS5jb3VudGVyc1tzXS5zdW1tYXJ5KX0pLHRoaXN9LGdyb3VwaW5nVG9nZ2xlOmZ1bmN0aW9uKHYpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3JldHVybiAwPChlPVllLm1hcChlLnNwbGl0KCIgIiksZnVuY3Rpb24oZSl7aWYoZS5zdWJzdHJpbmcoMCxzLmxlbmd0aCsxKT09PXMrIl8iKXJldHVybiBwYXJzZUludChlLnN1YnN0cmluZyhzLmxlbmd0aCsxKSwxMCl9KSkubGVuZ3RoP2VbMF06dm9pZCAwfXZhciB0LHIsaSxvPXRoaXMsYT1vLnAuZ3JvdXBpbmdWaWV3LG49di5zcGxpdCgiXyIpLGw9cGFyc2VJbnQobltuLmxlbmd0aC0yXSwxMCkscz0obi5zcGxpY2Uobi5sZW5ndGgtMiwyKSxuLmpvaW4oIl8iKSksZD1hLm1pbnVzaWNvbixwPWEucGx1c2ljb24sbj1ZZSgiIyIrWWUuamdyaWQuanFJRCh2KSksYz1uLmxlbmd0aD9uWzBdLm5leHRTaWJsaW5nOm51bGwsbj1ZZSgiIyIrWWUuamdyaWQuanFJRCh2KSsiIHNwYW4udHJlZS13cmFwLSIrby5wLmRpcmVjdGlvbiksdT0hMSxoPSExLGc9ISFvLnAuZnJvemVuQ29sdW1ucyYmby5wLmlkKyJfZnJvemVuIixmPSEhZyYmWWUoIiMiK1llLmpncmlkLmpxSUQodiksIiMiK1llLmpncmlkLmpxSUQoZykpLG09ZiYmZi5sZW5ndGg/ZlswXS5uZXh0U2libGluZzpudWxsO2lmKG4uaGFzQ2xhc3MoZCkpe2lmKGMpZm9yKDtjJiYhKHZvaWQgMCE9PSh0PWUoYy5jbGFzc05hbWUpKSYmdDw9bCk7KWk9cGFyc2VJbnQoWWUoYykuYXR0cigianFmb290bGV2ZWwiKSwxMCksKGg9IWlzTmFOKGkpJiZhLnNob3dTdW1tYXJ5T25IaWRlJiZsPD1pKXx8WWUoYykuaGlkZSgpLGM9Yy5uZXh0U2libGluZyxnJiYoaHx8WWUobSkuaGlkZSgpLG09bS5uZXh0U2libGluZyk7bi5yZW1vdmVDbGFzcyhkKS5hZGRDbGFzcyhwKSx1PSEwfWVsc2V7aWYoYylmb3Iocj12b2lkIDA7Yzspe2lmKHQ9ZShjLmNsYXNzTmFtZSksaT1wYXJzZUludChZZShjKS5hdHRyKCJqcWZvb3RsZXZlbCIpLDEwKSx2b2lkIDA9PT1yJiYocj12b2lkIDA9PT10KSxoPVllKGMpLmhhc0NsYXNzKCJ1aS1zdWJncmlkIikmJlllKGMpLmhhc0NsYXNzKCJ1aS1zZy1jb2xsYXBzZWQiKSx2b2lkIDAhPT10KXtpZih0PD1sKWJyZWFrO3QhPT1sKzF8fGh8fChZZShjKS5zaG93KCkuZmluZCgiPnRkPnNwYW4udHJlZS13cmFwLSIrby5wLmRpcmVjdGlvbikucmVtb3ZlQ2xhc3MoZCkuYWRkQ2xhc3MocCksZyYmWWUobSkuc2hvdygpLmZpbmQoIj50ZD5zcGFuLnRyZWUtd3JhcC0iK28ucC5kaXJlY3Rpb24pLnJlbW92ZUNsYXNzKGQpLmFkZENsYXNzKHApKX1lbHNlIHI/aHx8KFllKGMpLnNob3coKSxnJiZZZShtKS5zaG93KCkpOiFpc05hTihpKSYmMDw9aSYmaT09PWwmJihZZShjKS5zaG93KCksZykmJlllKG0pLnNob3coKTtjPWMubmV4dFNpYmxpbmcsZyYmKG09bS5uZXh0U2libGluZyl9bi5yZW1vdmVDbGFzcyhwKS5hZGRDbGFzcyhkKX1nJiYiYXV0byI9PT1vLnAuaGVpZ2h0JiYoby5ncmlkLmZiRGl2LmhlaWdodChZZShvKS5oZWlnaHQoKSksby5ncmlkLmZzRGl2KSYmKGY9WWUoby5ncmlkLmJEaXYpWzBdLnNjcm9sbFdpZHRoPlllKG8uZ3JpZC5iRGl2KVswXS5jbGllbnRXaWR0aD9ZZS5qZ3JpZC5zY3JvbGxiYXJIZWlnaHQoKTowLG8uZ3JpZC5mc0Rpdi5jc3MoInRvcCIsby5ncmlkLmZiRGl2LnBvc2l0aW9uKCkudG9wK1llKG8pLmhlaWdodCgpK2YrInB4IikpLFllKG8pLnRyaWdnZXJIYW5kbGVyKCJqcUdyaWRHcm91cGluZ0NsaWNrR3JvdXAiLFt2LHVdKSxZZS5qZ3JpZC5pc0Z1bmN0aW9uKG8ucC5vbkNsaWNrR3JvdXApJiZvLnAub25DbGlja0dyb3VwLmNhbGwobyx2LHUpfSksITF9LGdyb3VwaW5nUmVuZGVyOmZ1bmN0aW9uKEQsRyxGLFMpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgdSxoLGcsZixtPXRoaXMsdj1tLnAuZ3JvdXBpbmdWaWV3LGo9IiIsYj12Lmdyb3VwQ29sbGFwc2U/di5wbHVzaWNvbjp2Lm1pbnVzaWNvbix3PVtdLHk9di5ncm91cEZpZWxkLmxlbmd0aCx4PVllLmpncmlkLnN0eWxlVUlbbS5wLnN0eWxlVUl8fCJqUXVlcnlVSSJdLmNvbW1vbixiPWIrIiB0cmVlLXdyYXAtIittLnAuZGlyZWN0aW9uLF89KFllLmVhY2gobS5wLmNvbE1vZGVsLGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPTA7cjx5O3IrKylpZih2Lmdyb3VwRmllbGRbcl09PT10Lm5hbWUpe3dbcl09ZTticmVha319KSwwKTtmdW5jdGlvbiBxKGUsdCxyLGksbyl7Zm9yKHZhciBhLG4sbCxzPWZ1bmN0aW9uKGUsdCxyKXt2YXIgaSxvPSExO2lmKDA9PT10KW89cltlXTtlbHNle3ZhciBhPXJbZV0uaWR4O2lmKDA9PT1hKW89cltlXTtlbHNlIGZvcihpPWU7MDw9aTtpLS0paWYocltpXS5pZHg9PT1hLXQpe289cltpXTticmVha319cmV0dXJuIG99KGUsdCxyKSxkPW0ucC5jb2xNb2RlbCxwPShzLmNudCwiIiksYz0hMSx1PWk7dTxHO3UrKykhZFt1XS5oaWRkZW4mJiFjJiZvPyhuPW8sYz0hMCk6bj0nPHRkIHJvbGU9ImdyaWRjZWxsIiAnK20uZm9ybWF0Q29sKHUsMSwiIikrIj4mIzE2MDs8L3RkPiIsWWUuZWFjaChzLnN1bW1hcnksZnVuY3Rpb24oKXtpZih0aGlzLm5tPT09ZFt1XS5uYW1lKXtsPWRbdV0uc3VtbWFyeVRwbHx8InswfSIsYT10aGlzLnY7dHJ5e3RoaXMuZ3JvdXBDb3VudD1zLmNudCx0aGlzLmdyb3VwSW5kZXg9cy5kYXRhSW5kZXgsdGhpcy5ncm91cFZhbHVlPXMudmFsdWV9Y2F0Y2goZSl7fXJldHVybiBuPSc8dGQgcm9sZT0iZ3JpZGNlbGwiICcrbS5mb3JtYXRDb2wodSwxLCIiKSsiPiIrWWUuamdyaWQudGVtcGxhdGUobCxhLHMuY250LHMuZGF0YUluZGV4LHMuZGlzcGxheVZhbHVlLHMuc3VtbWFyeSkrIjwvdGQ+IiwhMX19KSxwKz1uO3JldHVybiBwfXZhciBDLEk9WWUubWFrZUFycmF5KHYuZ3JvdXBTdW1tYXJ5KTtJLnJldmVyc2UoKSxDPW0ucC5tdWx0aXNlbGVjdD8nIGNvbHNwYW49IjIiJzoiIixZZS5lYWNoKHYuZ3JvdXBzLGZ1bmN0aW9uKGUsdCl7aWYodi5fbG9jZ3ImJiEodC5zdGFydFJvdyt0LmNudD4oRi0xKSpTJiZ0LnN0YXJ0Um93PEYqUykpcmV0dXJuITA7XysrLGc9bS5wLmlkKyJnaGVhZF8iK3QuaWR4LGg9ZysiXyIrZSx1PSI8c3BhbiBzdHlsZT0nY3Vyc29yOnBvaW50ZXI7bWFyZ2luLXJpZ2h0OjhweDttYXJnaW4tbGVmdDo1cHg7JyBjbGFzcz0nIit4Lmljb25fYmFzZSsiICIrYisiJyBvbmNsaWNrPVwialF1ZXJ5KCcjIitZZS5qZ3JpZC5qcUlEKG0ucC5pZCkrIicpLmpxR3JpZCgnZ3JvdXBpbmdUb2dnbGUnLCciK2grIicpO3JldHVybiBmYWxzZTtcIj48L3NwYW4+Ijt0cnl7Zj1BcnJheS5pc0FycmF5KHYuZm9ybWF0RGlzcGxheUZpZWxkKSYmWWUuamdyaWQuaXNGdW5jdGlvbih2LmZvcm1hdERpc3BsYXlGaWVsZFt0LmlkeF0pP3YuZm9ybWF0RGlzcGxheUZpZWxkW3QuaWR4XS5jYWxsKG0sdC5kaXNwbGF5VmFsdWUsdC52YWx1ZSxtLnAuY29sTW9kZWxbd1t0LmlkeF1dLHQuaWR4LHYpOm0uZm9ybWF0dGVyKGgsdC5kaXNwbGF5VmFsdWUsd1t0LmlkeF0sdC52YWx1ZSl9Y2F0Y2goZSl7Zj10LmRpc3BsYXlWYWx1ZX1mb3IodmFyIHI9IiIsaT0wO2k8dC5zdW1tYXJ5Lmxlbmd0aDtpKyspe3ZhciBvPXQuc3VtbWFyeVtpXSxhPVllLmpncmlkLmdldEVsZW1CeUF0dHJWYWwobS5wLmNvbE1vZGVsLCJuYW1lIixvLm5tLCEwKTtpZigwPD1hKXsic3RyaW5nIj09dHlwZW9mIG8uc3QmJiJhdmciPT09by5zdC50b0xvd2VyQ2FzZSgpJiYoby5zZCYmby52ZD9vLnY9by52L28udmQ6by52JiYwPHQuY250JiYoby52PW8udi90LmNudCkpLG8udXY9by52O3RyeXtvLnY9bS5mb3JtYXR0ZXIoIiIsby52LGEsdGhpcyl9Y2F0Y2goZSl7fX19aWYoInN0cmluZyIhPXR5cGVvZihyPVllLmpncmlkLmlzRnVuY3Rpb24odi5ncm91cFRleHRbdC5pZHhdKT92Lmdyb3VwVGV4dFt0LmlkeF0uY2FsbChtLGYsdC5jbnQsdC5zdW1tYXJ5KTpZZS5qZ3JpZC50ZW1wbGF0ZS5jYWxsKG0sdi5ncm91cFRleHRbdC5pZHhdLGYsdC5jbnQsdC5zdW1tYXJ5KSkmJiJudW1iZXIiIT10eXBlb2YgciYmKHI9ZiksImhlYWRlciI9PT12Lmdyb3VwU3VtbWFyeVBvc1t0LmlkeF0/aj0oais9Jzx0ciBpZD0iJytoKyciJysodi5ncm91cENvbGxhcHNlJiYwPHQuaWR4Pycgc3R5bGU9ImRpc3BsYXk6bm9uZTsiICc6IiAiKSsncm9sZT0icm93IiBjbGFzcz0gIicreC5jb250ZW50KyIganFncm91cCB1aS1yb3ctIittLnAuZGlyZWN0aW9uKyIgIitnKyciPicpK3EoZSwwLHYuZ3JvdXBzLEM/MTowLCc8dGQgcm9sZT0iZ3JpZGNlbGwiIHN0eWxlPSJwYWRkaW5nLWxlZnQ6JysxMip0LmlkeCsncHg7IicrQysiPiIrdStyKyI8L3RkPiIpKyI8L3RyPiI6ais9Jzx0ciBpZD0iJytoKyciJysodi5ncm91cENvbGxhcHNlJiYwPHQuaWR4Pycgc3R5bGU9ImRpc3BsYXk6bm9uZTsiICc6IiAiKSsncm9sZT0icm93IiBjbGFzcz0gIicreC5jb250ZW50KyIganFncm91cCB1aS1yb3ctIittLnAuZGlyZWN0aW9uKyIgIitnKyciPjx0ZCBzdHlsZT0icGFkZGluZy1sZWZ0OicrMTIqdC5pZHgrJ3B4OyIgY29sc3Bhbj0iJysoITE9PT12Lmdyb3VwQ29sdW1uU2hvd1t0LmlkeF0/Ry0xOkcpKyciPicrdStyKyI8L3RkPjwvdHI+Iix5LTE9PT10LmlkeCl7dmFyIG4sbCxzLGQ9di5ncm91cHNbZSsxXSxwPTAscj10LnN0YXJ0Um93LGM9dm9pZCAwIT09ZD9kLnN0YXJ0Um93OnYuZ3JvdXBzW2VdLnN0YXJ0Um93K3YuZ3JvdXBzW2VdLmNudDtmb3IoaT1yPXYuX2xvY2dyJiYocD0oRi0xKSpTKT50LnN0YXJ0Um93P3A6cjtpPGMmJkRbaS1wXTtpKyspais9RFtpLXBdLmpvaW4oIiIpO2lmKCJoZWFkZXIiIT09di5ncm91cFN1bW1hcnlQb3NbdC5pZHhdKXtpZih2b2lkIDAhPT1kKXtmb3IobD0wO2w8di5ncm91cEZpZWxkLmxlbmd0aCYmZC5kYXRhSW5kZXghPT12Lmdyb3VwRmllbGRbbF07bCsrKTtfPXYuZ3JvdXBGaWVsZC5sZW5ndGgtbH1mb3Iobj0wO248XztuKyspSVtuXSYmKHM9IiIsdi5ncm91cENvbGxhcHNlJiYhdi5zaG93U3VtbWFyeU9uSGlkZSYmKHM9JyBzdHlsZT0iZGlzcGxheTpub25lOyInKSxqPShqKz0iPHRyIitzKycganFmb290bGV2ZWw9IicrKHQuaWR4LW4pKyciIHJvbGU9InJvdyIgY2xhc3M9IicreC5jb250ZW50KyIganFmb290IHVpLXJvdy0iK20ucC5kaXJlY3Rpb24rJyI+JykrcShlLG4sdi5ncm91cHMsMCwhMSkrIjwvdHI+Iik7Xz1sfX19KSxZZSgiIyIrWWUuamdyaWQuanFJRChtLnAuaWQpKyIgdGJvZHkiKS5maXJzdCgpLmFwcGVuZChqKSxqPW51bGx9KX0sZ3JvdXBpbmdHcm91cEJ5OmZ1bmN0aW9uKGksbyl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBlLHQ9dGhpcyxyPSgic3RyaW5nIj09dHlwZW9mIGkmJihpPVtpXSksdC5wLmdyb3VwaW5nVmlldyk7Zm9yKHQucC5ncm91cGluZz0hMCxyLl9sb2Nncj0hMSx2b2lkIDA9PT1yLnZpc2liaWx0eU9uTmV4dEdyb3VwaW5nJiYoci52aXNpYmlsdHlPbk5leHRHcm91cGluZz1bXSksZT0wO2U8ci5ncm91cEZpZWxkLmxlbmd0aDtlKyspIXIuZ3JvdXBDb2x1bW5TaG93W2VdJiZyLnZpc2liaWx0eU9uTmV4dEdyb3VwaW5nW2VdJiZZZSh0KS5qcUdyaWQoInNob3dDb2wiLHIuZ3JvdXBGaWVsZFtlXSk7Zm9yKGU9MDtlPGkubGVuZ3RoO2UrKylyLnZpc2liaWx0eU9uTmV4dEdyb3VwaW5nW2VdPVllKCIjIitZZS5qZ3JpZC5qcUlEKHQucC5pZCkrIl8iK1llLmpncmlkLmpxSUQoaVtlXSkpLmlzKCI6dmlzaWJsZSIpO3QucC5ncm91cGluZ1ZpZXc9WWUuZXh0ZW5kKHQucC5ncm91cGluZ1ZpZXcsb3x8e30pLHIuZ3JvdXBGaWVsZD1pLFllKHQpLnRyaWdnZXIoInJlbG9hZEdyaWQiKX0pfSxncm91cGluZ1JlbW92ZTpmdW5jdGlvbihpLG8pe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZT10aGlzO2lmKHZvaWQgMD09PWkmJihpPSEwKSx2b2lkIDA9PT1vJiYobz0hMSksIShlLnAuZ3JvdXBpbmc9ITEpPT09aSl7Zm9yKHZhciB0PWUucC5ncm91cGluZ1ZpZXcscj0wO3I8dC5ncm91cEZpZWxkLmxlbmd0aDtyKyspIXQuZ3JvdXBDb2x1bW5TaG93W3JdJiZ0LnZpc2liaWx0eU9uTmV4dEdyb3VwaW5nW3JdJiZZZShlKS5qcUdyaWQoInNob3dDb2wiLHQuZ3JvdXBGaWVsZCk7WWUoIiMiK1llLmpncmlkLmpxSUQoZS5wLmlkKSsiIHRib2R5IikuZmlyc3QoKS5maW5kKCJ0ci5qcWdyb3VwLCB0ci5qcWZvb3QiKS5yZW1vdmUoKSxZZSgiIyIrWWUuamdyaWQuanFJRChlLnAuaWQpKyIgdGJvZHkiKS5maXJzdCgpLmZpbmQoInRyLmpxZ3JvdzpoaWRkZW4iKS5zaG93KCl9ZWxzZSBZZShlKS50cmlnZ2VyKCJyZWxvYWRHcmlkIik7byYmWWUoZSkuanFHcmlkKCJncm91cGluZ0luaXQiKX0pfSxncm91cGluZ0NhbGN1bGF0aW9uczp7aGFuZGxlcjpmdW5jdGlvbihlLHQscixpLG8sYSl7dmFyIG4sbD17c3VtOmZ1bmN0aW9uKCl7cmV0dXJuIFllLmpncmlkLmZsb2F0TnVtKHQpK1llLmpncmlkLmZsb2F0TnVtKGFbcl0pfSxtaW46ZnVuY3Rpb24oKXtyZXR1cm4iIj09PXQ/WWUuamdyaWQuZmxvYXROdW0oYVtyXSk6TWF0aC5taW4oWWUuamdyaWQuZmxvYXROdW0odCksWWUuamdyaWQuZmxvYXROdW0oYVtyXSkpfSxtYXg6ZnVuY3Rpb24oKXtyZXR1cm4iIj09PXQ/WWUuamdyaWQuZmxvYXROdW0oYVtyXSk6TWF0aC5tYXgoWWUuamdyaWQuZmxvYXROdW0odCksWWUuamdyaWQuZmxvYXROdW0oYVtyXSkpfSxjb3VudDpmdW5jdGlvbigpe3JldHVybiIiPT09dCYmKHQ9MCksYS5oYXNPd25Qcm9wZXJ0eShyKT90KzE6MH0sYXZnOmZ1bmN0aW9uKCl7cmV0dXJuIGwuc3VtKCl9fTtpZihsW2VdKXJldHVybiBuPWxbZV0oKSxudWxsIT1pPyJmaXhlZCI9PT1vP24udG9GaXhlZChpKToobz1NYXRoLnBvdygxMCxpKSxNYXRoLnJvdW5kKG4qbykvbyk6bjt0aHJvdyJqcUdyaWQgR3JvdXBpbmcgTm8gc3VjaCBtZXRob2Q6ICIrZX19LGdyb3VwaW5nUmVzZXRDYWxjczpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt0aGlzLnAuZ3JvdXBpbmdWaWV3Ll9sb2Nncj0hMX0pfSxzZXRDb2xTcGFuSGVhZGVyOmZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZSx0LHIsaSxvLGEsbixsLHMsZCxwLGMsdSxoPXRoaXMsZz0wLGY9aC5wLmNvbE1vZGVsLG09Zi5sZW5ndGgsdj1oLmdyaWQuaGVhZGVycyxqPVllKCJ0YWJsZS51aS1qcWdyaWQtaHRhYmxlIixoLmdyaWQuaERpdiksYj1qLmNoaWxkcmVuKCJ0aGVhZCIpLHc9ai5maW5kKCIuanFnLWZpcnN0LXJvdy1oZWFkZXIiKSxqPSExLHk9Yi5jaGlsZHJlbigidHIiKS5sZW5ndGg7Zm9yKEFycmF5LmlzQXJyYXkoeCkmJihoLnAuY29sU3BhbkhlYWRlcj14KSx2b2lkIDA9PT13WzBdP3c9WWUoIjx0cj4iLHtyb2xlOiJyb3ciLCJhcmlhLWhpZGRlbiI6InRydWUifSkuYWRkQ2xhc3MoImpxZy1maXJzdC1yb3ctaGVhZGVyIikuY3NzKCJoZWlnaHQiLCJhdXRvIik6dy5lbXB0eSgpLGgucC5mcm96ZW5Db2x1bW5zJiYoWWUoaCkuanFHcmlkKCJkZXN0cm95RnJvemVuQ29sdW1ucyIpLGo9ITApLGU9MDtlPG07ZSsrKXI9dltlXS5lbCxpPVllKHIpLHQ9ZltlXSxvPXtoZWlnaHQ6IjBweCIsd2lkdGg6dltlXS53aWR0aCsicHgiLGRpc3BsYXk6dC5oaWRkZW4/Im5vbmUiOiIifSxZZSgiPHRoPiIse3JvbGU6ImdyaWRjZWxsIn0pLmNzcyhvKS5hZGRDbGFzcygidWktZmlyc3QtdGgtIitoLnAuZGlyZWN0aW9uKyIgIisodC5sYWJlbENsYXNzZXN8fCIiKSkuYXBwZW5kVG8odyk7Zm9yKGIucHJlcGVuZCh3KSxZZShoKS5vbigianFHcmlkUmVzaXplU3RvcC5zZXRHcm91cEhlYWRlcnMiLGZ1bmN0aW9uKGUsdCxyKXt3LmZpbmQoInRoIikuZXEocilbMF0uc3R5bGUud2lkdGg9dCsicHgifSksZT0wO2U8bTtlKyspaWYocj12W2VdLmVsLGk9WWUociksdD1mW2VdLDA8PShuPVllLmpncmlkLmluQ29sdW1uSGVhZGVyKHQubmFtZSxoLnAuY29sU3BhbkhlYWRlcikpKXtmb3Iocz0obD1oLnAuY29sU3BhbkhlYWRlcltuXSkubnVtYmVyT2ZDb2x1bW5zLGQ9bC50aXRsZVRleHQsYz1sLmNsYXNzTmFtZXx8IiIsbj1wPTA7bjxzJiZlK248bTtuKyspZltlK25dLmhpZGRlbnx8cCsrO2lmKDA8cCYmKGkuYXR0cigiY29sc3BhbiIsU3RyaW5nKHApKSwxPHkpKWZvcihhPTE7YTx5O2ErKylZZSgidHIiLGIpLmVxKGErMSkuZmluZCgidGgiKS5lcShlKS5hdHRyKCJjb2xzcGFuIixTdHJpbmcocCkpO2ZvcihkJiYodT1pLmZpbmQoImRpdi51aS10aC1kaXYiKVswXS5maXJzdENoaWxkLGwuc2F2ZWRMYWJlbD11LmRhdGEsdS5kYXRhPWQsaC5wLmhlYWRlcnRpdGxlcykmJmkuYXR0cigidGl0bGUiLGQpLGkuYWRkQ2xhc3MoYyksZz0wO2c8cy0xO2crKylpZihZZSh2W2crZSsxXS5lbCkuaGlkZSgpLGgucC5jb2xNb2RlbFtnK2UrMV0uaGlkZWRsZz0hMCxoLnAuY29sTW9kZWxbZytlKzFdLl9jb2xzcGFuY2VsbD0hMCwxPHkpZm9yKGE9MTthPHk7YSsrKVllKCJ0ciIsYikuZXEoYSsxKS5maW5kKCJ0aCIpLmVxKGUrZysxKS5oaWRlKCl9aiYmWWUoaCkuanFHcmlkKCJzZXRGcm96ZW5Db2x1bW5zIil9KX0sZGVzdHJveUNvbFNwYW5IZWFkZXI6ZnVuY3Rpb24obCl7cmV0dXJuIHZvaWQgMD09PWwmJihsPSEwKSx0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgcixpLGUsbyxhLHQ9dGhpcyxuPVllKCJ0YWJsZS51aS1qcWdyaWQtaHRhYmxlIix0LmdyaWQuaERpdikuY2hpbGRyZW4oInRoZWFkIik7aWYoWWUoInRyLmpxZy1maXJzdC1yb3ctaGVhZGVyIixuKS5yZW1vdmUoKSx0LnAuY29sU3BhbkhlYWRlci5sZW5ndGgpZm9yKGU9MDtlPHQucC5jb2xTcGFuSGVhZGVyLmxlbmd0aDtlKyspaWYocj10LnAuY29sU3BhbkhlYWRlcltlXSwhKChhPVllLmpncmlkLmdldEVsZW1CeUF0dHJWYWwodC5wLmNvbE1vZGVsLCJuYW1lIixyLnN0YXJ0Q29sdW1uTmFtZSwhMCkpPDApKXtmb3IoaT1hKzE7aTxhK3IubnVtYmVyT2ZDb2x1bW5zO2krKyl0LnAuY29sTW9kZWxbaV0uaGlkZWRsZz0hMSx0LnAuY29sTW9kZWxbaV0uX2NvbHNwYW5jZWxsPSExO1llKCI+dHIiLG4pLmVhY2goZnVuY3Rpb24oZSx0KXtmb3IoKG89WWUoInRoIix0KS5lcShhKSkuY2xhc3NOYW1lfHwoby5jbGFzc05hbWU9IiIpLFllKG8pLmF0dHIoImNvbHNwYW4iLCIiKS5yZW1vdmVDbGFzcyhvLmNsYXNzTmFtZSksWWUodCkuaGFzQ2xhc3MoInVpLWpxZ3JpZC1sYWJlbHMiKSYmKG8uZmluZCgiZGl2LnVpLXRoLWRpdiIpWzBdLmZpcnN0Q2hpbGQuZGF0YT1yLnNhdmVkTGFiZWwpLGk9MTtpPHIubnVtYmVyT2ZDb2x1bW5zO2krKylZZSgidGgiLHQpLmVxKGEraSkuc2hvdygpfSl9bCYmKHQucC5jb2xTcGFuSGVhZGVyPVtdKX0pfSxzZXRHcm91cEhlYWRlcnM6ZnVuY3Rpb24oXyl7cmV0dXJuIF89WWUuZXh0ZW5kKHt1c2VDb2xTcGFuU3R5bGU6ITEsZ3JvdXBIZWFkZXJzOltdfSxffHx7fSksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGUsdCxyLGksbyxhLG4sbCxzLGQscCxjPXRoaXMsdT0wLGg9Yy5wLmNvbE1vZGVsLGc9aC5sZW5ndGgsZj1jLmdyaWQuaGVhZGVycyxtPVllKCJ0YWJsZS51aS1qcWdyaWQtaHRhYmxlIixjLmdyaWQuaERpdiksdj1tLmNoaWxkcmVuKCJ0aGVhZCIpLmNoaWxkcmVuKCJ0ci51aS1qcWdyaWQtbGFiZWxzIikubGFzdCgpLmFkZENsYXNzKCJqcWctc2Vjb25kLXJvdy1oZWFkZXIiKSxqPW0uY2hpbGRyZW4oInRoZWFkIiksYj1tLmZpbmQoIi5qcWctZmlyc3Qtcm93LWhlYWRlciIpLHc9ITEseT0hMSx4PVllLmpncmlkLnN0eWxlVUlbYy5wLnN0eWxlVUl8fCJqUXVlcnlVSSJdLmJhc2U7Zm9yKGMucC5ncm91cEhlYWRlcnx8KGMucC5ncm91cEhlYWRlcj1bXSksYy5wLmdyb3VwSGVhZGVyLnB1c2goXyksYy5wLmdyb3VwSGVhZGVyT249ITAsdm9pZCAwPT09YlswXT9iPVllKCI8dHI+Iix7cm9sZToicm93IiwiYXJpYS1oaWRkZW4iOiJ0cnVlIn0pLmFkZENsYXNzKCJqcWctZmlyc3Qtcm93LWhlYWRlciIpLmNzcygiaGVpZ2h0IiwiYXV0byIpOmIuZW1wdHkoKSxjLnAuZnJvemVuQ29sdW1ucyYmKFllKGMpLmpxR3JpZCgiZGVzdHJveUZyb3plbkNvbHVtbnMiKSx5PSEwKSwoWWUoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkuaXMoImlucHV0Iil8fFllKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpLmlzKCJ0ZXh0YXJlYSIpKSYmKHc9ZG9jdW1lbnQuYWN0aXZlRWxlbWVudCksWWUoYykucHJlcGVuZChqKSxyPVllKCI8dHI+Iix7cm9sZToicm93In0pLmFkZENsYXNzKCJ1aS1qcWdyaWQtbGFiZWxzIGpxZy10aGlyZC1yb3ctaGVhZGVyIiksZT0wO2U8ZztlKyspaWYoaT1mW2VdLmVsLG89WWUoaSksdD1oW2VdLHM9e2hlaWdodDoiMHB4Iix3aWR0aDpmW2VdLndpZHRoKyJweCIsZGlzcGxheTp0LmhpZGRlbj8ibm9uZSI6IiJ9LFllKCI8dGg+Iix7cm9sZToiZ3JpZGNlbGwifSkuY3NzKHMpLmFkZENsYXNzKCJ1aS1maXJzdC10aC0iK2MucC5kaXJlY3Rpb24rIiAiKyh0LmxhYmVsQ2xhc3Nlc3x8IiIpKS5hcHBlbmRUbyhiKSxpLnN0eWxlLndpZHRoPSIiLDA8PShhPVllLmpncmlkLmluQ29sdW1uSGVhZGVyKHQubmFtZSxfLmdyb3VwSGVhZGVycykpKXtmb3Iobj0ocz1fLmdyb3VwSGVhZGVyc1thXSkubnVtYmVyT2ZDb2x1bW5zLHA9cy50aXRsZVRleHQscz1zLmNsYXNzTmFtZXx8IiIsYT1sPTA7YTxuJiZlK2E8ZzthKyspaFtlK2FdLmhpZGRlbnx8bCsrO3M9WWUoIjx0aD4iKS5hdHRyKHtyb2xlOiJjb2x1bW5oZWFkZXIifSkuYWRkQ2xhc3MoeC5oZWFkZXJCb3grIiB1aS10aC1jb2x1bW4taGVhZGVyIHVpLXRoLSIrYy5wLmRpcmVjdGlvbisiICIrcysiICIrKHQubGFiZWxDbGFzc2VzfHwiIikpLmh0bWwocCksMDxsJiZzLmF0dHIoImNvbHNwYW4iLFN0cmluZyhsKSksYy5wLmhlYWRlcnRpdGxlcyYmcy5hdHRyKCJ0aXRsZSIscy50ZXh0KCkpLDA9PT1sJiZzLmhpZGUoKSxvLmJlZm9yZShzKSxyLmFwcGVuZChpKSx1PW4tMX1lbHNlIDA9PT11P18udXNlQ29sU3BhblN0eWxlPyhwPW8uYXR0cigicm93c3BhbiIpP3BhcnNlSW50KG8uYXR0cigicm93c3BhbiIpLDEwKSsxOjIsby5hdHRyKCJyb3dzcGFuIixwKSk6KFllKCI8dGg+Iix7cm9sZToiY29sdW1uaGVhZGVyIn0pLmFkZENsYXNzKHguaGVhZGVyQm94KyIgdWktdGgtY29sdW1uLWhlYWRlciB1aS10aC0iK2MucC5kaXJlY3Rpb24pLmNzcyh7ZGlzcGxheTp0LmhpZGRlbj8ibm9uZSI6IiJ9KS5pbnNlcnRCZWZvcmUobyksci5hcHBlbmQoaSkpOihyLmFwcGVuZChpKSx1LS0pO2lmKChqPVllKGMpLmNoaWxkcmVuKCJ0aGVhZCIpKS5wcmVwZW5kKGIpLHIuaW5zZXJ0QWZ0ZXIodiksbS5hcHBlbmQoaiksXy51c2VDb2xTcGFuU3R5bGUmJihtLmZpbmQoInNwYW4udWktanFncmlkLXJlc2l6ZSIpLmVhY2goZnVuY3Rpb24oKXt2YXIgZT1ZZSh0aGlzKS5wYXJlbnQoKTtlLmlzKCI6dmlzaWJsZSIpJiYodGhpcy5zdHlsZS5jc3NUZXh0PSJoZWlnaHQ6ICIrZS5oZWlnaHQoKSsicHggIWltcG9ydGFudDsgY3Vyc29yOiBjb2wtcmVzaXplOyIpfSksbS5maW5kKCJkaXYudWktanFncmlkLXNvcnRhYmxlIikuZWFjaChmdW5jdGlvbigpe3ZhciBlPVllKHRoaXMpLHQ9ZS5wYXJlbnQoKTt0LmlzKCI6dmlzaWJsZSIpJiZ0LmlzKCI6aGFzKHNwYW4udWktanFncmlkLXJlc2l6ZSkiKSYmZS5jc3MoInRvcCIsKHQuaGVpZ2h0KCktZS5vdXRlckhlaWdodCgpKS8yLTQrInB4Iil9KSksZD1qLmZpbmQoInRyLmpxZy1maXJzdC1yb3ctaGVhZGVyIiksWWUoYykub24oImpxR3JpZFJlc2l6ZVN0b3Auc2V0R3JvdXBIZWFkZXJzIixmdW5jdGlvbihlLHQscil7ZC5maW5kKCJ0aCIpLmVxKHIpWzBdLnN0eWxlLndpZHRoPXQrInB4In0pLHcpdHJ5e1llKHcpLmZvY3VzKCl9Y2F0Y2goZSl7fXY9WWUoInRyLmpxZy1zZWNvbmQtcm93LWhlYWRlciB0aCIpLmVxKDApOyJvYmplY3QiPT09WWUuamdyaWQudHlwZSh2KSYmdi5sZW5ndGgmJiIiPT09WWUuamdyaWQudHJpbSh2WzBdLm91dGVyVGV4dCkmJlllKCJ0ci5qcWctc2Vjb25kLXJvdy1oZWFkZXIgdGgiKS5lcSgwKS5wcmVwZW5kKCImbmJzcDsiKSx5JiZZZShjKS5qcUdyaWQoInNldEZyb3plbkNvbHVtbnMiKSxZZShjKS50cmlnZ2VySGFuZGxlcigiYWZ0ZXJTZXRHcm91cEhhbmRsZXIiLFtfXSl9KX0sZGVzdHJveUdyb3VwSGVhZGVyOmZ1bmN0aW9uKGMpe3JldHVybiB2b2lkIDA9PT1jJiYoYz0hMCksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGUsdCxyLGksbyxhLG49dGhpcyxsPW4uZ3JpZCxzPVllKCJ0YWJsZS51aS1qcWdyaWQtaHRhYmxlIHRoZWFkIixsLmhEaXYpLGQ9bi5wLmNvbE1vZGVsLHA9ITE7aWYobCl7Zm9yKG4ucC5mcm96ZW5Db2x1bW5zJiYoWWUobikuanFHcmlkKCJkZXN0cm95RnJvemVuQ29sdW1ucyIpLHA9ITApLFllKHRoaXMpLm9mZigiLnNldEdyb3VwSGVhZGVycyIpLG4ucC5ncm91cEhlYWRlck9uPSExLGU9WWUoIjx0cj4iLHtyb2xlOiJyb3cifSkuYWRkQ2xhc3MoInVpLWpxZ3JpZC1sYWJlbHMiKSx0PTAscj0oaT1sLmhlYWRlcnMpLmxlbmd0aDt0PHI7dCsrKXthPWRbdF0uaGlkZGVuPyJub25lIjoiIixhPVllKGlbdF0uZWwpLndpZHRoKFllKCJ0ci5qcWctZmlyc3Qtcm93LWhlYWRlciB0aCIscykuZXEodCkud2lkdGgoKSkuY3NzKCJkaXNwbGF5IixhKTt0cnl7YS5yZW1vdmVBdHRyKCJyb3dTcGFuIil9Y2F0Y2goZSl7YS5hdHRyKCJyb3dTcGFuIiwxKX1lLmFwcGVuZChhKSwwPChvPWEuY2hpbGRyZW4oInNwYW4udWktanFncmlkLXJlc2l6ZSIpKS5sZW5ndGgmJihvWzBdLnN0eWxlLmhlaWdodD0iIiksYS5jaGlsZHJlbigiZGl2IilbMF0uc3R5bGUudG9wPSIifVllKHMpLmNoaWxkcmVuKCJ0ci51aS1qcWdyaWQtbGFiZWxzIikucmVtb3ZlKCksWWUocykuY2hpbGRyZW4oInRyLmpxZy1maXJzdC1yb3ctaGVhZGVyIikucmVtb3ZlKCksWWUocykucHJlcGVuZChlKSwhMD09PWMmJlllKG4pLmpxR3JpZCgic2V0R3JpZFBhcmFtIix7Z3JvdXBIZWFkZXI6bnVsbH0pLHAmJlllKG4pLmpxR3JpZCgic2V0RnJvemVuQ29sdW1ucyIpLFllKG4pLm9mZigiYWZ0ZXJTZXRHcm91cEhhbmRsZXIiKX19KX0saXNHcm91cEhlYWRlck9uOmZ1bmN0aW9uKCl7dmFyIGU9dGhpc1swXTtyZXR1cm4hMD09PWUucC5ncm91cEhlYWRlck9uJiZlLnAuZ3JvdXBIZWFkZXImJihBcnJheS5pc0FycmF5KGUucC5ncm91cEhlYWRlcil8fFllLmpncmlkLmlzRnVuY3Rpb24oZS5wLmdyb3VwSGVhZGVyKSl9LHJlZnJlc2hHcm91cEhlYWRlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGUsdD10aGlzLHI9WWUodCkuanFHcmlkKCJpc0dyb3VwSGVhZGVyT24iKTtpZihyJiYoWWUodCkuanFHcmlkKCJkZXN0cm95R3JvdXBIZWFkZXIiLCExKSxlPVllLmV4dGVuZChbXSx0LnAuZ3JvdXBIZWFkZXIpLHQucC5ncm91cEhlYWRlcj1udWxsKSxyJiZlKWZvcih2YXIgaT0wO2k8ZS5sZW5ndGg7aSsrKVllKHQpLmpxR3JpZCgic2V0R3JvdXBIZWFkZXJzIixlW2ldKX0pfX0pLFllLmpncmlkPVllLmpncmlkfHx7fSxZZS5leHRlbmQoWWUuamdyaWQse3NhdmVTdGF0ZTpmdW5jdGlvbihlLHQpe2lmKHQ9WWUuZXh0ZW5kKHt1c2VTdG9yYWdlOiEwLHN0b3JhZ2VUeXBlOiJsb2NhbFN0b3JhZ2UiLGJlZm9yZVNldEl0ZW06bnVsbCxjb21wcmVzc2lvbjohMSxjb21wcmVzc2lvbk1vZHVsZToiTFpTdHJpbmciLGNvbXByZXNzaW9uTWV0aG9kOiJjb21wcmVzc1RvVVRGMTYiLGRlYnVnOiExLHNhdmVEYXRhOiEwfSx0fHx7fSksZSl7dmFyIHIsaT0iIixvPSIiLGU9WWUoIiMiK2UpWzBdO2lmKGUuZ3JpZCl7aWYoKG49WWUoZSkuZGF0YSgiaW5saW5lTmF2IikpJiZlLnAuaW5saW5lTmF2JiZZZShlKS5qcUdyaWQoInNldEdyaWRQYXJhbSIse19pTjpufSksKG49WWUoZSkuZGF0YSgiZmlsdGVyVG9vbGJhciIpKSYmZS5wLmZpbHRlclRvb2xiYXImJlllKGUpLmpxR3JpZCgic2V0R3JpZFBhcmFtIix7X2ZUOm59KSxpPVllKGUpLmpxR3JpZCgianFHcmlkRXhwb3J0Iix7ZXhwdHlwZToianNvbnN0cmluZyIsaWRlbnQ6IiIscm9vdDoiIixkYXRhOnQuc2F2ZURhdGF9KSxvPSIiLHQuc2F2ZURhdGEmJihuPShvPVllKGUuZ3JpZC5iRGl2KS5maW5kKCIudWktanFncmlkLWJ0YWJsZSB0Ym9keSIpLmZpcnN0KCkuaHRtbCgpKS5pbmRleE9mKCI8L3RyPiIpLG89by5zbGljZShuKzUpKSxZZS5qZ3JpZC5pc0Z1bmN0aW9uKHQuYmVmb3JlU2V0SXRlbSkmJm51bGwhPShyPXQuYmVmb3JlU2V0SXRlbS5jYWxsKGUsaSkpJiYoaT1yKSx0LmRlYnVnKXtZZSgiI2dib3hfdHJlZSIpLnByZXBlbmQoJzxhIGlkPSJsaW5rX3NhdmUiIHRhcmdldD0iX2JsYW5rIiBkb3dubG9hZD0ianFHcmlkX2R1bXAudHh0Ij5DbGljayB0byBzYXZlIER1bXAgRGF0YTwvYT4nKTt2YXIgYSxuPVtdLGw9e307bi5wdXNoKCJHcmlkIE9wdGlvbnNcbiIpLG4ucHVzaChpKSxuLnB1c2goIlxuIiksbi5wdXNoKCJHcmlkRGF0YVxuIiksbi5wdXNoKG8pLGwudHlwZT0icGxhaW4vdGV4dDtjaGFyc2V0PXV0Zi04Ijt0cnl7YT1uZXcgRmlsZShuLCJqcUdyaWRfZHVtcC50eHQiLGwpfWNhdGNoKGUpe2E9bmV3IEJsb2IobixsKX1uPVVSTC5jcmVhdGVPYmplY3RVUkwoYSksWWUoIiNsaW5rX3NhdmUiKS5hdHRyKCJocmVmIixuKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7WWUodGhpcykucmVtb3ZlKCl9KX1pZih0LmNvbXByZXNzaW9uJiZ0LmNvbXByZXNzaW9uTW9kdWxlKXRyeXtudWxsIT0ocj13aW5kb3dbdC5jb21wcmVzc2lvbk1vZHVsZV1bdC5jb21wcmVzc2lvbk1ldGhvZF0oaSkpJiYoaT1yLG89d2luZG93W3QuY29tcHJlc3Npb25Nb2R1bGVdW3QuY29tcHJlc3Npb25NZXRob2RdKG8pKX1jYXRjaChlKXt9aWYodC51c2VTdG9yYWdlJiZZZS5qZ3JpZC5pc0xvY2FsU3RvcmFnZSgpKXRyeXt3aW5kb3dbdC5zdG9yYWdlVHlwZV0uc2V0SXRlbSgianFHcmlkIitlLnAuaWQsaSksd2luZG93W3Quc3RvcmFnZVR5cGVdLnNldEl0ZW0oImpxR3JpZCIrZS5wLmlkKyJfZGF0YSIsbyl9Y2F0Y2goZSl7MjI9PT1lLmNvZGUmJmFsZXJ0KCJMb2NhbCBzdG9yYWdlIGxpbWl0IGlzIG92ZXIhIil9cmV0dXJuIGl9fX0sbG9hZFN0YXRlOmZ1bmN0aW9uKGUsdCxyKXtpZihyPVllLmV4dGVuZCh7dXNlU3RvcmFnZTohMCxzdG9yYWdlVHlwZToibG9jYWxTdG9yYWdlIixjbGVhckFmdGVyTG9hZDohMSxiZWZvcmVTZXRHcmlkOm51bGwsYWZ0ZXJTZXRHcmlkOm51bGwsZGVjb21wcmVzc2lvbjohMSxkZWNvbXByZXNzaW9uTW9kdWxlOiJMWlN0cmluZyIsZGVjb21wcmVzc2lvbk1ldGhvZDoiZGVjb21wcmVzc0Zyb21VVEYxNiIscmVzdG9yZURhdGE6ITB9LHJ8fHt9KSxlKXt2YXIgaSxvLGEsbj1ZZSgiIyIrZSlbMF07aWYoci51c2VTdG9yYWdlKXRyeXt0PXdpbmRvd1tyLnN0b3JhZ2VUeXBlXS5nZXRJdGVtKCJqcUdyaWQiK24uaWQpLGw9d2luZG93W3Iuc3RvcmFnZVR5cGVdLmdldEl0ZW0oImpxR3JpZCIrbi5pZCsiX2RhdGEiKX1jYXRjaChlKXt9aWYodCl7aWYoci5kZWNvbXByZXNzaW9uJiZyLmRlY29tcHJlc3Npb25Nb2R1bGUpdHJ5e251bGwhPShpPXdpbmRvd1tyLmRlY29tcHJlc3Npb25Nb2R1bGVdW3IuZGVjb21wcmVzc2lvbk1ldGhvZF0odCkpJiYodD1pLGw9d2luZG93W3IuZGVjb21wcmVzc2lvbk1vZHVsZV1bci5kZWNvbXByZXNzaW9uTWV0aG9kXShsKSl9Y2F0Y2goZSl7fWlmKChpPVllLmpncmlkLnBhcnNlRnVuYyh0KSkmJiJvYmplY3QiPT09WWUuamdyaWQudHlwZShpKSl7bi5ncmlkJiZZZS5qZ3JpZC5ncmlkVW5sb2FkKGUpO3ZhciBsLHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LHM9e3JlY2NvdW50OihpPVllLmpncmlkLmlzRnVuY3Rpb24oci5iZWZvcmVTZXRHcmlkKSYmKHM9ci5iZWZvcmVTZXRHcmlkKGkpKSYmIm9iamVjdCI9PT1ZZS5qZ3JpZC50eXBlKHMpP3M6aSkucmVjY291bnQscmVjb3JkczppLnJlY29yZHMsbGFzdHBhZ2U6aS5sYXN0cGFnZSxzaHJpbmtUb0ZpdDp0KGkuc2hyaW5rVG9GaXQpLGRhdGE6dChpLmRhdGEpLGRhdGF0eXBlOnQoaS5kYXRhdHlwZSksZ3JvdXBpbmc6dChpLmdyb3VwaW5nKX0sZD0oaS5zaHJpbmtUb0ZpdD0hMSxpLmRhdGE9W10saS5kYXRhdHlwZT0ibG9jYWwiLGkuZ3JvdXBpbmc9ITEsaS5pbmxpbmVOYXYmJihvPXQoaS5faU4pLGkuX2lOPW51bGwsZGVsZXRlIGkuX2lOKSxpLmZpbHRlclRvb2xiYXImJihhPXQoaS5fZlQpLGkuX2ZUPW51bGwsZGVsZXRlIGkuX2ZUKSxZZSgiIyIrZSkuanFHcmlkKGkpKTtpZihkLmpxR3JpZCgiZGVsUm93RGF0YSIsIm5vcmVjcyIpLHIucmVzdG9yZURhdGEmJiIiIT09WWUuamdyaWQudHJpbShsKSYmZC5hcHBlbmQobCksZC5qcUdyaWQoInNldEdyaWRQYXJhbSIscyksaS5zdG9yZU5hdk9wdGlvbnMmJmkubmF2R3JpZCYmKGRbMF0ucC5uYXZHcmlkPSExLGQuanFHcmlkKCJuYXZHcmlkIixpLnBhZ2VyLGkubmF2T3B0aW9ucyxpLmVkaXRPcHRpb25zLGkuYWRkT3B0aW9ucyxpLmRlbE9wdGlvbnMsaS5zZWFyY2hPcHRpb25zLGkudmlld09wdGlvbnMpLGkubmF2QnV0dG9ucykmJmkubmF2QnV0dG9ucy5sZW5ndGgpZm9yKHZhciBwPTA7cDxpLm5hdkJ1dHRvbnMubGVuZ3RoO3ArKykic2VwY2xhc3MiaW4gaS5uYXZCdXR0b25zW3BdWzFdP2QuanFHcmlkKCJuYXZTZXBhcmF0b3JBZGQiLGkubmF2QnV0dG9uc1twXVswXSxpLm5hdkJ1dHRvbnNbcF1bMV0pOmQuanFHcmlkKCJuYXZCdXR0b25BZGQiLGkubmF2QnV0dG9uc1twXVswXSxpLm5hdkJ1dHRvbnNbcF1bMV0pO2lmKGRbMF0ucmVmcmVzaEluZGV4KCksaS5zdWJHcmlkJiYodD0xPT09aS5tdWx0aXNlbGVjdD8xOjAsbD0hMD09PWkucm93bnVtYmVycz8xOjAsZC5qcUdyaWQoImFkZFN1YkdyaWQiLHQrbCksWWUuZWFjaChkWzBdLnJvd3MsZnVuY3Rpb24oZSx0KXtZZSh0KS5oYXNDbGFzcygidWktc2ctZXhwYW5kZWQiKSYmWWUoZFswXS5yb3dzW2UtMV0pLmZpbmQoInRkLnNnZXhwYW5kZWQiKS5jbGljaygpLmNsaWNrKCl9KSksaS50cmVlR3JpZClmb3IodmFyIGM9MSx1PWRbMF0ucm93cy5sZW5ndGgsaD1pLmV4cENvbEluZCxnPWkudHJlZVJlYWRlci5sZWFmX2ZpZWxkLGY9aS50cmVlUmVhZGVyLmV4cGFuZGVkX2ZpZWxkO2M8dTspWWUoZFswXS5yb3dzW2NdLmNlbGxzW2hdKS5maW5kKCJkaXYudHJlZWNsaWNrIikub24oImNsaWNrIixmdW5jdGlvbihlKXtlPWUudGFyZ2V0fHxlLnNyY0VsZW1lbnQsZT1ZZS5qZ3JpZC5zdHJpcFByZWYoaS5pZFByZWZpeCxZZShlLGRbMF0ucm93cykuY2xvc2VzdCgidHIuanFncm93IilbMF0uaWQpLGU9ZFswXS5wLl9pbmRleFtlXTtyZXR1cm4gZFswXS5wLmRhdGFbZV1bZ118fChkWzBdLnAuZGF0YVtlXVtmXT8oZC5qcUdyaWQoImNvbGxhcHNlUm93IixkWzBdLnAuZGF0YVtlXSksZC5qcUdyaWQoImNvbGxhcHNlTm9kZSIsZFswXS5wLmRhdGFbZV0pKTooZC5qcUdyaWQoImV4cGFuZFJvdyIsZFswXS5wLmRhdGFbZV0pLGQuanFHcmlkKCJleHBhbmROb2RlIixkWzBdLnAuZGF0YVtlXSkpKSwhMX0pLCEwPT09aS5FeHBhbmRDb2xDbGljayYmWWUoZFswXS5yb3dzW2NdLmNlbGxzW2hdKS5maW5kKCJzcGFuLmNlbGwtd3JhcHBlciIpLmNzcygiY3Vyc29yIiwicG9pbnRlciIpLm9uKCJjbGljayIsZnVuY3Rpb24oZSl7dmFyIGU9ZS50YXJnZXR8fGUuc3JjRWxlbWVudCxlPVllLmpncmlkLnN0cmlwUHJlZihpLmlkUHJlZml4LFllKGUsZFswXS5yb3dzKS5jbG9zZXN0KCJ0ci5qcWdyb3ciKVswXS5pZCksdD1kWzBdLnAuX2luZGV4W2VdO3JldHVybiBkWzBdLnAuZGF0YVt0XVtnXXx8KGRbMF0ucC5kYXRhW3RdW2ZdPyhkLmpxR3JpZCgiY29sbGFwc2VSb3ciLGRbMF0ucC5kYXRhW3RdKSxkLmpxR3JpZCgiY29sbGFwc2VOb2RlIixkWzBdLnAuZGF0YVt0XSkpOihkLmpxR3JpZCgiZXhwYW5kUm93IixkWzBdLnAuZGF0YVt0XSksZC5qcUdyaWQoImV4cGFuZE5vZGUiLGRbMF0ucC5kYXRhW3RdKSkpLGQuanFHcmlkKCJzZXRTZWxlY3Rpb24iLGUpLCExfSksYysrO2lmKGkubXVsdGlzZWxlY3QmJlllLmVhY2goaS5zZWxhcnJyb3csZnVuY3Rpb24oKXtZZSgiI2pxZ18iK2UrIl8iK3RoaXMpW2kudXNlUHJvcD8icHJvcCI6ImF0dHIiXSgiY2hlY2tlZCIsImNoZWNrZWQiKX0pLGQuanFHcmlkKCJpc0dyb3VwSGVhZGVyT24iKSYmZC5qcUdyaWQoInJlZnJlc2hHcm91cEhlYWRlcnMiKSxpLnNlYXJjaENvbHMpZm9yKHZhciBtIGluIGkuX3Jlc3VsdHMpaS5fcmVzdWx0cy5oYXNPd25Qcm9wZXJ0eShtKSYmWWUoIiNqcXNfIitlKyJfIittKS52YWwoaS5fcmVzdWx0c1ttXS52KTtpLmlubGluZU5hdiYmbyYmKGQuanFHcmlkKCJzZXRHcmlkUGFyYW0iLHtpbmxpbmVOYXY6ITF9KSxkLmpxR3JpZCgiaW5saW5lTmF2IixpLnBhZ2VyLG8pKSxpLmZpbHRlclRvb2xiYXImJmEmJihkLmpxR3JpZCgic2V0R3JpZFBhcmFtIix7ZmlsdGVyVG9vbGJhcjohMX0pLGEucmVzdG9yZUZyb21GaWx0ZXJzPSEwLGQuanFHcmlkKCJmaWx0ZXJUb29sYmFyIixhKSksaS5mcm96ZW5Db2x1bW5zJiZkLmpxR3JpZCgic2V0RnJvemVuQ29sdW1ucyIpLGRbMF0udXBkYXRlcGFnZXIoITAsITApLFllLmpncmlkLmlzRnVuY3Rpb24oci5hZnRlclNldEdyaWQpJiZyLmFmdGVyU2V0R3JpZChkKSxyLmNsZWFyQWZ0ZXJMb2FkJiYod2luZG93W3Iuc3RvcmFnZVR5cGVdLnJlbW92ZUl0ZW0oImpxR3JpZCIrbi5pZCksd2luZG93W3Iuc3RvcmFnZVR5cGVdLnJlbW92ZUl0ZW0oImpxR3JpZCIrbi5pZCsiX2RhdGEiKSl9ZWxzZSBhbGVydCgiY2FuIG5vdCBjb252ZXJ0IHRvIG9iamVjdCIpfX19LGlzR3JpZEluU3RvcmFnZTpmdW5jdGlvbihlLHQpe3ZhciByLGksbyx0PVllLmV4dGVuZCh7c3RvcmFnZVR5cGU6ImxvY2FsU3RvcmFnZSJ9LHR8fHt9KTt0cnl7aT13aW5kb3dbdC5zdG9yYWdlVHlwZV0uZ2V0SXRlbSgianFHcmlkIitlKSxvPXdpbmRvd1t0LnN0b3JhZ2VUeXBlXS5nZXRJdGVtKCJqcUdyaWQiK2UrIl9kYXRhIikscj1udWxsIT1pJiZudWxsIT1vJiYic3RyaW5nIj09dHlwZW9mIGkmJiJzdHJpbmciPT10eXBlb2Ygb31jYXRjaChlKXtyPSExfXJldHVybiByfSxzZXRSZWdpb25hbDpmdW5jdGlvbihlLHQpe3ZhciByPXtzdG9yYWdlVHlwZToic2Vzc2lvblN0b3JhZ2UifTtpZigocj1ZZS5leHRlbmQocix0fHx7fSkpLnJlZ2lvbmFsKXtZZS5qZ3JpZC5zYXZlU3RhdGUoZSxyKSxyLmJlZm9yZVNldEdyaWQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVnaW9uYWw9ci5yZWdpb25hbCxlLmZvcmNlX3JlZ2lvbmFsPSEwLGV9LFllLmpncmlkLmxvYWRTdGF0ZShlLG51bGwscik7dmFyIHQ9WWUoIiMiK2UpWzBdLGk9WWUodCkuanFHcmlkKCJnZXRHcmlkUGFyYW0iLCJjb2xNb2RlbCIpLG89LTEsYT1ZZS5qZ3JpZC5nZXRSZWdpb25hbCh0LCJuYXYiKTtZZS5lYWNoKGksZnVuY3Rpb24oZSl7aWYodGhpcy5mb3JtYXR0ZXImJiJhY3Rpb25zIj09PXRoaXMuZm9ybWF0dGVyKXJldHVybiBvPWUsITF9KSwtMSE9PW8mJmEmJlllKCIjIitlKyIgdGJvZHkgdHIiKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5jZWxsc1tvXTtZZShlKS5maW5kKCIudWktaW5saW5lLWVkaXQiKS5hdHRyKCJ0aXRsZSIsYS5lZGl0dGl0bGUpLFllKGUpLmZpbmQoIi51aS1pbmxpbmUtZGVsIikuYXR0cigidGl0bGUiLGEuZGVsdGl0bGUpLFllKGUpLmZpbmQoIi51aS1pbmxpbmUtc2F2ZSIpLmF0dHIoInRpdGxlIixhLnNhdmV0aXRsZSksWWUoZSkuZmluZCgiLnVpLWlubGluZS1jYW5jZWwiKS5hdHRyKCJ0aXRsZSIsYS5jYW5jZWx0aXRsZSl9KTt0cnl7d2luZG93W3Iuc3RvcmFnZVR5cGVdLnJlbW92ZUl0ZW0oImpxR3JpZCIrdC5pZCksd2luZG93W3Iuc3RvcmFnZVR5cGVdLnJlbW92ZUl0ZW0oImpxR3JpZCIrdC5pZCsiX2RhdGEiKX1jYXRjaChlKXt9fX0sanFHcmlkSW1wb3J0OmZ1bmN0aW9uKGUscil7cj1ZZS5leHRlbmQoe2ltcHR5cGU6InhtbCIsaW1wc3RyaW5nOiIiLGltcHVybDoiIixtdHlwZToiR0VUIixpbXBEYXRhOnt9LHhtbEdyaWQ6e2NvbmZpZzoicm9vdD5ncmlkIixkYXRhOiJyb290PnJvd3MifSxqc29uR3JpZDp7Y29uZmlnOiJncmlkIixkYXRhOiJkYXRhIn0sYWpheE9wdGlvbnM6e319LHJ8fHt9KTtmdW5jdGlvbiBpKGUsdCl7dmFyIHIsaSxvLGE9WWUodC54bWxHcmlkLmNvbmZpZyxlKVswXSx0PVllKHQueG1sR3JpZC5kYXRhLGUpWzBdO2lmKFllLmdyaWQueG1sVG9KU09OKXtmb3IobyBpbiByPVllLmpncmlkLnhtbFRvSlNPTihhKSlyLmhhc093blByb3BlcnR5KG8pJiYoaT1yW29dKTt0PyhhPXIuZ3JpZC5kYXRhdHlwZSxyLmdyaWQuZGF0YXR5cGU9InhtbHN0cmluZyIsci5ncmlkLmRhdGFzdHI9ZSxZZShuKS5qcUdyaWQoaSkuanFHcmlkKCJzZXRHcmlkUGFyYW0iLHtkYXRhdHlwZTphfSkpOnNldFRpbWVvdXQoZnVuY3Rpb24oKXtZZShuKS5qcUdyaWQoaSl9LDApfWVsc2UgYWxlcnQoInhtbDJqc29uIG9yIHBhcnNlIGFyZSBub3QgcHJlc2VudCIpfWZ1bmN0aW9uIHQoZSx0KXt2YXIgcjtlJiYic3RyaW5nIj09dHlwZW9mIGUmJihyPShlPVllLmpncmlkLnBhcnNlRnVuYyhlKSlbdC5qc29uR3JpZC5jb25maWddLChlPWVbdC5qc29uR3JpZC5kYXRhXSk/KHQ9ci5kYXRhdHlwZSxyLmRhdGF0eXBlPSJqc29uc3RyaW5nIixyLmRhdGFzdHI9ZSxZZShuKS5qcUdyaWQocikuanFHcmlkKCJzZXRHcmlkUGFyYW0iLHtkYXRhdHlwZTp0fSkpOlllKG4pLmpxR3JpZChyKSl9dmFyIG8sbj0oMD09PWUuaW5kZXhPZigiIyIpPyIiOiIjIikrWWUuamdyaWQuanFJRChlKTtzd2l0Y2goci5pbXB0eXBlKXtjYXNlInhtbCI6WWUuYWpheChZZS5leHRlbmQoe3VybDpyLmltcHVybCx0eXBlOnIubXR5cGUsZGF0YTpyLmltcERhdGEsZGF0YVR5cGU6InhtbCIsY29tcGxldGU6ZnVuY3Rpb24oZSx0KXsic3VjY2VzcyI9PT10JiYoaShlLnJlc3BvbnNlWE1MLHIpLFllKG4pLnRyaWdnZXJIYW5kbGVyKCJqcUdyaWRJbXBvcnRDb21wbGV0ZSIsW2Uscl0pLFllLmpncmlkLmlzRnVuY3Rpb24oci5pbXBvcnRDb21wbGV0ZSkpJiZyLmltcG9ydENvbXBsZXRlKGUpfX0sci5hamF4T3B0aW9ucykpO2JyZWFrO2Nhc2UieG1sc3RyaW5nIjpyLmltcHN0cmluZyYmInN0cmluZyI9PXR5cGVvZiByLmltcHN0cmluZyYmKG89WWUucGFyc2VYTUwoci5pbXBzdHJpbmcpKSYmKGkobyxyKSxZZShuKS50cmlnZ2VySGFuZGxlcigianFHcmlkSW1wb3J0Q29tcGxldGUiLFtvLHJdKSxZZS5qZ3JpZC5pc0Z1bmN0aW9uKHIuaW1wb3J0Q29tcGxldGUpKSYmci5pbXBvcnRDb21wbGV0ZShvKTticmVhaztjYXNlImpzb24iOlllLmFqYXgoWWUuZXh0ZW5kKHt1cmw6ci5pbXB1cmwsdHlwZTpyLm10eXBlLGRhdGE6ci5pbXBEYXRhLGRhdGFUeXBlOiJqc29uIixjb21wbGV0ZTpmdW5jdGlvbihlKXt0cnl7dChlLnJlc3BvbnNlVGV4dCxyKSxZZShuKS50cmlnZ2VySGFuZGxlcigianFHcmlkSW1wb3J0Q29tcGxldGUiLFtlLHJdKSxZZS5qZ3JpZC5pc0Z1bmN0aW9uKHIuaW1wb3J0Q29tcGxldGUpJiZyLmltcG9ydENvbXBsZXRlKGUpfWNhdGNoKGUpe319fSxyLmFqYXhPcHRpb25zKSk7YnJlYWs7Y2FzZSJqc29uc3RyaW5nIjpyLmltcHN0cmluZyYmInN0cmluZyI9PXR5cGVvZiByLmltcHN0cmluZyYmKHQoci5pbXBzdHJpbmcsciksWWUobikudHJpZ2dlckhhbmRsZXIoImpxR3JpZEltcG9ydENvbXBsZXRlIixbci5pbXBzdHJpbmcscl0pLFllLmpncmlkLmlzRnVuY3Rpb24oci5pbXBvcnRDb21wbGV0ZSkpJiZyLmltcG9ydENvbXBsZXRlKHIuaW1wc3RyaW5nKX19fSksWWUuamdyaWQuZXh0ZW5kKHtqcUdyaWRFeHBvcnQ6ZnVuY3Rpb24odCl7dD1ZZS5leHRlbmQoe2V4cHR5cGU6InhtbHN0cmluZyIscm9vdDoiZ3JpZCIsaWRlbnQ6Ilx0IixhZGRPcHRpb25zOnt9LGRhdGE6ITB9LHR8fHt9KTt2YXIgcj1udWxsO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtpZih0aGlzLmdyaWQpe3ZhciBlPVllLmV4dGVuZCghMCx7fSxZZSh0aGlzKS5qcUdyaWQoImdldEdyaWRQYXJhbSIpLHQuYWRkT3B0aW9ucyk7c3dpdGNoKGUucm93bnVtYmVycyYmKGUuY29sTmFtZXMuc3BsaWNlKDAsMSksZS5jb2xNb2RlbC5zcGxpY2UoMCwxKSksZS5tdWx0aXNlbGVjdCYmKGUuY29sTmFtZXMuc3BsaWNlKDAsMSksZS5jb2xNb2RlbC5zcGxpY2UoMCwxKSksZS5zZWFyY2hDb2xzJiYoZS5jb2xOYW1lcy5zcGxpY2UoMCwxKSxlLmNvbE1vZGVsLnNwbGljZSgwLDEpKSxlLnN1YkdyaWQmJihlLmNvbE5hbWVzLnNwbGljZSgwLDEpLGUuY29sTW9kZWwuc3BsaWNlKDAsMSkpLGUua252PW51bGwsdC5kYXRhfHwoZS5kYXRhPVtdLGUuX2luZGV4PXt9KSx0LmV4cHR5cGUpe2Nhc2UieG1sc3RyaW5nIjpyPSI8Iit0LnJvb3QrIj4iK1llLmpncmlkLmpzb25Ub1hNTChlLHt4bWxEZWNsOiIifSkrIjwvIit0LnJvb3QrIj4iO2JyZWFrO2Nhc2UianNvbnN0cmluZyI6cj1ZZS5qZ3JpZC5zdHJpbmdpZnkoZSksdC5yb290JiYocj0ieyIrdC5yb290KyI6IityKyJ9Iil9fX0pLHJ9LGV4Y2VsRXhwb3J0OmZ1bmN0aW9uKG4pe3JldHVybiBuPVllLmV4dGVuZCh7ZXhwdHlwZToicmVtb3RlIix1cmw6bnVsbCxvcGVyOiJvcGVyIix0YWc6ImV4Y2VsIixiZWZvcmVFeHBvcnQ6bnVsbCxleHBvcnRoaWRkZW46ITEsZXhwb3J0Z3JvdXBpbmc6ITEsZXhwb3J0T3B0aW9uczp7fX0sbnx8e30pLHRoaXMuZWFjaChmdW5jdGlvbigpe2lmKHRoaXMuZ3JpZCYmInJlbW90ZSI9PT1uLmV4cHR5cGUpe3ZhciBlPVllLmV4dGVuZCh7fSx0aGlzLnAucG9zdERhdGEpO2lmKGVbbi5vcGVyXT1uLnRhZyxZZS5qZ3JpZC5pc0Z1bmN0aW9uKG4uYmVmb3JlRXhwb3J0KSYmKGE9bi5iZWZvcmVFeHBvcnQuY2FsbCh0aGlzLGUpLFllLmlzUGxhaW5PYmplY3QoYSkpJiYoZT1hKSxuLmV4cG9ydGhpZGRlbil7Zm9yKHZhciB0PXRoaXMucC5jb2xNb2RlbCxyPXQubGVuZ3RoLGk9W10sbz0wO288cjtvKyspdm9pZCAwPT09dFtvXS5oaWRkZW4mJih0W29dLmhpZGRlbj0hMSksaS5wdXNoKHtuYW1lOnRbb10ubmFtZSxoaWRkZW46dFtvXS5oaWRkZW59KTt2YXIgYT1KU09OLnN0cmluZ2lmeShpKTsic3RyaW5nIj09dHlwZW9mIGEmJihlLmNvbE1vZGVsPWEpfW4uZXhwb3J0Z3JvdXBpbmcmJiJzdHJpbmciPT10eXBlb2YoYT1KU09OLnN0cmluZ2lmeSh0aGlzLnAuZ3JvdXBpbmdWaWV3KSkmJihlLmdyb3VwaW5nVmlldz1hKTthPWpRdWVyeS5wYXJhbShlKSxlPS0xIT09bi51cmwuaW5kZXhPZigiPyIpP24udXJsKyImIithOm4udXJsKyI/IithO3dpbmRvdy5sb2NhdGlvbj1lfX0pfX0pLFllLmpncmlkLmlubGluZUVkaXQ9WWUuamdyaWQuaW5saW5lRWRpdHx8e30sWWUuamdyaWQuZXh0ZW5kKHtlZGl0Um93OmZ1bmN0aW9uKHUsZSx0LHIsaSxvLGEsbixsKXt2YXIgaD17fSxzPVllLm1ha2VBcnJheShhcmd1bWVudHMpLnNsaWNlKDEpLGc9dGhpc1swXTtyZXR1cm4ib2JqZWN0Ij09PVllLmpncmlkLnR5cGUoc1swXSk/aD1zWzBdOih2b2lkIDAhPT1lJiYoaC5rZXlzPWUpLFllLmpncmlkLmlzRnVuY3Rpb24odCkmJihoLm9uZWRpdGZ1bmM9dCksWWUuamdyaWQuaXNGdW5jdGlvbihyKSYmKGguc3VjY2Vzc2Z1bmM9ciksdm9pZCAwIT09aSYmKGgudXJsPWkpLHZvaWQgMCE9PW8mJihoLmV4dHJhcGFyYW09byksWWUuamdyaWQuaXNGdW5jdGlvbihhKSYmKGguYWZ0ZXJzYXZlZnVuYz1hKSxZZS5qZ3JpZC5pc0Z1bmN0aW9uKG4pJiYoaC5lcnJvcmZ1bmM9biksWWUuamdyaWQuaXNGdW5jdGlvbihsKSYmKGguYWZ0ZXJyZXN0b3JlZnVuYz1sKSksaD1ZZS5leHRlbmQoITAse2tleXM6ITEsa2V5ZXZlbnQ6ImtleWRvd24iLG9uRW50ZXI6bnVsbCxvbkVzY2FwZTpudWxsLG9uZWRpdGZ1bmM6bnVsbCxzdWNjZXNzZnVuYzpudWxsLHVybDpudWxsLGV4dHJhcGFyYW06e30sYWZ0ZXJzYXZlZnVuYzpudWxsLGVycm9yZnVuYzpudWxsLGFmdGVycmVzdG9yZWZ1bmM6bnVsbCxyZXN0b3JlQWZ0ZXJFcnJvcjohMCxtdHlwZToiUE9TVCIsZm9jdXNGaWVsZDohMCxzYXZldWk6ImVuYWJsZSIsc2F2ZXRleHQ6WWUuamdyaWQuZ2V0UmVnaW9uYWwoZywiZGVmYXVsdHMuc2F2ZXRleHQiKX0sWWUuamdyaWQuaW5saW5lRWRpdCxoKSx0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgbyxhLHQsbixlLGw9MCxzPW51bGwsZD17fSxwPVllKHRoaXMpLmpxR3JpZCgiZ2V0U3R5bGVVSSIsZy5wLnN0eWxlVUkrIi5pbmxpbmVkaXQiLCJpbnB1dENsYXNzIiwhMCksYz1ZZSh0aGlzKS5qcUdyaWQoImdldFN0eWxlVUkiLGcucC5zdHlsZVVJKyIuaW5saW5lZGl0Iiwic2VsZWN0Q2xhc3MiLCEwKTtnLmdyaWQmJiExIT09KHQ9WWUoZykuanFHcmlkKCJnZXRJbmQiLHUsITApKSYmKGcucC5iZWZvcmVBY3Rpb249ITAsKGU9dm9pZCAwPT09KGU9WWUuamdyaWQuaXNGdW5jdGlvbihoLmJlZm9yZUVkaXRSb3cpP2guYmVmb3JlRWRpdFJvdy5jYWxsKGcsaCx1KTp2b2lkIDApPyEwOmUpPyIwIiE9PShZZSh0KS5hdHRyKCJlZGl0YWJsZSIpfHwiMCIpfHxZZSh0KS5oYXNDbGFzcygibm90LWVkaXRhYmxlLXJvdyIpfHwobj1nLnAuY29sTW9kZWwsWWUodCkuY2hpbGRyZW4oJ3RkW3JvbGU9ImdyaWRjZWxsIl0nKS5lYWNoKGZ1bmN0aW9uKHQpe289blt0XS5uYW1lO3ZhciBlLHIsaT0hMD09PWcucC50cmVlR3JpZCYmbz09PWcucC5FeHBhbmRDb2x1bW47aWYoaSlhPVllKHRoaXMpLmZpbmQoInNwYW4iKS5maXJzdCgpLmh0bWwoKTtlbHNlIHRyeXthPVllLnVuZm9ybWF0LmNhbGwoZyx0aGlzLHtyb3dJZDp1LGNvbE1vZGVsOm5bdF19LHQpfWNhdGNoKGUpe2E9blt0XS5lZGl0dHlwZSYmInRleHRhcmVhIj09PW5bdF0uZWRpdHR5cGU/WWUodGhpcykudGV4dCgpOlllKHRoaXMpLmh0bWwoKX0iY2IiIT09byYmInN1YmdyaWQiIT09byYmInJuIiE9PW8mJiJzYyIhPT1vJiYoZy5wLmF1dG9lbmNvZGUmJihhPVllLmpncmlkLmh0bWxEZWNvZGUoYSkpLCEwPT09blt0XS5lZGl0YWJsZSkmJihkW29dPWEsbnVsbD09PXMmJihzPXQpLChpP1llKHRoaXMpLmZpbmQoInNwYW4iKS5maXJzdCgpOlllKHRoaXMpKS5odG1sKCIiKSxlPVllLmV4dGVuZCh7fSxuW3RdLmVkaXRvcHRpb25zfHx7fSx7aWQ6dSsiXyIrbyxuYW1lOm8scm93SWQ6dSxvcGVyOiJlZGl0Iixtb2R1bGU6ImlubGluZSJ9KSxuW3RdLmVkaXR0eXBlfHwoblt0XS5lZGl0dHlwZT0idGV4dCIpLCgiJm5ic3A7Ij09PWF8fCImIzE2MDsiPT09YXx8bnVsbCE9PWEmJjE9PT1hLmxlbmd0aCYmMTYwPT09YS5jaGFyQ29kZUF0KDApKSYmKGE9IiIpLHI9WWUuamdyaWQuY3JlYXRlRWwuY2FsbChnLG5bdF0uZWRpdHR5cGUsZSxhLCEwLFllLmV4dGVuZCh7fSxZZS5qZ3JpZC5hamF4T3B0aW9ucyxnLnAuYWpheFNlbGVjdE9wdGlvbnN8fHt9KSksWWUocikuYWRkQ2xhc3MoImVkaXRhYmxlIGlubGluZS1lZGl0LWNlbGwiKSwtMTxZZS5pbkFycmF5KG5bdF0uZWRpdHR5cGUsWyJ0ZXh0IiwidGV4dGFyZWEiLCJwYXNzd29yZCJdKT9ZZShyKS5hZGRDbGFzcyhwKToic2VsZWN0Ij09PW5bdF0uZWRpdHR5cGUmJlllKHIpLmFkZENsYXNzKGMpLChpP1llKHRoaXMpLmZpbmQoInNwYW4iKS5maXJzdCgpOlllKHRoaXMpKS5hcHBlbmQociksWWUuamdyaWQuYmluZEV2LmNhbGwoZyxyLGUpLCJzZWxlY3QiPT09blt0XS5lZGl0dHlwZSYmdm9pZCAwIT09blt0XS5lZGl0b3B0aW9ucyYmITA9PT1uW3RdLmVkaXRvcHRpb25zLm11bHRpcGxlJiZ2b2lkIDA9PT1uW3RdLmVkaXRvcHRpb25zLmRhdGFVcmwmJlllLmpncmlkLm1zaWUoKSYmWWUocikud2lkdGgoWWUocikud2lkdGgoKSksbCsrKX0pLDA8bCYmKGQuaWQ9dSxnLnAuc2F2ZWRSb3cucHVzaChkKSxZZSh0KS5hdHRyKCJlZGl0YWJsZSIsIjEiKSxoLmZvY3VzRmllbGQmJigibnVtYmVyIj09dHlwZW9mIGguZm9jdXNGaWVsZCYmcGFyc2VJbnQoaC5mb2N1c0ZpZWxkLDEwKTw9bi5sZW5ndGgmJihzPWguZm9jdXNGaWVsZCksc2V0VGltZW91dChmdW5jdGlvbigpe3ZhciBlPVllKCJ0ZCIsdCkuZXEocykuZmluZCgiOmlucHV0OnZpc2libGUiKS5ub3QoIjpkaXNhYmxlZCIpOzA8ZS5sZW5ndGgmJmUuZm9jdXMoKX0sMCkpLCEwPT09aC5rZXlzJiZZZSh0KS5vbihoLmtleWV2ZW50LGZ1bmN0aW9uKGUpe2lmKDI3PT09ZS5rZXlDb2RlKXtpZihZZS5qZ3JpZC5pc0Z1bmN0aW9uKGgub25Fc2NhcGUpKXJldHVybiBoLm9uRXNjYXBlLmNhbGwoZyx1LGgsZSksITA7aWYoWWUoZykuanFHcmlkKCJyZXN0b3JlUm93Iix1LGgpLGcucC5pbmxpbmVOYXYpdHJ5e1llKGcpLmpxR3JpZCgic2hvd0FkZEVkaXRCdXR0b25zIil9Y2F0Y2goZSl7fXJldHVybiExfWlmKDEzPT09ZS5rZXlDb2RlKXtpZihZZS5qZ3JpZC5pc0Z1bmN0aW9uKGgub25FbnRlcikpcmV0dXJuIGgub25FbnRlci5jYWxsKGcsdSxoLGUpLCEwO2lmKCJURVhUQVJFQSI9PT1lLnRhcmdldC50YWdOYW1lKXJldHVybiEwO2lmKFllKGcpLmpxR3JpZCgic2F2ZVJvdyIsdSxoKSYmZy5wLmlubGluZU5hdil0cnl7WWUoZykuanFHcmlkKCJzaG93QWRkRWRpdEJ1dHRvbnMiKX1jYXRjaChlKXt9cmV0dXJuITF9fSksWWUoZykudHJpZ2dlckhhbmRsZXIoImpxR3JpZElubGluZUVkaXRSb3ciLFt1LGhdKSxZZS5qZ3JpZC5pc0Z1bmN0aW9uKGgub25lZGl0ZnVuYykpJiZoLm9uZWRpdGZ1bmMuY2FsbChnLHUpKTpnLnAuYmVmb3JlQWN0aW9uPSExKX0pfSxzYXZlUm93OmZ1bmN0aW9uKG4sZSx0LHIsaSxvLGEpe3ZhciBsLHMsZCxwLGM9WWUubWFrZUFycmF5KGFyZ3VtZW50cykuc2xpY2UoMSksdT17fSxoPXRoaXNbMF0sZz0oIm9iamVjdCI9PT1ZZS5qZ3JpZC50eXBlKGNbMF0pP3U9Y1swXTooWWUuamdyaWQuaXNGdW5jdGlvbihlKSYmKHUuc3VjY2Vzc2Z1bmM9ZSksdm9pZCAwIT09dCYmKHUudXJsPXQpLHZvaWQgMCE9PXImJih1LmV4dHJhcGFyYW09ciksWWUuamdyaWQuaXNGdW5jdGlvbihpKSYmKHUuYWZ0ZXJzYXZlZnVuYz1pKSxZZS5qZ3JpZC5pc0Z1bmN0aW9uKG8pJiYodS5lcnJvcmZ1bmM9byksWWUuamdyaWQuaXNGdW5jdGlvbihhKSYmKHUuYWZ0ZXJyZXN0b3JlZnVuYz1hKSksdT1ZZS5leHRlbmQoITAse3N1Y2Nlc3NmdW5jOm51bGwsdXJsOm51bGwsZXh0cmFwYXJhbTp7fSxhZnRlcnNhdmVmdW5jOm51bGwsZXJyb3JmdW5jOm51bGwsYWZ0ZXJyZXN0b3JlZnVuYzpudWxsLHJlc3RvcmVBZnRlckVycm9yOiEwLG10eXBlOiJQT1NUIixzYXZldWk6ImVuYWJsZSIsc2F2ZXRleHQ6WWUuamdyaWQuZ2V0UmVnaW9uYWwoaCwiZGVmYXVsdHMuc2F2ZXRleHQiKX0sWWUuamdyaWQuaW5saW5lRWRpdCx1KSwhMSksZj17fSxtPXt9LHY9e30saj0hMSxiPVllLmpncmlkLnRyaW0oWWUoaCkuanFHcmlkKCJnZXRTdHlsZVVJIixoLnAuc3R5bGVVSSsiLmNvbW1vbiIsImVycm9yIiwhMCkpO2lmKCFoLmdyaWQpcmV0dXJuIGc7aWYoITE9PT0ocD1ZZShoKS5qcUdyaWQoImdldEluZCIsbiwhMCkpKXJldHVybiBnO3ZhciB3LHkseCxfLHEsQz1ZZS5qZ3JpZC5nZXRSZWdpb25hbChoLCJlcnJvcnMiKSxJPVllLmpncmlkLmdldFJlZ2lvbmFsKGgsImVkaXQiKSxjPVllLmpncmlkLmlzRnVuY3Rpb24odS5iZWZvcmVTYXZlUm93KT91LmJlZm9yZVNhdmVSb3cuY2FsbChoLHUsbik6dm9pZCAwO2lmKGM9dm9pZCAwPT09Yz8hMDpjKXtpZihlPVllKHApLmF0dHIoImVkaXRhYmxlIiksdS51cmw9dS51cmx8fGgucC5lZGl0dXJsLCIxIj09PWUpe2lmKFllKHApLmNoaWxkcmVuKCd0ZFtyb2xlPSJncmlkY2VsbCJdJykuZWFjaChmdW5jdGlvbihlKXtpZih3PWgucC5jb2xNb2RlbFtlXSxsPXcubmFtZSx4PSIiLCJjYiIhPT1sJiYic3ViZ3JpZCIhPT1sJiYhMD09PXcuZWRpdGFibGUmJiJybiIhPT1sJiYic2MiIT09bCYmIVllKHRoaXMpLmhhc0NsYXNzKCJub3QtZWRpdGFibGUtY2VsbCIpKXtzd2l0Y2gody5lZGl0dHlwZSl7Y2FzZSJjaGVja2JveCI6dmFyIHQ9WyJZZXMiLCJObyJdO3cuZWRpdG9wdGlvbnMmJncuZWRpdG9wdGlvbnMudmFsdWUmJih0PXcuZWRpdG9wdGlvbnMudmFsdWUuc3BsaXQoIjoiKSksZltsXT1ZZSgiaW5wdXQiLHRoaXMpLmlzKCI6Y2hlY2tlZCIpP3RbMF06dFsxXSx4PVllKCJpbnB1dCIsdGhpcyk7YnJlYWs7Y2FzZSJ0ZXh0IjpjYXNlInBhc3N3b3JkIjpjYXNlInRleHRhcmVhIjpjYXNlImJ1dHRvbiI6ZltsXT1ZZSgiaW5wdXQsIHRleHRhcmVhIix0aGlzKS52YWwoKSx4PVllKCJpbnB1dCwgdGV4dGFyZWEiLHRoaXMpO2JyZWFrO2Nhc2Uic2VsZWN0Ijp2YXIgcjt3LmVkaXRvcHRpb25zLm11bHRpcGxlPyh0PVllKCJzZWxlY3QiLHRoaXMpLHI9W10sZltsXT1ZZSh0KS52YWwoKSxmW2xdP2ZbbF09ZltsXS5qb2luKCIsIik6ZltsXT0iIixZZSgic2VsZWN0IG9wdGlvbjpzZWxlY3RlZCIsdGhpcykuZWFjaChmdW5jdGlvbihlLHQpe3JbZV09WWUodCkudGV4dCgpfSksbVtsXT1yLmpvaW4oIiwiKSk6KGZbbF09WWUoInNlbGVjdCBvcHRpb246c2VsZWN0ZWQiLHRoaXMpLnZhbCgpLG1bbF09WWUoInNlbGVjdCBvcHRpb246c2VsZWN0ZWQiLHRoaXMpLnRleHQoKSksdy5mb3JtYXR0ZXImJihtPXt9KSx4PVllKCJzZWxlY3QiLHRoaXMpO2JyZWFrO2Nhc2UiY3VzdG9tIjp0cnl7aWYoIXcuZWRpdG9wdGlvbnN8fCFZZS5qZ3JpZC5pc0Z1bmN0aW9uKHcuZWRpdG9wdGlvbnMuY3VzdG9tX3ZhbHVlKSl0aHJvdyJlMSI7aWYoZltsXT13LmVkaXRvcHRpb25zLmN1c3RvbV92YWx1ZS5jYWxsKGgsWWUoIi5jdXN0b21lbGVtZW50Iix0aGlzKSwiZ2V0Iiksdm9pZCAwPT09ZltsXSl0aHJvdyJlMiJ9Y2F0Y2goZSl7ImUxIj09PWU/WWUuamdyaWQuaW5mb19kaWFsb2coQy5lcnJjYXAsImZ1bmN0aW9uICdjdXN0b21fdmFsdWUnICIrSS5tc2cubm9kZWZpbmVkLEkuYkNsb3NlLHtzdHlsZVVJOmgucC5zdHlsZVVJfSk6WWUuamdyaWQuaW5mb19kaWFsb2coQy5lcnJjYXAsZS5tZXNzYWdlLEkuYkNsb3NlLHtzdHlsZVVJOmgucC5zdHlsZVVJfSl9fWlmKCExPT09KGQ9WWUuamdyaWQuY2hlY2tWYWx1ZXMuY2FsbChoLGZbbF0sZSkpWzBdKXJldHVybiB5PWUsITE7aC5wLmF1dG9lbmNvZGUmJihmW2xdPVllLmpncmlkLmh0bWxFbmNvZGUoZltsXSkpLCJjbGllbnRBcnJheSIhPT11LnVybCYmdy5lZGl0b3B0aW9ucyYmITA9PT13LmVkaXRvcHRpb25zLk51bGxJZkVtcHR5JiYiIj09PWZbbF0mJih2W2xdPSJudWxsIixqPSEwKX19KSwhMT09PWRbMF0pe3RyeXtZZS5qZ3JpZC5pc0Z1bmN0aW9uKGgucC52YWxpZGF0aW9uQ2VsbCk/aC5wLnZhbGlkYXRpb25DZWxsLmNhbGwoaCx4LGRbMV0scC5yb3dJbmRleCx5KTooXz1ZZShoKS5qcUdyaWQoImdldEdyaWRSb3dCeUlkIixuKSxxPVllLmpncmlkLmZpbmRQb3MoXyksWWUuamdyaWQuaW5mb19kaWFsb2coQy5lcnJjYXAsZFsxXSxJLmJDbG9zZSx7bGVmdDpxWzBdLHRvcDpxWzFdK1llKF8pLm91dGVySGVpZ2h0KCksc3R5bGVVSTpoLnAuc3R5bGVVSSxvbkNsb3NlOmZ1bmN0aW9uKCl7MDw9eSYmWWUoIiMiK24rIl8iK2gucC5jb2xNb2RlbFt5XS5uYW1lKS5mb2N1cygpfX0pKX1jYXRjaChlKXthbGVydChkWzFdKX1yZXR1cm4gZ312YXIgdD1oLnAucHJtTmFtZXMsRD1uLHI9ITE9PT1oLnAua2V5TmFtZT90LmlkOmgucC5rZXlOYW1lO2lmKFllLmlzRW1wdHlPYmplY3QoZil8fChmW3Qub3Blcl09dC5lZGl0b3Blcix2b2lkIDA9PT1mW3JdfHwiIj09PWZbcl0/ZltyXT1uOnAuaWQhPT1oLnAuaWRQcmVmaXgrZltyXSYmKGk9WWUuamdyaWQuc3RyaXBQcmVmKGgucC5pZFByZWZpeCxuKSx2b2lkIDAhPT1oLnAuX2luZGV4W2ldJiYoaC5wLl9pbmRleFtmW3JdXT1oLnAuX2luZGV4W2ldLGRlbGV0ZSBoLnAuX2luZGV4W2ldKSxuPWgucC5pZFByZWZpeCtmW3JdLFllKHApLmF0dHIoImlkIixuKSxoLnAuc2Vscm93PT09RCYmKGgucC5zZWxyb3c9biksQXJyYXkuaXNBcnJheShoLnAuc2VsYXJycm93KSYmMDw9KG89WWUuaW5BcnJheShELGgucC5zZWxhcnJyb3cpKSYmKGgucC5zZWxhcnJyb3dbb109biksaC5wLm11bHRpc2VsZWN0KSYmKGE9ImpxZ18iK2gucC5pZCsiXyIrbixZZSgiaW5wdXQuY2JveCIscCkuYXR0cigiaWQiLGEpLmF0dHIoIm5hbWUiLGEpKSx2b2lkIDA9PT1oLnAuaW5saW5lRGF0YSYmKGgucC5pbmxpbmVEYXRhPXt9KSxmPVllLmV4dGVuZCh7fSxmLGgucC5pbmxpbmVEYXRhLHUuZXh0cmFwYXJhbSkpLCJjbGllbnRBcnJheSI9PT11LnVybCl7Zj1ZZS5leHRlbmQoe30sZixtKSxoLnAuYXV0b2VuY29kZSYmWWUuZWFjaChmLGZ1bmN0aW9uKGUsdCl7ZltlXT1ZZS5qZ3JpZC5odG1sRGVjb2RlKHQpfSk7dmFyIEcsZj1ZZS5qZ3JpZC5pc0Z1bmN0aW9uKGgucC5zZXJpYWxpemVSb3dEYXRhKT9oLnAuc2VyaWFsaXplUm93RGF0YS5jYWxsKGgsZik6ZixjPVllKGgpLmpxR3JpZCgic2V0Um93RGF0YSIsbixmKTtmb3IoWWUocCkuYXR0cigiZWRpdGFibGUiLCIwIiksRz0wO0c8aC5wLnNhdmVkUm93Lmxlbmd0aDtHKyspaWYoU3RyaW5nKGgucC5zYXZlZFJvd1tHXS5pZCk9PT1TdHJpbmcoRCkpe3M9RzticmVha31ZZShoKS50cmlnZ2VySGFuZGxlcigianFHcmlkSW5saW5lQWZ0ZXJTYXZlUm93IixbbixjLGYsdV0pLFllLmpncmlkLmlzRnVuY3Rpb24odS5hZnRlcnNhdmVmdW5jKSYmdS5hZnRlcnNhdmVmdW5jLmNhbGwoaCxuLGMsZix1KSwwPD1zJiZoLnAuc2F2ZWRSb3cuc3BsaWNlKHMsMSksZz0hMCxZZShwKS5yZW1vdmVDbGFzcygianFncmlkLW5ldy1yb3ciKS5vZmYoImtleWRvd24iKX1lbHNlInN0b3JhZ2UiPT09dS51cmw/KGY9WWUuZXh0ZW5kKHt9LGYsbSksaC5wLmF1dG9lbmNvZGUmJlllLmVhY2goZixmdW5jdGlvbihlLHQpe2ZbZV09WWUuamdyaWQuaHRtbERlY29kZSh0KX0pLGY9WWUuamdyaWQuaXNGdW5jdGlvbihoLnAuc2VyaWFsaXplUm93RGF0YSk/aC5wLnNlcmlhbGl6ZVJvd0RhdGEuY2FsbChoLGYpOmYsWWUocCkuaGFzQ2xhc3MoImpxZ3JpZC1uZXctcm93Iik/WWUoaCkuanFHcmlkKCJhZGRTdG9yYWdlUmVjb3JkIixmKS50aGVuKGZ1bmN0aW9uKGUpe2lmKCJjb21wbGV0ZSI9PT1lLnR5cGUpe3ZhciB0LGU9WWUoaCkuanFHcmlkKCJzZXRSb3dEYXRhIixuLGYpO2ZvcihZZShwKS5hdHRyKCJlZGl0YWJsZSIsIjAiKSx0PTA7dDxoLnAuc2F2ZWRSb3cubGVuZ3RoO3QrKylpZihTdHJpbmcoaC5wLnNhdmVkUm93W3RdLmlkKT09PVN0cmluZyhEKSl7cz10O2JyZWFrfVllKGgpLnRyaWdnZXJIYW5kbGVyKCJqcUdyaWRJbmxpbmVBZnRlclNhdmVSb3ciLFtuLGUsZix1XSksWWUuamdyaWQuaXNGdW5jdGlvbih1LmFmdGVyc2F2ZWZ1bmMpJiZ1LmFmdGVyc2F2ZWZ1bmMuY2FsbChoLG4sZSxmLHUpLDA8PXMmJmgucC5zYXZlZFJvdy5zcGxpY2UocywxKSxnPSEwLFllKHApLnJlbW92ZUNsYXNzKCJqcWdyaWQtbmV3LXJvdyIpLm9mZigia2V5ZG93biIpLCEwPT09aC5wLmlubGluZU5hdiYmWWUoaCkuanFHcmlkKCJzaG93QWRkRWRpdEJ1dHRvbnMiKX19KS5jYXRjaChmdW5jdGlvbihlKXtZZS5qZ3JpZC5pbmZvX2RpYWxvZygiRXJyb3IiLGUudGFyZ2V0LmVycm9yLm5hbWUrIiA6ICIrZS50YXJnZXQuZXJyb3IubWVzc2FnZSwiQ2xvc2UiKX0pOlllKGgpLmpxR3JpZCgidXBkYXRlU3RvcmFnZVJlY29yZCIsZikudGhlbihmdW5jdGlvbihlKXtpZigiY29tcGxldGUiPT09ZS50eXBlKXt2YXIgdCxlPVllKGgpLmpxR3JpZCgic2V0Um93RGF0YSIsbixmKTtmb3IoWWUocCkuYXR0cigiZWRpdGFibGUiLCIwIiksdD0wO3Q8aC5wLnNhdmVkUm93Lmxlbmd0aDt0KyspaWYoU3RyaW5nKGgucC5zYXZlZFJvd1t0XS5pZCk9PT1TdHJpbmcoRCkpe3M9dDticmVha31ZZShoKS50cmlnZ2VySGFuZGxlcigianFHcmlkSW5saW5lQWZ0ZXJTYXZlUm93IixbbixlLGYsdV0pLFllLmpncmlkLmlzRnVuY3Rpb24odS5hZnRlcnNhdmVmdW5jKSYmdS5hZnRlcnNhdmVmdW5jLmNhbGwoaCxuLGUsZix1KSwwPD1zJiZoLnAuc2F2ZWRSb3cuc3BsaWNlKHMsMSksZz0hMCxZZShwKS5vZmYoImtleWRvd24iKSwhMD09PWgucC5pbmxpbmVOYXYmJlllKGgpLmpxR3JpZCgic2hvd0FkZEVkaXRCdXR0b25zIil9fSkuY2F0Y2goZnVuY3Rpb24oZSl7WWUuamdyaWQuaW5mb19kaWFsb2coIkVycm9yIixlLnRhcmdldC5lcnJvci5uYW1lKyIgOiAiK2UudGFyZ2V0LmVycm9yLm1lc3NhZ2UsIkNsb3NlIil9KSk6KFllKGgpLmpxR3JpZCgicHJvZ3Jlc3NCYXIiLHttZXRob2Q6InNob3ciLGxvYWR0eXBlOnUuc2F2ZXVpLGh0bWxjb250ZW50OnUuc2F2ZXRleHR9KSwodj1ZZS5leHRlbmQoe30sZix2KSlbcl09WWUuamdyaWQuc3RyaXBQcmVmKGgucC5pZFByZWZpeCx2W3JdKSxZZS5hamF4KFllLmV4dGVuZCh7dXJsOnUudXJsLGRhdGE6WWUuamdyaWQuaXNGdW5jdGlvbihoLnAuc2VyaWFsaXplUm93RGF0YSk/aC5wLnNlcmlhbGl6ZVJvd0RhdGEuY2FsbChoLHYpOnYsdHlwZTp1Lm10eXBlLGFzeW5jOiExLHN1Y2Nlc3M6ZnVuY3Rpb24oZSx0LHIpe2lmKFllKGgpLmpxR3JpZCgicHJvZ3Jlc3NCYXIiLHttZXRob2Q6ImhpZGUiLGxvYWR0eXBlOnUuc2F2ZXVpLGh0bWxjb250ZW50OnUuc2F2ZXRleHR9KSwic3VjY2VzcyI9PT10KXt2YXIgaSxvPSEwLGE9WWUoaCkudHJpZ2dlckhhbmRsZXIoImpxR3JpZElubGluZVN1Y2Nlc3NTYXZlUm93IixbcixuLHVdKTtpZigoYT1BcnJheS5pc0FycmF5KGEpP2E6WyEwLHZdKVswXSYmWWUuamdyaWQuaXNGdW5jdGlvbih1LnN1Y2Nlc3NmdW5jKSYmKGE9dS5zdWNjZXNzZnVuYy5jYWxsKGgscikpLEFycmF5LmlzQXJyYXkoYSk/KG89YVswXSxmPWFbMV18fGYpOm89YSwhMD09PW8pe2ZvcihoLnAuYXV0b2VuY29kZSYmWWUuZWFjaChmLGZ1bmN0aW9uKGUsdCl7ZltlXT1ZZS5qZ3JpZC5odG1sRGVjb2RlKHQpfSksaiYmWWUuZWFjaChmLGZ1bmN0aW9uKGUpeyJudWxsIj09PWZbZV0mJihmW2VdPSIiKX0pLGY9WWUuZXh0ZW5kKHt9LGYsbSksWWUoaCkuanFHcmlkKCJzZXRSb3dEYXRhIixuLGYpLFllKHApLmF0dHIoImVkaXRhYmxlIiwiMCIpLGk9MDtpPGgucC5zYXZlZFJvdy5sZW5ndGg7aSsrKWlmKFN0cmluZyhoLnAuc2F2ZWRSb3dbaV0uaWQpPT09U3RyaW5nKG4pKXtzPWk7YnJlYWt9WWUoaCkudHJpZ2dlckhhbmRsZXIoImpxR3JpZElubGluZUFmdGVyU2F2ZVJvdyIsW24scixmLHVdKSxZZS5qZ3JpZC5pc0Z1bmN0aW9uKHUuYWZ0ZXJzYXZlZnVuYykmJnUuYWZ0ZXJzYXZlZnVuYy5jYWxsKGgsbixyLGYsdSksMDw9cyYmaC5wLnNhdmVkUm93LnNwbGljZShzLDEpLGc9ITAsWWUocCkucmVtb3ZlQ2xhc3MoImpxZ3JpZC1uZXctcm93Iikub2ZmKCJrZXlkb3duIil9ZWxzZSBZZShoKS50cmlnZ2VySGFuZGxlcigianFHcmlkSW5saW5lRXJyb3JTYXZlUm93IixbbixyLHQsbnVsbCx1XSksWWUuamdyaWQuaXNGdW5jdGlvbih1LmVycm9yZnVuYykmJnUuZXJyb3JmdW5jLmNhbGwoaCxuLHIsdCxudWxsKSwhMD09PXUucmVzdG9yZUFmdGVyRXJyb3ImJlllKGgpLmpxR3JpZCgicmVzdG9yZVJvdyIsbix1KX19LGVycm9yOmZ1bmN0aW9uKGUsdCxyKXtpZihZZSgiI2x1aV8iK1llLmpncmlkLmpxSUQoaC5wLmlkKSkuaGlkZSgpLFllKGgpLnRyaWdnZXJIYW5kbGVyKCJqcUdyaWRJbmxpbmVFcnJvclNhdmVSb3ciLFtuLGUsdCxyLHVdKSxZZS5qZ3JpZC5pc0Z1bmN0aW9uKHUuZXJyb3JmdW5jKSl1LmVycm9yZnVuYy5jYWxsKGgsbixlLHQscik7ZWxzZXt0PWUucmVzcG9uc2VUZXh0fHxlLnN0YXR1c1RleHQ7dHJ5e1llLmpncmlkLmluZm9fZGlhbG9nKEMuZXJyY2FwLCc8ZGl2IGNsYXNzPSInK2IrJyI+Jyt0KyI8L2Rpdj4iLEkuYkNsb3NlLHtidXR0b25hbGlnbjoicmlnaHQiLHN0eWxlVUk6aC5wLnN0eWxlVUl9KX1jYXRjaChlKXthbGVydCh0KX19ITA9PT11LnJlc3RvcmVBZnRlckVycm9yJiZZZShoKS5qcUdyaWQoInJlc3RvcmVSb3ciLG4sdSl9fSxZZS5qZ3JpZC5hamF4T3B0aW9ucyxoLnAuYWpheFJvd09wdGlvbnN8fHt9KSkpfXJldHVybiBnfX0scmVzdG9yZVJvdzpmdW5jdGlvbihuLGUpe3ZhciB0PVllLm1ha2VBcnJheShhcmd1bWVudHMpLnNsaWNlKDEpLGw9e307cmV0dXJuIm9iamVjdCI9PT1ZZS5qZ3JpZC50eXBlKHRbMF0pP2w9dFswXTpZZS5qZ3JpZC5pc0Z1bmN0aW9uKGUpJiYobC5hZnRlcnJlc3RvcmVmdW5jPWUpLGw9WWUuZXh0ZW5kKCEwLHt9LFllLmpncmlkLmlubGluZUVkaXQsbCksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGUsdCxyPXRoaXMsaT0tMSxvPXt9O2lmKHIuZ3JpZCYmITEhPT0oZT1ZZShyKS5qcUdyaWQoImdldEluZCIsbiwhMCkpKXt2YXIgYT1ZZS5qZ3JpZC5pc0Z1bmN0aW9uKGwuYmVmb3JlQ2FuY2VsUm93KT9sLmJlZm9yZUNhbmNlbFJvdy5jYWxsKHIsbCxuKTp2b2lkIDA7aWYoYT12b2lkIDA9PT1hPyEwOmEpe2Zvcih0PTA7dDxyLnAuc2F2ZWRSb3cubGVuZ3RoO3QrKylpZihTdHJpbmcoci5wLnNhdmVkUm93W3RdLmlkKT09PVN0cmluZyhuKSl7aT10O2JyZWFrfWlmKDA8PWkpe2lmKFllLmpncmlkLmlzRnVuY3Rpb24oWWUuZm4uZGF0ZXBpY2tlcikpdHJ5e1llKCJpbnB1dC5oYXNEYXRlcGlja2VyIiwiIyIrWWUuamdyaWQuanFJRChlLmlkKSkuZGF0ZXBpY2tlcigiaGlkZSIpfWNhdGNoKGUpe31ZZS5lYWNoKHIucC5jb2xNb2RlbCxmdW5jdGlvbigpe3IucC5zYXZlZFJvd1tpXS5oYXNPd25Qcm9wZXJ0eSh0aGlzLm5hbWUpJiYob1t0aGlzLm5hbWVdPXIucC5zYXZlZFJvd1tpXVt0aGlzLm5hbWVdKX0pLFllKHIpLmpxR3JpZCgic2V0Um93RGF0YSIsbixvKSxZZShlKS5hdHRyKCJlZGl0YWJsZSIsIjAiKS5vZmYoImtleWRvd24iKSxyLnAuc2F2ZWRSb3cuc3BsaWNlKGksMSksWWUoIiMiK1llLmpncmlkLmpxSUQobiksIiMiK1llLmpncmlkLmpxSUQoci5wLmlkKSkuaGFzQ2xhc3MoImpxZ3JpZC1uZXctcm93IikmJnNldFRpbWVvdXQoZnVuY3Rpb24oKXtZZShyKS5qcUdyaWQoImRlbFJvd0RhdGEiLG4pLFllKHIpLmpxR3JpZCgic2hvd0FkZEVkaXRCdXR0b25zIil9LDApfVllKHIpLnRyaWdnZXJIYW5kbGVyKCJqcUdyaWRJbmxpbmVBZnRlclJlc3RvcmVSb3ciLFtuXSksWWUuamdyaWQuaXNGdW5jdGlvbihsLmFmdGVycmVzdG9yZWZ1bmMpJiZsLmFmdGVycmVzdG9yZWZ1bmMuY2FsbChyLG4pfX19KX0sYWRkUm93OmZ1bmN0aW9uKGkpe3JldHVybiBpPVllLmV4dGVuZCghMCx7cm93SUQ6bnVsbCxpbml0ZGF0YTp7fSxwb3NpdGlvbjoiZmlyc3QiLHVzZURlZlZhbHVlczohMCx1c2VGb3JtYXR0ZXI6ITEsYWRkUm93UGFyYW1zOntleHRyYXBhcmFtOnt9fX0saXx8e30pLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciB0LGUscjt0aGlzLmdyaWQmJigodD10aGlzKS5wLmJlZm9yZUFjdGlvbj0hMCwoZT12b2lkIDA9PT0oZT1ZZS5qZ3JpZC5pc0Z1bmN0aW9uKGkuYmVmb3JlQWRkUm93KT9pLmJlZm9yZUFkZFJvdy5jYWxsKHQsaS5hZGRSb3dQYXJhbXMpOnZvaWQgMCk/ITA6ZSk/KGkucm93SUQ9WWUuamdyaWQuaXNGdW5jdGlvbihpLnJvd0lEKT9pLnJvd0lELmNhbGwodCxpKTpudWxsIT1pLnJvd0lEP2kucm93SUQ6WWUuamdyaWQucmFuZElkKCksITA9PT1pLnVzZURlZlZhbHVlcyYmWWUodC5wLmNvbE1vZGVsKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU7dGhpcy5lZGl0b3B0aW9ucyYmdGhpcy5lZGl0b3B0aW9ucy5kZWZhdWx0VmFsdWUmJihlPXRoaXMuZWRpdG9wdGlvbnMuZGVmYXVsdFZhbHVlLGU9WWUuamdyaWQuaXNGdW5jdGlvbihlKT9lLmNhbGwodCk6ZSxpLmluaXRkYXRhW3RoaXMubmFtZV09ZSl9KSxZZSh0KS5qcUdyaWQoImFkZFJvd0RhdGEiLGkucm93SUQsaS5pbml0ZGF0YSxpLnBvc2l0aW9uKSxpLnJvd0lEPXQucC5pZFByZWZpeCtpLnJvd0lELFllKCIjIitZZS5qZ3JpZC5qcUlEKGkucm93SUQpLCIjIitZZS5qZ3JpZC5qcUlEKHQucC5pZCkpLmFkZENsYXNzKCJqcWdyaWQtbmV3LXJvdyIpLGkudXNlRm9ybWF0dGVyP1llKCIjIitZZS5qZ3JpZC5qcUlEKGkucm93SUQpKyIgLnVpLWlubGluZS1lZGl0IiwiIyIrWWUuamdyaWQuanFJRCh0LnAuaWQpKS5jbGljaygpOihyPShlPXQucC5wcm1OYW1lcykub3BlcixpLmFkZFJvd1BhcmFtcy5leHRyYXBhcmFtW3JdPWUuYWRkb3BlcixZZSh0KS5qcUdyaWQoImVkaXRSb3ciLGkucm93SUQsaS5hZGRSb3dQYXJhbXMpLFllKHQpLmpxR3JpZCgic2V0U2VsZWN0aW9uIixpLnJvd0lEKSkpOnQucC5iZWZvcmVBY3Rpb249ITEpfSl9LGlubGluZU5hdjpmdW5jdGlvbihhLG4pe3ZhciBsPXRoaXNbMF0scz1ZZS5qZ3JpZC5nZXRSZWdpb25hbChsLCJuYXYiKSxlPVllLmpncmlkLnN0eWxlVUlbbC5wLnN0eWxlVUldLmlubGluZWRpdDtyZXR1cm4gbj1ZZS5leHRlbmQoITAse2VkaXQ6ITAsZWRpdGljb246ZS5pY29uX2VkaXRfbmF2LGFkZDohMCxhZGRpY29uOmUuaWNvbl9hZGRfbmF2LHNhdmU6ITAsc2F2ZWljb246ZS5pY29uX3NhdmVfbmF2LGNhbmNlbDohMCxjYW5jZWxpY29uOmUuaWNvbl9jYW5jZWxfbmF2LGFkZFBhcmFtczp7YWRkUm93UGFyYW1zOntleHRyYXBhcmFtOnt9fX0sZWRpdFBhcmFtczp7fSxyZXN0b3JlQWZ0ZXJTZWxlY3Q6ITAsc2F2ZUFmdGVyU2VsZWN0OiExfSxzLG58fHt9KSx0aGlzLmVhY2goZnVuY3Rpb24oKXtpZih0aGlzLmdyaWQmJiF0aGlzLnAuaW5saW5lTmF2KXt2YXIgbz1ZZS5qZ3JpZC5qcUlEKGwucC5pZCksdD1ZZS5qZ3JpZC50cmltKFllKGwpLmpxR3JpZCgiZ2V0U3R5bGVVSSIsbC5wLnN0eWxlVUkrIi5jb21tb24iLCJkaXNhYmxlZCIsITApKTtpZihsLnAubmF2R3JpZHx8WWUobCkuanFHcmlkKCJuYXZHcmlkIixhLHtyZWZyZXNoOiExLGVkaXQ6ITEsYWRkOiExLGRlbDohMSxzZWFyY2g6ITEsdmlldzohMX0pLFllKGwpLmRhdGEoImlubGluZU5hdiIpfHxZZShsKS5kYXRhKCJpbmxpbmVOYXYiLG4pLGwucC5mb3JjZV9yZWdpb25hbCYmKG49WWUuZXh0ZW5kKG4scykpLChsLnAuaW5saW5lTmF2PSEwKT09PW4uYWRkUGFyYW1zLnVzZUZvcm1hdHRlcilmb3IodmFyIGUscj1sLnAuY29sTW9kZWwsaT0wO2k8ci5sZW5ndGg7aSsrKWlmKHJbaV0uZm9ybWF0dGVyJiYiYWN0aW9ucyI9PT1yW2ldLmZvcm1hdHRlcil7cltpXS5mb3JtYXRvcHRpb25zJiYoZT1ZZS5leHRlbmQoe2tleXM6ITEsb25FZGl0Om51bGwsb25TdWNjZXNzOm51bGwsYWZ0ZXJTYXZlOm51bGwsb25FcnJvcjpudWxsLGFmdGVyUmVzdG9yZTpudWxsLGV4dHJhcGFyYW06e30sdXJsOm51bGx9LHJbaV0uZm9ybWF0b3B0aW9ucyksbi5hZGRQYXJhbXMuYWRkUm93UGFyYW1zPXtrZXlzOmUua2V5cyxvbmVkaXRmdW5jOmUub25FZGl0LHN1Y2Nlc3NmdW5jOmUub25TdWNjZXNzLHVybDplLnVybCxleHRyYXBhcmFtOmUuZXh0cmFwYXJhbSxhZnRlcnNhdmVmdW5jOmUuYWZ0ZXJTYXZlLGVycm9yZnVuYzplLm9uRXJyb3IsYWZ0ZXJyZXN0b3JlZnVuYzplLmFmdGVyUmVzdG9yZX0pO2JyZWFrfW4uYWRkJiZZZShsKS5qcUdyaWQoIm5hdkJ1dHRvbkFkZCIsYSx7Y2FwdGlvbjpuLmFkZHRleHQsdGl0bGU6bi5hZGR0aXRsZSxidXR0b25pY29uOm4uYWRkaWNvbixpZDpsLnAuaWQrIl9pbGFkZCIsaW50ZXJuYWw6ITAsb25DbGlja0J1dHRvbjpmdW5jdGlvbigpe3ZvaWQgMD09PWwucC5iZWZvcmVBY3Rpb24mJihsLnAuYmVmb3JlQWN0aW9uPSEwKSxZZShsKS5qcUdyaWQoImFkZFJvdyIsbi5hZGRQYXJhbXMpLCFuLmFkZFBhcmFtcy51c2VGb3JtYXR0ZXImJmwucC5iZWZvcmVBY3Rpb24mJihZZSgiIyIrbysiX2lsc2F2ZSIpLnJlbW92ZUNsYXNzKHQpLFllKCIjIitvKyJfaWxjYW5jZWwiKS5yZW1vdmVDbGFzcyh0KSxZZSgiIyIrbysiX2lsYWRkIikuYWRkQ2xhc3ModCksWWUoIiMiK28rIl9pbGVkaXQiKS5hZGRDbGFzcyh0KSl9fSksbi5lZGl0JiZZZShsKS5qcUdyaWQoIm5hdkJ1dHRvbkFkZCIsYSx7Y2FwdGlvbjpuLmVkaXR0ZXh0LHRpdGxlOm4uZWRpdHRpdGxlLGJ1dHRvbmljb246bi5lZGl0aWNvbixpZDpsLnAuaWQrIl9pbGVkaXQiLGludGVybmFsOiEwLG9uQ2xpY2tCdXR0b246ZnVuY3Rpb24oKXt2YXIgZT1ZZShsKS5qcUdyaWQoImdldEdyaWRQYXJhbSIsInNlbHJvdyIpO2U/KHZvaWQgMD09PWwucC5iZWZvcmVBY3Rpb24mJihsLnAuYmVmb3JlQWN0aW9uPSEwKSxZZShsKS5qcUdyaWQoImVkaXRSb3ciLGUsbi5lZGl0UGFyYW1zKSxsLnAuYmVmb3JlQWN0aW9uJiYoWWUoIiMiK28rIl9pbHNhdmUiKS5yZW1vdmVDbGFzcyh0KSxZZSgiIyIrbysiX2lsY2FuY2VsIikucmVtb3ZlQ2xhc3ModCksWWUoIiMiK28rIl9pbGFkZCIpLmFkZENsYXNzKHQpLFllKCIjIitvKyJfaWxlZGl0IikuYWRkQ2xhc3ModCkpKTooWWUuamdyaWQudmlld01vZGFsKCIjYWxlcnRtb2RfIitvLHtnYm94OiIjZ2JveF8iK28sanFtOiEwfSksWWUoIiNqcWdfYWxydCIpLmZvY3VzKCkpfX0pLG4uc2F2ZSYmKFllKGwpLmpxR3JpZCgibmF2QnV0dG9uQWRkIixhLHtjYXB0aW9uOm4uc2F2ZXRleHR8fCIiLHRpdGxlOm4uc2F2ZXRpdGxlfHwiU2F2ZSByb3ciLGJ1dHRvbmljb246bi5zYXZlaWNvbixpZDpsLnAuaWQrIl9pbHNhdmUiLGludGVybmFsOiEwLG9uQ2xpY2tCdXR0b246ZnVuY3Rpb24oKXt2YXIgZSx0LHIsaT1sLnAuc2F2ZWRSb3dbMF0uaWQ7aT8odD0oZT1sLnAucHJtTmFtZXMpLm9wZXIscj1uLmVkaXRQYXJhbXMsWWUoIiMiK1llLmpncmlkLmpxSUQoaSksIiMiK28pLmhhc0NsYXNzKCJqcWdyaWQtbmV3LXJvdyIpPyhuLmFkZFBhcmFtcy5hZGRSb3dQYXJhbXMuZXh0cmFwYXJhbVt0XT1lLmFkZG9wZXIscj1uLmFkZFBhcmFtcy5hZGRSb3dQYXJhbXMpOihuLmVkaXRQYXJhbXMuZXh0cmFwYXJhbXx8KG4uZWRpdFBhcmFtcy5leHRyYXBhcmFtPXt9KSxuLmVkaXRQYXJhbXMuZXh0cmFwYXJhbVt0XT1lLmVkaXRvcGVyKSxZZShsKS5qcUdyaWQoInNhdmVSb3ciLGkscikmJlllKGwpLmpxR3JpZCgic2hvd0FkZEVkaXRCdXR0b25zIikpOihZZS5qZ3JpZC52aWV3TW9kYWwoIiNhbGVydG1vZF8iK28se2dib3g6IiNnYm94XyIrbyxqcW06ITB9KSxZZSgiI2pxZ19hbHJ0IikuZm9jdXMoKSl9fSksWWUoIiMiK28rIl9pbHNhdmUiKS5hZGRDbGFzcyh0KSksbi5jYW5jZWwmJihZZShsKS5qcUdyaWQoIm5hdkJ1dHRvbkFkZCIsYSx7Y2FwdGlvbjpuLmNhbmNlbHRleHR8fCIiLHRpdGxlOm4uY2FuY2VsdGl0bGV8fCJDYW5jZWwgcm93IGVkaXRpbmciLGJ1dHRvbmljb246bi5jYW5jZWxpY29uLGlkOmwucC5pZCsiX2lsY2FuY2VsIixpbnRlcm5hbDohMCxvbkNsaWNrQnV0dG9uOmZ1bmN0aW9uKCl7dmFyIGU9bC5wLnNhdmVkUm93WzBdLmlkLHQ9bi5lZGl0UGFyYW1zO2U/KFllKCIjIitZZS5qZ3JpZC5qcUlEKGUpLCIjIitvKS5oYXNDbGFzcygianFncmlkLW5ldy1yb3ciKSYmKHQ9bi5hZGRQYXJhbXMuYWRkUm93UGFyYW1zKSxZZShsKS5qcUdyaWQoInJlc3RvcmVSb3ciLGUsdCksWWUobCkuanFHcmlkKCJzaG93QWRkRWRpdEJ1dHRvbnMiKSk6KFllLmpncmlkLnZpZXdNb2RhbCgiI2FsZXJ0bW9kIix7Z2JveDoiI2dib3hfIitvLGpxbTohMH0pLFllKCIjanFnX2FscnQiKS5mb2N1cygpKX19KSxZZSgiIyIrbysiX2lsY2FuY2VsIikuYWRkQ2xhc3ModCkpLCEwIT09bi5yZXN0b3JlQWZ0ZXJTZWxlY3QmJiEwIT09bi5zYXZlQWZ0ZXJTZWxlY3R8fFllKGwpLm9uKCJqcUdyaWRCZWZvcmVTZWxlY3RSb3cuaW5saW5lTmF2IixmdW5jdGlvbihlLHQpezA8bC5wLnNhdmVkUm93Lmxlbmd0aCYmITA9PT1sLnAuaW5saW5lTmF2JiZ0IT09bC5wLnNlbHJvdyYmbnVsbCE9PWwucC5zZWxyb3cmJih0PSEwLGwucC5zZWxyb3c9PT1uLmFkZFBhcmFtcy5yb3dJRD9ZZShsKS5qcUdyaWQoImRlbFJvd0RhdGEiLGwucC5zZWxyb3cpOiEwPT09bi5yZXN0b3JlQWZ0ZXJTZWxlY3Q/WWUobCkuanFHcmlkKCJyZXN0b3JlUm93IixsLnAuc2Vscm93LG4uZWRpdFBhcmFtcyk6dD1ZZShsKS5qcUdyaWQoInNhdmVSb3ciLGwucC5zZWxyb3csbi5lZGl0UGFyYW1zKSx0KSYmWWUobCkuanFHcmlkKCJzaG93QWRkRWRpdEJ1dHRvbnMiKX0pfX0pfSxzaG93QWRkRWRpdEJ1dHRvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGUsdDt0aGlzLmdyaWQmJihlPVllLmpncmlkLmpxSUQodGhpcy5wLmlkKSx0PVllLmpncmlkLnRyaW0oWWUodGhpcykuanFHcmlkKCJnZXRTdHlsZVVJIix0aGlzLnAuc3R5bGVVSSsiLmNvbW1vbiIsImRpc2FibGVkIiwhMCkpLFllKCIjIitlKyJfaWxzYXZlIikuYWRkQ2xhc3ModCksWWUoIiMiK2UrIl9pbGNhbmNlbCIpLmFkZENsYXNzKHQpLFllKCIjIitlKyJfaWxhZGQiKS5yZW1vdmVDbGFzcyh0KSxZZSgiIyIrZSsiX2lsZWRpdCIpLnJlbW92ZUNsYXNzKHQpKX0pfSxzaG93U2F2ZUNhbmNlbEJ1dHRvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGUsdDt0aGlzLmdyaWQmJihlPVllLmpncmlkLmpxSUQodGhpcy5wLmlkKSx0PVllLmpncmlkLnRyaW0oWWUodGhpcykuanFHcmlkKCJnZXRTdHlsZVVJIix0aGlzLnAuc3R5bGVVSSsiLmNvbW1vbiIsImRpc2FibGVkIiwhMCkpLFllKCIjIitlKyJfaWxzYXZlIikucmVtb3ZlQ2xhc3ModCksWWUoIiMiK2UrIl9pbGNhbmNlbCIpLnJlbW92ZUNsYXNzKHQpLFllKCIjIitlKyJfaWxhZGQiKS5hZGRDbGFzcyh0KSxZZSgiIyIrZSsiX2lsZWRpdCIpLmFkZENsYXNzKHQpKX0pfX0pLFllLmpncmlkLm1zaWUoKSYmOD09PVllLmpncmlkLm1zaWV2ZXIoKSYmKFllLmV4cHJbIjoiXS5oaWRkZW49ZnVuY3Rpb24oZSl7cmV0dXJuIDA9PT1lLm9mZnNldFdpZHRofHwwPT09ZS5vZmZzZXRIZWlnaHR8fCJub25lIj09PWUuc3R5bGUuZGlzcGxheX0pLFllLmpncmlkLl9tdWx0aXNlbGVjdD0hMSxZZS51aSYmWWUudWkubXVsdGlzZWxlY3QmJihZZS51aS5tdWx0aXNlbGVjdC5wcm90b3R5cGUuX3NldFNlbGVjdGVkJiYoaT1ZZS51aS5tdWx0aXNlbGVjdC5wcm90b3R5cGUuX3NldFNlbGVjdGVkLFllLnVpLm11bHRpc2VsZWN0LnByb3RvdHlwZS5fc2V0U2VsZWN0ZWQ9ZnVuY3Rpb24oZSx0KXt2YXIgcixlPWkuY2FsbCh0aGlzLGUsdCk7cmV0dXJuIHQmJnRoaXMuc2VsZWN0ZWRMaXN0JiYocj10aGlzLmVsZW1lbnQsdGhpcy5zZWxlY3RlZExpc3QuZmluZCgibGkiKS5lYWNoKGZ1bmN0aW9uKCl7WWUodGhpcykuZGF0YSgib3B0aW9uTGluayIpJiZZZSh0aGlzKS5kYXRhKCJvcHRpb25MaW5rIikucmVtb3ZlKCkuYXBwZW5kVG8ocil9KSksZX0pLFllLnVpLm11bHRpc2VsZWN0LnByb3RvdHlwZS5kZXN0cm95JiYoWWUudWkubXVsdGlzZWxlY3QucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQuc2hvdygpLHRoaXMuY29udGFpbmVyLnJlbW92ZSgpLCh2b2lkIDA9PT1ZZS5XaWRnZXQ/WWUud2lkZ2V0OlllLldpZGdldCkucHJvdG90eXBlLmRlc3Ryb3kuYXBwbHkodGhpcyxhcmd1bWVudHMpfSksWWUuamdyaWQuX211bHRpc2VsZWN0PSEwKSxZZS5qZ3JpZC5leHRlbmQoe3NvcnRhYmxlQ29sdW1uczpmdW5jdGlvbihsKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIG49dGhpcyxlPVllLmpncmlkLmpxSUQobi5wLmlkKSx0PSExO2Z1bmN0aW9uIHIoKXtuLnAuZGlzYWJsZUNsaWNrPSEwLG4ucC5mcm96ZW5Db2x1bW5zJiYoWWUobikuanFHcmlkKCJkZXN0cm95RnJvemVuQ29sdW1ucyIpLHQ9ITApfWZ1bmN0aW9uIGkoKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7bi5wLmRpc2FibGVDbGljaz0hMSx0JiYoWWUobikuanFHcmlkKCJzZXRGcm96ZW5Db2x1bW5zIiksdD0hMSl9LDUwKX12YXIgbyxhLGU9e3RvbGVyYW5jZToicG9pbnRlciIsYXhpczoieCIsc2Nyb2xsU2Vuc2l0aXZpdHk6IjEiLGl0ZW1zOiI+dGg6bm90KDpoYXMoI2pxZ2hfIitlKyJfY2IsI2pxZ2hfIitlKyJfcm4sI2pxZ2hfIitlKyJfc3ViZ3JpZCksOmhpZGRlbikiLGNhbmNlbDoiLnNvcnRhYmxlLWRpc2FibGVkIixwbGFjZWhvbGRlcjp7ZWxlbWVudDpmdW5jdGlvbihlKXtyZXR1cm4gWWUoZG9jdW1lbnQuY3JlYXRlRWxlbWVudChlWzBdLm5vZGVOYW1lKSkuYWRkQ2xhc3MoZVswXS5jbGFzc05hbWUrIiB1aS1zb3J0YWJsZS1wbGFjZWhvbGRlciB1aS1zdGF0ZS1oaWdobGlnaHQiKS5yZW1vdmVDbGFzcygidWktc29ydGFibGUtaGVscGVyIilbMF19LHVwZGF0ZTpmdW5jdGlvbihlLHQpe3QuaGVpZ2h0KGUuY3VycmVudEl0ZW0uaW5uZXJIZWlnaHQoKS1wYXJzZUludChlLmN1cnJlbnRJdGVtLmNzcygicGFkZGluZ1RvcCIpfHwwLDEwKS1wYXJzZUludChlLmN1cnJlbnRJdGVtLmNzcygicGFkZGluZ0JvdHRvbSIpfHwwLDEwKSksdC53aWR0aChlLmN1cnJlbnRJdGVtLmlubmVyV2lkdGgoKS1wYXJzZUludChlLmN1cnJlbnRJdGVtLmNzcygicGFkZGluZ0xlZnQiKXx8MCwxMCktcGFyc2VJbnQoZS5jdXJyZW50SXRlbS5jc3MoInBhZGRpbmdSaWdodCIpfHwwLDEwKSl9fSx1cGRhdGU6ZnVuY3Rpb24oZSx0KXt2YXIgdD1ZZSh0Lml0ZW0pLnBhcmVudCgpLHQ9WWUoIj50aCIsdCkscj1uLnAuY29sTW9kZWwsaT17fSxvPW4ucC5pZCsiXyIsYT0oWWUuZWFjaChyLGZ1bmN0aW9uKGUpe2lbdGhpcy5uYW1lXT1lfSksW10pO3QuZWFjaChmdW5jdGlvbigpe3ZhciBlPVllKCI+ZGl2Iix0aGlzKS5nZXQoMCkuaWQucmVwbGFjZSgvXmpxZ2hfLywiIikucmVwbGFjZShvLCIiKTtpLmhhc093blByb3BlcnR5KGUpJiZhLnB1c2goaVtlXSl9KSxZZShuKS5qcUdyaWQoInJlbWFwQ29sdW1ucyIsYSwhMCwhMCksWWUuamdyaWQuaXNGdW5jdGlvbihuLnAuc29ydGFibGUudXBkYXRlKSYmbi5wLnNvcnRhYmxlLnVwZGF0ZShhKX19LGU9KG4ucC5zb3J0YWJsZS5vcHRpb25zP1llLmV4dGVuZChlLG4ucC5zb3J0YWJsZS5vcHRpb25zKTpZZS5qZ3JpZC5pc0Z1bmN0aW9uKG4ucC5zb3J0YWJsZSkmJihuLnAuc29ydGFibGU9e3VwZGF0ZTpuLnAuc29ydGFibGV9KSxlLnN0YXJ0PyhvPWUuc3RhcnQsZS5zdGFydD1mdW5jdGlvbihlLHQpe3IoKSxvLmNhbGwodGhpcyxlLHQpfSk6ZS5zdGFydD1yLGUuc3RvcD8oYT1lLnN0b3AsZS5zdG9wPWZ1bmN0aW9uKGUsdCl7aSgpLGEuY2FsbCh0aGlzLGUsdCl9KTplLnN0b3A9aSxuLnAuc29ydGFibGUuZXhjbHVkZSYmKGUuaXRlbXMrPSI6bm90KCIrbi5wLnNvcnRhYmxlLmV4Y2x1ZGUrIikiKSxsLnNvcnRhYmxlKGUpKSxlPWUuZGF0YSgic29ydGFibGUiKXx8ZS5kYXRhKCJ1aVNvcnRhYmxlIik7bnVsbCE9ZSYmKGUuZGF0YSgic29ydGFibGUiKS5mbG9hdGluZz0hMCl9KX0sY29sdW1uQ2hvb3NlcjpmdW5jdGlvbih0KXt2YXIgcixpLG89dGhpcyxuPXt9LGE9W10sZT1vLmpxR3JpZCgiZ2V0R3JpZFBhcmFtIiwiY29sTW9kZWwiKSxsPVllLmV4dGVuZChbXSxvLmpxR3JpZCgiZ2V0R3JpZFBhcmFtIiwiY29sTmFtZXMiKSkscz1mdW5jdGlvbihlKXtyZXR1cm4gWWUudWkubXVsdGlzZWxlY3QucHJvdG90eXBlJiZlLmRhdGEoWWUudWkubXVsdGlzZWxlY3QucHJvdG90eXBlLndpZGdldEZ1bGxOYW1lfHxZZS51aS5tdWx0aXNlbGVjdC5wcm90b3R5cGUud2lkZ2V0TmFtZSl8fGUuZGF0YSgidWktbXVsdGlzZWxlY3QiKXx8ZS5kYXRhKCJtdWx0aXNlbGVjdCIpfSxkPVllLmpncmlkLmdldFJlZ2lvbmFsKHRoaXNbMF0sImNvbCIpO2lmKCFZZSgiI2NvbGNob29zZXJfIitZZS5qZ3JpZC5qcUlEKG9bMF0ucC5pZCkpLmxlbmd0aCl7aWYocj1ZZSgnPGRpdiBpZD0iY29sY2hvb3Nlcl8nK29bMF0ucC5pZCsnIiBzdHlsZT0icG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVuIj48ZGl2PjxzZWxlY3QgbXVsdGlwbGU9Im11bHRpcGxlIj48L3NlbGVjdD48L2Rpdj48L2Rpdj4nKSxpPVllKCJzZWxlY3QiLHIpLHQ9WWUuZXh0ZW5kKHt3aWR0aDo0MDAsaGVpZ2h0OjI0MCxjbGFzc25hbWU6bnVsbCxncm91cEhlYWRlcnM6ITEsZG9uZTpmdW5jdGlvbihlKXtlJiZvLmpxR3JpZCgicmVtYXBDb2x1bW5zIixlLCEwKX0sbXNlbDoibXVsdGlzZWxlY3QiLGRsb2c6ImRpYWxvZyIsZGlhbG9nX29wdHM6e21pbldpZHRoOjQ3MCxkaWFsb2dDbGFzczoidWktanFkaWFsb2cifSxkbG9nX29wdHM6ZnVuY3Rpb24oZSl7dmFyIHQ9e307cmV0dXJuIHRbZS5iU3VibWl0XT1mdW5jdGlvbigpe2UuYXBwbHlfcGVybSgpLGUuY2xlYW51cCghMSl9LHRbZS5iQ2FuY2VsXT1mdW5jdGlvbigpe2UuY2xlYW51cCghMCl9LFllLmV4dGVuZCghMCx7YnV0dG9uczp0LGNsb3NlOmZ1bmN0aW9uKCl7ZS5jbGVhbnVwKCEwKX0sbW9kYWw6ZS5tb2RhbHx8ITEscmVzaXphYmxlOmUucmVzaXphYmxlfHwhMCx3aWR0aDplLndpZHRoKzcwLHJlc2l6ZTptfSxlLmRpYWxvZ19vcHRzfHx7fSl9LGFwcGx5X3Blcm06ZnVuY3Rpb24oKXt2YXIgYT1bXTtZZSgib3B0aW9uIixpKS5lYWNoKGZ1bmN0aW9uKCl7WWUodGhpcykuaXMoIjpzZWxlY3RlZCIpP28uanFHcmlkKCJzaG93Q29sIixlW3RoaXMudmFsdWVdLm5hbWUpOm8uanFHcmlkKCJoaWRlQ29sIixlW3RoaXMudmFsdWVdLm5hbWUpfSksWWUoIm9wdGlvbltzZWxlY3RlZF0iLGkpLmVhY2goZnVuY3Rpb24oKXt0aGlzLnNlbGVjdGVkJiZhLnB1c2gocGFyc2VJbnQodGhpcy52YWx1ZSwxMCkpfSksWWUuZWFjaChhLGZ1bmN0aW9uKCl7ZGVsZXRlIG5bZVtwYXJzZUludCh0aGlzLDEwKV0ubmFtZV19KSxZZS5lYWNoKG4sZnVuY3Rpb24oKXt2YXIgZSx0LHIsaSxvPXBhcnNlSW50KHRoaXMsMTApO2U9YSx0PW89byxhPTA8PW8/KGk9KHI9ZS5zbGljZSgpKS5zcGxpY2UobyxNYXRoLm1heChlLmxlbmd0aC1vLG8pKSxyW289bz5lLmxlbmd0aD9lLmxlbmd0aDpvXT10LHIuY29uY2F0KGkpKTplfSksdC5kb25lJiZ0LmRvbmUuY2FsbChvLGEpLG8uanFHcmlkKCJzZXRHcmlkV2lkdGgiLG9bMF0ucC53aWR0aCxvWzBdLnAuc2hyaW5rVG9GaXQpfSxjbGVhbnVwOmZ1bmN0aW9uKGUpe2YodC5kbG9nLHIsImRlc3Ryb3kiKSxmKHQubXNlbCxpLCJkZXN0cm95Iiksci5yZW1vdmUoKSxlJiZ0LmRvbmUmJnQuZG9uZS5jYWxsKG8pfSxtc2VsX29wdHM6e2RpdmlkZXJMb2NhdGlvbjouNX19LGQsdHx8e30pLFllLnVpJiZZZS51aS5tdWx0aXNlbGVjdCYmWWUudWkubXVsdGlzZWxlY3QuZGVmYXVsdHMpe2lmKCFZZS5qZ3JpZC5fbXVsdGlzZWxlY3QpcmV0dXJuIHZvaWQgYWxlcnQoIk11bHRpc2VsZWN0IHBsdWdpbiBsb2FkZWQgYWZ0ZXIganFHcmlkLiBQbGVhc2UgbG9hZCB0aGUgcGx1Z2luIGJlZm9yZSB0aGUganFHcmlkISIpO3QubXNlbF9vcHRzPVllLmV4dGVuZChZZS51aS5tdWx0aXNlbGVjdC5kZWZhdWx0cyx0Lm1zZWxfb3B0cyl9aWYoby5qcUdyaWQoImlzR3JvdXBIZWFkZXJPbiIpJiZ0Lmdyb3VwSGVhZGVycylmb3IodmFyIGQ9b1swXS5wLmdyb3VwSGVhZGVyLmxlbmd0aCxwPW9bMF0ucC5ncm91cEhlYWRlcltkLTFdLGM9MDtjPGwubGVuZ3RoO2MrKyl7dmFyIHU9WWUuamdyaWQuaW5Db2x1bW5IZWFkZXIoZVtjXS5uYW1lLHAuZ3JvdXBIZWFkZXJzKTtpZigwPD11KXtsW2NdPXAuZ3JvdXBIZWFkZXJzW3VdLnRpdGxlVGV4dCsiOjoiK2xbY107Zm9yKHZhciBoPTE7aDw9cC5ncm91cEhlYWRlcnNbdV0ubnVtYmVyT2ZDb2x1bW5zLTE7aCsrKWxbYytoXT1wLmdyb3VwSGVhZGVyc1t1XS50aXRsZVRleHQrIjo6IitsW2MraF07Yz1jK3AuZ3JvdXBIZWFkZXJzW3VdLm51bWJlck9mQ29sdW1ucy0xfX10LmNhcHRpb24mJnIuYXR0cigidGl0bGUiLHQuY2FwdGlvbiksdC5jbGFzc25hbWUmJihyLmFkZENsYXNzKHQuY2xhc3NuYW1lKSxpLmFkZENsYXNzKHQuY2xhc3NuYW1lKSksdC53aWR0aCYmKFllKCI+ZGl2IixyKS5jc3Moe3dpZHRoOnQud2lkdGgsbWFyZ2luOiIwIGF1dG8ifSksaS5jc3MoIndpZHRoIix0LndpZHRoKSksdC5oZWlnaHQmJihZZSgiPmRpdiIscikuY3NzKCJoZWlnaHQiLHQuaGVpZ2h0KSxpLmNzcygiaGVpZ2h0Iix0LmhlaWdodC0xMCkpLGkuZW1wdHkoKSxZZS5lYWNoKGUsZnVuY3Rpb24oZSl7blt0aGlzLm5hbWVdPWUsdGhpcy5oaWRlZGxnP3RoaXMuaGlkZGVufHxhLnB1c2goZSk6aS5hcHBlbmQoIjxvcHRpb24gdmFsdWU9JyIrZSsiJyAiKyh0aGlzLmhpZGRlbj8iIjoic2VsZWN0ZWQ9J3NlbGVjdGVkJyIpKyI+IitZZS5qZ3JpZC5zdHJpcEh0bWwobFtlXSkrIjwvb3B0aW9uPiIpfSksZD1ZZS5qZ3JpZC5pc0Z1bmN0aW9uKHQuZGxvZ19vcHRzKT90LmRsb2dfb3B0cy5jYWxsKG8sdCk6dC5kbG9nX29wdHMsZih0LmRsb2cscixkKSxkPVllLmpncmlkLmlzRnVuY3Rpb24odC5tc2VsX29wdHMpP3QubXNlbF9vcHRzLmNhbGwobyx0KTp0Lm1zZWxfb3B0cyxmKHQubXNlbCxpLGQpO3ZhciBkPVllKCIjY29sY2hvb3Nlcl8iK1llLmpncmlkLmpxSUQob1swXS5wLmlkKSksZz1ZZSgiLnVpLWpxZ3JpZCIpLmNzcygiZm9udC1zaXplIil8fCIxMXB4IjtkLnBhcmVudCgpLmNzcygiZm9udC1zaXplIixnKSxkLmNzcyh7bWFyZ2luOiJhdXRvIn0pLGQuZmluZCgiPmRpdiIpLmNzcyh7d2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSIsbWFyZ2luOiJhdXRvIn0pLChnPXMoaSkpLmNvbnRhaW5lci5jc3Moe3dpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUiLG1hcmdpbjoiYXV0byJ9KSxnLnNlbGVjdGVkQ29udGFpbmVyLmNzcyh7d2lkdGg6MTAwKmcub3B0aW9ucy5kaXZpZGVyTG9jYXRpb24rIiUiLGhlaWdodDoiMTAwJSIsbWFyZ2luOiJhdXRvIixib3hTaXppbmc6ImJvcmRlci1ib3gifSksZy5hdmFpbGFibGVDb250YWluZXIuY3NzKHt3aWR0aDoxMDAtMTAwKmcub3B0aW9ucy5kaXZpZGVyTG9jYXRpb24rIiUiLGhlaWdodDoiMTAwJSIsbWFyZ2luOiJhdXRvIixib3hTaXppbmc6ImJvcmRlci1ib3gifSksZy5zZWxlY3RlZExpc3QuY3NzKCJoZWlnaHQiLCJhdXRvIiksZy5hdmFpbGFibGVMaXN0LmNzcygiaGVpZ2h0IiwiYXV0byIpLGQ9TWF0aC5tYXgoZy5zZWxlY3RlZExpc3QuaGVpZ2h0KCksZy5hdmFpbGFibGVMaXN0LmhlaWdodCgpKSxkPU1hdGgubWluKGQsWWUod2luZG93KS5oZWlnaHQoKSksZy5zZWxlY3RlZExpc3QuY3NzKCJoZWlnaHQiLGQpLGcuYXZhaWxhYmxlTGlzdC5jc3MoImhlaWdodCIsZCksbSgpfWZ1bmN0aW9uIGYoZSx0KXtlJiYoInN0cmluZyI9PXR5cGVvZiBlP1llLmZuW2VdJiZZZS5mbltlXS5hcHBseSh0LFllLm1ha2VBcnJheShhcmd1bWVudHMpLnNsaWNlKDIpKTpZZS5qZ3JpZC5pc0Z1bmN0aW9uKGUpJiZlLmFwcGx5KHQsWWUubWFrZUFycmF5KGFyZ3VtZW50cykuc2xpY2UoMikpKX1mdW5jdGlvbiBtKCl7dmFyIGU9cyhpKSx0PWUuY29udGFpbmVyLmNsb3Nlc3QoIi51aS1kaWFsb2ctY29udGVudCIpOzA8dC5sZW5ndGgmJiJvYmplY3QiPT10eXBlb2YgdFswXS5zdHlsZT90WzBdLnN0eWxlLndpZHRoPSIiOnQuY3NzKCJ3aWR0aCIsIiIpLGUuc2VsZWN0ZWRMaXN0LmhlaWdodChNYXRoLm1heChlLnNlbGVjdGVkQ29udGFpbmVyLmhlaWdodCgpLWUuc2VsZWN0ZWRBY3Rpb25zLm91dGVySGVpZ2h0KCktMSwxKSksZS5hdmFpbGFibGVMaXN0LmhlaWdodChNYXRoLm1heChlLmF2YWlsYWJsZUNvbnRhaW5lci5oZWlnaHQoKS1lLmF2YWlsYWJsZUFjdGlvbnMub3V0ZXJIZWlnaHQoKS0xLDEpKX19LHNvcnRhYmxlUm93czpmdW5jdGlvbihvKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGk9dGhpcztpLmdyaWQmJiFpLnAudHJlZUdyaWQmJlllLmZuLnNvcnRhYmxlJiYoKG89WWUuZXh0ZW5kKHtjdXJzb3I6Im1vdmUiLGF4aXM6InkiLGl0ZW1zOiIgPiAuanFncm93In0sb3x8e30pKS5zdGFydCYmWWUuamdyaWQuaXNGdW5jdGlvbihvLnN0YXJ0KT8oby5fc3RhcnRfPW8uc3RhcnQsZGVsZXRlIG8uc3RhcnQpOm8uX3N0YXJ0Xz0hMSxvLnVwZGF0ZSYmWWUuamdyaWQuaXNGdW5jdGlvbihvLnVwZGF0ZSk/KG8uX3VwZGF0ZV89by51cGRhdGUsZGVsZXRlIG8udXBkYXRlKTpvLl91cGRhdGVfPSExLG8uc3RhcnQ9ZnVuY3Rpb24oZSx0KXtpZihZZSh0Lml0ZW0pLmNzcygiYm9yZGVyLXdpZHRoIiwiMCIpLFllKCJ0ZCIsdC5pdGVtKS5lYWNoKGZ1bmN0aW9uKGUpe3RoaXMuc3R5bGUud2lkdGg9aS5ncmlkLmNvbHNbZV0uc3R5bGUud2lkdGh9KSxpLnAuc3ViR3JpZCl7dmFyIHI9WWUodC5pdGVtKS5hdHRyKCJpZCIpO3RyeXtZZShpKS5qcUdyaWQoImNvbGxhcHNlU3ViR3JpZFJvdyIscil9Y2F0Y2goZSl7fX1vLl9zdGFydF8mJm8uX3N0YXJ0Xy5hcHBseSh0aGlzLFtlLHRdKX0sby51cGRhdGU9ZnVuY3Rpb24oZSx0KXtZZSh0Lml0ZW0pLmNzcygiYm9yZGVyLXdpZHRoIiwiIiksITA9PT1pLnAucm93bnVtYmVycyYmWWUoInRkLmpxZ3JpZC1yb3dudW0iLGkucm93cykuZWFjaChmdW5jdGlvbihlKXtZZSh0aGlzKS5odG1sKGUrMSsocGFyc2VJbnQoaS5wLnBhZ2UsMTApLTEpKnBhcnNlSW50KGkucC5yb3dOdW0sMTApKX0pLG8uX3VwZGF0ZV8mJm8uX3VwZGF0ZV8uYXBwbHkodGhpcyxbZSx0XSl9LFllKGkpLmZpbmQoInRib2R5IikuZmlyc3QoKS5zb3J0YWJsZShvKSxZZSgidGJvZHkiLGkpLmZpcnN0KCkuZmluZCgiID4gLmpxZ3JvdyIpLmRpc2FibGVTZWxlY3Rpb24oKSl9KX0sZ3JpZERuRDpmdW5jdGlvbihpKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGUsdCxhPXRoaXM7aWYoYS5ncmlkJiYhYS5wLnRyZWVHcmlkJiZZZS5mbi5kcmFnZ2FibGUmJlllLmZuLmRyb3BwYWJsZSl7dmFyIGg7aWYodm9pZCAwPT09WWUoIiNqcWdyaWRfZG5kIilbMF0mJlllKCJib2R5IikuYXBwZW5kKCI8dGFibGUgaWQ9J2pxZ3JpZF9kbmQnIGNsYXNzPSd1aS1qcWdyaWQtZG5kJz48L3RhYmxlPiIpLCJzdHJpbmciPT10eXBlb2YgaSYmInVwZGF0ZURuRCI9PT1pJiYhMD09PWEucC5qcWdkbmQpcigpO2Vsc2UgaWYoKGk9WWUuZXh0ZW5kKHtkcmFnOmZ1bmN0aW9uKG8pe3JldHVybiBZZS5leHRlbmQoe3N0YXJ0OmZ1bmN0aW9uKGUsdCl7dmFyIHIsaTtpZihhLnAuc3ViR3JpZCl7aT1ZZSh0LmhlbHBlcikuYXR0cigiaWQiKTt0cnl7WWUoYSkuanFHcmlkKCJjb2xsYXBzZVN1YkdyaWRSb3ciLGkpfWNhdGNoKGUpe319Zm9yKHI9MDtyPFllLmRhdGEoYSwiZG5kIikuY29ubmVjdFdpdGgubGVuZ3RoO3IrKykwPT09WWUoWWUuZGF0YShhLCJkbmQiKS5jb25uZWN0V2l0aFtyXSkuanFHcmlkKCJnZXRHcmlkUGFyYW0iLCJyZWNjb3VudCIpJiZZZShZZS5kYXRhKGEsImRuZCIpLmNvbm5lY3RXaXRoW3JdKS5qcUdyaWQoImFkZFJvd0RhdGEiLCJqcWdfZW1wdHlfcm93Iix7fSk7dC5oZWxwZXIuYWRkQ2xhc3MoInVpLXN0YXRlLWhpZ2hsaWdodCIpLFllKCJ0ZCIsdC5oZWxwZXIpLmVhY2goZnVuY3Rpb24oZSl7dGhpcy5zdHlsZS53aWR0aD1hLmdyaWQuaGVhZGVyc1tlXS53aWR0aCsicHgifSksby5vbnN0YXJ0JiZZZS5qZ3JpZC5pc0Z1bmN0aW9uKG8ub25zdGFydCkmJm8ub25zdGFydC5jYWxsKFllKGEpLGUsdCl9LHN0b3A6ZnVuY3Rpb24oZSx0KXt2YXIgcixpO2Zvcih0LmhlbHBlci5kcm9wcGVkJiYhby5kcmFnY29weSYmKHZvaWQgMD09PShpPVllKHQuaGVscGVyKS5hdHRyKCJpZCIpKSYmKGk9WWUodGhpcykuYXR0cigiaWQiKSksWWUoYSkuanFHcmlkKCJkZWxSb3dEYXRhIixpKSkscj0wO3I8WWUuZGF0YShhLCJkbmQiKS5jb25uZWN0V2l0aC5sZW5ndGg7cisrKVllKFllLmRhdGEoYSwiZG5kIikuY29ubmVjdFdpdGhbcl0pLmpxR3JpZCgiZGVsUm93RGF0YSIsImpxZ19lbXB0eV9yb3ciKTtvLm9uc3RvcCYmWWUuamdyaWQuaXNGdW5jdGlvbihvLm9uc3RvcCkmJm8ub25zdG9wLmNhbGwoWWUoYSksZSx0KX19LG8uZHJhZ19vcHRzfHx7fSl9LGRyb3A6ZnVuY3Rpb24odSl7cmV0dXJuIFllLmV4dGVuZCh7YWNjZXB0OmZ1bmN0aW9uKGUpe2lmKCFZZShlKS5oYXNDbGFzcygianFncm93IikpcmV0dXJuIGU7aD1ZZShlKS5jbG9zZXN0KCJ0YWJsZS51aS1qcWdyaWQtYnRhYmxlIik7dmFyIHQsZT1ZZSh0aGlzKS5maW5kKCJ0YWJsZS51aS1qcWdyaWQtYnRhYmxlIikuZmlyc3QoKVswXTtyZXR1cm4gMDxoLmxlbmd0aCYmdm9pZCAwIT09WWUuZGF0YShoWzBdLCJkbmQiKSYmKHQ9WWUuZGF0YShoWzBdLCJkbmQiKS5jb25uZWN0V2l0aCwtMSE9PVllLmluQXJyYXkoIiMiK1llLmpncmlkLmpxSUQoZS5pZCksdCkpfSxkcm9wOmZ1bmN0aW9uKGUsdCl7aWYoWWUodC5kcmFnZ2FibGUpLmhhc0NsYXNzKCJqcWdyb3ciKSl7dmFyIHIsaSxvPVllKHQuZHJhZ2dhYmxlKS5hdHRyKCJpZCIpLGE9dC5kcmFnZ2FibGUucGFyZW50KCkucGFyZW50KCkuanFHcmlkKCJnZXRSb3dEYXRhIixvKSxuPVtdLG89WWUodGhpcykuZmluZCgidGFibGUudWktanFncmlkLWJ0YWJsZSIpLmZpcnN0KClbMF07aWYoWWUuaXNQbGFpbk9iamVjdChhKSYmKG49T2JqZWN0LmtleXMoYSkpLCF1LmRyb3BieW5hbWUpe3ZhciBsLHMsZD17fSxwPTAsYz1ZZSgiIyIrWWUuamdyaWQuanFJRChvLmlkKSkuanFHcmlkKCJnZXRHcmlkUGFyYW0iLCJjb2xNb2RlbCIpO3RyeXtmb3IobD0wO2w8Yy5sZW5ndGg7bCsrKSJjYiIhPT0ocz1jW2xdLm5hbWUpJiYicm4iIT09cyYmInN1YmdyaWQiIT09cyYmInNjIiE9PXMmJih2b2lkIDAhPT1uW3BdJiYoZFtzXT1hW25bcF1dKSxwKyspO2E9ZH1jYXRjaChlKXt9fXQuaGVscGVyLmRyb3BwZWQ9ITAsWWUuZGF0YShoWzBdLCJkbmQiKS5iZWZvcmVkcm9wJiZZZS5qZ3JpZC5pc0Z1bmN0aW9uKFllLmRhdGEoaFswXSwiZG5kIikuYmVmb3JlZHJvcCkmJm51bGwhPShyPVllLmRhdGEoaFswXSwiZG5kIikuYmVmb3JlZHJvcC5jYWxsKG8sZSx0LGEsWWUoaFswXSksWWUobykpKSYmIm9iamVjdCI9PXR5cGVvZiByJiYoYT1yKSx0LmhlbHBlci5kcm9wcGVkJiYodS5hdXRvaWQmJihpPVllLmpncmlkLmlzRnVuY3Rpb24odS5hdXRvaWQpP3UuYXV0b2lkLmNhbGwobyxhKTooaT1NYXRoLmNlaWwoMWUzKk1hdGgucmFuZG9tKCkpLHUuYXV0b2lkcHJlZml4K2kpKSxZZSgiIyIrWWUuamdyaWQuanFJRChvLmlkKSkuanFHcmlkKCJhZGRSb3dEYXRhIixpLGEsdS5kcm9wcG9zKSksdS5vbmRyb3AmJlllLmpncmlkLmlzRnVuY3Rpb24odS5vbmRyb3ApJiZ1Lm9uZHJvcC5jYWxsKG8sZSx0LGEpfX19LHUuZHJvcF9vcHRzfHx7fSl9LG9uc3RhcnQ6bnVsbCxvbnN0b3A6bnVsbCxiZWZvcmVkcm9wOm51bGwsb25kcm9wOm51bGwsZHJvcF9vcHRzOnthY3RpdmVDbGFzczoidWktc3RhdGUtYWN0aXZlIixob3ZlckNsYXNzOiJ1aS1zdGF0ZS1ob3ZlciIsdG9sZXJhbmNlOiJpbnRlcnNlY3QifSxkcmFnX29wdHM6e3JldmVydDoiaW52YWxpZCIsaGVscGVyOiJjbG9uZSIsY3Vyc29yOiJtb3ZlIixhcHBlbmRUbzoiI2pxZ3JpZF9kbmQiLHpJbmRleDo1ZTN9LGRyYWdjb3B5OiExLGRyb3BieW5hbWU6ITEsZHJvcHBvczoiZmlyc3QiLGF1dG9pZDohMCxhdXRvaWRwcmVmaXg6ImRuZF8ifSxpfHx7fSkpLmNvbm5lY3RXaXRoKWZvcihpLmNvbm5lY3RXaXRoPWkuY29ubmVjdFdpdGguc3BsaXQoIiwiKSxpLmNvbm5lY3RXaXRoPVllLm1hcChpLmNvbm5lY3RXaXRoLGZ1bmN0aW9uKGUpe3JldHVybiBZZS5qZ3JpZC50cmltKGUpfSksWWUuZGF0YShhLCJkbmQiLGkpLDA9PT1hLnAucmVjY291bnR8fGEucC5qcWdkbmR8fHIoKSxhLnAuanFnZG5kPSEwLGU9MDtlPGkuY29ubmVjdFdpdGgubGVuZ3RoO2UrKyl0PWkuY29ubmVjdFdpdGhbZV0sWWUodCkuY2xvc2VzdCgiLnVpLWpxZ3JpZC1iZGl2IikuZHJvcHBhYmxlKFllLmpncmlkLmlzRnVuY3Rpb24oaS5kcm9wKT9pLmRyb3AuY2FsbChZZShhKSxpKTppLmRyb3ApfWZ1bmN0aW9uIHIoKXt2YXIgZT1ZZS5kYXRhKGEsImRuZCIpO1llKCJ0ci5qcWdyb3c6bm90KC51aS1kcmFnZ2FibGUpIixhKS5kcmFnZ2FibGUoWWUuamdyaWQuaXNGdW5jdGlvbihlLmRyYWcpP2UuZHJhZy5jYWxsKFllKGEpLGUpOmUuZHJhZyl9fSl9LGdyaWRSZXNpemU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciByLGUsdCxpPXRoaXMsbz1ZZS5qZ3JpZC5qcUlEKGkucC5pZCk7aS5ncmlkJiZZZS5mbi5yZXNpemFibGUmJigoYT1ZZS5leHRlbmQoe30se3Jlc2l6ZWNsYXNzOiJ1aS1yZXNpemFibGUtaWNvbiJ9LGF8fHt9KSkuYWxzb1Jlc2l6ZT8oYS5fYWxzb1Jlc2l6ZV89YS5hbHNvUmVzaXplLGRlbGV0ZSBhLmFsc29SZXNpemUpOmEuX2Fsc29SZXNpemVfPSExLGEuc3RvcCYmWWUuamdyaWQuaXNGdW5jdGlvbihhLnN0b3ApPyhhLl9zdG9wXz1hLnN0b3AsZGVsZXRlIGEuc3RvcCk6YS5fc3RvcF89ITEsZT1hLnJlc2l6ZWNsYXNzLCJqUXVlcnlVSSIhPT1pLnAuc3R5bGVVSSYmKGEuaGFuZGxlcz9hLmhhbmRsZXMuc2U/ZSs9IiAiK2EuaGFuZGxlcy5zZS5yZXBsYWNlKCIuIiwiIik6YS5oYW5kbGVzLnNlPSIuIitlOihhLmhhbmRsZXM9e30sdD1lLnNwbGl0KCIgIiksYS5oYW5kbGVzLnNlPSIuIit0WzBdKSxlKz0iIHVpLXJlc2l6YWJsZS1zZSB1aS1yZXNpemFibGUtaGFuZGxlIixZZSgiI2dib3hfIitvKS5hcHBlbmQoJzxzcGFuIGNsYXNzPSInK2UrJyI+PC9zcGFuPicpKSxhLnN0b3A9ZnVuY3Rpb24oZSx0KXtZZShpKS5qcUdyaWQoInNldEdyaWRQYXJhbSIse2hlaWdodDpZZSgiI2d2aWV3XyIrbysiIC51aS1qcWdyaWQtYmRpdiIpLmhlaWdodCgpfSksWWUoaSkuanFHcmlkKCJzZXRHcmlkV2lkdGgiLHQuc2l6ZS53aWR0aCxhLnNocmlua1RvRml0KSxhLl9zdG9wXyYmYS5fc3RvcF8uY2FsbChpLGUsdCksaS5wLmNhcHRpb24mJlllKCIjZ2JveF8iK28pLmNzcyh7aGVpZ2h0OiJhdXRvIn0pLGkucC5mcm96ZW5Db2x1bW5zJiYociYmY2xlYXJUaW1lb3V0KHIpLHI9c2V0VGltZW91dChmdW5jdGlvbigpe3ImJmNsZWFyVGltZW91dChyKSxZZSgiIyIrbykuanFHcmlkKCJkZXN0cm95RnJvemVuQ29sdW1ucyIpLFllKCIjIitvKS5qcUdyaWQoInNldEZyb3plbkNvbHVtbnMiKX0pKX0sYS5fYWxzb1Jlc2l6ZV8/YS5hbHNvUmVzaXplPSIjZ3ZpZXdfIitvKyIgLnVpLWpxZ3JpZC1iZGl2LCIrYS5fYWxzb1Jlc2l6ZV86YS5hbHNvUmVzaXplPVllKCIudWktanFncmlkLWJkaXYiLCIjZ3ZpZXdfIitvKSxkZWxldGUgYS5fYWxzb1Jlc2l6ZV8sWWUoIiNnYm94XyIrbykucmVzaXphYmxlKGEpKX0pfX0pLFllLmFzc29jQXJyYXlTaXplPWZ1bmN0aW9uKGUpe3ZhciB0LHI9MDtmb3IodCBpbiBlKWUuaGFzT3duUHJvcGVydHkodCkmJnIrKztyZXR1cm4gcn0sWWUuamdyaWQuZXh0ZW5kKHtwaXZvdFNldHVwOmZ1bmN0aW9uKGssZSl7dmFyIFI9W10sTj1bXSxNPVtdLE89W10sQT1bXSxUPXtncm91cGluZzohMCxncm91cGluZ1ZpZXc6e2dyb3VwRmllbGQ6W10sZ3JvdXBTdW1tYXJ5OltdLGdyb3VwU3VtbWFyeVBvczpbXX19LFA9W10sQj1ZZS5leHRlbmQoe3Jvd1RvdGFsczohMSxyb3dUb3RhbHNUZXh0OiJUb3RhbCIsY29sVG90YWxzOiExLGdyb3VwU3VtbWFyeTohMCxncm91cFN1bW1hcnlQb3M6ImhlYWRlciIsZnJvemVuU3RhdGljQ29sczohMX0sZXx8e30pO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgdSxoLGcsZSx0LGY9dGhpcyxyPWsubGVuZ3RoLGk9MDtmdW5jdGlvbiBvKGUsdCxyKXtlPWZ1bmN0aW9uKGUsdCl7dmFyIHIsaSxvLGE9W107aWYoIXRoaXN8fCJmdW5jdGlvbiIhPXR5cGVvZiBlfHxlIGluc3RhbmNlb2YgUmVnRXhwKXRocm93IG5ldyBUeXBlRXJyb3I7Zm9yKG89dGhpcy5sZW5ndGgscj0wO3I8bztyKyspaWYodGhpcy5oYXNPd25Qcm9wZXJ0eShyKSYmKGk9dGhpc1tyXSxlLmNhbGwodCxpLHIsdGhpcykpKXthLnB1c2goaSk7YnJlYWt9cmV0dXJuIGF9LmNhbGwoZSx0LHIpO3JldHVybiAwPGUubGVuZ3RoP2VbMF06bnVsbH1mdW5jdGlvbiBhKGUsdCl7dmFyIHIsaT0wLG89ITA7Zm9yKHIgaW4gZSlpZihlLmhhc093blByb3BlcnR5KHIpKXtpZihlW3JdIT10aGlzW2ldKXtvPSExO2JyZWFrfWlmKCsraT49dGhpcy5sZW5ndGgpYnJlYWt9cmV0dXJuIG8mJih5PXQpLG99ZnVuY3Rpb24gbihlLHQscixpKXt2YXIgbyxhLG4sbCxzPXQubGVuZ3RoLGQ9IiIscD1bXSxjPTE7Zm9yKEFycmF5LmlzQXJyYXkocik/KG49ci5sZW5ndGgscD1yKToobj0xLHBbMF09ciksQT1bXSxhPShPPVtdKS5yb290PTA7YTxuO2ErKyl7Zm9yKHZhciB1LGg9W10sZz0wO2c8cztnKyspe2lmKGw9InN0cmluZyI9PXR5cGVvZiB0W2ddLmFnZ3JlZ2F0b3I/dFtnXS5hZ2dyZWdhdG9yOiJjdXN0IixudWxsPT1yKXU9bz1ZZS5qZ3JpZC50cmltKHRbZ10ubWVtYmVyKSsiXyIrbCxwWzBdPXRbZ10ubGFiZWx8fGwrIiAiK1llLmpncmlkLnRyaW0odFtnXS5tZW1iZXIpO2Vsc2V7dT1yW2FdLnJlcGxhY2UoL1xzKy9nLCIiKTt0cnl7bz0xPT09cz9kK3U6ZCt1KyJfIitsKyJfIitTdHJpbmcoZyl9Y2F0Y2goZSl7fXBbYV09clthXX1vPWlzTmFOKHBhcnNlSW50KG8sMTApKT9vOm8rIiAiLCJhdmciPT09dFtnXS5hZ2dyZWdhdG9yJiYobD0tMT09PXk/Ti5sZW5ndGgrIl8iK286eSsiXyIrbyxtW2xdP21bbF0rKzptW2xdPTEsYz1tW2xdKSxpW29dPWhbb109ZnVuY3Rpb24oZSx0LHIsaSxvKXt2YXIgYTtpZihZZS5qZ3JpZC5pc0Z1bmN0aW9uKGUpKWE9ZS5jYWxsKGYsdCxyLGkpO2Vsc2Ugc3dpdGNoKGUpe2Nhc2Uic3VtIjphPVllLmpncmlkLmZsb2F0TnVtKHQpK1llLmpncmlkLmZsb2F0TnVtKGlbcl0pO2JyZWFrO2Nhc2UiY291bnQiOiIiIT09dCYmbnVsbCE9dHx8KHQ9MCksYT1pLmhhc093blByb3BlcnR5KHIpP3QrMTowO2JyZWFrO2Nhc2UibWluIjphPSIiPT09dHx8bnVsbD09dD9ZZS5qZ3JpZC5mbG9hdE51bShpW3JdKTpNYXRoLm1pbihZZS5qZ3JpZC5mbG9hdE51bSh0KSxZZS5qZ3JpZC5mbG9hdE51bShpW3JdKSk7YnJlYWs7Y2FzZSJtYXgiOmE9IiI9PT10fHxudWxsPT10P1llLmpncmlkLmZsb2F0TnVtKGlbcl0pOk1hdGgubWF4KFllLmpncmlkLmZsb2F0TnVtKHQpLFllLmpncmlkLmZsb2F0TnVtKGlbcl0pKTticmVhaztjYXNlImF2ZyI6YT0oWWUuamdyaWQuZmxvYXROdW0odCkqKG8tMSkrWWUuamdyaWQuZmxvYXROdW0oaVtyXSkpL299cmV0dXJuIGF9KHRbZ10uYWdncmVnYXRvcixpW29dLHRbZ10ubWVtYmVyLGUsYyl9ZCs9ciYmbnVsbCE9clthXT9yW2FdLnJlcGxhY2UoL1xzKy9nLCIiKToiIixPW29dPWgsQVtvXT1wW2FdfXJldHVybiBpfWlmKEIucm93VG90YWxzJiYwPEIueURpbWVuc2lvbi5sZW5ndGgmJihlPUIueURpbWVuc2lvblswXS5kYXRhTmFtZSxCLnlEaW1lbnNpb24uc3BsaWNlKDAsMCx7ZGF0YU5hbWU6ZX0pLEIueURpbWVuc2lvblswXS5jb252ZXJ0ZXI9ZnVuY3Rpb24oKXtyZXR1cm4iX3JfVG90YWxzIn0pLHU9QXJyYXkuaXNBcnJheShCLnhEaW1lbnNpb24pP0IueERpbWVuc2lvbi5sZW5ndGg6MCxoPUIueURpbWVuc2lvbi5sZW5ndGgsZz1BcnJheS5pc0FycmF5KEIuYWdncmVnYXRlcyk/Qi5hZ2dyZWdhdGVzLmxlbmd0aDowLDA9PT11fHwwPT09Zyl0aHJvdyJ4RGltZW5zaW9uIG9yIGFnZ3JlZ2F0ZXMgb3B0aW9uYSBhcmUgbm90IHNldCEiO2ZvcihqPTA7ajx1O2orKyl0PXtuYW1lOkIueERpbWVuc2lvbltqXS5kYXRhTmFtZSxmcm96ZW46Qi5mcm96ZW5TdGF0aWNDb2xzfSxudWxsPT1CLnhEaW1lbnNpb25bal0uaXNHcm91cEZpZWxkJiYoQi54RGltZW5zaW9uW2pdLmlzR3JvdXBGaWVsZD0hMCksdD1ZZS5leHRlbmQoITAsdCxCLnhEaW1lbnNpb25bal0pLFIucHVzaCh0KTtmb3IodmFyIGw9dS0xLHM9e30sbT1bXTtpPHI7KXtmb3IodmFyIGQ9a1tpXSxwPVtdLGM9W10sdj17fSxqPTA7cFtqXT1ZZS5qZ3JpZC50cmltKGRbQi54RGltZW5zaW9uW2pdLmRhdGFOYW1lXSksdltCLnhEaW1lbnNpb25bal0uZGF0YU5hbWVdPXBbal0sKytqPHU7KTt2YXIgYix3PTAseT0tMTtpZihiPW8oTixhLHApKXtpZigwPD15KXtpZih3PTAsMTw9aCl7Zm9yKHc9MDt3PGg7dysrKWNbd109WWUuamdyaWQudHJpbShkW0IueURpbWVuc2lvblt3XS5kYXRhTmFtZV0pLHZvaWQgMD09PWNbd10/Y1t3XT1udWxsOkIueURpbWVuc2lvblt3XS5jb252ZXJ0ZXImJlllLmpncmlkLmlzRnVuY3Rpb24oQi55RGltZW5zaW9uW3ddLmNvbnZlcnRlcikmJihjW3ddPUIueURpbWVuc2lvblt3XS5jb252ZXJ0ZXIuY2FsbCh0aGlzLGNbd10scCxjKSk7Yj1uKGQsQi5hZ2dyZWdhdGVzLGMsYil9ZWxzZSAwPT09aCYmKGI9bihkLEIuYWdncmVnYXRlcyxudWxsLGIpKTtOW3ldPWJ9fWVsc2V7aWYodz0wLDE8PWgpe2Zvcih3PTA7dzxoO3crKyljW3ddPVllLmpncmlkLnRyaW0oZFtCLnlEaW1lbnNpb25bd10uZGF0YU5hbWVdKSx2b2lkIDA9PT1jW3ddP2Nbd109bnVsbDpCLnlEaW1lbnNpb25bd10uY29udmVydGVyJiZZZS5qZ3JpZC5pc0Z1bmN0aW9uKEIueURpbWVuc2lvblt3XS5jb252ZXJ0ZXIpJiYoY1t3XT1CLnlEaW1lbnNpb25bd10uY29udmVydGVyLmNhbGwodGhpcyxjW3ddLHAsYykpO3Y9bihkLEIuYWdncmVnYXRlcyxjLHYpfWVsc2UgMD09PWgmJih2PW4oZCxCLmFnZ3JlZ2F0ZXMsbnVsbCx2KSk7Ti5wdXNoKHYpfXZhciB4LF89MCxxPW51bGwsQz1udWxsO2Zvcih4IGluIE8paWYoTy5oYXNPd25Qcm9wZXJ0eSh4KSl7aWYoMD09PV8pcT0ocz1zLmNoaWxkcmVuJiZ2b2lkIDAhPT1zLmNoaWxkcmVuP3M6e3RleHQ6eCxsZXZlbDowLGNoaWxkcmVuOltdLGxhYmVsOnh9KS5jaGlsZHJlbjtlbHNle2ZvcihDPW51bGwsaj0wO2o8cS5sZW5ndGg7aisrKWlmKHFbal0udGV4dD09PXgpe0M9cVtqXTticmVha31xPShDfHwocS5wdXNoKHtjaGlsZHJlbjpbXSx0ZXh0OngsbGV2ZWw6XyxmaWVsZHM6T1t4XSxsYWJlbDpBW3hdfSkscVtxLmxlbmd0aC0xXSkpLmNoaWxkcmVufV8rK31pKyt9dmFyIEksbT1udWxsLEQ9W10sRz1SLmxlbmd0aCxGPUc7aWYoMDxoJiYoUFtoLTFdPXt1c2VDb2xTcGFuU3R5bGU6ITEsZ3JvdXBIZWFkZXJzOltdfSksIWZ1bmN0aW9uIGUodCl7dmFyIHIsaSxvLGEsbjtmb3IobyBpbiB0KWlmKHQuaGFzT3duUHJvcGVydHkobykpe2lmKCJvYmplY3QiIT10eXBlb2YgdFtvXSl7aWYoImxldmVsIj09PW8pe2lmKHZvaWQgMD09PURbdC5sZXZlbF0mJihEW3QubGV2ZWxdPSIiLDA8dC5sZXZlbCkmJi0xPT09dC50ZXh0LmluZGV4T2YoIl9yX1RvdGFscyIpJiYoUFt0LmxldmVsLTFdPXt1c2VDb2xTcGFuU3R5bGU6ITEsZ3JvdXBIZWFkZXJzOltdfSksRFt0LmxldmVsXSE9PXQudGV4dCYmdC5jaGlsZHJlbi5sZW5ndGgmJi0xPT09dC50ZXh0LmluZGV4T2YoIl9yX1RvdGFscyIpJiYwPHQubGV2ZWwpe1BbdC5sZXZlbC0xXS5ncm91cEhlYWRlcnMucHVzaCh7dGl0bGVUZXh0OnQubGFiZWwsbnVtYmVyT2ZDb2x1bW5zOjB9KTt2YXIgbD1QW3QubGV2ZWwtMV0uZ3JvdXBIZWFkZXJzLmxlbmd0aC0xLHM9MD09bD9GOkc7aWYodC5sZXZlbC0xPT0oQi5yb3dUb3RhbHM/MTowKSYmMDxsKXtmb3IodmFyIGQ9MCxwPTA7cDxsO3ArKylkKz1QW3QubGV2ZWwtMV0uZ3JvdXBIZWFkZXJzW3BdLm51bWJlck9mQ29sdW1ucztkJiYocz1kK3UpfVJbc10mJihQW3QubGV2ZWwtMV0uZ3JvdXBIZWFkZXJzW2xdLnN0YXJ0Q29sdW1uTmFtZT1SW3NdLm5hbWUsUFt0LmxldmVsLTFdLmdyb3VwSGVhZGVyc1tsXS5udW1iZXJPZkNvbHVtbnM9Ui5sZW5ndGgtcyksRz1SLmxlbmd0aH1EW3QubGV2ZWxdPXQudGV4dH1pZih0LmxldmVsPT09aCYmImxldmVsIj09PW8mJjA8aClpZigxPGcpe3ZhciBjPTE7Zm9yKHIgaW4gdC5maWVsZHMpdC5maWVsZHMuaGFzT3duUHJvcGVydHkocikmJigxPT09YyYmUFtoLTFdLmdyb3VwSGVhZGVycy5wdXNoKHtzdGFydENvbHVtbk5hbWU6cixudW1iZXJPZkNvbHVtbnM6MSx0aXRsZVRleHQ6dC5sYWJlbHx8dC50ZXh0fSksYysrKTtQW2gtMV0uZ3JvdXBIZWFkZXJzW1BbaC0xXS5ncm91cEhlYWRlcnMubGVuZ3RoLTFdLm51bWJlck9mQ29sdW1ucz1jLTF9ZWxzZSBQLnNwbGljZShoLTEsMSl9aWYobnVsbCE9dFtvXSYmIm9iamVjdCI9PXR5cGVvZiB0W29dJiZlKHRbb10pLCJsZXZlbCI9PT1vJiYwPHQubGV2ZWwmJih0LmxldmVsPT09KDA9PT1oP3QubGV2ZWw6aCl8fC0xIT09RFt0LmxldmVsXS5pbmRleE9mKCJfcl9Ub3RhbHMiKSkpZm9yKHIgaW4gaT0wLHQuZmllbGRzKWlmKHQuZmllbGRzLmhhc093blByb3BlcnR5KHIpKXtmb3IoYSBpbiBuPXt9LEIuYWdncmVnYXRlc1tpXSlpZihCLmFnZ3JlZ2F0ZXNbaV0uaGFzT3duUHJvcGVydHkoYSkpc3dpdGNoKGEpe2Nhc2UibWVtYmVyIjpjYXNlImxhYmVsIjpjYXNlImFnZ3JlZ2F0b3IiOmJyZWFrO2RlZmF1bHQ6blthXT1CLmFnZ3JlZ2F0ZXNbaV1bYV19MTxnPyhuLm5hbWU9cixuLmxhYmVsPUIuYWdncmVnYXRlc1tpXS5sYWJlbHx8dC5sYWJlbCk6KG4ubmFtZT10LnRleHQsbi5sYWJlbD0iX3JfVG90YWxzIj09PXQudGV4dD9CLnJvd1RvdGFsc1RleHQ6dC5sYWJlbCksUi5wdXNoKG4pLGkrK319fShzKSxCLmNvbFRvdGFscylmb3IodmFyIFM9Ti5sZW5ndGg7Uy0tOylmb3Ioaj11O2o8Ui5sZW5ndGg7aisrKUk9UltqXS5uYW1lLE1bSV0/TVtJXSs9WWUuamdyaWQuZmxvYXROdW0oTltTXVtJXSk6TVtJXT1ZZS5qZ3JpZC5mbG9hdE51bShOW1NdW0ldKTtpZigwPGwpZm9yKGo9MDtqPGw7aisrKVJbal0uaXNHcm91cEZpZWxkJiYoVC5ncm91cGluZ1ZpZXcuZ3JvdXBGaWVsZC5wdXNoKFJbal0ubmFtZSksVC5ncm91cGluZ1ZpZXcuZ3JvdXBTdW1tYXJ5LnB1c2goQi5ncm91cFN1bW1hcnkpLFQuZ3JvdXBpbmdWaWV3Lmdyb3VwU3VtbWFyeVBvcy5wdXNoKEIuZ3JvdXBTdW1tYXJ5UG9zKSk7ZWxzZSBULmdyb3VwaW5nPSExO1Quc29ydG5hbWU9UltsXS5uYW1lLFQuZ3JvdXBpbmdWaWV3LmhpZGVGaXJzdEdyb3VwQ29sPSEwfSkse2NvbE1vZGVsOlIscm93czpOLGdyb3VwT3B0aW9uczpULGdyb3VwSGVhZGVyczpQLHN1bW1hcnk6TX19LGpxUGl2b3Q6ZnVuY3Rpb24ocixkLHAsaSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBzPXRoaXMsZT1wLnJlZ2lvbmFsfHwiZW4iO2Z1bmN0aW9uIHQoZSl7WWUuamdyaWQuaXNGdW5jdGlvbihkLm9uSW5pdFBpdm90KSYmZC5vbkluaXRQaXZvdC5jYWxsKHMpLEFycmF5LmlzQXJyYXkoZSl8fChlPVtdKTt2YXIgdCxyLGksbyxhPWpRdWVyeShzKS5qcUdyaWQoInBpdm90U2V0dXAiLGUsZCksZT0wPFllLmFzc29jQXJyYXlTaXplKGEuc3VtbWFyeSksbj1ZZS5qZ3JpZC5mcm9tLmNhbGwocyxhLnJvd3MpO2ZvcihkLmlnbm9yZUNhc2UmJihuPW4uaWdub3JlQ2FzZSgpKSx0PTA7dDxhLmdyb3VwT3B0aW9ucy5ncm91cGluZ1ZpZXcuZ3JvdXBGaWVsZC5sZW5ndGg7dCsrKXI9ZC54RGltZW5zaW9uW3RdLnNvcnRvcmRlcnx8ImFzYyIsaT1kLnhEaW1lbnNpb25bdF0uc29ydHR5cGV8fCJ0ZXh0IixuLm9yZGVyQnkoYS5ncm91cE9wdGlvbnMuZ3JvdXBpbmdWaWV3Lmdyb3VwRmllbGRbdF0scixpLCIiLGkpO2lmKG89ZC54RGltZW5zaW9uLmxlbmd0aCxwLnNvcnRuYW1lKXtmb3Iocj1wLnNvcnRvcmRlcnx8ImFzYyIsaT0idGV4dCIsdD0wO3Q8bzt0KyspaWYoZC54RGltZW5zaW9uW3RdLmRhdGFOYW1lPT09cC5zb3J0bmFtZSl7aT1kLnhEaW1lbnNpb25bdF0uc29ydHR5cGV8fCJ0ZXh0IjticmVha31uLm9yZGVyQnkocC5zb3J0bmFtZSxyLGksIiIsaSl9ZWxzZSBhLmdyb3VwT3B0aW9ucy5zb3J0bmFtZSYmbyYmKHI9ZC54RGltZW5zaW9uW28tMV0uc29ydG9yZGVyfHwiYXNjIixpPWQueERpbWVuc2lvbltvLTFdLnNvcnR0eXBlfHwidGV4dCIsbi5vcmRlckJ5KGEuZ3JvdXBPcHRpb25zLnNvcnRuYW1lLHIsaSwiIixpKSk7alF1ZXJ5KHMpLmpxR3JpZChZZS5leHRlbmQoITAse2RhdGFzdHI6WWUuZXh0ZW5kKG4uc2VsZWN0KCksZT97dXNlcmRhdGE6YS5zdW1tYXJ5fTp7fSksZGF0YXR5cGU6Impzb25zdHJpbmciLGZvb3RlcnJvdzplLHVzZXJEYXRhT25Gb290ZXI6ZSxjb2xNb2RlbDphLmNvbE1vZGVsLHZpZXdyZWNvcmRzOiEwLGZvcm1hdEZvb3RlckRhdGE6ITA9PT1kLmNvbFRvdGFscyxzb3J0bmFtZTpkLnhEaW1lbnNpb25bMF0uZGF0YU5hbWV9LGEuZ3JvdXBPcHRpb25zLHB8fHt9KSk7dmFyIGw9YS5ncm91cEhlYWRlcnM7aWYobC5sZW5ndGgpZm9yKHQ9MDt0PGwubGVuZ3RoO3QrKylsW3RdJiZsW3RdLmdyb3VwSGVhZGVycy5sZW5ndGgmJmpRdWVyeShzKS5qcUdyaWQoInNldEdyb3VwSGVhZGVycyIsbFt0XSk7ZC5mcm96ZW5TdGF0aWNDb2xzJiZqUXVlcnkocykuanFHcmlkKCJzZXRGcm96ZW5Db2x1bW5zIiksWWUuamdyaWQuaXNGdW5jdGlvbihkLm9uQ29tcGxldGVQaXZvdCkmJmQub25Db21wbGV0ZVBpdm90LmNhbGwocyksZC5sb2FkTXNnJiZZZSgiLmxvYWRpbmdfcGl2b3QiKS5yZW1vdmUoKX12b2lkIDA9PT1kLmxvYWRNc2cmJihkLmxvYWRNc2c9ITApLGQubG9hZE1zZyYmWWUoIjxkaXYgY2xhc3M9J2xvYWRpbmdfcGl2b3QgdWktc3RhdGUtZGVmYXVsdCB1aS1zdGF0ZS1hY3RpdmUgcm93Jz4iK1llLmpncmlkLmdldFJlZ2lvbmFsKHMsInJlZ2lvbmFsLiIrZSsiLmRlZmF1bHRzLmxvYWR0ZXh0IikrIjwvZGl2PiIpLmluc2VydEJlZm9yZShzKS5zaG93KCksInN0cmluZyI9PXR5cGVvZiByP1llLmFqYXgoWWUuZXh0ZW5kKHt1cmw6cixkYXRhVHlwZToianNvbiIsc3VjY2VzczpmdW5jdGlvbihlKXt0KFllLmpncmlkLmdldEFjY2Vzc29yKGUsaSYmaS5yZWFkZXI/aS5yZWFkZXI6InJvd3MiKSl9fSxpfHx7fSkpOnQocil9KX19KSxZZS5qZ3JpZC5leHRlbmQoe3NldFN1YkdyaWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGUsdCxyPVllLmpncmlkLnN0eWxlVUlbdGhpcy5wLnN0eWxlVUl8fCJqUXVlcnlVSSJdLnN1YmdyaWQscj17cGx1c2ljb246ci5pY29uX3BsdXMsbWludXNpY29uOnIuaWNvbl9taW51cyxvcGVuaWNvbjpyLmljb25fb3BlbixleHBhbmRPbkxvYWQ6ITEsc2VsZWN0T25FeHBhbmQ6ITEsc2VsZWN0T25Db2xsYXBzZTohMSxyZWxvYWRPbkV4cGFuZDohMH07aWYodGhpcy5wLnN1YkdyaWRPcHRpb25zPVllLmV4dGVuZChyLHRoaXMucC5zdWJHcmlkT3B0aW9uc3x8e30pLHRoaXMucC5jb2xOYW1lcy51bnNoaWZ0KCIiKSx0aGlzLnAuY29sTW9kZWwudW5zaGlmdCh7bmFtZToic3ViZ3JpZCIsd2lkdGg6WWUuamdyaWQuY2VsbF93aWR0aD90aGlzLnAuc3ViR3JpZFdpZHRoK3RoaXMucC5jZWxsTGF5b3V0OnRoaXMucC5zdWJHcmlkV2lkdGgsc29ydGFibGU6ITEscmVzaXphYmxlOiExLGhpZGVkbGc6ITAsc2VhcmNoOiExLGZpeGVkOiEwfSksKGU9dGhpcy5wLnN1YkdyaWRNb2RlbClbMF0pZm9yKGVbMF0uYWxpZ249WWUuZXh0ZW5kKFtdLGVbMF0uYWxpZ258fFtdKSx0PTA7dDxlWzBdLm5hbWUubGVuZ3RoO3QrKyllWzBdLmFsaWduW3RdPWVbMF0uYWxpZ25bdF18fCJsZWZ0In0pfSxhZGRTdWJHcmlkQ2VsbDpmdW5jdGlvbihlLHQpe3ZhciByLGksbyxhPSIiO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXthPXRoaXMuZm9ybWF0Q29sKGUsdCksaT10aGlzLnAuaWQscj10aGlzLnAuc3ViR3JpZE9wdGlvbnMucGx1c2ljb24sbz1ZZS5qZ3JpZC5zdHlsZVVJW3RoaXMucC5zdHlsZVVJfHwialF1ZXJ5VUkiXS5jb21tb259KSwnPHRkIHJvbGU9ImdyaWRjZWxsIiBhcmlhLWRlc2NyaWJlZGJ5PSInK2krJ19zdWJncmlkIiBjbGFzcz0idWktc2djb2xsYXBzZWQgc2djb2xsYXBzZWQiICcrYSsiPjxhIHN0eWxlPSdjdXJzb3I6cG9pbnRlcjsnIGNsYXNzPSd1aS1zZ2hyZWYnPjxzcGFuIGNsYXNzPSciK28uaWNvbl9iYXNlKyIgIityKyInPjwvc3Bhbj48L2E+PC90ZD4ifSxhZGRTdWJHcmlkOmZ1bmN0aW9uKGosYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBjPXRoaXM7aWYoYy5ncmlkKXt2YXIgbixsLHMsZCxwLGUscix1PVllLmpncmlkLnN0eWxlVUlbYy5wLnN0eWxlVUl8fCJqUXVlcnlVSSJdLmJhc2UsaD1ZZS5qZ3JpZC5zdHlsZVVJW2MucC5zdHlsZVVJfHwialF1ZXJ5VUkiXS5jb21tb24sZz1mdW5jdGlvbihlLHQscil7cj1ZZSgiPHRkIGFsaWduPSciK2MucC5zdWJHcmlkTW9kZWxbMF0uYWxpZ25bcl0rIic+PC90ZD4iKS5odG1sKHQpO1llKGUpLmFwcGVuZChyKX0sZj1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcixpLG89WWUoIjx0YWJsZSBjbGFzcz0nIit1LnJvd1RhYmxlKyIgdWktY29tbW9uLXRhYmxlJz48dGJvZHk+PC90Ym9keT48L3RhYmxlPiIpLGE9WWUoIjx0cj48L3RyPiIpLG49MDtuPGMucC5zdWJHcmlkTW9kZWxbMF0ubmFtZS5sZW5ndGg7bisrKXI9WWUoIjx0aCBjbGFzcz0nIit1LmhlYWRlckJveCsiIHVpLXRoLXN1YmdyaWQgdWktdGgtY29sdW1uIHVpLXRoLSIrYy5wLmRpcmVjdGlvbisiJz48L3RoPiIpLFllKHIpLmh0bWwoYy5wLnN1YkdyaWRNb2RlbFswXS5uYW1lW25dKSxZZShyKS53aWR0aChjLnAuc3ViR3JpZE1vZGVsWzBdLndpZHRoW25dKSxZZShhKS5hcHBlbmQocik7WWUobykuYXBwZW5kKGEpLGUmJihpPWMucC54bWxSZWFkZXIuc3ViZ3JpZCxZZShpLnJvb3QrIiAiK2kucm93LGUpLmVhY2goZnVuY3Rpb24oKXtpZihhPVllKCI8dHIgY2xhc3M9JyIraC5jb250ZW50KyIgdWktc3VidGJsY2VsbCc+PC90cj4iKSwhMD09PWkucmVwZWF0aXRlbXMpWWUoaS5jZWxsLHRoaXMpLmVhY2goZnVuY3Rpb24oZSl7ZyhhLFllKHRoaXMpLnRleHQoKXx8IiYjMTYwOyIsZSl9KTtlbHNle3ZhciBlPWMucC5zdWJHcmlkTW9kZWxbMF0ubWFwcGluZ3x8Yy5wLnN1YkdyaWRNb2RlbFswXS5uYW1lO2lmKGUpZm9yKG49MDtuPGUubGVuZ3RoO24rKylnKGEsWWUuamdyaWQuZ2V0WG1sRGF0YSh0aGlzLGVbbl0pfHwiJiMxNjA7IixuKX1ZZShvKS5hcHBlbmQoYSl9KSk7ZT1ZZShjLmdyaWQuYkRpdikuZmluZCgidGFibGUiKS5maXJzdCgpLmF0dHIoImlkIikrIl8iO3JldHVybiBZZSgiIyIrWWUuamdyaWQuanFJRChlK3QpKS5hcHBlbmQobyksYy5ncmlkLmhEaXYubG9hZGluZz0hMSxZZSgiI2xvYWRfIitZZS5qZ3JpZC5qcUlEKGMucC5pZCkpLmhpZGUoKSwhMX0sbT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcixpLG8sYSxuLGw9WWUoIjx0YWJsZSBjbGFzcz0nIit1LnJvd1RhYmxlKyIgdWktY29tbW9uLXRhYmxlJz48dGJvZHk+PC90Ym9keT48L3RhYmxlPiIpLHM9WWUoIjx0cj48L3RyPiIpLGQ9MDtkPGMucC5zdWJHcmlkTW9kZWxbMF0ubmFtZS5sZW5ndGg7ZCsrKXI9WWUoIjx0aCBjbGFzcz0nIit1LmhlYWRlckJveCsiIHVpLXRoLXN1YmdyaWQgdWktdGgtY29sdW1uIHVpLXRoLSIrYy5wLmRpcmVjdGlvbisiJz48L3RoPiIpLFllKHIpLmh0bWwoYy5wLnN1YkdyaWRNb2RlbFswXS5uYW1lW2RdKSxZZShyKS53aWR0aChjLnAuc3ViR3JpZE1vZGVsWzBdLndpZHRoW2RdKSxZZShzKS5hcHBlbmQocik7aWYoWWUobCkuYXBwZW5kKHMpLGUmJihhPWMucC5qc29uUmVhZGVyLnN1YmdyaWQsdm9pZCAwIT09KGk9WWUuamdyaWQuZ2V0QWNjZXNzb3IoZSxhLnJvb3QpKSkpZm9yKGQ9MDtkPGkubGVuZ3RoO2QrKyl7aWYobz1pW2RdLHM9WWUoIjx0ciBjbGFzcz0nIitoLmNvbnRlbnQrIiB1aS1zdWJ0YmxjZWxsJz48L3RyPiIpLCEwPT09YS5yZXBlYXRpdGVtcylmb3IoYS5jZWxsJiYobz1vW2EuY2VsbF0pLG49MDtuPG8ubGVuZ3RoO24rKylnKHMsb1tuXXx8IiYjMTYwOyIsbik7ZWxzZXt2YXIgcD1jLnAuc3ViR3JpZE1vZGVsWzBdLm1hcHBpbmd8fGMucC5zdWJHcmlkTW9kZWxbMF0ubmFtZTtpZihwLmxlbmd0aClmb3Iobj0wO248cC5sZW5ndGg7bisrKWcocyxZZS5qZ3JpZC5nZXRBY2Nlc3NvcihvLHBbbl0pfHwiJiMxNjA7IixuKX1ZZShsKS5hcHBlbmQocyl9ZT1ZZShjLmdyaWQuYkRpdikuZmluZCgidGFibGUiKS5maXJzdCgpLmF0dHIoImlkIikrIl8iO3JldHVybiBZZSgiIyIrWWUuamdyaWQuanFJRChlK3QpKS5hcHBlbmQobCksYy5ncmlkLmhEaXYubG9hZGluZz0hMSxZZSgiI2xvYWRfIitZZS5qZ3JpZC5qcUlEKGMucC5pZCkpLmhpZGUoKSwhMX0sdj0wLHQ9KFllLmVhY2goYy5wLmNvbE1vZGVsLGZ1bmN0aW9uKCl7ITAhPT10aGlzLmhpZGRlbiYmInJuIiE9PXRoaXMubmFtZSYmImNiIiE9PXRoaXMubmFtZSYmInNjIiE9PXRoaXMubmFtZXx8disrfSksYy5yb3dzLmxlbmd0aCksaT0xLG89WWUuamdyaWQuaXNGdW5jdGlvbihjLnAuaXNIYXNTdWJHcmlkKTtmb3Iodm9pZCAwIT09YSYmMDxhJiYodD0oaT1hKSsxKTtpPHQ7KVllKGMucm93c1tpXSkuaGFzQ2xhc3MoImpxZ3JvdyIpJiYoYy5wLnNjcm9sbCYmWWUoYy5yb3dzW2ldLmNlbGxzW2pdKS5vZmYoImNsaWNrIiksZT1udWxsLCExPT09KGU9bz9jLnAuaXNIYXNTdWJHcmlkLmNhbGwoYyxjLnJvd3NbaV0uaWQpOmUpP2Mucm93c1tpXS5jZWxsc1tqXS5pbm5lckhUTUw9IiI6WWUoYy5yb3dzW2ldLmNlbGxzW2pdKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7dmFyIGU9WWUodGhpcykucGFyZW50KCJ0ciIpWzBdO2lmKGw9Yy5wLmlkLG49ZS5pZCxwPVllKCIjIitsKyJfIituKyJfZXhwYW5kZWRDb250ZW50IiksWWUodGhpcykuaGFzQ2xhc3MoInNnY29sbGFwc2VkIikpe2lmKCExPT09KGQ9KGQ9ITEhPT0oZD1ZZShjKS50cmlnZ2VySGFuZGxlcigianFHcmlkU3ViR3JpZEJlZm9yZUV4cGFuZCIsW2wrIl8iK24sbl0pKSYmInN0b3AiIT09ZCkmJlllLmpncmlkLmlzRnVuY3Rpb24oYy5wLnN1YkdyaWRCZWZvcmVFeHBhbmQpP2MucC5zdWJHcmlkQmVmb3JlRXhwYW5kLmNhbGwoYyxsKyJfIituLG4pOmQpKXJldHVybiExO2lmKCEwPT09Yy5wLnN1YkdyaWRPcHRpb25zLnJlbG9hZE9uRXhwYW5kfHwhMT09PWMucC5zdWJHcmlkT3B0aW9ucy5yZWxvYWRPbkV4cGFuZCYmIXAuaGFzQ2xhc3MoInVpLXN1YmdyaWQiKSlpZihzPTE8PWo/Ijx0ZCBjb2xzcGFuPSciK2orIic+JiMxNjA7PC90ZD4iOiIiLFllKGUpLmFmdGVyKCI8dHIgcm9sZT0ncm93JyBpZD0nIitsKyJfIituKyJfZXhwYW5kZWRDb250ZW50JyBjbGFzcz0ndWktc3ViZ3JpZCB1aS1zZy1leHBhbmRlZCc+IitzKyI8dGQgY2xhc3M9JyIraC5jb250ZW50KyIgc3ViZ3JpZC1jZWxsJz48c3BhbiBjbGFzcz0nIitoLmljb25fYmFzZSsiICIrYy5wLnN1YkdyaWRPcHRpb25zLm9wZW5pY29uKyInPjwvc3Bhbj48L3RkPjx0ZCBjb2xzcGFuPSciK3BhcnNlSW50KGMucC5jb2xOYW1lcy5sZW5ndGgtMS12LDEwKSsiJyBjbGFzcz0nIitoLmNvbnRlbnQrIiBzdWJncmlkLWRhdGEnPjxkaXYgaWQ9IitsKyJfIituKyIgY2xhc3M9J3RhYmxlZGl2Jz48L2Rpdj48L3RkPjwvdHI+IiksWWUoYykudHJpZ2dlckhhbmRsZXIoImpxR3JpZFN1YkdyaWRSb3dFeHBhbmRlZCIsW2wrIl8iK24sbl0pLFllLmpncmlkLmlzRnVuY3Rpb24oYy5wLnN1YkdyaWRSb3dFeHBhbmRlZCkpYy5wLnN1YkdyaWRSb3dFeHBhbmRlZC5jYWxsKGMsbCsiXyIrbixuKTtlbHNle3ZhciB0LHIsaT1lLG89WWUoaSkuYXR0cigiaWQiKSxhPXtuZF86KG5ldyBEYXRlKS5nZXRUaW1lKCl9O2lmKGFbYy5wLnBybU5hbWVzLnN1YmdyaWRpZF09byxjLnAuc3ViR3JpZE1vZGVsWzBdKXtpZihjLnAuc3ViR3JpZE1vZGVsWzBdLnBhcmFtcylmb3Iocj0wO3I8Yy5wLnN1YkdyaWRNb2RlbFswXS5wYXJhbXMubGVuZ3RoO3IrKylmb3IodD0wO3Q8Yy5wLmNvbE1vZGVsLmxlbmd0aDt0KyspYy5wLmNvbE1vZGVsW3RdLm5hbWU9PT1jLnAuc3ViR3JpZE1vZGVsWzBdLnBhcmFtc1tyXSYmKGFbYy5wLmNvbE1vZGVsW3RdLm5hbWVdPVllKCJ0ZCIsaSkuZXEodCkudGV4dCgpLnJlcGxhY2UoL1wmIzE2MFw7L2dpLCIiKSk7aWYoIWMuZ3JpZC5oRGl2LmxvYWRpbmcpc3dpdGNoKGMuZ3JpZC5oRGl2LmxvYWRpbmc9ITAsWWUoIiNsb2FkXyIrWWUuamdyaWQuanFJRChjLnAuaWQpKS5zaG93KCksYy5wLnN1YmdyaWR0eXBlfHwoYy5wLnN1YmdyaWR0eXBlPWMucC5kYXRhdHlwZSksWWUuamdyaWQuaXNGdW5jdGlvbihjLnAuc3ViZ3JpZHR5cGUpP2MucC5zdWJncmlkdHlwZS5jYWxsKGMsYSk6Yy5wLnN1YmdyaWR0eXBlPWMucC5zdWJncmlkdHlwZS50b0xvd2VyQ2FzZSgpLGMucC5zdWJncmlkdHlwZSl7Y2FzZSJ4bWwiOmNhc2UianNvbiI6WWUuYWpheChZZS5leHRlbmQoe3R5cGU6Yy5wLm10eXBlLHVybDpZZS5qZ3JpZC5pc0Z1bmN0aW9uKGMucC5zdWJHcmlkVXJsKT9jLnAuc3ViR3JpZFVybC5jYWxsKGMsYSk6Yy5wLnN1YkdyaWRVcmwsZGF0YVR5cGU6Yy5wLnN1YmdyaWR0eXBlLGRhdGE6WWUuamdyaWQuaXNGdW5jdGlvbihjLnAuc2VyaWFsaXplU3ViR3JpZERhdGEpP2MucC5zZXJpYWxpemVTdWJHcmlkRGF0YS5jYWxsKGMsYSk6YSxjb21wbGV0ZTpmdW5jdGlvbihlKXsieG1sIj09PWMucC5zdWJncmlkdHlwZT9mKGUucmVzcG9uc2VYTUwsbyk6bShZZS5qZ3JpZC5wYXJzZShlLnJlc3BvbnNlVGV4dCksbyl9fSxZZS5qZ3JpZC5hamF4T3B0aW9ucyxjLnAuYWpheFN1YmdyaWRPcHRpb25zfHx7fSkpfX19ZWxzZSBwLnNob3coKS5yZW1vdmVDbGFzcygidWktc2ctY29sbGFwc2VkIikuYWRkQ2xhc3MoInVpLXNnLWV4cGFuZGVkIik7WWUodGhpcykuaHRtbCgiPGEgc3R5bGU9J2N1cnNvcjpwb2ludGVyOycgY2xhc3M9J3VpLXNnaHJlZic+PHNwYW4gY2xhc3M9JyIraC5pY29uX2Jhc2UrIiAiK2MucC5zdWJHcmlkT3B0aW9ucy5taW51c2ljb24rIic+PC9zcGFuPjwvYT4iKS5yZW1vdmVDbGFzcygic2djb2xsYXBzZWQiKS5hZGRDbGFzcygic2dleHBhbmRlZCIpLGMucC5zdWJHcmlkT3B0aW9ucy5zZWxlY3RPbkV4cGFuZCYmWWUoYykuanFHcmlkKCJzZXRTZWxlY3Rpb24iLG4pfWVsc2UgaWYoWWUodGhpcykuaGFzQ2xhc3MoInNnZXhwYW5kZWQiKSl7aWYoITE9PT0oZD0oZD0hMSE9PShkPVllKGMpLnRyaWdnZXJIYW5kbGVyKCJqcUdyaWRTdWJHcmlkUm93Q29sYXBzZWQiLFtsKyJfIituLG5dKSkmJiJzdG9wIiE9PWQpJiZZZS5qZ3JpZC5pc0Z1bmN0aW9uKGMucC5zdWJHcmlkUm93Q29sYXBzZWQpP2MucC5zdWJHcmlkUm93Q29sYXBzZWQuY2FsbChjLGwrIl8iK24sbik6ZCkpcmV0dXJuITE7ITA9PT1jLnAuc3ViR3JpZE9wdGlvbnMucmVsb2FkT25FeHBhbmQ/cC5yZW1vdmUoIi51aS1zdWJncmlkIik6cC5oYXNDbGFzcygidWktc3ViZ3JpZCIpJiZwLmhpZGUoKS5hZGRDbGFzcygidWktc2ctY29sbGFwc2VkIikucmVtb3ZlQ2xhc3MoInVpLXNnLWV4cGFuZGVkIiksWWUodGhpcykuaHRtbCgiPGEgc3R5bGU9J2N1cnNvcjpwb2ludGVyOycgY2xhc3M9J3VpLXNnaHJlZic+PHNwYW4gY2xhc3M9JyIraC5pY29uX2Jhc2UrIiAiK2MucC5zdWJHcmlkT3B0aW9ucy5wbHVzaWNvbisiJz48L3NwYW4+PC9hPiIpLnJlbW92ZUNsYXNzKCJzZ2V4cGFuZGVkIikuYWRkQ2xhc3MoInNnY29sbGFwc2VkIiksYy5wLnN1YkdyaWRPcHRpb25zLnNlbGVjdE9uQ29sbGFwc2UmJlllKGMpLmpxR3JpZCgic2V0U2VsZWN0aW9uIixuKX1yZXR1cm4hMX0pKSxpKys7ITA9PT1jLnAuc3ViR3JpZE9wdGlvbnMuZXhwYW5kT25Mb2FkJiYocj0wLGMucC5tdWx0aXNlbGVjdCYmcisrLGMucC5yb3dudW1iZXJzJiZyKyssWWUoYy5yb3dzKS5maWx0ZXIoIi5qcWdyb3ciKS5lYWNoKGZ1bmN0aW9uKGUsdCl7WWUodC5jZWxsc1tyXSkuY2xpY2soKX0pKSxjLnN1YkdyaWRYbWw9ZnVuY3Rpb24oZSx0KXtmKGUsdCl9LGMuc3ViR3JpZEpzb249ZnVuY3Rpb24oZSx0KXttKGUsdCl9fX0pfSxleHBhbmRTdWJHcmlkUm93OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZTsodGhpcy5ncmlkfHx0KSYmITA9PT10aGlzLnAuc3ViR3JpZCYmKGU9WWUodGhpcykuanFHcmlkKCJnZXRJbmQiLHQsITApKSYmKGU9WWUoInRkLnNnY29sbGFwc2VkIixlKVswXSkmJlllKGUpLnRyaWdnZXIoImNsaWNrIil9KX0sY29sbGFwc2VTdWJHcmlkUm93OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZTsodGhpcy5ncmlkfHx0KSYmITA9PT10aGlzLnAuc3ViR3JpZCYmKGU9WWUodGhpcykuanFHcmlkKCJnZXRJbmQiLHQsITApKSYmKGU9WWUoInRkLnNnZXhwYW5kZWQiLGUpWzBdKSYmWWUoZSkudHJpZ2dlcigiY2xpY2siKX0pfSx0b2dnbGVTdWJHcmlkUm93OmZ1bmN0aW9uKHIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZSx0Oyh0aGlzLmdyaWR8fHIpJiYhMD09PXRoaXMucC5zdWJHcmlkJiYoZT1ZZSh0aGlzKS5qcUdyaWQoImdldEluZCIsciwhMCkpJiYodD0odD1ZZSgidGQuc2djb2xsYXBzZWQiLGUpWzBdKXx8WWUoInRkLnNnZXhwYW5kZWQiLGUpWzBdKSYmWWUodCkudHJpZ2dlcigiY2xpY2siKX0pfX0pLFllLmpncmlkLmV4dGVuZCh7c2V0VHJlZU5vZGU6ZnVuY3Rpb24oZixtKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIHI9dGhpcztpZihyLmdyaWQmJnIucC50cmVlR3JpZCl7dmFyIGUsdCxpLG8sYSxuPXIucC5leHBDb2xJbmQsbD1yLnAudHJlZVJlYWRlci5leHBhbmRlZF9maWVsZCxzPXIucC50cmVlUmVhZGVyLmxlYWZfZmllbGQsZD1yLnAudHJlZVJlYWRlci5sZXZlbF9maWVsZCxwPXIucC50cmVlUmVhZGVyLmljb25fZmllbGQsYz1yLnAudHJlZVJlYWRlci5sb2FkZWQsdT1ZZS5qZ3JpZC5zdHlsZVVJW3IucC5zdHlsZVVJfHwialF1ZXJ5VUkiXS5jb21tb24saD1mO2ZvcihZZShyKS50cmlnZ2VySGFuZGxlcigianFHcmlkQmVmb3JlU2V0VHJlZU5vZGUiLFtoLG1dKSxZZS5qZ3JpZC5pc0Z1bmN0aW9uKHIucC5iZWZvcmVTZXRUcmVlTm9kZSkmJnIucC5iZWZvcmVTZXRUcmVlTm9kZS5jYWxsKHIsaCxtKTtmPG07KXt2YXIgZz1ZZS5qZ3JpZC5zdHJpcFByZWYoci5wLmlkUHJlZml4LHIucm93c1tmXS5pZCksZz1yLnAuX2luZGV4W2ddLGc9ci5wLmRhdGFbZ107Im5lc3RlZCIhPT1yLnAudHJlZUdyaWRNb2RlbHx8Z1tzXXx8KGk9cGFyc2VJbnQoZ1tyLnAudHJlZVJlYWRlci5sZWZ0X2ZpZWxkXSwxMCksZT1wYXJzZUludChnW3IucC50cmVlUmVhZGVyLnJpZ2h0X2ZpZWxkXSwxMCksZ1tzXT1lPT09aSsxPyJ0cnVlIjoiZmFsc2UiLHIucm93c1tmXS5jZWxsc1tyLnAuX3RyZWVsZWFmcG9zXS5pbm5lckhUTUw9Z1tzXSksZT1wYXJzZUludChnW2RdLDEwKSxpPTA9PT1yLnAudHJlZV9yb290X2xldmVsPyh0PWUrMSxlKToodD1lKS0xLG89IjxkaXYgY2xhc3M9J3RyZWUtd3JhcCB0cmVlLXdyYXAtIityLnAuZGlyZWN0aW9uKyInIHN0eWxlPSd3aWR0aDoiKzE4KnQrInB4Oyc+IixvKz0iPGRpdiBzdHlsZT0nIisoInJ0bCI9PT1yLnAuZGlyZWN0aW9uPyJyaWdodDoiOiJsZWZ0OiIpKzE4KmkrInB4OycgY2xhc3M9JyIrdS5pY29uX2Jhc2UrIiAiLHZvaWQgMCE9PWdbY10mJigidHJ1ZSI9PT1nW2NdfHwhMD09PWdbY10/Z1tjXT0hMDpnW2NdPSExKSxhPSJ0cnVlIj09PWdbc118fCEwPT09Z1tzXT8obys9KHZvaWQgMCE9PWdbcF0mJiIiIT09Z1twXT9nW3BdOnIucC50cmVlSWNvbnMubGVhZikrIiB0cmVlLWxlYWYgdHJlZWNsaWNrIixnW3NdPSEwLCJsZWFmIik6KGdbc109ITEsIiIpLGdbbF09KCJ0cnVlIj09PWdbbF18fCEwPT09Z1tsXSkmJihnW2NdfHx2b2lkIDA9PT1nW2NdKSwhMT09PWdbbF0/bys9ITA9PT1nW3NdPyInIjpyLnAudHJlZUljb25zLnBsdXMrIiB0cmVlLXBsdXMgdHJlZWNsaWNrJyI6bys9ITA9PT1nW3NdPyInIjpyLnAudHJlZUljb25zLm1pbnVzKyIgdHJlZS1taW51cyB0cmVlY2xpY2snIixvKz0iPjwvZGl2PjwvZGl2PiIsWWUoci5yb3dzW2ZdLmNlbGxzW25dKS53cmFwSW5uZXIoIjxzcGFuIGNsYXNzPSdjZWxsLXdyYXBwZXIiK2ErIic+PC9zcGFuPiIpLnByZXBlbmQobyksZT09PXBhcnNlSW50KHIucC50cmVlX3Jvb3RfbGV2ZWwsMTApfHxZZShyKS5qcUdyaWQoImlzVmlzaWJsZU5vZGUiLGcpfHxZZShyLnJvd3NbZl0pLmNzcygiZGlzcGxheSIsIm5vbmUiKSxZZShyLnJvd3NbZl0uY2VsbHNbbl0pLmZpbmQoImRpdi50cmVlY2xpY2siKS5vbigiY2xpY2siLGZ1bmN0aW9uKGUpe2U9ZS50YXJnZXR8fGUuc3JjRWxlbWVudCxlPVllLmpncmlkLnN0cmlwUHJlZihyLnAuaWRQcmVmaXgsWWUoZSxyLnJvd3MpLmNsb3Nlc3QoInRyLmpxZ3JvdyIpWzBdLmlkKSxlPXIucC5faW5kZXhbZV07ci5wLmRhdGFbZV1bc118fChyLnAuZGF0YVtlXVtsXT8oWWUocikuanFHcmlkKCJjb2xsYXBzZVJvdyIsci5wLmRhdGFbZV0pLFllKHIpLmpxR3JpZCgiY29sbGFwc2VOb2RlIixyLnAuZGF0YVtlXSkpOihZZShyKS5qcUdyaWQoImV4cGFuZFJvdyIsci5wLmRhdGFbZV0pLFllKHIpLmpxR3JpZCgiZXhwYW5kTm9kZSIsci5wLmRhdGFbZV0pKSl9KSwhMD09PXIucC5FeHBhbmRDb2xDbGljayYmWWUoci5yb3dzW2ZdLmNlbGxzW25dKS5maW5kKCJzcGFuLmNlbGwtd3JhcHBlciIpLmNzcygiY3Vyc29yIiwicG9pbnRlciIpLm9uKCJjbGljayIsZnVuY3Rpb24oZSl7dmFyIGU9ZS50YXJnZXR8fGUuc3JjRWxlbWVudCxlPVllLmpncmlkLnN0cmlwUHJlZihyLnAuaWRQcmVmaXgsWWUoZSxyLnJvd3MpLmNsb3Nlc3QoInRyLmpxZ3JvdyIpWzBdLmlkKSx0PXIucC5faW5kZXhbZV07ci5wLmRhdGFbdF1bc118fChyLnAuZGF0YVt0XVtsXT8oWWUocikuanFHcmlkKCJjb2xsYXBzZVJvdyIsci5wLmRhdGFbdF0pLFllKHIpLmpxR3JpZCgiY29sbGFwc2VOb2RlIixyLnAuZGF0YVt0XSkpOihZZShyKS5qcUdyaWQoImV4cGFuZFJvdyIsci5wLmRhdGFbdF0pLFllKHIpLmpxR3JpZCgiZXhwYW5kTm9kZSIsci5wLmRhdGFbdF0pKSksWWUocikuanFHcmlkKCJzZXRTZWxlY3Rpb24iLGUpfSksZisrfVllKHIpLnRyaWdnZXJIYW5kbGVyKCJqcUdyaWRBZnRlclNldFRyZWVOb2RlIixbaCxtXSksWWUuamdyaWQuaXNGdW5jdGlvbihyLnAuYWZ0ZXJTZXRUcmVlTm9kZSkmJnIucC5hZnRlclNldFRyZWVOb2RlLmNhbGwocixoLG0pfX0pfSxzZXRUcmVlR3JpZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZSx0LHIsaSxvPXRoaXMsYT0wLG49ITEsbD1bXSxzPVllLmpncmlkLnN0eWxlVUlbby5wLnN0eWxlVUl8fCJqUXVlcnlVSSJdLnRyZWVncmlkO2lmKG8ucC50cmVlR3JpZCl7Zm9yKHIgaW4gby5wLnRyZWVkYXRhdHlwZXx8WWUuZXh0ZW5kKG8ucCx7dHJlZWRhdGF0eXBlOm8ucC5kYXRhdHlwZX0pLG8ucC5sb2Fkb25jZSYmKG8ucC50cmVlZGF0YXR5cGU9ImxvY2FsIiksby5wLnN1YkdyaWQ9ITEsby5wLmFsdFJvd3M9ITEsby5wLnRyZWVHcmlkX2JpZ0RhdGF8fChvLnAucGdidXR0b25zPSExLG8ucC5wZ2lucHV0PSExLG8ucC5yb3dMaXN0PVtdKSxvLnAuZ3JpZHZpZXc9ITAsbnVsbCE9PW8ucC5yb3dUb3RhbHx8by5wLnRyZWVHcmlkX2JpZ0RhdGF8fChvLnAucm93TnVtPTFlNCksby5wLm11bHRpc2VsZWN0PSExLG8ucC5leHBDb2xJbmQ9MCxlPXMuaWNvbl9wbHVzLCJqUXVlcnlVSSI9PT1vLnAuc3R5bGVVSSYmKGUrPSJydGwiPT09by5wLmRpcmVjdGlvbj8idyI6ImUiKSxvLnAudHJlZUljb25zPVllLmV4dGVuZCh7cGx1czplLG1pbnVzOnMuaWNvbl9taW51cyxsZWFmOnMuaWNvbl9sZWFmfSxvLnAudHJlZUljb25zfHx7fSksIm5lc3RlZCI9PT1vLnAudHJlZUdyaWRNb2RlbD9vLnAudHJlZVJlYWRlcj1ZZS5leHRlbmQoe2xldmVsX2ZpZWxkOiJsZXZlbCIsbGVmdF9maWVsZDoibGZ0IixyaWdodF9maWVsZDoicmd0IixsZWFmX2ZpZWxkOiJpc0xlYWYiLGV4cGFuZGVkX2ZpZWxkOiJleHBhbmRlZCIsbG9hZGVkOiJsb2FkZWQiLGljb25fZmllbGQ6Imljb24ifSxvLnAudHJlZVJlYWRlcik6ImFkamFjZW5jeSI9PT1vLnAudHJlZUdyaWRNb2RlbCYmKG8ucC50cmVlUmVhZGVyPVllLmV4dGVuZCh7bGV2ZWxfZmllbGQ6ImxldmVsIixwYXJlbnRfaWRfZmllbGQ6InBhcmVudCIsbGVhZl9maWVsZDoiaXNMZWFmIixleHBhbmRlZF9maWVsZDoiZXhwYW5kZWQiLGxvYWRlZDoibG9hZGVkIixpY29uX2ZpZWxkOiJpY29uIn0sby5wLnRyZWVSZWFkZXIpKSxvLnAuY29sTW9kZWwpaWYoby5wLmNvbE1vZGVsLmhhc093blByb3BlcnR5KHIpKWZvcihpIGluKHQ9by5wLmNvbE1vZGVsW3JdLm5hbWUpIT09by5wLkV4cGFuZENvbHVtbnx8bnx8KG49ITAsby5wLmV4cENvbEluZD1hKSxhKyssdCE9PW8ucC50cmVlUmVhZGVyLmxldmVsX2ZpZWxkJiZ0IT09by5wLnRyZWVSZWFkZXIubGVmdF9maWVsZCYmdCE9PW8ucC50cmVlUmVhZGVyLnJpZ2h0X2ZpZWxkfHwoby5wLmNvbE1vZGVsW3JdLnNvcnR0eXBlPSJpbnRlZ2VyIiksby5wLnRyZWVSZWFkZXIpby5wLnRyZWVSZWFkZXIuaGFzT3duUHJvcGVydHkoaSkmJm8ucC50cmVlUmVhZGVyW2ldPT09dCYmbC5wdXNoKHQpO1llLmVhY2goby5wLnRyZWVSZWFkZXIsZnVuY3Rpb24oZSx0KXt0JiYtMT09PVllLmluQXJyYXkodCxsKSYmKCJsZWFmX2ZpZWxkIj09PWUmJihvLnAuX3RyZWVsZWFmcG9zPWEpLGErKyxvLnAuY29sTmFtZXMucHVzaCh0KSxvLnAuY29sTW9kZWwucHVzaCh7bmFtZTp0LHdpZHRoOjEsaGlkZGVuOiEwLHNvcnRhYmxlOiExLHJlc2l6YWJsZTohMSxoaWRlZGxnOiEwLGVkaXRhYmxlOiEwLHNlYXJjaDohMX0pKX0pfX0pfSxleHBhbmRSb3c6ZnVuY3Rpb24obil7dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGUsdCxyLGksbyxhPXRoaXM7YS5wLnRyZWVHcmlkX2JpZ0RhdGF8fChlPWEucC5sYXN0cGFnZSksYS5ncmlkJiZhLnAudHJlZUdyaWQmJih0PVllKGEpLmpxR3JpZCgiZ2V0Tm9kZUNoaWxkcmVuIixuKSxyPWEucC50cmVlUmVhZGVyLmV4cGFuZGVkX2ZpZWxkLGk9blthLnAubG9jYWxSZWFkZXIuaWRdLCExPT09KG89KG89dm9pZCAwPT09KG89WWUoYSkudHJpZ2dlckhhbmRsZXIoImpxR3JpZEJlZm9yZUV4cGFuZFRyZWVHcmlkUm93IixbaSxuLHRdKSk/ITA6bykmJlllLmpncmlkLmlzRnVuY3Rpb24oYS5wLmJlZm9yZUV4cGFuZFRyZWVHcmlkUm93KT9hLnAuYmVmb3JlRXhwYW5kVHJlZUdyaWRSb3cuY2FsbChhLGksbix0KTpvKXx8KFllKHQpLmVhY2goZnVuY3Rpb24oKXt2YXIgZT1hLnAuaWRQcmVmaXgrWWUuamdyaWQuZ2V0QWNjZXNzb3IodGhpcyxhLnAubG9jYWxSZWFkZXIuaWQpO1llKFllKGEpLmpxR3JpZCgiZ2V0R3JpZFJvd0J5SWQiLGUpKS5jc3MoImRpc3BsYXkiLCIiKSx0aGlzW3JdJiZZZShhKS5qcUdyaWQoImV4cGFuZFJvdyIsdGhpcyl9KSxZZShhKS50cmlnZ2VySGFuZGxlcigianFHcmlkQWZ0ZXJFeHBhbmRUcmVlR3JpZFJvdyIsW2ksbix0XSksWWUuamdyaWQuaXNGdW5jdGlvbihhLnAuYWZ0ZXJFeHBhbmRUcmVlR3JpZFJvdykmJmEucC5hZnRlckV4cGFuZFRyZWVHcmlkUm93LmNhbGwoYSxpLG4sdCksYS5wLnRyZWVHcmlkX2JpZ0RhdGEpfHwoYS5wLmxhc3RwYWdlPWUpKX0pfSxjb2xsYXBzZVJvdzpmdW5jdGlvbihhKXt0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZSx0LHIsaSxvPXRoaXM7by5ncmlkJiZvLnAudHJlZUdyaWQmJihlPVllKG8pLmpxR3JpZCgiZ2V0Tm9kZUNoaWxkcmVuIixhKSx0PW8ucC50cmVlUmVhZGVyLmV4cGFuZGVkX2ZpZWxkLHI9YVtvLnAubG9jYWxSZWFkZXIuaWRdLCExIT09KGk9KGk9dm9pZCAwPT09KGk9WWUobykudHJpZ2dlckhhbmRsZXIoImpxR3JpZEJlZm9yZUNvbGxhcHNlVHJlZUdyaWRSb3ciLFtyLGEsZV0pKT8hMDppKSYmWWUuamdyaWQuaXNGdW5jdGlvbihvLnAuYmVmb3JlQ29sbGFwc2VUcmVlR3JpZFJvdyk/by5wLmJlZm9yZUNvbGxhcHNlVHJlZUdyaWRSb3cuY2FsbChvLHIsYSxlKTppKSkmJihZZShlKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9by5wLmlkUHJlZml4K1llLmpncmlkLmdldEFjY2Vzc29yKHRoaXMsby5wLmxvY2FsUmVhZGVyLmlkKTtZZShZZShvKS5qcUdyaWQoImdldEdyaWRSb3dCeUlkIixlKSkuY3NzKCJkaXNwbGF5Iiwibm9uZSIpLHRoaXNbdF0mJlllKG8pLmpxR3JpZCgiY29sbGFwc2VSb3ciLHRoaXMpfSksWWUobykudHJpZ2dlckhhbmRsZXIoImpxR3JpZEFmdGVyQ29sbGFwc2VUcmVlR3JpZFJvdyIsW3IsYSxlXSksWWUuamdyaWQuaXNGdW5jdGlvbihvLnAuYWZ0ZXJDb2xsYXBzZVRyZWVHcmlkUm93KSkmJm8ucC5hZnRlckNvbGxhcHNlVHJlZUdyaWRSb3cuY2FsbChvLHIsYSxlKX0pfSxnZXRSb290Tm9kZXM6ZnVuY3Rpb24oKXt2YXIgbz1bXTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGUsdCxyPXRoaXMsaT1yLnAuZGF0YTtpZihyLmdyaWQmJnIucC50cmVlR3JpZClzd2l0Y2goci5wLnRyZWVHcmlkTW9kZWwpe2Nhc2UibmVzdGVkIjplPXIucC50cmVlUmVhZGVyLmxldmVsX2ZpZWxkLFllKGkpLmVhY2goZnVuY3Rpb24oKXtwYXJzZUludCh0aGlzW2VdLDEwKT09PXBhcnNlSW50KHIucC50cmVlX3Jvb3RfbGV2ZWwsMTApJiZvLnB1c2godGhpcyl9KTticmVhaztjYXNlImFkamFjZW5jeSI6dD1yLnAudHJlZVJlYWRlci5wYXJlbnRfaWRfZmllbGQsWWUoaSkuZWFjaChmdW5jdGlvbigpe251bGwhPT10aGlzW3RdJiYibnVsbCIhPT1TdHJpbmcodGhpc1t0XSkudG9Mb3dlckNhc2UoKXx8by5wdXNoKHRoaXMpfSl9fSksb30sZ2V0Tm9kZURlcHRoOmZ1bmN0aW9uKHQpe3ZhciByPW51bGw7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2lmKHRoaXMuZ3JpZCYmdGhpcy5wLnRyZWVHcmlkKXN3aXRjaCh0aGlzLnAudHJlZUdyaWRNb2RlbCl7Y2FzZSJuZXN0ZWQiOnZhciBlPXRoaXMucC50cmVlUmVhZGVyLmxldmVsX2ZpZWxkO3I9cGFyc2VJbnQodFtlXSwxMCktcGFyc2VJbnQodGhpcy5wLnRyZWVfcm9vdF9sZXZlbCwxMCk7YnJlYWs7Y2FzZSJhZGphY2VuY3kiOnI9WWUodGhpcykuanFHcmlkKCJnZXROb2RlQW5jZXN0b3JzIix0KS5sZW5ndGh9fSkscn0sZ2V0Tm9kZVBhcmVudDpmdW5jdGlvbihjKXt2YXIgdT1udWxsO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZT10aGlzO2lmKGUuZ3JpZCYmZS5wLnRyZWVHcmlkKXN3aXRjaChlLnAudHJlZUdyaWRNb2RlbCl7Y2FzZSJuZXN0ZWQiOnZhciB0PWUucC50cmVlUmVhZGVyLmxlZnRfZmllbGQscj1lLnAudHJlZVJlYWRlci5yaWdodF9maWVsZCxpPWUucC50cmVlUmVhZGVyLmxldmVsX2ZpZWxkLG89cGFyc2VJbnQoY1t0XSwxMCksYT1wYXJzZUludChjW3JdLDEwKSxuPXBhcnNlSW50KGNbaV0sMTApO1llKHRoaXMucC5kYXRhKS5lYWNoKGZ1bmN0aW9uKCl7aWYocGFyc2VJbnQodGhpc1tpXSwxMCk9PT1uLTEmJnBhcnNlSW50KHRoaXNbdF0sMTApPG8mJnBhcnNlSW50KHRoaXNbcl0sMTApPmEpcmV0dXJuIHU9dGhpcywhMX0pO2JyZWFrO2Nhc2UiYWRqYWNlbmN5Ijpmb3IodmFyIGw9ZS5wLnRyZWVSZWFkZXIucGFyZW50X2lkX2ZpZWxkLHM9ZS5wLmxvY2FsUmVhZGVyLmlkLGQ9Y1tzXSxwPWUucC5faW5kZXhbZF07cC0tOylpZihTdHJpbmcoZS5wLmRhdGFbcF1bc10pPT09U3RyaW5nKFllLmpncmlkLnN0cmlwUHJlZihlLnAuaWRQcmVmaXgsY1tsXSkpKXt1PWUucC5kYXRhW3BdO2JyZWFrfX19KSx1fSxnZXROb2RlQ2hpbGRyZW46ZnVuY3Rpb24odSl7dmFyIGg9W107cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBlPXRoaXM7aWYoZS5ncmlkJiZlLnAudHJlZUdyaWQpe3ZhciB0LHI9dGhpcy5wLmRhdGEubGVuZ3RoO3N3aXRjaChlLnAudHJlZUdyaWRNb2RlbCl7Y2FzZSJuZXN0ZWQiOmZvcih2YXIgaT1lLnAudHJlZVJlYWRlci5sZWZ0X2ZpZWxkLG89ZS5wLnRyZWVSZWFkZXIucmlnaHRfZmllbGQsYT1lLnAudHJlZVJlYWRlci5sZXZlbF9maWVsZCxuPXBhcnNlSW50KHVbaV0sMTApLGw9cGFyc2VJbnQodVtvXSwxMCkscz1wYXJzZUludCh1W2FdLDEwKSxkPTA7ZDxyO2QrKykodD1lLnAuZGF0YVtkXSkmJnBhcnNlSW50KHRbYV0sMTApPT09cysxJiZwYXJzZUludCh0W2ldLDEwKT5uJiZwYXJzZUludCh0W29dLDEwKTxsJiZoLnB1c2godCk7YnJlYWs7Y2FzZSJhZGphY2VuY3kiOnZhciBwPWUucC50cmVlUmVhZGVyLnBhcmVudF9pZF9maWVsZCxjPWUucC5sb2NhbFJlYWRlci5pZDtmb3IoZD0wO2Q8cjtkKyspKHQ9ZS5wLmRhdGFbZF0pJiZTdHJpbmcodFtwXSk9PT1TdHJpbmcoWWUuamdyaWQuc3RyaXBQcmVmKGUucC5pZFByZWZpeCx1W2NdKSkmJmgucHVzaCh0KX19fSksaH0sZ2V0RnVsbFRyZWVOb2RlOmZ1bmN0aW9uKGMsdSl7dmFyIGg9W107cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciB0LHIsaSxvPXRoaXMsYT1vLnAudHJlZVJlYWRlci5leHBhbmRlZF9maWVsZDtpZihvLmdyaWQmJm8ucC50cmVlR3JpZClzd2l0Y2gobnVsbCE9dSYmImJvb2xlYW4iPT10eXBlb2YgdXx8KHU9ITEpLG8ucC50cmVlR3JpZE1vZGVsKXtjYXNlIm5lc3RlZCI6dmFyIGU9by5wLnRyZWVSZWFkZXIubGVmdF9maWVsZCxuPW8ucC50cmVlUmVhZGVyLnJpZ2h0X2ZpZWxkLGw9by5wLnRyZWVSZWFkZXIubGV2ZWxfZmllbGQscz1wYXJzZUludChjW2VdLDEwKSxkPXBhcnNlSW50KGNbbl0sMTApLHA9cGFyc2VJbnQoY1tsXSwxMCk7WWUodGhpcy5wLmRhdGEpLmVhY2goZnVuY3Rpb24oKXtwYXJzZUludCh0aGlzW2xdLDEwKT49cCYmcGFyc2VJbnQodGhpc1tlXSwxMCk+PXMmJnBhcnNlSW50KHRoaXNbZV0sMTApPD1kJiYodSYmKHRoaXNbYV09ITApLGgucHVzaCh0aGlzKSl9KTticmVhaztjYXNlImFkamFjZW5jeSI6YyYmKGgucHVzaChjKSxyPW8ucC50cmVlUmVhZGVyLnBhcmVudF9pZF9maWVsZCxpPW8ucC5sb2NhbFJlYWRlci5pZCxZZSh0aGlzLnAuZGF0YSkuZWFjaChmdW5jdGlvbihlKXtmb3IodD1oLmxlbmd0aCxlPTA7ZTx0O2UrKylpZihTdHJpbmcoWWUuamdyaWQuc3RyaXBQcmVmKG8ucC5pZFByZWZpeCxoW2VdW2ldKSk9PT1TdHJpbmcodGhpc1tyXSkpe3UmJih0aGlzW2FdPSEwKSxoLnB1c2godGhpcyk7YnJlYWt9fSkpfX0pLGh9LGdldE5vZGVBbmNlc3RvcnM6ZnVuY3Rpb24odCxyLGkpe3ZhciBvPVtdO3JldHVybiB2b2lkIDA9PT1yJiYocj0hMSksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7aWYodGhpcy5ncmlkJiZ0aGlzLnAudHJlZUdyaWQpe2k9dm9pZCAwIT09aSYmdGhpcy5wLnRyZWVSZWFkZXIuZXhwYW5kZWRfZmllbGQ7Zm9yKHZhciBlPVllKHRoaXMpLmpxR3JpZCgiZ2V0Tm9kZVBhcmVudCIsdCk7ZTspe2lmKGkpdHJ5e2VbaV09ITB9Y2F0Y2goZSl7fXI/by51bnNoaWZ0KGUpOm8ucHVzaChlKSxlPVllKHRoaXMpLmpxR3JpZCgiZ2V0Tm9kZVBhcmVudCIsZSl9fX0pLG99LGlzVmlzaWJsZU5vZGU6ZnVuY3Rpb24ocil7dmFyIGk9ITA7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBlLHQ7dGhpcy5ncmlkJiZ0aGlzLnAudHJlZUdyaWQmJihlPVllKHRoaXMpLmpxR3JpZCgiZ2V0Tm9kZUFuY2VzdG9ycyIsciksdD10aGlzLnAudHJlZVJlYWRlci5leHBhbmRlZF9maWVsZCxZZShlKS5lYWNoKGZ1bmN0aW9uKCl7aWYoIShpPWkmJnRoaXNbdF0pKXJldHVybiExfSkpfSksaX0saXNOb2RlTG9hZGVkOmZ1bmN0aW9uKHIpe3ZhciBpO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZSx0O3RoaXMuZ3JpZCYmdGhpcy5wLnRyZWVHcmlkJiYoZT10aGlzLnAudHJlZVJlYWRlci5sZWFmX2ZpZWxkLHQ9dGhpcy5wLnRyZWVSZWFkZXIubG9hZGVkLGk9dm9pZCAwIT09ciYmKHZvaWQgMCE9PXJbdF0/clt0XTohIShyW2VdfHwwPFllKHRoaXMpLmpxR3JpZCgiZ2V0Tm9kZUNoaWxkcmVuIixyKS5sZW5ndGgpKSl9KSxpfSxzZXRMZWFmOmZ1bmN0aW9uKG8sYSxuKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9WWUuamdyaWQuZ2V0QWNjZXNzb3Iobyx0aGlzLnAubG9jYWxSZWFkZXIuaWQpLHQ9WWUoIiMiK2UsdGhpcy5ncmlkLmJEaXYpWzBdLHI9dGhpcy5wLnRyZWVSZWFkZXIubGVhZl9maWVsZDt0cnl7dmFyIGk9dGhpcy5wLl9pbmRleFtlXTtudWxsIT1pJiYodGhpcy5wLmRhdGFbaV1bcl09YSl9Y2F0Y2goZSl7fSEwPT09YT9ZZSgiZGl2LnRyZWVjbGljayIsdCkucmVtb3ZlQ2xhc3ModGhpcy5wLnRyZWVJY29ucy5taW51cysiIHRyZWUtbWludXMgIit0aGlzLnAudHJlZUljb25zLnBsdXMrIiB0cmVlLXBsdXMiKS5hZGRDbGFzcyh0aGlzLnAudHJlZUljb25zLmxlYWYrIiB0cmVlLWxlYWYiKTohMT09PWEmJihlPXRoaXMucC50cmVlSWNvbnMubWludXMrIiB0cmVlLW1pbnVzIixuJiYoZT10aGlzLnAudHJlZUljb25zLnBsdXMrIiB0cmVlLXBsdXMiKSxZZSgiZGl2LnRyZWVjbGljayIsdCkucmVtb3ZlQ2xhc3ModGhpcy5wLnRyZWVJY29ucy5sZWFmKyIgdHJlZS1sZWFmIikuYWRkQ2xhc3MoZSkpfSl9LHJlbG9hZE5vZGU6ZnVuY3Rpb24ocCxjKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGUsdCxyLGksbyxhLG4sbCxzLGQ7dGhpcy5ncmlkJiZ0aGlzLnAudHJlZUdyaWQmJih0PXRoaXMucC5sb2NhbFJlYWRlci5pZCxlPXRoaXMucC5zZWxyb3csWWUodGhpcykuanFHcmlkKCJkZWxDaGlsZHJlbiIscFt0XSksKGM9dm9pZCAwPT09Yz8hMTpjKXx8alF1ZXJ5Ll9kYXRhKHRoaXMsImV2ZW50cyIpLmpxR3JpZEFmdGVyU2V0VHJlZU5vZGV8fFllKHRoaXMpLm9uKCJqcUdyaWRBZnRlclNldFRyZWVOb2RlLnJlbG9hZE5vZGUiLGZ1bmN0aW9uKCl7dmFyIGUsdCxyPXRoaXMucC50cmVlUmVhZGVyLmxlYWZfZmllbGQ7dGhpcy5wLnJlbG9hZG5vZGUmJihlPXRoaXMucC5yZWxvYWRub2RlLHQ9WWUodGhpcykuanFHcmlkKCJnZXROb2RlQ2hpbGRyZW4iLGUpLGVbcl0mJnQubGVuZ3RoP1llKHRoaXMpLmpxR3JpZCgic2V0TGVhZiIsZSwhMSk6ZVtyXXx8MCE9PXQubGVuZ3RofHxZZSh0aGlzKS5qcUdyaWQoInNldExlYWYiLGUsITApKSx0aGlzLnAucmVsb2Fkbm9kZT0hMX0pLHQ9dGhpcy5wLnRyZWVSZWFkZXIuZXhwYW5kZWRfZmllbGQscj10aGlzLnAudHJlZVJlYWRlci5wYXJlbnRfaWRfZmllbGQsaT10aGlzLnAudHJlZVJlYWRlci5sb2FkZWQsbz10aGlzLnAudHJlZVJlYWRlci5sZXZlbF9maWVsZCxhPXRoaXMucC50cmVlUmVhZGVyLmxlYWZfZmllbGQsbj10aGlzLnAudHJlZVJlYWRlci5sZWZ0X2ZpZWxkLGw9dGhpcy5wLnRyZWVSZWFkZXIucmlnaHRfZmllbGQscz1ZZS5qZ3JpZC5nZXRBY2Nlc3NvcihwLHRoaXMucC5sb2NhbFJlYWRlci5pZCksZD1ZZSgiIyIrcyx0aGlzLmdyaWQuYkRpdilbMF0scFt0XT0hMCxwW2FdfHxZZSgiZGl2LnRyZWVjbGljayIsZCkucmVtb3ZlQ2xhc3ModGhpcy5wLnRyZWVJY29ucy5wbHVzKyIgdHJlZS1wbHVzIikuYWRkQ2xhc3ModGhpcy5wLnRyZWVJY29ucy5taW51cysiIHRyZWUtbWludXMiKSx0aGlzLnAudHJlZUFOb2RlPWQucm93SW5kZXgsdGhpcy5wLmRhdGF0eXBlPXRoaXMucC50cmVlZGF0YXR5cGUsdGhpcy5wLnJlbG9hZG5vZGU9cCxjJiYodGhpcy5wLnRyZWVBTm9kZT0wPGQucm93SW5kZXg/ZC5yb3dJbmRleC0xOjEsWWUodGhpcykuanFHcmlkKCJkZWxSb3dEYXRhIixzKSksIm5lc3RlZCI9PT10aGlzLnAudHJlZUdyaWRNb2RlbD9ZZSh0aGlzKS5qcUdyaWQoInNldEdyaWRQYXJhbSIse3Bvc3REYXRhOntub2RlaWQ6cyxuX2xlZnQ6cFtuXSxuX3JpZ2h0OnBbbF0sbl9sZXZlbDpwW29dfX0pOlllKHRoaXMpLmpxR3JpZCgic2V0R3JpZFBhcmFtIix7cG9zdERhdGE6e25vZGVpZDpzLHBhcmVudGlkOnBbcl0sbl9sZXZlbDpwW29dfX0pLFllKHRoaXMpLnRyaWdnZXIoInJlbG9hZEdyaWQiKSxwW2ldPSEwLCJuZXN0ZWQiPT09dGhpcy5wLnRyZWVHcmlkTW9kZWw/WWUodGhpcykuanFHcmlkKCJzZXRHcmlkUGFyYW0iLHtzZWxyb3c6ZSxwb3N0RGF0YTp7bm9kZWlkOiIiLG5fbGVmdDoiIixuX3JpZ2h0OiIiLG5fbGV2ZWw6IiJ9fSk6WWUodGhpcykuanFHcmlkKCJzZXRHcmlkUGFyYW0iLHtzZWxyb3c6ZSxwb3N0RGF0YTp7bm9kZWlkOiIiLHBhcmVudGlkOiIiLG5fbGV2ZWw6IiJ9fSkpfSl9LGV4cGFuZE5vZGU6ZnVuY3Rpb24ocCl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBlLHQscixpLG8sYSxuLGwscyxkO3RoaXMuZ3JpZCYmdGhpcy5wLnRyZWVHcmlkJiYoZT10aGlzLnAudHJlZVJlYWRlci5leHBhbmRlZF9maWVsZCx0PXRoaXMucC50cmVlUmVhZGVyLnBhcmVudF9pZF9maWVsZCxyPXRoaXMucC50cmVlUmVhZGVyLmxvYWRlZCxpPXRoaXMucC50cmVlUmVhZGVyLmxldmVsX2ZpZWxkLG89dGhpcy5wLnRyZWVSZWFkZXIubGVmdF9maWVsZCxhPXRoaXMucC50cmVlUmVhZGVyLnJpZ2h0X2ZpZWxkLHBbZV18fChuPVllLmpncmlkLmdldEFjY2Vzc29yKHAsdGhpcy5wLmxvY2FsUmVhZGVyLmlkKSxsPVllKCIjIit0aGlzLnAuaWRQcmVmaXgrWWUuamdyaWQuanFJRChuKSx0aGlzLmdyaWQuYkRpdilbMF0scz10aGlzLnAuX2luZGV4W25dLCExIT09KGQ9KGQ9dm9pZCAwPT09KGQ9WWUodGhpcykudHJpZ2dlckhhbmRsZXIoImpxR3JpZEJlZm9yZUV4cGFuZFRyZWVHcmlkTm9kZSIsW24scF0pKT8hMDpkKSYmWWUuamdyaWQuaXNGdW5jdGlvbih0aGlzLnAuYmVmb3JlRXhwYW5kVHJlZUdyaWROb2RlKT90aGlzLnAuYmVmb3JlRXhwYW5kVHJlZUdyaWROb2RlLmNhbGwodGhpcyxuLHApOmQpJiYoWWUodGhpcykuanFHcmlkKCJpc05vZGVMb2FkZWQiLHRoaXMucC5kYXRhW3NdKT8ocFtlXT0hMCxZZSgiZGl2LnRyZWVjbGljayIsbCkucmVtb3ZlQ2xhc3ModGhpcy5wLnRyZWVJY29ucy5wbHVzKyIgdHJlZS1wbHVzIikuYWRkQ2xhc3ModGhpcy5wLnRyZWVJY29ucy5taW51cysiIHRyZWUtbWludXMiKSk6dGhpcy5ncmlkLmhEaXYubG9hZGluZ3x8KHBbZV09ITAsWWUoImRpdi50cmVlY2xpY2siLGwpLnJlbW92ZUNsYXNzKHRoaXMucC50cmVlSWNvbnMucGx1cysiIHRyZWUtcGx1cyIpLmFkZENsYXNzKHRoaXMucC50cmVlSWNvbnMubWludXMrIiB0cmVlLW1pbnVzIiksdGhpcy5wLnRyZWVBTm9kZT1sLnJvd0luZGV4LHRoaXMucC5kYXRhdHlwZT10aGlzLnAudHJlZWRhdGF0eXBlLCJuZXN0ZWQiPT09dGhpcy5wLnRyZWVHcmlkTW9kZWw/WWUodGhpcykuanFHcmlkKCJzZXRHcmlkUGFyYW0iLHtwb3N0RGF0YTp7bm9kZWlkOm4sbl9sZWZ0OnBbb10sbl9yaWdodDpwW2FdLG5fbGV2ZWw6cFtpXX19KTpZZSh0aGlzKS5qcUdyaWQoInNldEdyaWRQYXJhbSIse3Bvc3REYXRhOntub2RlaWQ6bixwYXJlbnRpZDpwW3RdLG5fbGV2ZWw6cFtpXX19KSxZZSh0aGlzKS50cmlnZ2VyKCJyZWxvYWRHcmlkIikscFtyXT0hMCwibmVzdGVkIj09PXRoaXMucC50cmVlR3JpZE1vZGVsP1llKHRoaXMpLmpxR3JpZCgic2V0R3JpZFBhcmFtIix7cG9zdERhdGE6e25vZGVpZDoiIixuX2xlZnQ6IiIsbl9yaWdodDoiIixuX2xldmVsOiIifX0pOlllKHRoaXMpLmpxR3JpZCgic2V0R3JpZFBhcmFtIix7cG9zdERhdGE6e25vZGVpZDoiIixwYXJlbnRpZDoiIixuX2xldmVsOiIifX0pKSxZZSh0aGlzKS50cmlnZ2VySGFuZGxlcigianFHcmlkQWZ0ZXJFeHBhbmRUcmVlR3JpZE5vZGUiLFtuLHBdKSxZZS5qZ3JpZC5pc0Z1bmN0aW9uKHRoaXMucC5hZnRlckV4cGFuZFRyZWVHcmlkTm9kZSkpJiZ0aGlzLnAuYWZ0ZXJFeHBhbmRUcmVlR3JpZE5vZGUuY2FsbCh0aGlzLG4scCkpKX0pfSxjb2xsYXBzZU5vZGU6ZnVuY3Rpb24obyl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBlLHQscixpO3RoaXMuZ3JpZCYmdGhpcy5wLnRyZWVHcmlkJiYoZT10aGlzLnAudHJlZVJlYWRlci5leHBhbmRlZF9maWVsZCxvW2VdKSYmKHQ9WWUuamdyaWQuZ2V0QWNjZXNzb3Iobyx0aGlzLnAubG9jYWxSZWFkZXIuaWQpLHI9WWUoIiMiK3RoaXMucC5pZFByZWZpeCtZZS5qZ3JpZC5qcUlEKHQpLHRoaXMuZ3JpZC5iRGl2KVswXSwoaT12b2lkIDA9PT0oaT1ZZSh0aGlzKS50cmlnZ2VySGFuZGxlcigianFHcmlkQmVmb3JlQ29sbGFwc2VUcmVlR3JpZE5vZGUiLFt0LG9dKSk/ITA6aSkmJlllLmpncmlkLmlzRnVuY3Rpb24odGhpcy5wLmJlZm9yZUNvbGxhcHNlVHJlZUdyaWROb2RlKSYmKGk9dGhpcy5wLmJlZm9yZUNvbGxhcHNlVHJlZUdyaWROb2RlLmNhbGwodGhpcyx0LG8pKSwob1tlXT0hMSkhPT1pKSYmKFllKCJkaXYudHJlZWNsaWNrIixyKS5yZW1vdmVDbGFzcyh0aGlzLnAudHJlZUljb25zLm1pbnVzKyIgdHJlZS1taW51cyIpLmFkZENsYXNzKHRoaXMucC50cmVlSWNvbnMucGx1cysiIHRyZWUtcGx1cyIpLFllKHRoaXMpLnRyaWdnZXJIYW5kbGVyKCJqcUdyaWRBZnRlckNvbGxhcHNlVHJlZUdyaWROb2RlIixbdCxvXSksWWUuamdyaWQuaXNGdW5jdGlvbih0aGlzLnAuYWZ0ZXJDb2xsYXBzZVRyZWVHcmlkTm9kZSkpJiZ0aGlzLnAuYWZ0ZXJDb2xsYXBzZVRyZWVHcmlkTm9kZS5jYWxsKHRoaXMsdCxvKX0pfSxTb3J0VHJlZTpmdW5jdGlvbihwLGMsdSxoKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7aWYodGhpcy5ncmlkJiZ0aGlzLnAudHJlZUdyaWQpe3ZhciBlLHQscixpLG8sYT1bXSxuPXRoaXMsbD1ZZSh0aGlzKS5qcUdyaWQoImdldFJvb3ROb2RlcyIsbi5wLnNlYXJjaCksbD1ZZS5qZ3JpZC5mcm9tLmNhbGwodGhpcyxsKTtmb3IoQm9vbGVhbihuLnAuc29ydFRyZWVCeU5vZGVUeXBlKSYmKG89bi5wLnNvcnRUcmVlTm9kZU9yZGVyJiYiZGVzYyI9PT1uLnAuc29ydFRyZWVOb2RlT3JkZXIudG9Mb3dlckNhc2UoKT8iZCI6ImEiLGwub3JkZXJCeShuLnAudHJlZVJlYWRlci5sZWFmX2ZpZWxkLG8sdSxoKSksbC5vcmRlckJ5KHAsYyx1LGgpLGU9MCx0PShpPWwuc2VsZWN0KCkpLmxlbmd0aDtlPHQ7ZSsrKXI9aVtlXSxhLnB1c2gociksWWUodGhpcykuanFHcmlkKCJjb2xsZWN0Q2hpbGRyZW5Tb3J0VHJlZSIsYSxyLHAsYyx1LGgpO3ZhciBzPVllKHRoaXMpLmpxR3JpZCgiZ2V0RGF0YUlEcyIpLGQ9MTtZZS5lYWNoKGEsZnVuY3Rpb24oZSl7dmFyIHQ9WWUuamdyaWQuZ2V0QWNjZXNzb3IodGhpcyxuLnAubG9jYWxSZWFkZXIuaWQpOy0xIT09WWUuaW5BcnJheSh0LHMpJiYoWWUoIiMiK1llLmpncmlkLmpxSUQobi5wLmlkKSsiIHRib2R5IHRyIikuZXEoZCkuYWZ0ZXIoWWUoIiMiK1llLmpncmlkLmpxSUQobi5wLmlkKSsiIHRib2R5IHRyIyIrWWUuamdyaWQuanFJRCh0KSkpLGQrKyl9KSxpPWw9bnVsbH19KX0sc2VhcmNoVHJlZTpmdW5jdGlvbihyKXt2YXIgaSxvLGEsbixsLHMsZCxwPXIubGVuZ3RofHwwLGM9W10sdT1bXSxoPVtdO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtpZih0aGlzLmdyaWQmJnRoaXMucC50cmVlR3JpZCYmcClmb3IoaT10aGlzLnAubG9jYWxSZWFkZXIuaWQsZD0wO2Q8cDtkKyspe3ZhciBlO2lmKGM9WWUodGhpcykuanFHcmlkKCJnZXROb2RlQW5jZXN0b3JzIixyW2RdLCEwLCEwKSxCb29sZWFuKHRoaXMucC5GdWxsVHJlZVNlYXJjaFJlc3VsdCk/KGU9WWUodGhpcykuanFHcmlkKCJnZXRGdWxsVHJlZU5vZGUiLHJbZF0sITApLGM9Yy5jb25jYXQoZSkpOmMucHVzaChyW2RdKSxvPWNbMF1baV0sLTEhPT1ZZS5pbkFycmF5KG8sdSkpZm9yKGw9MCxhPWMubGVuZ3RoO2w8YTtsKyspe3ZhciB0PSExO2ZvcihzPTAsbj1oLmxlbmd0aDtzPG47cysrKWlmKGNbbF1baV09PT1oW3NdW2ldKXt0PSEwO2JyZWFrfXR8fGgucHVzaChjW2xdKX1lbHNlIHUucHVzaChvKSxoPWguY29uY2F0KGMpfX0pLGh9LGNvbGxlY3RDaGlsZHJlblNvcnRUcmVlOmZ1bmN0aW9uKGEsbixsLHMsZCxwKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7aWYodGhpcy5ncmlkJiZ0aGlzLnAudHJlZUdyaWQpe3ZhciBlLHQscixpLG89WWUodGhpcykuanFHcmlkKCJnZXROb2RlQ2hpbGRyZW4iLG4sdGhpcy5wLnNlYXJjaCksbz1ZZS5qZ3JpZC5mcm9tLmNhbGwodGhpcyxvKTtmb3Ioby5vcmRlckJ5KGwscyxkLHApLGU9MCx0PShpPW8uc2VsZWN0KCkpLmxlbmd0aDtlPHQ7ZSsrKXI9aVtlXSxhLnB1c2gociksWWUodGhpcykuanFHcmlkKCJjb2xsZWN0Q2hpbGRyZW5Tb3J0VHJlZSIsYSxyLGwscyxkLHApfX0pfSxzZXRUcmVlUm93OmZ1bmN0aW9uKGUsdCl7dmFyIHI9ITE7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3RoaXMuZ3JpZCYmdGhpcy5wLnRyZWVHcmlkJiYocj1ZZSh0aGlzKS5qcUdyaWQoInNldFJvd0RhdGEiLGUsdCkpfSkscn0sZGVsVHJlZU5vZGU6ZnVuY3Rpb24oaCxnKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGUsdCxyLGksbz10aGlzLGE9by5wLmxvY2FsUmVhZGVyLmlkLG49by5wLnRyZWVSZWFkZXIubGVmdF9maWVsZCxsPW8ucC50cmVlUmVhZGVyLnJpZ2h0X2ZpZWxkO2lmKG8uZ3JpZCYmby5wLnRyZWVHcmlkKXtoPVllLmpncmlkLnN0cmlwUHJlZihvLnAuaWRQcmVmaXgsaCk7dmFyIHM9by5wLl9pbmRleFtoXTtpZihnJiYodD1ZZSh0aGlzKS5qcUdyaWQoImdldE5vZGVQYXJlbnQiLG8ucC5kYXRhW3NdKSksdm9pZCAwIT09cyl7dmFyIGQscCxjPShkPXBhcnNlSW50KG8ucC5kYXRhW3NdW2xdLDEwKSktcGFyc2VJbnQoby5wLmRhdGFbc11bbl0sMTApKzEsdT1ZZShvKS5qcUdyaWQoImdldEZ1bGxUcmVlTm9kZSIsby5wLmRhdGFbc10pO2lmKDA8dS5sZW5ndGgpZm9yKGU9MDtlPHUubGVuZ3RoO2UrKylZZShvKS5qcUdyaWQoImRlbFJvd0RhdGEiLG8ucC5pZFByZWZpeCt1W2VdW2FdKTtpZigibmVzdGVkIj09PW8ucC50cmVlR3JpZE1vZGVsKXtpZigocj1ZZS5qZ3JpZC5mcm9tLmNhbGwobyxvLnAuZGF0YSkuZ3JlYXRlcihuLGQse3N0eXBlOiJpbnRlZ2VyIn0pLnNlbGVjdCgpKS5sZW5ndGgpZm9yKGkgaW4gcilyLmhhc093blByb3BlcnR5KGkpJiYocltpXVtuXT1wYXJzZUludChyW2ldW25dLDEwKS1jKTtpZigocj1ZZS5qZ3JpZC5mcm9tLmNhbGwobyxvLnAuZGF0YSkuZ3JlYXRlcihsLGQse3N0eXBlOiJpbnRlZ2VyIn0pLnNlbGVjdCgpKS5sZW5ndGgpZm9yKGkgaW4gcilyLmhhc093blByb3BlcnR5KGkpJiYocltpXVtsXT1wYXJzZUludChyW2ldW2xdLDEwKS1jKX1nJiYoZD10aGlzLnAudHJlZVJlYWRlci5sZWFmX2ZpZWxkLHA9WWUodGhpcykuanFHcmlkKCJnZXROb2RlQ2hpbGRyZW4iLHQpLHRbZF0mJnAubGVuZ3RoP1llKHRoaXMpLmpxR3JpZCgic2V0TGVhZiIsdCwhMSk6c1tkXXx8MCE9PXAubGVuZ3RofHxZZSh0aGlzKS5qcUdyaWQoInNldExlYWYiLHQsITApKX19fSl9LGRlbENoaWxkcmVuOmZ1bmN0aW9uKGMpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZSx0LHI9dGhpcyxpPXIucC5sb2NhbFJlYWRlci5pZCxvPXIucC50cmVlUmVhZGVyLmxlZnRfZmllbGQsYT1yLnAudHJlZVJlYWRlci5yaWdodF9maWVsZDtpZihyLmdyaWQmJnIucC50cmVlR3JpZCl7Yz1ZZS5qZ3JpZC5zdHJpcFByZWYoci5wLmlkUHJlZml4LGMpO3ZhciBuPXIucC5faW5kZXhbY107aWYodm9pZCAwIT09bil7dmFyIGwscz0obD1wYXJzZUludChyLnAuZGF0YVtuXVthXSwxMCkpLXBhcnNlSW50KHIucC5kYXRhW25dW29dLDEwKSsxLGQ9WWUocikuanFHcmlkKCJnZXRGdWxsVHJlZU5vZGUiLHIucC5kYXRhW25dKTtpZigwPGQubGVuZ3RoKWZvcih2YXIgcD0wO3A8ZC5sZW5ndGg7cCsrKWRbcF1baV0hPT1jJiZZZShyKS5qcUdyaWQoImRlbFJvd0RhdGEiLHIucC5pZFByZWZpeCtkW3BdW2ldKTtpZigibmVzdGVkIj09PXIucC50cmVlR3JpZE1vZGVsKXtpZigoZT1ZZS5qZ3JpZC5mcm9tKHIucC5kYXRhKS5ncmVhdGVyKG8sbCx7c3R5cGU6ImludGVnZXIifSkuc2VsZWN0KCkpLmxlbmd0aClmb3IodCBpbiBlKWUuaGFzT3duUHJvcGVydHkodCkmJihlW3RdW29dPXBhcnNlSW50KGVbdF1bb10sMTApLXMpO2lmKChlPVllLmpncmlkLmZyb20oci5wLmRhdGEpLmdyZWF0ZXIoYSxsLHtzdHlwZToiaW50ZWdlciJ9KS5zZWxlY3QoKSkubGVuZ3RoKWZvcih0IGluIGUpZS5oYXNPd25Qcm9wZXJ0eSh0KSYmKGVbdF1bYV09cGFyc2VJbnQoZVt0XVthXSwxMCktcyl9fX19KX0sYWRkQ2hpbGROb2RlOmZ1bmN0aW9uKGUsdCxyLGkpe3ZhciBvPXRoaXNbMF07aWYocil7dmFyIGEsbj1vLnAudHJlZVJlYWRlci5leHBhbmRlZF9maWVsZCxsPW8ucC50cmVlUmVhZGVyLmxlYWZfZmllbGQscz1vLnAudHJlZVJlYWRlci5sZXZlbF9maWVsZCxkPW8ucC50cmVlUmVhZGVyLnBhcmVudF9pZF9maWVsZCxwPW8ucC50cmVlUmVhZGVyLmxlZnRfZmllbGQsYz1vLnAudHJlZVJlYWRlci5yaWdodF9maWVsZCx1PW8ucC50cmVlUmVhZGVyLmxvYWRlZCxoPTAsZz10O2lmKHZvaWQgMD09PWkmJihpPSExKSxudWxsPT1lKXtpZigwPD0ocT1vLnAuZGF0YS5sZW5ndGgtMSkpZm9yKDswPD1xOyloPU1hdGgubWF4KGgscGFyc2VJbnQoby5wLmRhdGFbcV1bby5wLmxvY2FsUmVhZGVyLmlkXSwxMCkpLHEtLTtlPWgrMX12YXIgZixtLHY9WWUobykuanFHcmlkKCJnZXRJbmQiLHQpLGo9ITE7aWYobnVsbD09dHx8IiI9PT10KWc9dD1udWxsLHc9Imxhc3QiLHg9by5wLnRyZWVfcm9vdF9sZXZlbCxxPW8ucC5kYXRhLmxlbmd0aCsxO2Vsc2V7dmFyIGIsdz0iYWZ0ZXIiLHk9WWUuamdyaWQuc3RyaXBQcmVmKG8ucC5pZFByZWZpeCx0KSx5PW8ucC5faW5kZXhbeV0seD0odD0oYj1vLnAuZGF0YVt5XSlbby5wLmxvY2FsUmVhZGVyLmlkXSxwYXJzZUludChiW3NdLDEwKSsxKSxfPVllKG8pLmpxR3JpZCgiZ2V0RnVsbFRyZWVOb2RlIixiKSxxPV8ubGVuZ3RoPyhnPXE9X1tfLmxlbmd0aC0xXVtvLnAubG9jYWxSZWFkZXIuaWRdLFllKG8pLmpxR3JpZCgiZ2V0SW5kIixvLnAuaWRQcmVmaXgrZykpOlllKG8pLmpxR3JpZCgiZ2V0SW5kIixvLnAuaWRQcmVmaXgrdCk7aWYoYltsXSYmKGJbbl09aj0hMCxZZShvLnJvd3Nbdl0pLmZpbmQoInNwYW4uY2VsbC13cmFwcGVybGVhZiIpLnJlbW92ZUNsYXNzKCJjZWxsLXdyYXBwZXJsZWFmIikuYWRkQ2xhc3MoImNlbGwtd3JhcHBlciIpLmVuZCgpLmZpbmQoImRpdi50cmVlLWxlYWYiKS5yZW1vdmVDbGFzcyhvLnAudHJlZUljb25zLmxlYWYrIiB0cmVlLWxlYWYiKS5hZGRDbGFzcyhvLnAudHJlZUljb25zLm1pbnVzKyIgdHJlZS1taW51cyIpLG8ucC5kYXRhW3ldW2xdPSExLGJbdV09ITApLCExPT09cSl0aHJvdyJQYXJlbnQgaXRlbSB3aXRoIGlkOiAiK2crIiAoIit0KyIpIGNhbid0IGJlIGZvdW5kIjtxKyt9aWYoXz1xKzEsdm9pZCAwPT09cltuXSYmKHJbbl09ITEpLHZvaWQgMD09PXJbdV0mJihyW3VdPSExKSxyW3NdPXgsdm9pZCAwPT09cltsXSYmKHJbbF09ITApLCJhZGphY2VuY3kiPT09by5wLnRyZWVHcmlkTW9kZWwmJihyW2RdPXQpLCJuZXN0ZWQiPT09by5wLnRyZWVHcmlkTW9kZWwpaWYobnVsbCE9PXQpe2lmKGE9cGFyc2VJbnQoYltjXSwxMCksKGY9WWUuamdyaWQuZnJvbS5jYWxsKG8sby5wLmRhdGEpLmdyZWF0ZXJPckVxdWFscyhjLGEse3N0eXBlOiJpbnRlZ2VyIn0pLnNlbGVjdCgpKS5sZW5ndGgpZm9yKG0gaW4gZilmLmhhc093blByb3BlcnR5KG0pJiYoZlttXVtwXT1mW21dW3BdPmE/cGFyc2VJbnQoZlttXVtwXSwxMCkrMjpmW21dW3BdLGZbbV1bY109ZlttXVtjXT49YT9wYXJzZUludChmW21dW2NdLDEwKSsyOmZbbV1bY10pO3JbcF09YSxyW2NdPWErMX1lbHNle2lmKGE9cGFyc2VJbnQoWWUobykuanFHcmlkKCJnZXRDb2wiLGMsITEsIm1heCIpLDEwKSwoZj1ZZS5qZ3JpZC5mcm9tLmNhbGwobyxvLnAuZGF0YSkuZ3JlYXRlcihwLGEse3N0eXBlOiJpbnRlZ2VyIn0pLnNlbGVjdCgpKS5sZW5ndGgpZm9yKG0gaW4gZilmLmhhc093blByb3BlcnR5KG0pJiYoZlttXVtwXT1wYXJzZUludChmW21dW3BdLDEwKSsyKTtpZigoZj1ZZS5qZ3JpZC5mcm9tLmNhbGwobyxvLnAuZGF0YSkuZ3JlYXRlcihjLGEse3N0eXBlOiJpbnRlZ2VyIn0pLnNlbGVjdCgpKS5sZW5ndGgpZm9yKG0gaW4gZilmLmhhc093blByb3BlcnR5KG0pJiYoZlttXVtjXT1wYXJzZUludChmW21dW2NdLDEwKSsyKTtyW3BdPWErMSxyW2NdPWErMn0obnVsbD09PXR8fFllKG8pLmpxR3JpZCgiaXNOb2RlTG9hZGVkIixiKXx8aikmJihZZShvKS5qcUdyaWQoImFkZFJvd0RhdGEiLGUscix3LG8ucC5pZFByZWZpeCtnKSxZZShvKS5qcUdyaWQoInNldFRyZWVOb2RlIixxLF8pKSxiJiYhYltuXSYmaSYmWWUoby5yb3dzW3ZdKS5maW5kKCJkaXYudHJlZWNsaWNrIikuY2xpY2soKX19fSksWWUuZm4uanFEcmFnPWZ1bmN0aW9uKGUpe3JldHVybiByKHRoaXMsZSwiZCIpfSxZZS5mbi5qcVJlc2l6ZT1mdW5jdGlvbihlLHQpe3JldHVybiByKHRoaXMsZSwiciIsdCl9LFllLmpxRG5SPXtkbnI6e30sZTowLGRyYWc6ZnVuY3Rpb24oZSl7cmV0dXJuImQiPT1uLms/bC5jc3Moe2xlZnQ6bi5YK2UucGFnZVgtbi5wWCx0b3A6bi5ZK2UucGFnZVktbi5wWX0pOihsLmNzcyh7d2lkdGg6TWF0aC5tYXgoZS5wYWdlWC1uLnBYK24uVywwKSxoZWlnaHQ6TWF0aC5tYXgoZS5wYWdlWS1uLnBZK24uSCwwKX0pLGEmJm8uY3NzKHt3aWR0aDpNYXRoLm1heChlLnBhZ2VYLWEucFgrYS5XLDApLGhlaWdodDpNYXRoLm1heChlLnBhZ2VZLWEucFkrYS5ILDApfSkpLCExfSxzdG9wOmZ1bmN0aW9uKCl7WWUoZG9jdW1lbnQpLm9mZigibW91c2Vtb3ZlIixlLmRyYWcpLm9mZigibW91c2V1cCIsZS5zdG9wKX19O3ZhciBvLGEsZT1ZZS5qcURuUixuPWUuZG5yLGw9ZS5lLHI9ZnVuY3Rpb24oZSx0LHIsaSl7cmV0dXJuIGUuZWFjaChmdW5jdGlvbigpeyh0PXQ/WWUodCxlKTplKS5vbigibW91c2Vkb3duIix7ZTplLGs6cn0sZnVuY3Rpb24oZSl7dmFyIHQ9ZS5kYXRhLHI9e307aWYobD10LmUsbz0hIWkmJlllKGkpLCJyZWxhdGl2ZSIhPWwuY3NzKCJwb3NpdGlvbiIpKXRyeXtsLnBvc2l0aW9uKHIpfWNhdGNoKGUpe31pZihuPXtYOnIubGVmdHx8cygibGVmdCIpfHwwLFk6ci50b3B8fHMoInRvcCIpfHwwLFc6cygid2lkdGgiKXx8bFswXS5zY3JvbGxXaWR0aHx8MCxIOnMoImhlaWdodCIpfHxsWzBdLnNjcm9sbEhlaWdodHx8MCxwWDplLnBhZ2VYLHBZOmUucGFnZVksazp0Lmt9LGE9ISghb3x8ImQiPT10LmspJiZ7WDpyLmxlZnR8fGQoImxlZnQiKXx8MCxZOnIudG9wfHxkKCJ0b3AiKXx8MCxXOm9bMF0ub2Zmc2V0V2lkdGh8fGQoIndpZHRoIil8fDAsSDpvWzBdLm9mZnNldEhlaWdodHx8ZCgiaGVpZ2h0Iil8fDAscFg6ZS5wYWdlWCxwWTplLnBhZ2VZLGs6dC5rfSxZZSgiaW5wdXQuaGFzRGF0ZXBpY2tlciIsbFswXSlbMF0pdHJ5e1llKCJpbnB1dC5oYXNEYXRlcGlja2VyIixsWzBdKS5kYXRlcGlja2VyKCJoaWRlIil9Y2F0Y2goZSl7fXJldHVybiBZZShkb2N1bWVudCkubW91c2Vtb3ZlKFllLmpxRG5SLmRyYWcpLm1vdXNldXAoWWUuanFEblIuc3RvcCksITF9KX0pfSxzPWZ1bmN0aW9uKGUpe3JldHVybiBwYXJzZUludChsLmNzcyhlKSwxMCl8fCExfSxkPWZ1bmN0aW9uKGUpe3JldHVybiBwYXJzZUludChvLmNzcyhlKSwxMCl8fCExfSxwPShZZS5mbi50aW55RHJhZ2dhYmxlPWZ1bmN0aW9uKGUpe3ZhciBhPVllLmV4dGVuZCh7aGFuZGxlOjAsZXhjbHVkZTowfSxlKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIHIsaSxvPVllKHRoaXMpOyhhLmhhbmRsZT9ZZShhLmhhbmRsZSxvKTpvKS5vbih7bW91c2Vkb3duOmZ1bmN0aW9uKGUpe3ZhciB0O2EuZXhjbHVkZSYmflllLmluQXJyYXkoZS50YXJnZXQsWWUoYS5leGNsdWRlLG8pKXx8KGUucHJldmVudERlZmF1bHQoKSx0PW8ub2Zmc2V0KCkscj1lLnBhZ2VYLXQubGVmdCxpPWUucGFnZVktdC50b3AsWWUoZG9jdW1lbnQpLm9uKCJtb3VzZW1vdmUuZHJhZyIsZnVuY3Rpb24oZSl7by5vZmZzZXQoe3RvcDplLnBhZ2VZLWksbGVmdDplLnBhZ2VYLXJ9KX0pKX0sbW91c2V1cDpmdW5jdGlvbihlKXtZZShkb2N1bWVudCkub2ZmKCJtb3VzZW1vdmUuZHJhZyIpfX0pfSl9LFllLmZuLmpxbT1mdW5jdGlvbihlKXt2YXIgdD17b3ZlcmxheTo1MCxjbG9zZW92ZXJsYXk6ITAsb3ZlcmxheUNsYXNzOiJqcW1PdmVybGF5IixjbG9zZUNsYXNzOiJqcW1DbG9zZSIsdHJpZ2dlcjoiLmpxTW9kYWwiLGFqYXg6aCxhamF4VGV4dDoiIix0YXJnZXQ6aCxtb2RhbDpoLHRvVG9wOmgsb25TaG93Omgsb25IaWRlOmgsb25Mb2FkOmh9O3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtpZih0aGlzLl9qcW0pcmV0dXJuIGNbdGhpcy5fanFtXS5jPVllLmV4dGVuZCh7fSxjW3RoaXMuX2pxbV0uYyxlKTtwKyssdGhpcy5fanFtPXAsY1twXT17YzpZZS5leHRlbmQodCxZZS5qcW0ucGFyYW1zLGUpLGE6aCx3OlllKHRoaXMpLmFkZENsYXNzKCJqcW1JRCIrcCksczpwfSx0LnRyaWdnZXImJlllKHRoaXMpLmpxbUFkZFRyaWdnZXIodC50cmlnZ2VyKX0pfSxZZS5mbi5qcW1BZGRDbG9zZT1mdW5jdGlvbihlKXtyZXR1cm4gbSh0aGlzLGUsImpxbUhpZGUiKX0sWWUuZm4uanFtQWRkVHJpZ2dlcj1mdW5jdGlvbihlKXtyZXR1cm4gbSh0aGlzLGUsImpxbVNob3ciKX0sWWUuZm4uanFtU2hvdz1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7WWUuanFtLm9wZW4odGhpcy5fanFtLGUpfSl9LFllLmZuLmpxbUhpZGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe1llLmpxbS5jbG9zZSh0aGlzLl9qcW0sZSl9KX0sWWUuanFtPXtoYXNoOnt9LG9wZW46ZnVuY3Rpb24oZSx0KXt2YXIgcj1jW2VdLGk9ci5jLG89Ii4iK2kuY2xvc2VDbGFzcyxhPTA8KGE9cGFyc2VJbnQoci53LmNzcygiei1pbmRleCIpKSk/YTozZTMsbj1ZZSgiPGRpdj48L2Rpdj4iKS5jc3Moe2hlaWdodDoiMTAwJSIsd2lkdGg6IjEwMCUiLHBvc2l0aW9uOiJmaXhlZCIsbGVmdDowLHRvcDowLCJ6LWluZGV4IjphLTEsb3BhY2l0eTppLm92ZXJsYXkvMTAwfSk7cmV0dXJuIHIuYXx8KHIudD10LHIuYT0hMCxyLncuY3NzKCJ6LWluZGV4IixhKSxpLm1vZGFsPyh1WzBdfHxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7bmV3IGYoImJpbmQiKX0sMSksdS5wdXNoKGUpKTowPGkub3ZlcmxheT9pLmNsb3Nlb3ZlcmxheSYmci53LmpxbUFkZENsb3NlKG4pOm49aCxyLm89bj9uLmFkZENsYXNzKGkub3ZlcmxheUNsYXNzKS5wcmVwZW5kVG8oImJvZHkiKTpoLGkuYWpheD8oYT1pLnRhcmdldHx8ci53LGU9aS5hamF4LGE9InN0cmluZyI9PXR5cGVvZiBhP1llKGEsci53KTpZZShhKSxlPSJAIj09PWUuc3Vic3RyKDAsMSk/WWUodCkuYXR0cihlLnN1YnN0cmluZygxKSk6ZSxhLmh0bWwoaS5hamF4VGV4dCkubG9hZChlLGZ1bmN0aW9uKCl7aS5vbkxvYWQmJmkub25Mb2FkLmNhbGwodGhpcyxyKSxvJiZyLncuanFtQWRkQ2xvc2UoWWUobyxyLncpKSxnKHIpfSkpOm8mJnIudy5qcW1BZGRDbG9zZShZZShvLHIudykpLGkudG9Ub3AmJnIubyYmci53LmJlZm9yZSgnPHNwYW4gaWQ9ImpxbVAnK3Iud1swXS5fanFtKyciPjwvc3Bhbj4nKS5pbnNlcnRBZnRlcihyLm8pLGkub25TaG93P2kub25TaG93KHIpOnIudy5zaG93KCksZyhyKSksaH0sY2xvc2U6ZnVuY3Rpb24oZSl7ZT1jW2VdO3JldHVybiBlLmEmJihlLmE9aCx1WzBdJiYodS5wb3AoKSx1WzBdfHxuZXcgZigidW5iaW5kIikpLGUuYy50b1RvcCYmZS5vJiZZZSgiI2pxbVAiK2Uud1swXS5fanFtKS5hZnRlcihlLncpLnJlbW92ZSgpLGUuYy5vbkhpZGU/ZS5jLm9uSGlkZShlKTooZS53LmhpZGUoKSxlLm8mJmUuby5yZW1vdmUoKSkpLGh9LHBhcmFtczp7fX0sMCksYz1ZZS5qcW0uaGFzaCx1PVtdLGg9ITEsZz1mdW5jdGlvbihlKXt2b2lkIDA9PT1lLmMuZm9jdXNGaWVsZCYmKGUuYy5mb2N1c0ZpZWxkPTApLDA8PWUuYy5mb2N1c0ZpZWxkJiZzKGUpfSxzPWZ1bmN0aW9uKGUpe3RyeXtZZSgiOmlucHV0OnZpc2libGUiLGUudylbcGFyc2VJbnQoZS5jLmZvY3VzRmllbGQsMTApXS5mb2N1cygpfWNhdGNoKGUpe319LGY9ZnVuY3Rpb24oZSl7WWUoZG9jdW1lbnQpW2VdKCJrZXlwcmVzcyIsdClbZV0oImtleWRvd24iLHQpW2VdKCJtb3VzZWRvd24iLHQpfSx0PWZ1bmN0aW9uKHIpe3ZhciBlPWNbdVt1Lmxlbmd0aC0xXV0saT0hWWUoci50YXJnZXQpLnBhcmVudHMoIi5qcW1JRCIrZS5zKVswXTtyZXR1cm4gaSYmWWUoIi5qcW1JRCIrZS5zKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9WWUodGhpcyksdD1lLm9mZnNldCgpO2lmKHQudG9wPD1yLnBhZ2VZJiZyLnBhZ2VZPD10LnRvcCtlLmhlaWdodCgpJiZ0LmxlZnQ8PXIucGFnZVgmJnIucGFnZVg8PXQubGVmdCtlLndpZHRoKCkpcmV0dXJuIGk9ITF9KSwhaX0sbT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGUuZWFjaChmdW5jdGlvbigpe3ZhciBlPXRoaXMuX2pxbTtZZSh0KS5lYWNoKGZ1bmN0aW9uKCl7dGhpc1tyXXx8KHRoaXNbcl09W10sWWUodGhpcykuY2xpY2soZnVuY3Rpb24oKXtmb3IodmFyIGUgaW57anFtU2hvdzoxLGpxbUhpZGU6MX0pZm9yKHZhciB0IGluIHRoaXNbZV0pY1t0aGlzW2VdW3RdXSYmY1t0aGlzW2VdW3RdXS53W2VdKHRoaXMpO3JldHVybiBofSkpLHRoaXNbcl0ucHVzaChlKX0pfSl9O1llLmZtYXR0ZXI9e30sWWUuZXh0ZW5kKFllLmZtYXR0ZXIse2lzQm9vbGVhbjpmdW5jdGlvbihlKXtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBlfSxpc09iamVjdDpmdW5jdGlvbihlKXtyZXR1cm4gZSYmKCJvYmplY3QiPT10eXBlb2YgZXx8WWUuamdyaWQuaXNGdW5jdGlvbihlKSl8fCExfSxpc1N0cmluZzpmdW5jdGlvbihlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGV9LGlzTnVtYmVyOmZ1bmN0aW9uKGUpe3JldHVybiJudW1iZXIiPT10eXBlb2YgZSYmaXNGaW5pdGUoZSl9LGlzVmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuaXNPYmplY3QoZSl8fHRoaXMuaXNTdHJpbmcoZSl8fHRoaXMuaXNOdW1iZXIoZSl8fHRoaXMuaXNCb29sZWFuKGUpfSxpc0VtcHR5OmZ1bmN0aW9uKGUpe3JldHVybiEoIXRoaXMuaXNTdHJpbmcoZSkmJnRoaXMuaXNWYWx1ZShlKXx8dGhpcy5pc1ZhbHVlKGUpJiYiIiE9PVllLmpncmlkLnRyaW0oZSkucmVwbGFjZSgvXCZuYnNwXDsvZ2ksIiIpLnJlcGxhY2UoL1wmIzE2MFw7L2dpLCIiKSl9fSksWWUuZm4uZm1hdHRlcj1mdW5jdGlvbihlLHQscixpLG8pe3ZhciBhPXQ7cj1ZZS5leHRlbmQoe30sWWUuamdyaWQuZ2V0UmVnaW9uYWwodGhpcywiZm9ybWF0dGVyIikscik7dHJ5e2E9WWUuZm4uZm1hdHRlcltlXS5jYWxsKHRoaXMsdCxyLGksbyl9Y2F0Y2goZSl7fXJldHVybiBhfSxZZS5mbWF0dGVyLnV0aWw9e051bWJlckZvcm1hdDpmdW5jdGlvbihlLHQpe2lmKFllLmZtYXR0ZXIuaXNOdW1iZXIoZSl8fChlKj0xKSxZZS5mbWF0dGVyLmlzTnVtYmVyKGUpKXt2YXIgcj1lPDAsaT1TdHJpbmcoZSksbz10LmRlY2ltYWxTZXBhcmF0b3J8fCIuIjtpZihZZS5mbWF0dGVyLmlzTnVtYmVyKHQuZGVjaW1hbFBsYWNlcykpe3ZhciBhPXQuZGVjaW1hbFBsYWNlcyxuPShpPVN0cmluZyhOdW1iZXIoTWF0aC5yb3VuZChlKyJlIithKSsiZS0iK2EpKSkubGFzdEluZGV4T2YoIi4iKTtpZigwPGEpZm9yKG48MD9uPShpKz1vKS5sZW5ndGgtMToiLiIhPT1vJiYoaT1pLnJlcGxhY2UoIi4iLG8pKTtpLmxlbmd0aC0xLW48YTspaSs9IjAifWlmKHQudGhvdXNhbmRzU2VwYXJhdG9yKXtmb3IodmFyIGw9dC50aG91c2FuZHNTZXBhcmF0b3Iscz0obj0tMTwobj1pLmxhc3RJbmRleE9mKG8pKT9uOmkubGVuZ3RoLGkuc3Vic3RyaW5nKG4pKSxkPS0xLHA9bjswPHA7cC0tKSsrZCUzPT0wJiZwIT09biYmKCFyfHwxPHApJiYocz1sK3MpLHM9aS5jaGFyQXQocC0xKStzO2k9c31yZXR1cm4gaT10LnByZWZpeD90LnByZWZpeCtpOmksaT10LnN1ZmZpeD9pK3Quc3VmZml4Oml9cmV0dXJuIGV9fSxZZS5mbi5mbWF0dGVyLmRlZmF1bHRGb3JtYXQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gWWUuZm1hdHRlci5pc1ZhbHVlKGUpJiYiIiE9PWU/ZTp0LmRlZmF1bHRWYWx1ZXx8IiYjMTYwOyJ9LFllLmZuLmZtYXR0ZXIuZW1haWw9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gWWUuZm1hdHRlci5pc0VtcHR5KGUpP1llLmZuLmZtYXR0ZXIuZGVmYXVsdEZvcm1hdChlLHQpOic8YSBocmVmPSJtYWlsdG86JytlKyciPicrZSsiPC9hPiJ9LFllLmZuLmZtYXR0ZXIuY2hlY2tib3g9ZnVuY3Rpb24oZSx0KXt2YXIgcj1ZZS5leHRlbmQoe30sdC5jaGVja2JveCksaT1PYmplY3Qua2V5cyhZZS5qZ3JpZC5yZWdpb25hbClbMF0scj0odD0hMD09PShyPXZvaWQgMCE9PXQuY29sTW9kZWwmJnZvaWQgMCE9PXQuY29sTW9kZWwuZm9ybWF0b3B0aW9ucz9ZZS5leHRlbmQoe30scix0LmNvbE1vZGVsLmZvcm1hdG9wdGlvbnMpOnIpLmRpc2FibGVkPydkaXNhYmxlZD0iZGlzYWJsZWQiJzoiIiwhWWUuZm1hdHRlci5pc0VtcHR5KGUpJiZ2b2lkIDAhPT1lfHwoZT1ZZS5mbi5mbWF0dGVyLmRlZmF1bHRGb3JtYXQoZSxyKSksKGU9KChlPVN0cmluZyhlKSkrIiIpLnRvTG93ZXJDYXNlKCkpLnNlYXJjaCgvKGZhbHNlfGZ8MHxub3xufG9mZnx1bmRlZmluZWQpL2kpPDA/IiBjaGVja2VkPSdjaGVja2VkJyAiOiIiKSxvPVllLmpncmlkLnJlZ2lvbmFsW2ldLmRlZmF1bHRzLnZhbHVlQ2hlY2tib3gsYT1ZZS5qZ3JpZC5yZWdpb25hbFtpXS5kZWZhdWx0cy52YWxULGk9WWUuamdyaWQucmVnaW9uYWxbaV0uZGVmYXVsdHMudmFsRixhPXZvaWQgMCE9PW8mJiJ0cnVlIj09PWU/bysiICIrYTp2b2lkIDAhPT1vJiYiZmFsc2UiPT09ZT9vKyIgIitpOmU7cmV0dXJuJzxpbnB1dCB0aXRsZT0iJythKyciIHR5cGU9ImNoZWNrYm94IiAnK3IrJyB2YWx1ZT0iJytlKyciIG9mZnZhbD0ibm8iICcrdCsiLz4ifSxZZS5mbi5mbWF0dGVyLmxpbms9ZnVuY3Rpb24oZSx0KXt2YXIgcj17dGFyZ2V0OnQudGFyZ2V0fSxpPSIiO3JldHVybihyPXZvaWQgMCE9PXQuY29sTW9kZWwmJnZvaWQgMCE9PXQuY29sTW9kZWwuZm9ybWF0b3B0aW9ucz9ZZS5leHRlbmQoe30scix0LmNvbE1vZGVsLmZvcm1hdG9wdGlvbnMpOnIpLnRhcmdldCYmKGk9InRhcmdldD0iK3IudGFyZ2V0KSxZZS5mbWF0dGVyLmlzRW1wdHkoZSk/WWUuZm4uZm1hdHRlci5kZWZhdWx0Rm9ybWF0KGUsdCk6IjxhICIraSsnIGhyZWY9IicrZSsnIj4nK2UrIjwvYT4ifSxZZS5mbi5mbWF0dGVyLnNob3dsaW5rPWZ1bmN0aW9uKGUsdCl7dmFyIHI9e2Jhc2VMaW5rVXJsOnQuYmFzZUxpbmtVcmwsc2hvd0FjdGlvbjp0LnNob3dBY3Rpb24sYWRkUGFyYW06dC5hZGRQYXJhbXx8IiIsdGFyZ2V0OnQudGFyZ2V0LGlkTmFtZTp0LmlkTmFtZX0saT0iIjtyZXR1cm4ocj12b2lkIDAhPT10LmNvbE1vZGVsJiZ2b2lkIDAhPT10LmNvbE1vZGVsLmZvcm1hdG9wdGlvbnM/WWUuZXh0ZW5kKHt9LHIsdC5jb2xNb2RlbC5mb3JtYXRvcHRpb25zKTpyKS50YXJnZXQmJihpPSJ0YXJnZXQ9IityLnRhcmdldCkscj1yLmJhc2VMaW5rVXJsK3Iuc2hvd0FjdGlvbisiPyIrci5pZE5hbWUrIj0iK3Qucm93SWQrci5hZGRQYXJhbSxZZS5mbWF0dGVyLmlzU3RyaW5nKGUpfHxZZS5mbWF0dGVyLmlzTnVtYmVyKGUpPyI8YSAiK2krJyBocmVmPSInK3IrJyI+JytlKyI8L2E+IjpZZS5mbi5mbWF0dGVyLmRlZmF1bHRGb3JtYXQoZSx0KX0sWWUuZm4uZm1hdHRlci5pbnRlZ2VyPWZ1bmN0aW9uKGUsdCl7dmFyIHI9WWUuZXh0ZW5kKHt9LHQuaW50ZWdlcik7cmV0dXJuIHZvaWQgMCE9PXQuY29sTW9kZWwmJnZvaWQgMCE9PXQuY29sTW9kZWwuZm9ybWF0b3B0aW9ucyYmKHI9WWUuZXh0ZW5kKHt9LHIsdC5jb2xNb2RlbC5mb3JtYXRvcHRpb25zKSksWWUuZm1hdHRlci5pc0VtcHR5KGUpP3IuZGVmYXVsdFZhbHVlOlllLmZtYXR0ZXIudXRpbC5OdW1iZXJGb3JtYXQoZSxyKX0sWWUuZm4uZm1hdHRlci5udW1iZXI9ZnVuY3Rpb24oZSx0KXt2YXIgcj1ZZS5leHRlbmQoe30sdC5udW1iZXIpO3JldHVybiB2b2lkIDAhPT10LmNvbE1vZGVsJiZ2b2lkIDAhPT10LmNvbE1vZGVsLmZvcm1hdG9wdGlvbnMmJihyPVllLmV4dGVuZCh7fSxyLHQuY29sTW9kZWwuZm9ybWF0b3B0aW9ucykpLFllLmZtYXR0ZXIuaXNFbXB0eShlKT9yLmRlZmF1bHRWYWx1ZTpZZS5mbWF0dGVyLnV0aWwuTnVtYmVyRm9ybWF0KGUscil9LFllLmZuLmZtYXR0ZXIuY3VycmVuY3k9ZnVuY3Rpb24oZSx0KXt2YXIgcj1ZZS5leHRlbmQoe30sdC5jdXJyZW5jeSk7cmV0dXJuIHZvaWQgMCE9PXQuY29sTW9kZWwmJnZvaWQgMCE9PXQuY29sTW9kZWwuZm9ybWF0b3B0aW9ucyYmKHI9WWUuZXh0ZW5kKHt9LHIsdC5jb2xNb2RlbC5mb3JtYXRvcHRpb25zKSksWWUuZm1hdHRlci5pc0VtcHR5KGUpP3IuZGVmYXVsdFZhbHVlOlllLmZtYXR0ZXIudXRpbC5OdW1iZXJGb3JtYXQoZSxyKX0sWWUuZm4uZm1hdHRlci5kYXRlPWZ1bmN0aW9uKGUsdCxyLGkpe3ZhciBvPVllLmV4dGVuZCh7fSx0LmRhdGUpO3JldHVybiEobz12b2lkIDAhPT10LmNvbE1vZGVsJiZ2b2lkIDAhPT10LmNvbE1vZGVsLmZvcm1hdG9wdGlvbnM/WWUuZXh0ZW5kKHt9LG8sdC5jb2xNb2RlbC5mb3JtYXRvcHRpb25zKTpvKS5yZWZvcm1hdEFmdGVyRWRpdCYmImVkaXQiPT09aXx8WWUuZm1hdHRlci5pc0VtcHR5KGUpP1llLmZuLmZtYXR0ZXIuZGVmYXVsdEZvcm1hdChlLHQpOlllLmpncmlkLnBhcnNlRGF0ZS5jYWxsKHRoaXMsby5zcmNmb3JtYXQsZSxvLm5ld2Zvcm1hdCxvKX0sWWUuZm4uZm1hdHRlci5zZWxlY3Q9ZnVuY3Rpb24oZSx0KXtlPVN0cmluZyhlKTt2YXIgcixpLG89ITEsYT1bXTtpZih2b2lkIDAhPT10LmNvbE1vZGVsLmZvcm1hdG9wdGlvbnM/KG89dC5jb2xNb2RlbC5mb3JtYXRvcHRpb25zLnZhbHVlLHI9dm9pZCAwPT09dC5jb2xNb2RlbC5mb3JtYXRvcHRpb25zLnNlcGFyYXRvcj8iOiI6dC5jb2xNb2RlbC5mb3JtYXRvcHRpb25zLnNlcGFyYXRvcixpPXZvaWQgMD09PXQuY29sTW9kZWwuZm9ybWF0b3B0aW9ucy5kZWxpbWl0ZXI/IjsiOnQuY29sTW9kZWwuZm9ybWF0b3B0aW9ucy5kZWxpbWl0ZXIpOnZvaWQgMCE9PXQuY29sTW9kZWwuZWRpdG9wdGlvbnMmJihvPXQuY29sTW9kZWwuZWRpdG9wdGlvbnMudmFsdWUscj12b2lkIDA9PT10LmNvbE1vZGVsLmVkaXRvcHRpb25zLnNlcGFyYXRvcj8iOiI6dC5jb2xNb2RlbC5lZGl0b3B0aW9ucy5zZXBhcmF0b3IsaT12b2lkIDA9PT10LmNvbE1vZGVsLmVkaXRvcHRpb25zLmRlbGltaXRlcj8iOyI6dC5jb2xNb2RlbC5lZGl0b3B0aW9ucy5kZWxpbWl0ZXIpLG8pe3ZhciBuLGw9ITA9PShudWxsIT10LmNvbE1vZGVsLmVkaXRvcHRpb25zJiYhMD09PXQuY29sTW9kZWwuZWRpdG9wdGlvbnMubXVsdGlwbGUpLHM9W107aWYobCYmKHM9ZS5zcGxpdCgiLCIpLHM9WWUubWFwKHMsZnVuY3Rpb24oZSl7cmV0dXJuIFllLmpncmlkLnRyaW0oZSl9KSksWWUuZm1hdHRlci5pc1N0cmluZyhvKSl7Zm9yKHZhciBkPW8uc3BsaXQoaSkscD0wLGM9MDtjPGQubGVuZ3RoO2MrKylpZigyPChuPWRbY10uc3BsaXQocikpLmxlbmd0aCYmKG5bMV09WWUubWFwKG4sZnVuY3Rpb24oZSx0KXtpZigwPHQpcmV0dXJuIGV9KS5qb2luKHIpKSxsKS0xPFllLmluQXJyYXkoblswXSxzKSYmKGFbcF09blsxXSxwKyspO2Vsc2UgaWYoWWUuamdyaWQudHJpbShuWzBdKT09PVllLmpncmlkLnRyaW0oZSkpe2FbMF09blsxXTticmVha319ZWxzZSBZZS5mbWF0dGVyLmlzT2JqZWN0KG8pJiYobD9hPVllLm1hcChzLGZ1bmN0aW9uKGUpe3JldHVybiBvW2VdfSk6YVswXT1vW2VdfHwiIil9cmV0dXJuIiI9PT0oZT1hLmpvaW4oIiwgIikpP1llLmZuLmZtYXR0ZXIuZGVmYXVsdEZvcm1hdChlLHQpOmV9LFllLmZuLmZtYXR0ZXIucm93YWN0aW9ucz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUpe1llLmpncmlkLmlzRnVuY3Rpb24oZC5hZnRlclJlc3RvcmUpJiZkLmFmdGVyUmVzdG9yZS5jYWxsKG4sZSkscy5maW5kKCJkaXYudWktaW5saW5lLWVkaXQsZGl2LnVpLWlubGluZS1kZWwiKS5zaG93KCkscy5maW5kKCJkaXYudWktaW5saW5lLXNhdmUsZGl2LnVpLWlubGluZS1jYW5jZWwiKS5oaWRlKCl9dmFyIHI9WWUodGhpcykuY2xvc2VzdCgidHIuanFncm93IiksaT1yLmF0dHIoImlkIiksbz1ZZSh0aGlzKS5jbG9zZXN0KCJ0YWJsZS51aS1qcWdyaWQtYnRhYmxlIikuYXR0cigiaWQiKS5yZXBsYWNlKC9fZnJvemVuKFteX10qKSQvLCIkMSIpLGE9WWUoIiMiK28pLG49YVswXSxvPW4ucCxsPW8uY29sTW9kZWxbWWUuamdyaWQuZ2V0Q2VsbEluZGV4KHRoaXMpXSxzPWwuZnJvemVuP1llKCJ0ciMiK2krIiB0ZCIsYSkuZXEoWWUuamdyaWQuZ2V0Q2VsbEluZGV4KHRoaXMpKS5maW5kKCI+IGRpdiIpOlllKHRoaXMpLnBhcmVudCgpLGQ9e2V4dHJhcGFyYW06e319LHA9KHZvaWQgMCE9PWwuZm9ybWF0b3B0aW9ucyYmKGw9WWUuZXh0ZW5kKCEwLHt9LGwuZm9ybWF0b3B0aW9ucyksZD1ZZS5leHRlbmQoZCxsKSksdm9pZCAwIT09by5lZGl0T3B0aW9ucyYmKGQuZWRpdE9wdGlvbnM9by5lZGl0T3B0aW9ucyksdm9pZCAwIT09by5kZWxPcHRpb25zJiYoZC5kZWxPcHRpb25zPW8uZGVsT3B0aW9ucyksci5oYXNDbGFzcygianFncmlkLW5ldy1yb3ciKSYmKGQuZXh0cmFwYXJhbVtvLnBybU5hbWVzLm9wZXJdPW8ucHJtTmFtZXMuYWRkb3Blcikse2tleXM6ZC5rZXlzLG9uZWRpdGZ1bmM6ZC5vbkVkaXQsc3VjY2Vzc2Z1bmM6ZC5vblN1Y2Nlc3MsdXJsOmQudXJsLGV4dHJhcGFyYW06ZC5leHRyYXBhcmFtLGFmdGVyc2F2ZWZ1bmM6ZnVuY3Rpb24oZSx0KXtZZS5qZ3JpZC5pc0Z1bmN0aW9uKGQuYWZ0ZXJTYXZlKSYmZC5hZnRlclNhdmUuY2FsbChuLGUsdCkscy5maW5kKCJkaXYudWktaW5saW5lLWVkaXQsZGl2LnVpLWlubGluZS1kZWwiKS5zaG93KCkscy5maW5kKCJkaXYudWktaW5saW5lLXNhdmUsZGl2LnVpLWlubGluZS1jYW5jZWwiKS5oaWRlKCl9LGVycm9yZnVuYzpkLm9uRXJyb3IsYWZ0ZXJyZXN0b3JlZnVuYzp0LHJlc3RvcmVBZnRlckVycm9yOmQucmVzdG9yZUFmdGVyRXJyb3IsbXR5cGU6ZC5tdHlwZX0pO3N3aXRjaChlKXtjYXNlImVkaXQiOmEuanFHcmlkKCJlZGl0Um93IixpLHApLGFbMF0ucC5iZWZvcmVBY3Rpb24mJihzLmZpbmQoImRpdi51aS1pbmxpbmUtZWRpdCxkaXYudWktaW5saW5lLWRlbCIpLmhpZGUoKSxzLmZpbmQoImRpdi51aS1pbmxpbmUtc2F2ZSxkaXYudWktaW5saW5lLWNhbmNlbCIpLnNob3coKSxhLnRyaWdnZXJIYW5kbGVyKCJqcUdyaWRBZnRlckdyaWRDb21wbGV0ZSIpKTticmVhaztjYXNlInNhdmUiOmEuanFHcmlkKCJzYXZlUm93IixpLHApJiYocy5maW5kKCJkaXYudWktaW5saW5lLWVkaXQsZGl2LnVpLWlubGluZS1kZWwiKS5zaG93KCkscy5maW5kKCJkaXYudWktaW5saW5lLXNhdmUsZGl2LnVpLWlubGluZS1jYW5jZWwiKS5oaWRlKCksYS50cmlnZ2VySGFuZGxlcigianFHcmlkQWZ0ZXJHcmlkQ29tcGxldGUiKSk7YnJlYWs7Y2FzZSJjYW5jZWwiOmEuanFHcmlkKCJyZXN0b3JlUm93IixpLHQpLHMuZmluZCgiZGl2LnVpLWlubGluZS1lZGl0LGRpdi51aS1pbmxpbmUtZGVsIikuc2hvdygpLHMuZmluZCgiZGl2LnVpLWlubGluZS1zYXZlLGRpdi51aS1pbmxpbmUtY2FuY2VsIikuaGlkZSgpLGEudHJpZ2dlckhhbmRsZXIoImpxR3JpZEFmdGVyR3JpZENvbXBsZXRlIik7YnJlYWs7Y2FzZSJkZWwiOmEuanFHcmlkKCJkZWxHcmlkUm93IixpLGQuZGVsT3B0aW9ucyk7YnJlYWs7Y2FzZSJmb3JtZWRpdCI6YS5qcUdyaWQoInNldFNlbGVjdGlvbiIsaSksYS5qcUdyaWQoImVkaXRHcmlkUm93IixpLGQuZWRpdE9wdGlvbnMpfX0sWWUuZm4uZm1hdHRlci5hY3Rpb25zPWZ1bmN0aW9uKGUsdCl7dmFyIHI9e2tleXM6ITEsZWRpdGJ1dHRvbjohMCxkZWxidXR0b246ITAsZWRpdGZvcm1idXR0b246ITF9LGk9dC5yb3dJZCxvPSIiLGE9WWUuamdyaWQuZ2V0UmVnaW9uYWwodGhpcywibmF2Iiksbj1ZZS5qZ3JpZC5zdHlsZVVJW3Quc3R5bGVVSXx8ImpRdWVyeVVJIl0uZm1hdHRlcixsPVllLmpncmlkLnN0eWxlVUlbdC5zdHlsZVVJfHwialF1ZXJ5VUkiXS5jb21tb247cmV0dXJuIHZvaWQgMCE9PXQuY29sTW9kZWwuZm9ybWF0b3B0aW9ucyYmKHI9WWUuZXh0ZW5kKHIsdC5jb2xNb2RlbC5mb3JtYXRvcHRpb25zKSksdm9pZCAwPT09aXx8WWUuZm1hdHRlci5pc0VtcHR5KGkpPyIiOih0PSJvbm1vdXNlb3Zlcj1qUXVlcnkodGhpcykuYWRkQ2xhc3MoJyIrbC5ob3ZlcisiJyk7IG9ubW91c2VvdXQ9alF1ZXJ5KHRoaXMpLnJlbW92ZUNsYXNzKCciK2wuaG92ZXIrIicpOyAgIixyLmVkaXRmb3JtYnV0dG9uP28rPSI8ZGl2IHRpdGxlPSciK2EuZWRpdHRpdGxlKyInIHN0eWxlPSdmbG9hdDpsZWZ0O2N1cnNvcjpwb2ludGVyOycgY2xhc3M9J3VpLXBnLWRpdiB1aS1pbmxpbmUtZWRpdCcgIisoImlkPSdqRWRpdEJ1dHRvbl8iK2krIicgb25jbGljaz1qUXVlcnkuZm4uZm1hdHRlci5yb3dhY3Rpb25zLmNhbGwodGhpcywnZm9ybWVkaXQnKTsgIit0KSsiPjxzcGFuIGNsYXNzPSciK2wuaWNvbl9iYXNlKyIgIituLmljb25fZWRpdCsiJz48L3NwYW4+PC9kaXY+IjpyLmVkaXRidXR0b24mJihvKz0iPGRpdiB0aXRsZT0nIithLmVkaXR0aXRsZSsiJyBzdHlsZT0nZmxvYXQ6bGVmdDtjdXJzb3I6cG9pbnRlcjsnIGNsYXNzPSd1aS1wZy1kaXYgdWktaW5saW5lLWVkaXQnICIrKCJpZD0nakVkaXRCdXR0b25fIitpKyInIG9uY2xpY2s9alF1ZXJ5LmZuLmZtYXR0ZXIucm93YWN0aW9ucy5jYWxsKHRoaXMsJ2VkaXQnKTsgIit0KSsiPjxzcGFuIGNsYXNzPSciK2wuaWNvbl9iYXNlKyIgIituLmljb25fZWRpdCsiJz48L3NwYW4+PC9kaXY+Iiksci5kZWxidXR0b24mJihvKz0iPGRpdiB0aXRsZT0nIithLmRlbHRpdGxlKyInIHN0eWxlPSdmbG9hdDpsZWZ0OycgY2xhc3M9J3VpLXBnLWRpdiB1aS1pbmxpbmUtZGVsJyAiKygiaWQ9J2pEZWxldGVCdXR0b25fIitpKyInIG9uY2xpY2s9alF1ZXJ5LmZuLmZtYXR0ZXIucm93YWN0aW9ucy5jYWxsKHRoaXMsJ2RlbCcpOyAiK3QpKyI+PHNwYW4gY2xhc3M9JyIrbC5pY29uX2Jhc2UrIiAiK24uaWNvbl9kZWwrIic+PC9zcGFuPjwvZGl2PiIpLCI8ZGl2ICBjbGFzcz0nanFncmlkX2FjdGlvbnMnIHN0eWxlPSdtYXJnaW4tbGVmdDo4cHg7Jz4iKyhvPShvKz0iPGRpdiB0aXRsZT0nIithLnNhdmV0aXRsZSsiJyBzdHlsZT0nZmxvYXQ6bGVmdDtkaXNwbGF5Om5vbmUnIGNsYXNzPSd1aS1wZy1kaXYgdWktaW5saW5lLXNhdmUnICIrKCJpZD0nalNhdmVCdXR0b25fIitpKyInIG9uY2xpY2s9alF1ZXJ5LmZuLmZtYXR0ZXIucm93YWN0aW9ucy5jYWxsKHRoaXMsJ3NhdmUnKTsgIit0KSsiPjxzcGFuIGNsYXNzPSciK2wuaWNvbl9iYXNlKyIgIituLmljb25fc2F2ZSsiJz48L3NwYW4+PC9kaXY+IikrKCI8ZGl2IHRpdGxlPSciK2EuY2FuY2VsdGl0bGUrIicgc3R5bGU9J2Zsb2F0OmxlZnQ7ZGlzcGxheTpub25lOycgY2xhc3M9J3VpLXBnLWRpdiB1aS1pbmxpbmUtY2FuY2VsJyAiKygiaWQ9J2pDYW5jZWxCdXR0b25fIitpKyInIG9uY2xpY2s9alF1ZXJ5LmZuLmZtYXR0ZXIucm93YWN0aW9ucy5jYWxsKHRoaXMsJ2NhbmNlbCcpOyAiK3QpKyI+PHNwYW4gY2xhc3M9JyIrbC5pY29uX2Jhc2UrIiAiK24uaWNvbl9jYW5jZWwrIic+PC9zcGFuPjwvZGl2PiIpKSsiPC9kaXY+Iil9LFllLnVuZm9ybWF0PWZ1bmN0aW9uKGUsdCxyLGkpe3ZhciBvPXQuY29sTW9kZWwuZm9ybWF0dGVyLGE9dC5jb2xNb2RlbC5mb3JtYXRvcHRpb25zfHx7fSxuPS8oW1wuXCpcX1wnXChcKVx7XH1cK1w/XFxdKS9nLGw9dC5jb2xNb2RlbC51bmZvcm1hdHx8WWUuZm4uZm1hdHRlcltvXSYmWWUuZm4uZm1hdHRlcltvXS51bmZvcm1hdDtpZih2b2lkIDAhPT1sJiZZZS5qZ3JpZC5pc0Z1bmN0aW9uKGwpKWM9bC5jYWxsKHRoaXMsWWUoZSkudGV4dCgpLHQsZSk7ZWxzZSBpZih2b2lkIDAhPT1vJiZZZS5mbWF0dGVyLmlzU3RyaW5nKG8pKXt2YXIgcyxkPVllLmpncmlkLmdldFJlZ2lvbmFsKHRoaXMsImZvcm1hdHRlciIpfHx7fTtzd2l0Y2gobyl7Y2FzZSJpbnRlZ2VyIjpwPShhPVllLmV4dGVuZCh7fSxkLmludGVnZXIsYSkpLnRob3VzYW5kc1NlcGFyYXRvci5yZXBsYWNlKG4sIlxcJDEiKSxzPW5ldyBSZWdFeHAocCwiZyIpLGM9WWUoZSkudGV4dCgpLnJlcGxhY2UocywiIik7YnJlYWs7Y2FzZSJudW1iZXIiOnA9KGE9WWUuZXh0ZW5kKHt9LGQubnVtYmVyLGEpKS50aG91c2FuZHNTZXBhcmF0b3IucmVwbGFjZShuLCJcXCQxIikscz1uZXcgUmVnRXhwKHAsImciKSxjPVllKGUpLnRleHQoKS5yZXBsYWNlKHMsIiIpLnJlcGxhY2UoYS5kZWNpbWFsU2VwYXJhdG9yLCIuIik7YnJlYWs7Y2FzZSJjdXJyZW5jeSI6cD0oYT1ZZS5leHRlbmQoe30sZC5jdXJyZW5jeSxhKSkudGhvdXNhbmRzU2VwYXJhdG9yLnJlcGxhY2UobiwiXFwkMSIpLHM9bmV3IFJlZ0V4cChwLCJnIiksYz1ZZShlKS50ZXh0KCksYS5wcmVmaXgmJmEucHJlZml4Lmxlbmd0aCYmKGM9Yy5zdWJzdHIoYS5wcmVmaXgubGVuZ3RoKSksYz0oYz1hLnN1ZmZpeCYmYS5zdWZmaXgubGVuZ3RoP2Muc3Vic3RyKDAsYy5sZW5ndGgtYS5zdWZmaXgubGVuZ3RoKTpjKS5yZXBsYWNlKHMsIiIpLnJlcGxhY2UoYS5kZWNpbWFsU2VwYXJhdG9yLCIuIik7YnJlYWs7Y2FzZSJjaGVja2JveCI6dmFyIHA9dC5jb2xNb2RlbC5lZGl0b3B0aW9ucz90LmNvbE1vZGVsLmVkaXRvcHRpb25zLnZhbHVlLnNwbGl0KCI6Iik6WyJZZXMiLCJObyJdLGM9WWUoImlucHV0IixlKS5pcygiOmNoZWNrZWQiKT9wWzBdOnBbMV07YnJlYWs7Y2FzZSJzZWxlY3QiOmM9WWUudW5mb3JtYXQuc2VsZWN0KGUsdCxyLGkpO2JyZWFrO2Nhc2UiYWN0aW9ucyI6cmV0dXJuIiI7ZGVmYXVsdDpjPVllKGUpLnRleHQoKX19cmV0dXJuIHZvaWQgMCE9PWM/YzohMD09PWk/WWUoZSkudGV4dCgpOlllLmpncmlkLmh0bWxEZWNvZGUoWWUoZSkuaHRtbCgpKX0sWWUudW5mb3JtYXQuc2VsZWN0PWZ1bmN0aW9uKGUsdCxyLGkpe3ZhciBvPVtdLGE9WWUoZSkudGV4dCgpO2lmKCEwPT09aSlyZXR1cm4gYTt2YXIgbj1ZZS5leHRlbmQoe30sdm9pZCAwIT09dC5jb2xNb2RlbC5mb3JtYXRvcHRpb25zP3QuY29sTW9kZWwuZm9ybWF0b3B0aW9uczp0LmNvbE1vZGVsLmVkaXRvcHRpb25zKSxsPXZvaWQgMD09PW4uc2VwYXJhdG9yPyI6IjpuLnNlcGFyYXRvcixlPXZvaWQgMD09PW4uZGVsaW1pdGVyPyI7IjpuLmRlbGltaXRlcjtpZihuLnZhbHVlKXt2YXIgcyxkPW4udmFsdWUscD0hMD09PW4ubXVsdGlwbGUsYz1bXTtpZihwJiYoYz1hLnNwbGl0KCIsIiksYz1ZZS5tYXAoYyxmdW5jdGlvbihlKXtyZXR1cm4gWWUuamdyaWQudHJpbShlKX0pKSxZZS5mbWF0dGVyLmlzU3RyaW5nKGQpKXtmb3IodmFyIHU9ZC5zcGxpdChlKSxoPTAsZz0wO2c8dS5sZW5ndGg7ZysrKWlmKDI8KHM9dVtnXS5zcGxpdChsKSkubGVuZ3RoJiYoc1sxXT1ZZS5tYXAocyxmdW5jdGlvbihlLHQpe2lmKDA8dClyZXR1cm4gZX0pLmpvaW4obCkpLG4uZGVjb2RlVmFsdWUmJiEwPT09bi5kZWNvZGVWYWx1ZSYmKHNbMV09WWUuamdyaWQuaHRtbERlY29kZShzWzFdKSkscCktMTxZZS5pbkFycmF5KFllLmpncmlkLnRyaW0oc1sxXSksYykmJihvW2hdPXNbMF0saCsrKTtlbHNlIGlmKFllLmpncmlkLnRyaW0oc1sxXSk9PT1ZZS5qZ3JpZC50cmltKGEpKXtvWzBdPXNbMF07YnJlYWt9fWVsc2UoWWUuZm1hdHRlci5pc09iamVjdChkKXx8QXJyYXkuaXNBcnJheShkKSkmJihwfHwoY1swXT1hKSxvPVllLm1hcChjLGZ1bmN0aW9uKHIpe3ZhciBpO2lmKFllLmVhY2goZCxmdW5jdGlvbihlLHQpe2lmKHQ9PT1yKXJldHVybiBpPWUsITF9KSx2b2lkIDAhPT1pKXJldHVybiBpfSkpO3JldHVybiBvLmpvaW4oIiwgIil9cmV0dXJuIGF8fCIifSxZZS51bmZvcm1hdC5kYXRlPWZ1bmN0aW9uKGUsdCl7dmFyIHI9WWUuamdyaWQuZ2V0UmVnaW9uYWwodGhpcywiZm9ybWF0dGVyLmRhdGUiKXx8e307cmV0dXJuIHZvaWQgMCE9PXQuZm9ybWF0b3B0aW9ucyYmKHI9WWUuZXh0ZW5kKHt9LHIsdC5mb3JtYXRvcHRpb25zKSksWWUuZm1hdHRlci5pc0VtcHR5KGUpP1llLmZuLmZtYXR0ZXIuZGVmYXVsdEZvcm1hdChlLHQpOlllLmpncmlkLnBhcnNlRGF0ZS5jYWxsKHRoaXMsci5uZXdmb3JtYXQsZSxyLnNyY2Zvcm1hdCxyKX07dmFyIHYsaj1ZZSgpO1llLmZuLmh0bWw1c29ydGFibGU9ZnVuY3Rpb24oYSl7dmFyIGU9U3RyaW5nKGEpO3JldHVybiBhPVllLmV4dGVuZCh7Y29ubmVjdFdpdGg6ITF9LGEpLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciB0LHIsaSxvOy9eZW5hYmxlfGRpc2FibGV8ZGVzdHJveSQvLnRlc3QoZSk/KGk9WWUodGhpcykuY2hpbGRyZW4oWWUodGhpcykuZGF0YSgiaXRlbXMiKSkuYXR0cigiZHJhZ2dhYmxlIiwiZW5hYmxlIj09PWUpLCJkZXN0cm95Ij09PWUmJmkuYWRkKHRoaXMpLnJlbW92ZURhdGEoImNvbm5lY3RXaXRoIGl0ZW1zIikub2ZmKCJkcmFnc3RhcnQuaDVzIGRyYWdlbmQuaDVzIHNlbGVjdHN0YXJ0Lmg1cyBkcmFnb3Zlci5oNXMgZHJhZ2VudGVyLmg1cyBkcm9wLmg1cyIpKTooaT1ZZSh0aGlzKS5jaGlsZHJlbihhLml0ZW1zKSxvPVllKCI8IisoL151bHxvbCQvaS50ZXN0KHRoaXMudGFnTmFtZSk/ImxpIjovXnRib2R5JC9pLnRlc3QodGhpcy50YWdOYW1lKT8idHIiOiJkaXYiKSsnIGNsYXNzPSJzb3J0YWJsZS1wbGFjZWhvbGRlciAnK2EucGxhY2Vob2xkZXJDbGFzcysnIj4nKS5odG1sKCImbmJzcDsiKSxpLmZpbmQoYS5oYW5kbGUpLm1vdXNlZG93bihmdW5jdGlvbigpe3Q9ITB9KS5tb3VzZXVwKGZ1bmN0aW9uKCl7dD0hMX0pLFllKHRoaXMpLmRhdGEoIml0ZW1zIixhLml0ZW1zKSxqPWouYWRkKG8pLGEuY29ubmVjdFdpdGgmJlllKGEuY29ubmVjdFdpdGgpLmFkZCh0aGlzKS5kYXRhKCJjb25uZWN0V2l0aCIsYS5jb25uZWN0V2l0aCksaS5hdHRyKCJkcmFnZ2FibGUiLCJ0cnVlIikub24oImRyYWdzdGFydC5oNXMiLGZ1bmN0aW9uKGUpe2lmKGEuaGFuZGxlJiYhdClyZXR1cm4hMTt0PSExO2U9ZS5vcmlnaW5hbEV2ZW50LmRhdGFUcmFuc2ZlcjtlLmVmZmVjdEFsbG93ZWQ9Im1vdmUiLGUuc2V0RGF0YSgiVGV4dCIsImR1bW15Iikscj0odj1ZZSh0aGlzKSkuYWRkQ2xhc3MoInNvcnRhYmxlLWRyYWdnaW5nIikuaW5kZXgoKX0pLm9uKCJkcmFnZW5kLmg1cyIsZnVuY3Rpb24oKXt2JiYodi5yZW1vdmVDbGFzcygic29ydGFibGUtZHJhZ2dpbmciKS5zaG93KCksai5kZXRhY2goKSxyIT09di5pbmRleCgpJiZ2LnBhcmVudCgpLnRyaWdnZXIoInNvcnR1cGRhdGUiLHtpdGVtOnYsc3RhcnRpbmRleDpyLGVuZGluZGV4OnYuaW5kZXgoKX0pLHY9bnVsbCl9KS5ub3QoImFbaHJlZl0sIGltZyIpLm9uKCJzZWxlY3RzdGFydC5oNXMiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZHJhZ0Ryb3AmJnRoaXMuZHJhZ0Ryb3AoKSwhMX0pLmVuZCgpLmFkZChbdGhpcyxvXSkub24oImRyYWdvdmVyLmg1cyBkcmFnZW50ZXIuaDVzIGRyb3AuaDVzIixmdW5jdGlvbihlKXtyZXR1cm4haS5pcyh2KSYmYS5jb25uZWN0V2l0aCE9PVllKHYpLnBhcmVudCgpLmRhdGEoImNvbm5lY3RXaXRoIil8fCgiZHJvcCI9PT1lLnR5cGU/KGUuc3RvcFByb3BhZ2F0aW9uKCksai5maWx0ZXIoIjp2aXNpYmxlIikuYWZ0ZXIodiksdi50cmlnZ2VyKCJkcmFnZW5kLmg1cyIpKTooZS5wcmV2ZW50RGVmYXVsdCgpLGUub3JpZ2luYWxFdmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdD0ibW92ZSIsaS5pcyh0aGlzKT8oYS5mb3JjZVBsYWNlaG9sZGVyU2l6ZSYmby5oZWlnaHQodi5vdXRlckhlaWdodCgpKSx2LmhpZGUoKSxZZSh0aGlzKVtvLmluZGV4KCk8WWUodGhpcykuaW5kZXgoKT8iYWZ0ZXIiOiJiZWZvcmUiXShvKSxqLm5vdChvKS5kZXRhY2goKSk6ai5pcyh0aGlzKXx8WWUodGhpcykuY2hpbGRyZW4oYS5pdGVtcykubGVuZ3RofHwoai5kZXRhY2goKSxZZSh0aGlzKS5hcHBlbmQobykpKSwhMSl9KSl9KX0sWWUuZXh0ZW5kKFllLmpncmlkLHtpc0pTT046ZnVuY3Rpb24oZSl7InN0cmluZyIhPXR5cGVvZiBlJiYoZT1KU09OLnN0cmluZ2lmeShlKSk7dHJ5e3JldHVybiBKU09OLnBhcnNlKGUpLCEwfWNhdGNoKGUpe3JldHVybiExfX0sc3RyaW5naWZ5OmZ1bmN0aW9uKGUpe3JldHVybiBKU09OLnN0cmluZ2lmeShlLGZ1bmN0aW9uKGUsdCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQ/dC50b1N0cmluZygpOnR9KX0scGFyc2VGdW5jOmZ1bmN0aW9uKGUpe3JldHVybiBKU09OLnBhcnNlKGUsZnVuY3Rpb24oZSx0KXt2YXIgcjtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQmJi0xIT09dC5pbmRleE9mKCJmdW5jdGlvbiIpJiYoKHI9dC5zcGxpdCgiICIpKVswXT1ZZS5qZ3JpZC50cmltKHJbMF0udG9Mb3dlckNhc2UoKSksMD09PXJbMF0uaW5kZXhPZigiZnVuY3Rpb24iKSkmJiJ9Ij09PXQudHJpbSgpLnNsaWNlKC0xKT9ZZS5qZ3JpZC5ydW5Db2RlKHQpOnR9KX0sZW5jb2RlOmZ1bmN0aW9uKGUpe3JldHVybiBTdHJpbmcoZSkucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpLnJlcGxhY2UoLyIvZywiJnF1b3Q7Iil9LGpzb25Ub1hNTDpmdW5jdGlvbihlLHQpe3ZhciBzPVllLmV4dGVuZCh7eG1sRGVjbDonPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+XG4nLGF0dHJfcHJlZml4OiItIixlbmNvZGU6ITB9LHR8fHt9KSxkPXRoaXMscD1mdW5jdGlvbihlLHQpe3JldHVybiIjdGV4dCI9PT1lP3MuZW5jb2RlP2QuZW5jb2RlKHQpOnQ6ImZ1bmN0aW9uIj09dHlwZW9mIHQ/IjwiK2UrIj48IVtDREFUQVsiK3QrIl1dPjwvIitlKyI+XG4iOiIiPT09dD8iPCIrZSsiPl9fRU1QVFlfU1RSSU5HXzwvIitlKyI+XG4iOiI8IitlKyI+Iisocy5lbmNvZGU/ZC5lbmNvZGUodCk6dCkrIjwvIitlKyI+XG4ifSxjPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPVtdLGk9MDtpPHQubGVuZ3RoO2krKyl7dmFyIG89dFtpXTt2b2lkIDA9PT1vfHxudWxsPT1vP3Jbci5sZW5ndGhdPSI8IitlKyIgLz4iOiJvYmplY3QiPT10eXBlb2YgbyYmby5jb25zdHJ1Y3Rvcj09QXJyYXk/cltyLmxlbmd0aF09YyhlLG8pOnJbci5sZW5ndGhdPSgib2JqZWN0Ij09dHlwZW9mIG8/dTpwKShlLG8pfXJldHVybiByLmxlbmd0aHx8KHJbMF09IjwiK2UrIj5fX0VNUFRZX0FSUkFZXzwvIitlKyI+XG4iKSxyLmpvaW4oIiIpfSx1PWZ1bmN0aW9uKGUsdCl7dmFyIHIsaSxvPVtdLGE9W107Zm9yKHIgaW4gdCl0Lmhhc093blByb3BlcnR5KHIpJiYoaT10W3JdLHIuY2hhckF0KDApIT09cy5hdHRyX3ByZWZpeD9udWxsPT1pP29bby5sZW5ndGhdPSI8IityKyIgLz4iOiJvYmplY3QiPT10eXBlb2YgaSYmaS5jb25zdHJ1Y3Rvcj09PUFycmF5P29bby5sZW5ndGhdPWMocixpKTpvW28ubGVuZ3RoXT0oIm9iamVjdCI9PXR5cGVvZiBpP3U6cCkocixpKTphW2EubGVuZ3RoXT0iICIrci5zdWJzdHJpbmcoMSkrJz0iJysocy5lbmNvZGU/ZC5lbmNvZGUoaSk6aSkrJyInKTt2YXIgbj1hLmpvaW4oIiIpLGw9by5qb2luKCIiKTtyZXR1cm4gbD1udWxsIT1lPzA8by5sZW5ndGg/bC5tYXRjaCgvXG4vKT8iPCIrZStuKyI+XG4iK2wrIjwvIitlKyI+XG4iOiI8IitlK24rIj4iK2wrIjwvIitlKyI+XG4iOiI8IitlK24rIiAvPlxuIjpsfSx0PXUobnVsbCxlKTtyZXR1cm4gcy54bWxEZWNsK3R9LHhtbFRvSlNPTjpmdW5jdGlvbihlLHQpe3ZhciBzPVllLmV4dGVuZCh7Zm9yY2VfYXJyYXk6W10sYXR0cl9wcmVmaXg6Ii0ifSx0fHx7fSk7aWYoZSl7dmFyIG89e307aWYocy5mb3JjZV9hcnJheSlmb3IodmFyIHI9MDtyPHMuZm9yY2VfYXJyYXkubGVuZ3RoO3IrKylvW3MuZm9yY2VfYXJyYXlbcl1dPTE7KGU9InN0cmluZyI9PXR5cGVvZiBlP1llLnBhcnNlWE1MKGUpOmUpLmRvY3VtZW50RWxlbWVudCYmKGU9ZS5kb2N1bWVudEVsZW1lbnQpO3ZhciBpLGQ9ZnVuY3Rpb24oZSx0LHIsaSl7aWYoInN0cmluZyI9PXR5cGVvZiBpKWlmKC0xIT09aS5pbmRleE9mKCJmdW5jdGlvbiIpKWk9WWUuamdyaWQucnVuQ29kZShpKTtlbHNlIHN3aXRjaChpKXtjYXNlIl9fRU1QVFlfQVJSQVlfIjppPVtdO2JyZWFrO2Nhc2UiX19FTVBUWV9TVFJJTkdfIjppPSIiO2JyZWFrO2Nhc2UiZmFsc2UiOmk9ITE7YnJlYWs7Y2FzZSJ0cnVlIjppPSEwfW9bdF0/KDE9PT1yJiYoZVt0XT1bXSksZVt0XVtlW3RdLmxlbmd0aF09aSk6MT09PXI/ZVt0XT1pOjI9PT1yP2VbdF09W2VbdF0saV06ZVt0XVtlW3RdLmxlbmd0aF09aX0scD1mdW5jdGlvbihlKXtpZig3IT09ZS5ub2RlVHlwZSl7aWYoMz09PWUubm9kZVR5cGV8fDQ9PT1lLm5vZGVUeXBlKXJldHVybiBudWxsPT1lLm5vZGVWYWx1ZS5tYXRjaCgvW15ceDAwLVx4MjBdLyk/dm9pZCAwOmUubm9kZVZhbHVlO3ZhciB0LHIsaSxvPXt9O2lmKGUuYXR0cmlidXRlcyYmZS5hdHRyaWJ1dGVzLmxlbmd0aClmb3IodD17fSxuPTA7bjxlLmF0dHJpYnV0ZXMubGVuZ3RoO24rKykic3RyaW5nIj09dHlwZW9mKHI9ZS5hdHRyaWJ1dGVzW25dLm5vZGVOYW1lKSYmKGk9ZS5hdHRyaWJ1dGVzW25dLm5vZGVWYWx1ZSkmJih2b2lkIDA9PT1vW3I9cy5hdHRyX3ByZWZpeCtyXSYmKG9bcl09MCksb1tyXSsrLGQodCxyLG9bcl0saSkpO2lmKGUuY2hpbGROb2RlcyYmZS5jaGlsZE5vZGVzLmxlbmd0aCl7Zm9yKHZhciBhPXQ/ITE6ITAsbj0wO248ZS5jaGlsZE5vZGVzLmxlbmd0aCYmYTtuKyspe3ZhciBsPWUuY2hpbGROb2Rlc1tuXS5ub2RlVHlwZTszIT09bCYmNCE9PWwmJihhPSExKX1pZihhKWZvcih0PXR8fCIiLG49MDtuPGUuY2hpbGROb2Rlcy5sZW5ndGg7bisrKXQrPWUuY2hpbGROb2Rlc1tuXS5ub2RlVmFsdWU7ZWxzZSBmb3IodD10fHx7fSxuPTA7bjxlLmNoaWxkTm9kZXMubGVuZ3RoO24rKykic3RyaW5nIj09dHlwZW9mKHI9ZS5jaGlsZE5vZGVzW25dLm5vZGVOYW1lKSYmKGk9cChlLmNoaWxkTm9kZXNbbl0pKSYmKHZvaWQgMD09PW9bcl0mJihvW3JdPTApLG9bcl0rKyxkKHQscixvW3JdLGkpKX1yZXR1cm4gdH19LHQ9cChlKTtyZXR1cm4gb1tlLm5vZGVOYW1lXSYmKHQ9W3RdKSwxMSE9PWUubm9kZVR5cGUmJigoaT17fSlbZS5ub2RlTmFtZV09dCx0PWkpLHR9fSxzYXZlQXM6ZnVuY3Rpb24oZSx0LHIpe3I9WWUuZXh0ZW5kKCEwLHt0eXBlOiJwbGFpbi90ZXh0O2NoYXJzZXQ9dXRmLTgifSxyfHx7fSk7dmFyIGksbyxhLG49W107dD1udWxsPT10fHwiIj09PXQ/ImpxR3JpZEZpbGUudHh0Ijp0LEFycmF5LmlzQXJyYXkoZSk/bj1lOm5bMF09ZTt0cnl7aT1uZXcgRmlsZShuLHQscil9Y2F0Y2goZSl7aT1uZXcgQmxvYihuLHIpfXdpbmRvdy5uYXZpZ2F0b3ImJndpbmRvdy5uYXZpZ2F0b3IubXNTYXZlT3JPcGVuQmxvYj93aW5kb3cubmF2aWdhdG9yLm1zU2F2ZU9yT3BlbkJsb2IoaSx0KToobz1VUkwuY3JlYXRlT2JqZWN0VVJMKGkpLChhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKSkuaHJlZj1vLGEuZG93bmxvYWQ9dCxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpLGEuY2xpY2soKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChhKSx3aW5kb3cuVVJMLnJldm9rZU9iamVjdFVSTChvKX0sMCkpfSxjc3ZUb0FycmF5OmZ1bmN0aW9uKGUsdCl7dm9pZCAwPT09dCYmKHQ9IiwiKTtmb3IodmFyIHIsaSxvPVtdLGE9W10sbj17fSxsPTAscz0wLGQ9bmV3IFJlZ0V4cCgiKFxcIit0Kyd8XFxyP1xcbnxcXHJ8XikoPzoiKFteIl0qKD86IiJbXiJdKikqKSJ8KFteIlxcJyt0KyJcXHJcXG5dKikpIiwiZ2kiKTtyPWQuZXhlYyhlKTspe3ZhciBwPXJbMV07cC5sZW5ndGgmJnAhPT10JiYocysrLG49e30sbD0wKSxwPXJbMl0/clsyXS5yZXBsYWNlKG5ldyBSZWdFeHAoJyIiJywiZyIpLCciJyk6clszXSwwPT09cz8oby5wdXNoKHApLGk9by5sZW5ndGgpOihuW29bbF1dPXAsbD09PWktMT9hLnB1c2gobik6bCsrKX1yZXR1cm4gYX19KSxZZS5qZ3JpZD1ZZS5qZ3JpZHx8e30sWWUuZXh0ZW5kKFllLmpncmlkLHtmb3JtYXRDZWxsOmZ1bmN0aW9uKGUsdCxyLGksbyxhKXtyZXR1cm4gdm9pZCAwIT09aS5mb3JtYXR0ZXI/KHQ9e3Jvd0lkOiIiLGNvbE1vZGVsOmksZ2lkOm8ucC5pZCxwb3M6dCxzdHlsZVVJOiIiLGlzRXhwb3J0ZWQ6ITAsZXhwb3J0dHlwZTphfSxZZS5qZ3JpZC5pc0Z1bmN0aW9uKGkuZm9ybWF0dGVyKT9pLmZvcm1hdHRlci5jYWxsKG8sZSx0LHIpOlllLmZtYXR0ZXI/WWUuZm4uZm1hdHRlci5jYWxsKG8saS5mb3JtYXR0ZXIsZSx0LHIpOmUpOmV9LGZvcm1hdENlbGxDc3Y6ZnVuY3Rpb24odCxlKXt0PW51bGw9PXQ/IiI6U3RyaW5nKHQpO3RyeXt0PVllLmpncmlkLnN0cmlwSHRtbCh0LnJlcGxhY2UoZS5fcmVnZXhzZXAsZS5zZXBhcmF0b3JSZXBsYWNlKS5yZXBsYWNlKC9cclxuL2csZS5yZXBsYWNlTmV3TGluZSkucmVwbGFjZSgvXG4vZyxlLnJlcGxhY2VOZXdMaW5lKSl9Y2F0Y2goZSl7dD0iIn1yZXR1cm4gdD0tMSE9PSh0PWUuZXNjcXVvdGU/dC5yZXBsYWNlKGUuX3JlZ2V4cXVvdCxlLmVzY3F1b3RlK2UucXVvdGUpOnQpLmluZGV4T2YoZS5zZXBhcmF0b3IpJiYtMSE9PXQuaW5kZXhPZihlLnFvdXRlKT90OmUucXVvdGUrdCtlLnF1b3RlfSxleGNlbENlbGxQb3M6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PSJBIi5jaGFyQ29kZUF0KDApLHI9IloiLmNoYXJDb2RlQXQoMCktdCsxLGk9IiI7MDw9ZTspaT1TdHJpbmcuZnJvbUNoYXJDb2RlKGUlcit0KStpLGU9TWF0aC5mbG9vcihlL3IpLTE7cmV0dXJuIGl9LG1ha2VOb2RlOmZ1bmN0aW9uKGUsdCxyKXt2YXIgaT1lLmNyZWF0ZUVsZW1lbnQodCk7cmV0dXJuIHImJihyLmF0dHImJlllKGkpLmF0dHIoci5hdHRyKSxyLmNoaWxkcmVuJiZZZS5lYWNoKHIuY2hpbGRyZW4sZnVuY3Rpb24oZSx0KXtpLmFwcGVuZENoaWxkKHQpfSksci5oYXNPd25Qcm9wZXJ0eSgidGV4dCIpKSYmaS5hcHBlbmRDaGlsZChlLmNyZWF0ZVRleHROb2RlKHIudGV4dCkpLGl9LHhtbFRvWmlwOmZ1bmN0aW9uKG8sZSl7dmFyIGEsbixsLHMsZCxwPXRoaXMsYz1uZXcgWE1MU2VyaWFsaXplcix1PS0xPT09Yy5zZXJpYWxpemVUb1N0cmluZyhZZS5wYXJzZVhNTChZZS5qZ3JpZC5leGNlbFN0cmluZ3NbInhsL3dvcmtzaGVldHMvc2hlZXQxLnhtbCJdKSkuaW5kZXhPZigieG1sbnM6ciIpLGg9W107WWUuZWFjaChlLGZ1bmN0aW9uKGUsdCl7aWYoWWUuaXNQbGFpbk9iamVjdCh0KSlkPW8uZm9sZGVyKGUpLHAueG1sVG9aaXAoZCx0KTtlbHNle2lmKHUpe2ZvcihhPXQuY2hpbGROb2Rlc1swXSxuPWEuYXR0cmlidXRlcy5sZW5ndGgtMTswPD1uO24tLSl7dmFyIHI9YS5hdHRyaWJ1dGVzW25dLm5vZGVOYW1lLGk9YS5hdHRyaWJ1dGVzW25dLm5vZGVWYWx1ZTstMSE9PXIuaW5kZXhPZigiOiIpJiYoaC5wdXNoKHtuYW1lOnIsdmFsdWU6aX0pLGEucmVtb3ZlQXR0cmlidXRlKHIpKX1mb3Iobj0wLGw9aC5sZW5ndGg7bjxsO24rKykocz10LmNyZWF0ZUF0dHJpYnV0ZShoW25dLm5hbWUucmVwbGFjZSgiOiIsIl9kdF9iX25hbWVzcGFjZV90b2tlbl8iKSkpLnZhbHVlPWhbbl0udmFsdWUsYS5zZXRBdHRyaWJ1dGVOb2RlKHMpfWQ9Yy5zZXJpYWxpemVUb1N0cmluZyh0KSxkPShkPXU/KGQ9LTE9PT1kLmluZGV4T2YoIjw/eG1sIik/Jzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4nK2Q6ZCkucmVwbGFjZSgvX2R0X2JfbmFtZXNwYWNlX3Rva2VuXy9nLCI6Iik6ZCkucmVwbGFjZSgvPHJvdyB4bWxucz0iIiAvZywiPHJvdyAiKS5yZXBsYWNlKC88Y29scyB4bWxucz0iIj4vZywiPGNvbHM+IikucmVwbGFjZSgvPG1lcmdlQ2VsbHMgeG1sbnM9IiIgL2csIjxtZXJnZUNlbGxzICIpLnJlcGxhY2UoLzxudW1GbXQgeG1sbnM9IiIgL2csIjxudW1GbXQgIikucmVwbGFjZSgvPHhmIHhtbG5zPSIiIC9nLCI8eGYgIiksby5maWxlKGUsZCl9fSl9LGV4Y2VsU3RyaW5nczp7Il9yZWxzLy5yZWxzIjonPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI/PjxSZWxhdGlvbnNoaXBzIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvcGFja2FnZS8yMDA2L3JlbGF0aW9uc2hpcHMiPjxSZWxhdGlvbnNoaXAgSWQ9InJJZDEiIFR5cGU9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvb2ZmaWNlRG9jdW1lbnQiIFRhcmdldD0ieGwvd29ya2Jvb2sueG1sIi8+PC9SZWxhdGlvbnNoaXBzPicsInhsL19yZWxzL3dvcmtib29rLnhtbC5yZWxzIjonPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI/PjxSZWxhdGlvbnNoaXBzIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvcGFja2FnZS8yMDA2L3JlbGF0aW9uc2hpcHMiPjxSZWxhdGlvbnNoaXAgSWQ9InJJZDEiIFR5cGU9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvd29ya3NoZWV0IiBUYXJnZXQ9IndvcmtzaGVldHMvc2hlZXQxLnhtbCIvPjxSZWxhdGlvbnNoaXAgSWQ9InJJZDIiIFR5cGU9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvc3R5bGVzIiBUYXJnZXQ9InN0eWxlcy54bWwiLz48L1JlbGF0aW9uc2hpcHM+JywiW0NvbnRlbnRfVHlwZXNdLnhtbCI6Jzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz48VHlwZXMgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9wYWNrYWdlLzIwMDYvY29udGVudC10eXBlcyI+PERlZmF1bHQgRXh0ZW5zaW9uPSJ4bWwiIENvbnRlbnRUeXBlPSJhcHBsaWNhdGlvbi94bWwiIC8+PERlZmF1bHQgRXh0ZW5zaW9uPSJyZWxzIiBDb250ZW50VHlwZT0iYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLXBhY2thZ2UucmVsYXRpb25zaGlwcyt4bWwiIC8+PERlZmF1bHQgRXh0ZW5zaW9uPSJqcGVnIiBDb250ZW50VHlwZT0iaW1hZ2UvanBlZyIgLz48T3ZlcnJpZGUgUGFydE5hbWU9Ii94bC93b3JrYm9vay54bWwiIENvbnRlbnRUeXBlPSJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldC5tYWluK3htbCIgLz48T3ZlcnJpZGUgUGFydE5hbWU9Ii94bC93b3Jrc2hlZXRzL3NoZWV0MS54bWwiIENvbnRlbnRUeXBlPSJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC53b3Jrc2hlZXQreG1sIiAvPjxPdmVycmlkZSBQYXJ0TmFtZT0iL3hsL3N0eWxlcy54bWwiIENvbnRlbnRUeXBlPSJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zdHlsZXMreG1sIiAvPjwvVHlwZXM+JywieGwvd29ya2Jvb2sueG1sIjonPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI/Pjx3b3JrYm9vayB4bWxucz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3NwcmVhZHNoZWV0bWwvMjAwNi9tYWluIiB4bWxuczpyPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzIj48ZmlsZVZlcnNpb24gYXBwTmFtZT0ieGwiIGxhc3RFZGl0ZWQ9IjUiIGxvd2VzdEVkaXRlZD0iNSIgcnVwQnVpbGQ9IjI0ODE2Ii8+PHdvcmtib29rUHIgc2hvd0lua0Fubm90YXRpb249IjAiIGF1dG9Db21wcmVzc1BpY3R1cmVzPSIwIi8+PGJvb2tWaWV3cz48d29ya2Jvb2tWaWV3IHhXaW5kb3c9IjAiIHlXaW5kb3c9IjAiIHdpbmRvd1dpZHRoPSIyNTYwMCIgd2luZG93SGVpZ2h0PSIxOTAyMCIgdGFiUmF0aW89IjUwMCIvPjwvYm9va1ZpZXdzPjxzaGVldHM+PHNoZWV0IG5hbWU9IlNoZWV0MSIgc2hlZXRJZD0iMSIgcjppZD0icklkMSIvPjwvc2hlZXRzPjwvd29ya2Jvb2s+JywieGwvd29ya3NoZWV0cy9zaGVldDEueG1sIjonPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI/Pjx3b3Jrc2hlZXQgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9zcHJlYWRzaGVldG1sLzIwMDYvbWFpbiIgeG1sbnM6cj0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcyIgeG1sbnM6bWM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9tYXJrdXAtY29tcGF0aWJpbGl0eS8yMDA2IiBtYzpJZ25vcmFibGU9IngxNGFjIiB4bWxuczp4MTRhYz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2Uvc3ByZWFkc2hlZXRtbC8yMDA5LzkvYWMiPjxzaGVldERhdGEvPjwvd29ya3NoZWV0PicsInhsL3N0eWxlcy54bWwiOic8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjxzdHlsZVNoZWV0IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvc3ByZWFkc2hlZXRtbC8yMDA2L21haW4iIHhtbG5zOm1jPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvbWFya3VwLWNvbXBhdGliaWxpdHkvMjAwNiIgbWM6SWdub3JhYmxlPSJ4MTRhYyIgeG1sbnM6eDE0YWM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlL3NwcmVhZHNoZWV0bWwvMjAwOS85L2FjIj48bnVtRm10cyBjb3VudD0iNyI+PG51bUZtdCBudW1GbXRJZD0iMTY0IiBmb3JtYXRDb2RlPSIjLCMjMC4wMF8tIFskJC00NUNdIi8+PG51bUZtdCBudW1GbXRJZD0iMTY1IiBmb3JtYXRDb2RlPSImcXVvdDvCoyZxdW90OyMsIyMwLjAwIi8+PG51bUZtdCBudW1GbXRJZD0iMTY2IiBmb3JtYXRDb2RlPSJbJOKCrC0yXSAjLCMjMC4wMCIvPjxudW1GbXQgbnVtRm10SWQ9IjE2NyIgZm9ybWF0Q29kZT0iMC4wJSIvPjxudW1GbXQgbnVtRm10SWQ9IjE2OCIgZm9ybWF0Q29kZT0iIywjIzA7KCMsIyMwKSIvPjxudW1GbXQgbnVtRm10SWQ9IjE2OSIgZm9ybWF0Q29kZT0iIywjIzAuMDA7KCMsIyMwLjAwKSIvPjxudW1GbXQgbnVtRm10SWQ9IjE3MCIgZm9ybWF0Q29kZT0ieXl5eS9tbS9kZDtAIi8+PC9udW1GbXRzPjxmb250cyBjb3VudD0iNSIgeDE0YWM6a25vd25Gb250cz0iMSI+PGZvbnQ+PHN6IHZhbD0iMTEiIC8+PG5hbWUgdmFsPSJDYWxpYnJpIiAvPjwvZm9udD48Zm9udD48c3ogdmFsPSIxMSIgLz48bmFtZSB2YWw9IkNhbGlicmkiIC8+PGNvbG9yIHJnYj0iRkZGRkZGRkYiIC8+PC9mb250Pjxmb250PjxzeiB2YWw9IjExIiAvPjxuYW1lIHZhbD0iQ2FsaWJyaSIgLz48YiAvPjwvZm9udD48Zm9udD48c3ogdmFsPSIxMSIgLz48bmFtZSB2YWw9IkNhbGlicmkiIC8+PGkgLz48L2ZvbnQ+PGZvbnQ+PHN6IHZhbD0iMTEiIC8+PG5hbWUgdmFsPSJDYWxpYnJpIiAvPjx1IC8+PC9mb250PjwvZm9udHM+PGZpbGxzIGNvdW50PSI2Ij48ZmlsbD48cGF0dGVybkZpbGwgcGF0dGVyblR5cGU9Im5vbmUiIC8+PC9maWxsPjxmaWxsLz48ZmlsbD48cGF0dGVybkZpbGwgcGF0dGVyblR5cGU9InNvbGlkIj48ZmdDb2xvciByZ2I9IkZGRDlEOUQ5IiAvPjxiZ0NvbG9yIGluZGV4ZWQ9IjY0IiAvPjwvcGF0dGVybkZpbGw+PC9maWxsPjxmaWxsPjxwYXR0ZXJuRmlsbCBwYXR0ZXJuVHlwZT0ic29saWQiPjxmZ0NvbG9yIHJnYj0iRkZEOTk3OTUiIC8+PGJnQ29sb3IgaW5kZXhlZD0iNjQiIC8+PC9wYXR0ZXJuRmlsbD48L2ZpbGw+PGZpbGw+PHBhdHRlcm5GaWxsIHBhdHRlcm5UeXBlPSJzb2xpZCI+PGZnQ29sb3IgcmdiPSJmZmM2ZWZjZSIgLz48YmdDb2xvciBpbmRleGVkPSI2NCIgLz48L3BhdHRlcm5GaWxsPjwvZmlsbD48ZmlsbD48cGF0dGVybkZpbGwgcGF0dGVyblR5cGU9InNvbGlkIj48ZmdDb2xvciByZ2I9ImZmYzZjZmVmIiAvPjxiZ0NvbG9yIGluZGV4ZWQ9IjY0IiAvPjwvcGF0dGVybkZpbGw+PC9maWxsPjwvZmlsbHM+PGJvcmRlcnMgY291bnQ9IjIiPjxib3JkZXI+PGxlZnQgLz48cmlnaHQgLz48dG9wIC8+PGJvdHRvbSAvPjxkaWFnb25hbCAvPjwvYm9yZGVyPjxib3JkZXIgZGlhZ29uYWxVcD0iZmFsc2UiIGRpYWdvbmFsRG93bj0iZmFsc2UiPjxsZWZ0IHN0eWxlPSJ0aGluIj48Y29sb3IgYXV0bz0iMSIgLz48L2xlZnQ+PHJpZ2h0IHN0eWxlPSJ0aGluIj48Y29sb3IgYXV0bz0iMSIgLz48L3JpZ2h0Pjx0b3Agc3R5bGU9InRoaW4iPjxjb2xvciBhdXRvPSIxIiAvPjwvdG9wPjxib3R0b20gc3R5bGU9InRoaW4iPjxjb2xvciBhdXRvPSIxIiAvPjwvYm90dG9tPjxkaWFnb25hbCAvPjwvYm9yZGVyPjwvYm9yZGVycz48Y2VsbFN0eWxlWGZzIGNvdW50PSIxIj48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMCIgZmlsbElkPSIwIiBib3JkZXJJZD0iMCIgLz48L2NlbGxTdHlsZVhmcz48Y2VsbFhmcyBjb3VudD0iNjkiPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIwIiBmaWxsSWQ9IjAiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMSIgZmlsbElkPSIwIiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjIiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIzIiBmaWxsSWQ9IjAiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iNCIgZmlsbElkPSIwIiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjAiIGZpbGxJZD0iMiIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIxIiBmaWxsSWQ9IjIiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMiIgZmlsbElkPSIyIiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjMiIGZpbGxJZD0iMiIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSI0IiBmaWxsSWQ9IjIiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMCIgZmlsbElkPSIzIiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjEiIGZpbGxJZD0iMyIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIyIiBmaWxsSWQ9IjMiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMyIgZmlsbElkPSIzIiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjQiIGZpbGxJZD0iMyIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIwIiBmaWxsSWQ9IjQiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMSIgZmlsbElkPSI0IiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjIiIGZpbGxJZD0iNCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIzIiBmaWxsSWQ9IjQiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iNCIgZmlsbElkPSI0IiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjAiIGZpbGxJZD0iNSIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIxIiBmaWxsSWQ9IjUiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMiIgZmlsbElkPSI1IiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjMiIGZpbGxJZD0iNSIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSI0IiBmaWxsSWQ9IjUiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMCIgZmlsbElkPSIwIiBib3JkZXJJZD0iMSIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjEiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjEiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIyIiBmaWxsSWQ9IjAiIGJvcmRlcklkPSIxIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMyIgZmlsbElkPSIwIiBib3JkZXJJZD0iMSIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjQiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjEiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIwIiBmaWxsSWQ9IjIiIGJvcmRlcklkPSIxIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMSIgZmlsbElkPSIyIiBib3JkZXJJZD0iMSIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjIiIGZpbGxJZD0iMiIgYm9yZGVySWQ9IjEiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIzIiBmaWxsSWQ9IjIiIGJvcmRlcklkPSIxIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iNCIgZmlsbElkPSIyIiBib3JkZXJJZD0iMSIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjAiIGZpbGxJZD0iMyIgYm9yZGVySWQ9IjEiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIxIiBmaWxsSWQ9IjMiIGJvcmRlcklkPSIxIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMiIgZmlsbElkPSIzIiBib3JkZXJJZD0iMSIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjMiIGZpbGxJZD0iMyIgYm9yZGVySWQ9IjEiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSI0IiBmaWxsSWQ9IjMiIGJvcmRlcklkPSIxIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMCIgZmlsbElkPSI0IiBib3JkZXJJZD0iMSIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjEiIGZpbGxJZD0iNCIgYm9yZGVySWQ9IjEiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIyIiBmaWxsSWQ9IjQiIGJvcmRlcklkPSIxIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMyIgZmlsbElkPSI0IiBib3JkZXJJZD0iMSIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjQiIGZpbGxJZD0iNCIgYm9yZGVySWQ9IjEiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIwIiBmaWxsSWQ9IjUiIGJvcmRlcklkPSIxIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMSIgZmlsbElkPSI1IiBib3JkZXJJZD0iMSIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjIiIGZpbGxJZD0iNSIgYm9yZGVySWQ9IjEiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIzIiBmaWxsSWQ9IjUiIGJvcmRlcklkPSIxIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iNCIgZmlsbElkPSI1IiBib3JkZXJJZD0iMSIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjAiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIgeGZJZD0iMCIgYXBwbHlBbGlnbm1lbnQ9IjEiPjxhbGlnbm1lbnQgaG9yaXpvbnRhbD0ibGVmdCIvPjwveGY+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjAiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIgeGZJZD0iMCIgYXBwbHlBbGlnbm1lbnQ9IjEiPjxhbGlnbm1lbnQgaG9yaXpvbnRhbD0iY2VudGVyIi8+PC94Zj48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMCIgZmlsbElkPSIwIiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIiB4ZklkPSIwIiBhcHBseUFsaWdubWVudD0iMSI+PGFsaWdubWVudCBob3Jpem9udGFsPSJyaWdodCIvPjwveGY+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjAiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIgeGZJZD0iMCIgYXBwbHlBbGlnbm1lbnQ9IjEiPjxhbGlnbm1lbnQgaG9yaXpvbnRhbD0iZmlsbCIvPjwveGY+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjAiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIgeGZJZD0iMCIgYXBwbHlBbGlnbm1lbnQ9IjEiPjxhbGlnbm1lbnQgdGV4dFJvdGF0aW9uPSI5MCIvPjwveGY+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjAiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIgeGZJZD0iMCIgYXBwbHlBbGlnbm1lbnQ9IjEiPjxhbGlnbm1lbnQgd3JhcFRleHQ9IjEiLz48L3hmPjx4ZiBudW1GbXRJZD0iOSIgICBmb250SWQ9IjAiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIgeGZJZD0iMCIgYXBwbHlOdW1iZXJGb3JtYXQ9IjEiLz48eGYgbnVtRm10SWQ9IjE2NCIgZm9udElkPSIwIiBmaWxsSWQ9IjAiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiIHhmSWQ9IjAiIGFwcGx5TnVtYmVyRm9ybWF0PSIxIi8+PHhmIG51bUZtdElkPSIxNjUiIGZvbnRJZD0iMCIgZmlsbElkPSIwIiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIiB4ZklkPSIwIiBhcHBseU51bWJlckZvcm1hdD0iMSIvPjx4ZiBudW1GbXRJZD0iMTY2IiBmb250SWQ9IjAiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIgeGZJZD0iMCIgYXBwbHlOdW1iZXJGb3JtYXQ9IjEiLz48eGYgbnVtRm10SWQ9IjE2NyIgZm9udElkPSIwIiBmaWxsSWQ9IjAiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiIHhmSWQ9IjAiIGFwcGx5TnVtYmVyRm9ybWF0PSIxIi8+PHhmIG51bUZtdElkPSIxNjgiIGZvbnRJZD0iMCIgZmlsbElkPSIwIiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIiB4ZklkPSIwIiBhcHBseU51bWJlckZvcm1hdD0iMSIvPjx4ZiBudW1GbXRJZD0iMTY5IiBmb250SWQ9IjAiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIgeGZJZD0iMCIgYXBwbHlOdW1iZXJGb3JtYXQ9IjEiLz48eGYgbnVtRm10SWQ9IjMiIGZvbnRJZD0iMCIgZmlsbElkPSIwIiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIiB4ZklkPSIwIiBhcHBseU51bWJlckZvcm1hdD0iMSIvPjx4ZiBudW1GbXRJZD0iNCIgZm9udElkPSIwIiBmaWxsSWQ9IjAiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiIHhmSWQ9IjAiIGFwcGx5TnVtYmVyRm9ybWF0PSIxIi8+PHhmIG51bUZtdElkPSIxIiBmb250SWQ9IjAiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIgeGZJZD0iMCIgYXBwbHlOdW1iZXJGb3JtYXQ9IjEiLz48eGYgbnVtRm10SWQ9IjIiIGZvbnRJZD0iMCIgZmlsbElkPSIwIiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIiB4ZklkPSIwIiBhcHBseU51bWJlckZvcm1hdD0iMSIvPjx4ZiBudW1GbXRJZD0iMTcwIiBmb250SWQ9IjAiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIgeGZJZD0iMCIgYXBwbHlOdW1iZXJGb3JtYXQ9IjEiLz48eGYgbnVtRm10SWQ9IjQ5IiBmb250SWQ9IjAiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiIHhmSWQ9IjAiIGFwcGx5TnVtYmVyRm9ybWF0PSIxIi8+PC9jZWxsWGZzPjxjZWxsU3R5bGVzIGNvdW50PSIxIj48Y2VsbFN0eWxlIG5hbWU9Ik5vcm1hbCIgeGZJZD0iMCIgYnVpbHRpbklkPSIwIiAvPjwvY2VsbFN0eWxlcz48ZHhmcyBjb3VudD0iMCIgLz48dGFibGVTdHlsZXMgY291bnQ9IjAiIGRlZmF1bHRUYWJsZVN0eWxlPSJUYWJsZVN0eWxlTWVkaXVtOSIgZGVmYXVsdFBpdm90U3R5bGU9IlBpdm90U3R5bGVNZWRpdW00IiAvPjwvc3R5bGVTaGVldD4nfSxleGNlbFBhcnNlcnM6W3ttYXRjaDovXlwtP1xkK1wuXGQlJC8sc3R5bGU6NjAsZm10OmZ1bmN0aW9uKGUpe3JldHVybiBlLzEwMH19LHttYXRjaDovXlwtP1xkK1wuP1xkKiUkLyxzdHlsZTo1NixmbXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUvMTAwfX0se21hdGNoOi9eXC0/XCRbXGQsXSsuP1xkKiQvLHN0eWxlOjU3fSx7bWF0Y2g6L15cLT/Co1tcZCxdKy4/XGQqJC8sc3R5bGU6NTh9LHttYXRjaDovXlwtP+KCrFtcZCxdKy4/XGQqJC8sc3R5bGU6NTl9LHttYXRjaDovXlwtP1xkKyQvLHN0eWxlOjY1fSx7bWF0Y2g6L15cLT9cZCtcLlxkezJ9JC8sc3R5bGU6NjZ9LHttYXRjaDovXlwoW1xkLF0rXCkkLyxzdHlsZTo2MSxmbXQ6ZnVuY3Rpb24oZSl7cmV0dXJuLTEqZS5yZXBsYWNlKC9bXChcKV0vZywiIil9fSx7bWF0Y2g6L15cKFtcZCxdK1wuXGR7Mn1cKSQvLHN0eWxlOjYyLGZtdDpmdW5jdGlvbihlKXtyZXR1cm4tMSplLnJlcGxhY2UoL1tcKFwpXS9nLCIiKX19LHttYXRjaDovXlwtP1tcZCxdKyQvLHN0eWxlOjYzfSx7bWF0Y2g6L15cLT9bXGQsXStcLlxkezJ9JC8sc3R5bGU6NjR9LHttYXRjaDovXlxkezR9XC1cZHsyfVwtXGR7Mn0kLyxzdHlsZTo2N30se21hdGNoOi8oaHR0cHM/OlwvXC8oPzp3d3dcLnwoPyF3d3cpKVteXHNcLl0rXC5bXlxzXXsyLH18d3d3XC5bXlxzXStcLlteXHNdezIsfSkvZ2ksc3R5bGU6NH1dLGFkZEV4Y2VsU3R5bGU6ZnVuY3Rpb24oZSx0LHIsaSl7dD1ZZS5leHRlbmQoe251bUZtdElkOiIwIixmb250SWQ6IjAiLGZpbGxJZDoiMCIsYm9yZGVySWQ6IjAiLGFwcGx5Rm9udDoiMSIsYXBwbHlGaWxsOiIxIixhcHBseUJvcmRlcjoiMSIseGZJZDoiMCIsYXBwbHlOdW1iZXJGb3JtYXQ6IjAiLGFwcGx5QWxpZ25tZW50OiIwIn0sdHx8e30pLHI9WWUuZXh0ZW5kKHtob3Jpem9udGFsOiJsZWZ0IixpbmRlbnQ6IjAiLHNocmlua1RvRml0OiIxIix0ZXh0Um90YXRpb246IjAiLHZlcnRpY2FsOiJjZW50ZXIiLHdyYXBUZXh0OiIwIn0scnx8e30pLFllLmlzRW1wdHlPYmplY3QoZSkmJihlLmV4Y2VsX3BhcnNlcnM9ITApO3ZhciBvLGEsbixsLHM9aS5nZXRFbGVtZW50c0J5VGFnTmFtZSgibnVtRm10cyIpWzBdLGQ9aS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiY2VsbFhmcyIpWzBdLHA9bnVsbCxjPW51bGw7Zm9yKG8gaW4gZSllLmhhc093blByb3BlcnR5KG8pJiYoLTEhPT1vLmluZGV4T2YoImZvcm1hdCIpJiYocD1vKSwtMSE9PW8uaW5kZXhPZigic3R5bGUiKSkmJihjPW8pO3JldHVybiBjJiYhZVtjXSYmKGE9bD0wLHAmJmVbcF0mJihuPVllKHMuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIm51bUZtdCIpKSxZZS5lYWNoKG4sZnVuY3Rpb24oZSx0KXtsKyssYT1NYXRoLm1heChhLHBhcnNlSW50KFllKHQpLmF0dHIoIm51bUZtdElkIiksMTApKX0pLG49WWUuamdyaWQubWFrZU5vZGUoaSwibnVtRm10Iix7YXR0cjp7bnVtRm10SWQ6YSsxLGZvcm1hdENvZGU6ZVtwXX19KSxzLmFwcGVuZENoaWxkKG4pLFllKHMpLmF0dHIoImNvdW50IixsKzEpKSxzPTAhPT1hP2ErMSsiIjoiMCIsbD0wLHQubnVtRm10SWQ9cyxuPSIxIj09PXQuYXBwbHlBbGlnbm1lbnQ/WWUuamdyaWQubWFrZU5vZGUoaSwieGYiLHthdHRyOnQsY2hpbGRyZW46W1llLmpncmlkLm1ha2VOb2RlKGksImFsaWdubWVudCIse2F0dHI6cn0pXX0pOlllLmpncmlkLm1ha2VOb2RlKGksInhmIix7YXR0cjp0fSksZC5hcHBlbmRDaGlsZChuKSxsPXBhcnNlSW50KFllKGQpLmF0dHIoImNvdW50IiksMTApLFllKGQpLmF0dHIoImNvdW50IixsKzEpLGVbY109bCsxKSxlfSxuZXdFeGNlbFN0eWxlOmZ1bmN0aW9uKGUsdCl7dD1ZZS5leHRlbmQoITAse2ZvbnQ6e3NpemU6MTEsbmFtZToiQ2FsaWJyaSIsb3B0aW9uczoiIn0sY29sb3I6e3BhdHRlcm5UeXBlOiJzb2xpZCIsZmdDb2xvcjoiRkZGRkZGRiIsYmdDb2xvcjo2NH19LHR8fHt9KTt2YXIgZT1lLnhsWyJzdHlsZXMueG1sIl0scj1ZZSgiY2VsbFhmcyB4ZiIsZSkubGVuZ3RoLTEsaT1ZZSgiZm9udHMgZm9udCIsZSkubGVuZ3RoLTEsbz1ZZSgiZmlsbHMgZmlsbCIsZSkubGVuZ3RoLTEsYT0nPGZvbnQ+PHN6IHZhbD0iJyt0LmZvbnQuc2l6ZSsnIiAvPjxuYW1lIHZhbD0iJyt0LmZvbnQubmFtZSsnIiAvPicrdC5mb250Lm9wdGlvbnMrIjwvZm9udD4iLGE9KGUuY2hpbGROb2Rlc1swXS5jaGlsZE5vZGVzWzFdLmlubmVySFRNTCs9YSwiaW5kZXhlZD0iKSx0PSgwPD1wYXJzZUludCh0LmNvbG9yLmJnQ29sb3IsMTApJiYoYT0icmdiPSIpLGErPSciJyt0LmNvbG9yLmJnQ29sb3IrJyInLCc8ZmlsbD48cGF0dGVybkZpbGwgcGF0dGVyblR5cGU9IicrdC5jb2xvci5wYXR0ZXJuVHlwZSsnIj48ZmdDb2xvciByZ2I9IicrdC5jb2xvci5mZ0NvbG9yKyciIC8+PGJnQ29sb3IgJythKyIgLz48L3BhdHRlcm5GaWxsPjwvZmlsbD4iKSxhPShlLmNoaWxkTm9kZXNbMF0uY2hpbGROb2Rlc1syXS5pbm5lckhUTUwrPXQsJzx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSInKygxK2kpKyciIGZpbGxJZD0iJysoMStvKSsnIiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIiB4ZklkPSIwIiBhcHBseUFsaWdubWVudD0iMSI+PC94Zj4nKTtyZXR1cm4gZS5jaGlsZE5vZGVzWzBdLmNoaWxkTm9kZXNbNV0uaW5uZXJIVE1MKz1hLDErcn19KSxZZS5qZ3JpZC5leHRlbmQoe2V4cG9ydFRvQ3N2OmZ1bmN0aW9uKFMpe1M9WWUuZXh0ZW5kKCEwLHtzZXBhcmF0b3I6IiwiLHNlcGFyYXRvclJlcGxhY2U6IiAiLHF1b3RlOiciJyxlc2NxdW90ZTonIicsbmV3TGluZToiXHJcbiIscmVwbGFjZU5ld0xpbmU6IiAiLGluY2x1ZGVDYXB0aW9uOiEwLGluY2x1ZGVMYWJlbHM6ITAsaW5jbHVkZUdyb3VwSGVhZGVyOiEwLGluY2x1ZGVGb290ZXI6ITAsaW5jbHVkZUhlYWRlcjohMCxmaWxlTmFtZToianFHcmlkRXhwb3J0LmNzdiIsbWltZXR5cGU6InRleHQvY3N2O2NoYXJzZXQ9dXRmLTgiLHJldHVybkFzU3RyaW5nOiExLG9uQmVmb3JlRXhwb3J0Om51bGwsdHJlZWluZGVudDoiICIsdmlzaWJsZVRyZWVOb2RlczohMSxsb2FkSW5kaWNhdG9yOiEwfSxTfHx7fSk7dmFyIGs9IiI7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe1MuX3JlZ2V4c2VwPW5ldyBSZWdFeHAoUy5zZXBhcmF0b3IsImciKSxTLl9yZWdleHF1b3Q9bmV3IFJlZ0V4cChTLnF1b3RlLCJnIik7dmFyIGUsdCxfPXRoaXMscj1fLnAudHJlZUdyaWQ/WWUoXykuanFHcmlkKCJnZXRSb3dEYXRhIixudWxsLCEwLFMudHJlZWluZGVudCxTLnZpc2libGVUcmVlTm9kZXMpOl8uYWRkTG9jYWxEYXRhKCEwKSxpPXIubGVuZ3RoLG89Xy5wLmNvbE1vZGVsLGE9by5sZW5ndGgsbj1fLnAuY29sTmFtZXMsbD0wLHM9IiIsZD0iIixwPSIiLGM9IiIsdT0iIixoPVtdLGc9IiI7ZnVuY3Rpb24gZihwLGMpe3ZhciB1PSIiLGg9Xy5wLmdyb3VwaW5nVmlldyxnPVtdLGY9aC5ncm91cEZpZWxkLmxlbmd0aCxtPV8ucC5jb2xNb2RlbCx2PW0ubGVuZ3RoLGo9MDtmdW5jdGlvbiBiKGUsdCxyLGkpe2Zvcih2YXIgbyxhLG49ZnVuY3Rpb24oZSx0LHIpe3ZhciBpLG89ITE7aWYoMD09PXQpbz1yW2VdO2Vsc2V7dmFyIGE9cltlXS5pZHg7aWYoMD09PWEpbz1yW2VdO2Vsc2UgZm9yKGk9ZTswPD1pO2ktLSlpZihyW2ldLmlkeD09PWEtdCl7bz1yW2ldO2JyZWFrfX1yZXR1cm4gb30oZSx0LHIpLGw9bi5jbnQscz1uZXcgQXJyYXkoYy5jb2xsZW4pLGQ9MCxwPWk7cDx2O3ArKyltW3BdLl9leHBjb2wmJihhPSJ7MH0iLFllLmVhY2gobi5zdW1tYXJ5LGZ1bmN0aW9uKCl7aWYodGhpcy5ubT09PW1bcF0ubmFtZSl7bVtwXS5zdW1tYXJ5VHBsJiYoYT1tW3BdLnN1bW1hcnlUcGwpLG89dGhpcy52LCJzdHJpbmciPT10eXBlb2YgdGhpcy5zdCYmImF2ZyI9PT10aGlzLnN0LnRvTG93ZXJDYXNlKCkmJih0aGlzLnNkJiZ0aGlzLnZkP289dGhpcy52L3RoaXMudmQ6dGhpcy52JiYwPGwmJihvPXRoaXMudi9sKSk7dHJ5e3RoaXMuZ3JvdXBDb3VudD1uLmNudCx0aGlzLmdyb3VwSW5kZXg9bi5kYXRhSW5kZXgsdGhpcy5ncm91cFZhbHVlPW4udmFsdWUsbz1fLmZvcm1hdHRlcigiIixvLHAsdGhpcyl9Y2F0Y2goZSl7bz10aGlzLnZ9cmV0dXJuIHNbZF09WWUuamdyaWQuZm9ybWF0Q2VsbENzdihZZS5qZ3JpZC5zdHJpcEh0bWwoWWUuamdyaWQudGVtcGxhdGUoYSxvKSksYyksITF9fSksZCsrKTtyZXR1cm4gc31ZZS5lYWNoKG0sZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9MDtyPGY7cisrKWlmKGguZ3JvdXBGaWVsZFtyXT09PXQubmFtZSl7Z1tyXT1lO2JyZWFrfX0pO3ZhciB3LHkseD1ZZS5tYWtlQXJyYXkoaC5ncm91cFN1bW1hcnkpO2lmKHgucmV2ZXJzZSgpLCJsb2NhbCI9PT1fLnAuZGF0YXR5cGUmJiFfLnAubG9hZG9uY2Upe1llKF8pLmpxR3JpZCgiZ3JvdXBpbmdTZXR1cCIpO2Zvcih2YXIgZT1ZZS5qZ3JpZC5nZXRNZXRob2QoImdyb3VwaW5nUHJlcGFyZSIpLHQ9MDt0PGk7dCsrKWUuY2FsbChZZShfKSxyW3RdLHQpfXJldHVybiBZZS5lYWNoKGguZ3JvdXBzLGZ1bmN0aW9uKGUsdCl7aisrO3RyeXt3PUFycmF5LmlzQXJyYXkoaC5mb3JtYXREaXNwbGF5RmllbGQpJiZZZS5qZ3JpZC5pc0Z1bmN0aW9uKGguZm9ybWF0RGlzcGxheUZpZWxkW3QuaWR4XSk/aC5mb3JtYXREaXNwbGF5RmllbGRbdC5pZHhdLmNhbGwoXyx0LmRpc3BsYXlWYWx1ZSx0LnZhbHVlLF8ucC5jb2xNb2RlbFtnW3QuaWR4XV0sdC5pZHgsaCk6Xy5mb3JtYXR0ZXIoIiIsdC5kaXNwbGF5VmFsdWUsZ1t0LmlkeF0sdC52YWx1ZSl9Y2F0Y2goZSl7dz10LmRpc3BsYXlWYWx1ZX12YXIgcixpPSIiO2lmKCJzdHJpbmciIT10eXBlb2YoaT1ZZS5qZ3JpZC5pc0Z1bmN0aW9uKGguZ3JvdXBUZXh0W3QuaWR4XSk/aC5ncm91cFRleHRbdC5pZHhdLmNhbGwoXyx3LHQuY250LHQuc3VtbWFyeSk6WWUuamdyaWQudGVtcGxhdGUoaC5ncm91cFRleHRbdC5pZHhdLHcsdC5jbnQsdC5zdW1tYXJ5KSkmJiJudW1iZXIiIT10eXBlb2YgaSYmKGk9dyksKHI9ImhlYWRlciI9PT1oLmdyb3VwU3VtbWFyeVBvc1t0LmlkeF0/YihlLDAsaC5ncm91cHMsMCk6bmV3IEFycmF5KGMuY29sbGVuKSlbMF09WWUuamdyaWQuZm9ybWF0Q2VsbENzdihZZS5qZ3JpZC5zdHJpcEh0bWwoaSksYyksdSs9ci5qb2luKGMuc2VwYXJhdG9yKStjLm5ld0xpbmUsZi0xPT09dC5pZHgpe2Zvcih2YXIgbyxhLG4sbD1oLmdyb3Vwc1tlKzFdLGk9dC5zdGFydFJvdyxzPXZvaWQgMCE9PWw/bC5zdGFydFJvdzpoLmdyb3Vwc1tlXS5zdGFydFJvdytoLmdyb3Vwc1tlXS5jbnQsZD1pO2Q8cyYmcFsrZF07ZCsrKXtmb3IoYT1wWytkXSxvPXk9MDtvPG0ubGVuZ3RoO28rKyltW29dLl9leHBjb2wmJihyW3ldPVllLmpncmlkLmZvcm1hdENlbGxDc3YoWWUuamdyaWQuZm9ybWF0Q2VsbChZZS5qZ3JpZC5nZXRBY2Nlc3NvcihhLG1bb10ubmFtZSksbyxhLG1bb10sXywiY3N2IiksYykseSsrKTt1Kz1yLmpvaW4oYy5zZXBhcmF0b3IpK2MubmV3TGluZX1pZigiaGVhZGVyIiE9PWguZ3JvdXBTdW1tYXJ5UG9zW3QuaWR4XSl7aWYodm9pZCAwIT09bCl7Zm9yKG49MDtuPGguZ3JvdXBGaWVsZC5sZW5ndGgmJmwuZGF0YUluZGV4IT09aC5ncm91cEZpZWxkW25dO24rKyk7aj1oLmdyb3VwRmllbGQubGVuZ3RoLW59Zm9yKG89MDtvPGo7bysrKXhbb10mJihyPWIoZSxvLGguZ3JvdXBzLDApLHUrPXIuam9pbihjLnNlcGFyYXRvcikrYy5uZXdMaW5lKTtqPW59fX0pLHV9WWUuamdyaWQuaXNGdW5jdGlvbihTLmxvYWRJbmRpY2F0b3IpP1MubG9hZEluZGljYXRvci5jYWxsKF8sInNob3ciKTpTLmxvYWRJbmRpY2F0b3ImJlllKF8pLmpxR3JpZCgicHJvZ3Jlc3NCYXIiLHttZXRob2Q6InNob3ciLGxvYWR0eXBlOl8ucC5sb2FkdWksaHRtbGNvbnRlbnQ6WWUuamdyaWQuZ2V0UmVnaW9uYWwoXywiZGVmYXVsdHMubG9hZHRleHQiKX0pO3ZhciBtLHYsaj1bXTtpZihZZS5lYWNoKG8sZnVuY3Rpb24oZSx0KXt0Ll9leHBjb2w9ITAsdm9pZCAwPT09dC5leHBvcnRjb2w/dC5oaWRkZW4mJih0Ll9leHBjb2w9ITEpOnQuX2V4cGNvbD10LmV4cG9ydGNvbCwiY2IiIT09dC5uYW1lJiYicm4iIT09dC5uYW1lJiYic3ViZ3JpZCIhPT10Lm5hbWUmJiJzYyIhPT10Lm5hbWV8fCh0Ll9leHBjb2w9ITEpLHQuX2V4cGNvbCYmKGgucHVzaChZZS5qZ3JpZC5mb3JtYXRDZWxsQ3N2KG5bZV0sUykpLGoucHVzaCh0Lm5hbWUpKX0pLFMuaW5jbHVkZUxhYmVscyYmKHU9aC5qb2luKFMuc2VwYXJhdG9yKStTLm5ld0xpbmUpLFMuY29sbGVuPWgubGVuZ3RoLF8ucC5ncm91cGluZyl7dmFyIGI9ISFfLnAuZ3JvdXBpbmdWaWV3Ll9sb2NncjtfLnAuZ3JvdXBpbmdWaWV3Ll9sb2Nncj0hMSxzKz1mKHIsUyksXy5wLmdyb3VwaW5nVmlldy5fbG9jZ3I9Yn1lbHNlIGZvcig7bDxpOyl7Zm9yKGU9cltsXSxxPVtdLHk9dD0wO3k8YTt5Kyspb1t5XS5fZXhwY29sJiYocVt0XT1ZZS5qZ3JpZC5mb3JtYXRDZWxsQ3N2KFllLmpncmlkLmZvcm1hdENlbGwoWWUuamdyaWQuZ2V0QWNjZXNzb3IoZSxvW3ldLm5hbWUpLHksZSxvW3ldLF8sImNzdiIpLFMpLHQrKyk7cys9cS5qb2luKFMuc2VwYXJhdG9yKStTLm5ld0xpbmUsbCsrfWlmKHI9bnVsbCxxPW5ldyBBcnJheShTLmNvbGxlbiksUy5pbmNsdWRlQ2FwdGlvbiYmXy5wLmNhcHRpb24pe2ZvcihsPVMuY29sbGVuOy0tbDspcVtsXT0iIjtxWzBdPVllLmpncmlkLmZvcm1hdENlbGxDc3YoXy5wLmNhcHRpb24sUyksZCs9cS5qb2luKFMuc2VwYXJhdG9yKStTLm5ld0xpbmV9aWYoUy5pbmNsdWRlR3JvdXBIZWFkZXImJlllKF8pLmpxR3JpZCgiaXNHcm91cEhlYWRlck9uIikpZm9yKHZhciB3PV8ucC5ncm91cEhlYWRlcix5PTA7eTx3Lmxlbmd0aDt5Kyspe2Zvcih2YXIgeD13W3ldLmdyb3VwSGVhZGVycyxsPTAscT1bXSxDPTA7QzxqLmxlbmd0aDtDKyspe2ZvcihxW2xdPSIiLHQ9MDt0PHgubGVuZ3RoO3QrKyl4W3RdLnN0YXJ0Q29sdW1uTmFtZT09PWpbQ10mJihxW2xdPVllLmpncmlkLmZvcm1hdENlbGxDc3YoeFt0XS50aXRsZVRleHQsUykpO2wrK31wKz1xLmpvaW4oUy5zZXBhcmF0b3IpK1MubmV3TGluZX1pZihTLmluY2x1ZGVGb290ZXImJl8ucC5mb290ZXJyb3cpZm9yKHZhciBJLEQsRz1ZZShfKS5qcUdyaWQoImZvb3RlckRhdGEiLCJnZXRsZW5ndGgiKSxGPTA7RjxHO0YrKyl7Zm9yKEk9WWUoXykuanFHcmlkKCJmb290ZXJEYXRhIiwiZ2V0IixudWxsLCExLEYsITEpLHk9MCxxPVtdO3k8Uy5jb2xsZW47KUkuaGFzT3duUHJvcGVydHkoRD1qW3ldKSYmcS5wdXNoKFllLmpncmlkLmZvcm1hdENlbGxDc3YoWWUuamdyaWQuc3RyaXBIdG1sKElbRF0pLFMpKSx5Kys7Yys9cS5qb2luKFMuc2VwYXJhdG9yKStTLm5ld0xpbmV9aWYoUy5pbmNsdWRlSGVhZGVyJiZfLnAuaGVhZGVycm93KWZvcihHPVllKF8pLmpxR3JpZCgiaGVhZGVyRGF0YSIsImdldGxlbmd0aCIpLEY9MDtGPEc7RisrKXtmb3IobT1ZZShfKS5qcUdyaWQoImhlYWRlckRhdGEiLCJnZXQiLG51bGwsITEsRiwhMSkseT0wLHE9W107eTxTLmNvbGxlbjspbS5oYXNPd25Qcm9wZXJ0eSh2PWpbeV0pJiZxLnB1c2goWWUuamdyaWQuZm9ybWF0Q2VsbENzdihZZS5qZ3JpZC5zdHJpcEh0bWwobVt2XSksUykpLHkrKztnKz1xLmpvaW4oUy5zZXBhcmF0b3IpK1MubmV3TGluZX1pZihrPWQrcCt1K2crcytjLFllLmpncmlkLmlzRnVuY3Rpb24oUy5sb2FkSW5kaWNhdG9yKT9TLmxvYWRJbmRpY2F0b3IuY2FsbChfLCJoaWRlIik6Uy5sb2FkSW5kaWNhdG9yJiZZZShfKS5qcUdyaWQoInByb2dyZXNzQmFyIix7bWV0aG9kOiJoaWRlIixsb2FkdHlwZTpfLnAubG9hZHVpfSksWWUuamdyaWQuaXNGdW5jdGlvbihTLm9uQmVmb3JlRXhwb3J0KSYmIShrPVMub25CZWZvcmVFeHBvcnQuY2FsbChfLGspKSl0aHJvdyJCZWZvcmUgZXhwb3J0IGRvZXMgbm90IHJldHVybiBkYXRhISI7Uy5yZXR1cm5Bc1N0cmluZ3x8KC0xIT09Uy5taW1ldHlwZS50b1VwcGVyQ2FzZSgpLmluZGV4T2YoIlVURi04IikmJihrPSJcdWZlZmYiK2spLFllLmpncmlkLnNhdmVBcyhrLFMuZmlsZU5hbWUse3R5cGU6Uy5taW1ldHlwZX0pKX0pLGt9LGV4cG9ydFRvRXhjZWw6ZnVuY3Rpb24oZWUpe2VlPVllLmV4dGVuZCghMCx7aW5jbHVkZUxhYmVsczohMCxpbmNsdWRlR3JvdXBIZWFkZXI6ITAsaW5jbHVkZUZvb3RlcjohMCxpbmNsdWRlSGVhZGVyOiEwLGZpbGVOYW1lOiJqcUdyaWRFeHBvcnQueGxzeCIsbWltZXR5cGU6ImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0IixtYXhsZW5ndGg6NDAsb25CZWZvcmVFeHBvcnQ6bnVsbCxjdXN0b21pemVEYXRhOm51bGwscmVwbGFjZVN0cjpudWxsLHRyZWVpbmRlbnQ6IiAiLHZpc2libGVUcmVlTm9kZXM6ITEsbG9hZEluZGljYXRvcjohMH0sZWV8fHt9KSx0aGlzLmVhY2goZnVuY3Rpb24oKXtmb3IodmFyIGUsdCx3PXRoaXMscj1ZZS5qZ3JpZC5leGNlbFN0cmluZ3MsbT0wLHY9WWUucGFyc2VYTUwoclsieGwvd29ya3NoZWV0cy9zaGVldDEueG1sIl0pLEE9di5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2hlZXREYXRhIilbMF0saT1ZZS5wYXJzZVhNTChyWyJ4bC9zdHlsZXMueG1sIl0pLHI9e19yZWxzOnsiLnJlbHMiOlllLnBhcnNlWE1MKHJbIl9yZWxzLy5yZWxzIl0pfSx4bDp7X3JlbHM6eyJ3b3JrYm9vay54bWwucmVscyI6WWUucGFyc2VYTUwoclsieGwvX3JlbHMvd29ya2Jvb2sueG1sLnJlbHMiXSl9LCJ3b3JrYm9vay54bWwiOlllLnBhcnNlWE1MKHJbInhsL3dvcmtib29rLnhtbCJdKSwic3R5bGVzLnhtbCI6aSx3b3Jrc2hlZXRzOnsic2hlZXQxLnhtbCI6dn19LCJbQ29udGVudF9UeXBlc10ueG1sIjpZZS5wYXJzZVhNTChyWyJbQ29udGVudF9UeXBlc10ueG1sIl0pfSx5PXcucC5jb2xNb2RlbCxvPTAseD17Ym9keTp3LnAudHJlZUdyaWQ/WWUodykuanFHcmlkKCJnZXRSb3dEYXRhIixudWxsLCEwLGVlLnRyZWVpbmRlbnQsZWUudmlzaWJsZVRyZWVOb2Rlcyk6dy5hZGRMb2NhbERhdGEoITApLGhlYWRlcjpbXSxmb290ZXI6W10sd2lkdGg6W10sbWFwOltdLHBhcnNlcjpbXSxsYWJlbHM6W10saGlkZGVuOltdLG1lcmdlY2VsbDpbXX0sVD1ZZS5qZ3JpZC5hZGRFeGNlbFN0eWxlKHtleGNlbF9oZWFkZXJfc3R5bGU6IiJ9LHtmb250SWQ6IjIiLGFwcGx5QWxpZ25tZW50OiIxIn0se2hvcml6b250YWw6ImNlbnRlciIsdmVydGljYWw6ImNlbnRlciJ9LGkpLmV4Y2VsX2hlYWRlcl9zdHlsZSxhPTAsbj15Lmxlbmd0aDthPG47YSsrKXlbYV0uX2V4cGNvbD0hMCx2b2lkIDA9PT15W2FdLmV4cG9ydGNvbD95W2FdLmhpZGRlbiYmKHlbYV0uX2V4cGNvbD0hMSk6eVthXS5fZXhwY29sPXlbYV0uZXhwb3J0Y29sLHZvaWQgMD09PXlbYV0uX2NvbHNwYW5jZWxsJiYoeVthXS5fY29sc3BhbmNlbGw9ITEpLFllLmpncmlkLmlzU2VydmljZUNvbCh5W2FdLm5hbWUpfHwheVthXS5fZXhwY29sP3guaGlkZGVuLnB1c2goeVthXS5uYW1lKTooeC5oZWFkZXJbb109eVthXS5uYW1lLHgud2lkdGhbb109NSx4Lm1hcFtvXT1hLHgubGFiZWxzW29dPXcucC5jb2xOYW1lc1thXSx5W2FdLmhhc093blByb3BlcnR5KCJleHBvcnRvcHRpb25zIik/KGU9e30sdD17fSx5W2FdLmV4cG9ydG9wdGlvbnMuZXhjZWxfZm9ybWF0JiYoZT1ZZS5qZ3JpZC5hZGRFeGNlbFN0eWxlKHtleGNlbF9mb3JtYXQ6eVthXS5leHBvcnRvcHRpb25zLmV4Y2VsX2Zvcm1hdCxleGNlbF9zdHlsZTp5W2FdLmV4cG9ydG9wdGlvbnMuZXhjZWxfc3R5bGV8fCIifSx7fSx7fSxpKSkseVthXS5leHBvcnRvcHRpb25zLmV4Y2VsX2hlYWRlcl9mb3JtYXQmJih0PVllLmpncmlkLmFkZEV4Y2VsU3R5bGUoe2V4Y2VsX2hlYWRlcl9mb3JtYXQ6eVthXS5leHBvcnRvcHRpb25zLmV4Y2VsX2hlYWRlcl9mb3JtYXQsZXhjZWxfaGVhZGVyX3N0eWxlOnlbYV0uZXhwb3J0b3B0aW9ucy5leGNlbF9oZWFkZXJfc3R5bGV8fCIifSx7Zm9udElkOiIyIixhcHBseUFsaWdubWVudDoiMSJ9LHtob3Jpem9udGFsOiJjZW50ZXIifSxpKSkseC5wYXJzZXJbYV09WWUuZXh0ZW5kKGUsdCkseVthXS5leHBvcnRvcHRpb25zLnJlcGxhY2VfZm9ybWF0JiYoeC5wYXJzZXJbYV0ucmVwbGFjZV9mb3JtYXQ9eVthXS5leHBvcnRvcHRpb25zLnJlcGxhY2VfZm9ybWF0KSx5W2FdLmV4cG9ydG9wdGlvbnMucmVwbGFjZV9oZWFkZXJfZm9ybWF0JiYoeC5wYXJzZXJbYV0ucmVwbGFjZV9oZWFkZXJfZm9ybWF0PXlbYV0uZXhwb3J0b3B0aW9ucy5yZXBsYWNlX2hlYWRlcl9mb3JtYXQpKTp4LnBhcnNlclthXT17ZXhjZWxfcGFyc2VyczohMH0sbysrKTtpZihlZS5pbmNsdWRlRm9vdGVyfHx3LnAuZm9vdGVycm93KWZvcih2YXIgbCxQPVllKHcpLmpxR3JpZCgiZm9vdGVyRGF0YSIsImdldGxlbmd0aCIpLEI9MDtCPFA7QisrKXtmb3IobyBpbiBsPVllKHcpLmpxR3JpZCgiZm9vdGVyRGF0YSIsImdldCIsbnVsbCwhMSxCLCExKSlsLmhhc093blByb3BlcnR5KG8pJiYobFtvXT1ZZS5qZ3JpZC5zdHJpcEh0bWwobFtvXSkpO3guZm9vdGVyLnB1c2gobCl9ZnVuY3Rpb24gaihlLHQpe3JldHVybiBZZS5qZ3JpZC5tYWtlTm9kZSh2LCJjIix7YXR0cjplLGNoaWxkcmVuOltZZS5qZ3JpZC5tYWtlTm9kZSh2LCJ2Iix7dGV4dDp0fSldfSl9ZnVuY3Rpb24gYihlLHQscil7cmV0dXJuIFllLmpncmlkLm1ha2VOb2RlKHYsImMiLHthdHRyOnt0OiJpbmxpbmVTdHIiLHI6ZSxzOnI9dm9pZCAwPT09cj82ODpyfSxjaGlsZHJlbjp7cm93OlllLmpncmlkLm1ha2VOb2RlKHYsImlzIix7Y2hpbGRyZW46e3JvdzpZZS5qZ3JpZC5tYWtlTm9kZSh2LCJ0Iix7dGV4dDp0fSl9fSl9fSl9WWUuamdyaWQuaXNGdW5jdGlvbihlZS5jdXN0b21pemVEYXRhKSYmZWUuY3VzdG9taXplRGF0YS5jYWxsKHcseCk7dmFyIEUsXyx6PVllLmpncmlkLmlzRnVuY3Rpb24oZWUucmVwbGFjZVN0cik/ZWUucmVwbGFjZVN0cjpmdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKC88L2csIiZsdDsiKS5yZXBsYWNlKC8+L2csIiZndDsiKS5yZXBsYWNlKC9bXHgwMC1ceDA5XHgwQlx4MENceDBFLVx4MUZceDdGLVx4OUZdL2csIiIpfSxxPWZ1bmN0aW9uKGUsdCxyLGkpe3ZvaWQgMD09PXImJihyPSExKSx2b2lkIDA9PT1pJiYoaT0hMSksRT1tKzEsXz1ZZS5qZ3JpZC5tYWtlTm9kZSh2LCJyb3ciLHthdHRyOntyOkV9fSk7Zm9yKHZhciBvLGEsbj0wO248eC5oZWFkZXIubGVuZ3RoO24rKyl7dmFyIGwscyxkPVllLmpncmlkLmV4Y2VsQ2VsbFBvcyhuKSsiIitFLHA9KG51bGw9PShmPUFycmF5LmlzQXJyYXkoZSkmJnQ/eC5sYWJlbHNbbl06WWUuamdyaWQuZ2V0QWNjZXNzb3IoZSx4LmhlYWRlcltuXSkpJiYoZj0iIiksdHx8KGY9MD09PW4mJml8fGkmJiIiPT09Zj9mOlllLmpncmlkLmZvcm1hdENlbGwoZix4Lm1hcFtuXSxlLHlbeC5tYXBbbl1dLHcsImV4Y2VsIikpJiYoIiZuYnNwOyI9PT1mfHwiJiMxNjA7Ij09PWZ8fDE9PT1mLmxlbmd0aCYmMTYwPT09Zi5jaGFyQ29kZUF0KDApKSYmKGY9IiIpLHgud2lkdGhbbl09TWF0aC5tYXgoeC53aWR0aFtuXSxNYXRoLm1pbihwYXJzZUludChmLnRvU3RyaW5nKCkubGVuZ3RoLDEwKSxlZS5tYXhsZW5ndGgpKSxsPW51bGwseC5wYXJzZXJbeC5tYXBbbl1dKTtpZih0JiZyKXAucmVwbGFjZV9oZWFkZXJfZm9ybWF0JiYoZj1wLnJlcGxhY2VfaGVhZGVyX2Zvcm1hdChmKSksbD12b2lkIDAhPT1wLmV4Y2VsX2hlYWRlcl9zdHlsZT8idGV4dCI9PT1wLmV4Y2VsX2hlYWRlcl9zdHlsZT9iKGQsZik6cC5leGNlbF9oZWFkZXJfc3R5bGU8PTU1P2IoZCxmLHAuZXhjZWxfaGVhZGVyX3N0eWxlKTpqKHtyOmQsczpwLmV4Y2VsX2hlYWRlcl9zdHlsZX0sZik6YihkLGYsVCksXy5hcHBlbmRDaGlsZChsKTtlbHNlIGlmKCEwIT09cC5leGNlbF9wYXJzZXJzfHxsKXZvaWQgMD09PXAuZXhjZWxfc3R5bGV8fHR8fGx8fChwLnJlcGxhY2VfZm9ybWF0JiYoZj1wLnJlcGxhY2VfZm9ybWF0KGYpKSxsPSJ0ZXh0Ij09PXAuZXhjZWxfc3R5bGU/YihkLGYpOnAuZXhjZWxfc3R5bGU8PTU1P2IoZCxmLHAuZXhjZWxfc3R5bGUpOmooe3I6ZCxzOnAuZXhjZWxfc3R5bGV9LGYpLF8uYXBwZW5kQ2hpbGQobCkpO2Vsc2UgZm9yKHZhciBjPTAsdT1ZZS5qZ3JpZC5leGNlbFBhcnNlcnMubGVuZ3RoO2M8dTtjKyspe3ZhciBoPVllLmpncmlkLmV4Y2VsUGFyc2Vyc1tjXTtpZihmLm1hdGNoJiYhZi5tYXRjaCgvXjBcZCsvKSYmZi5tYXRjaChoLm1hdGNoKSl7dmFyIGc9ZixmPWYucmVwbGFjZSgvW15cZFwuXC1dL2csIiIpO2lmKGguZm10JiYoZj1oLmZtdChmKSksNjc9PT1oLnN0eWxlKWw9aih7dDoiZCIscjpkLHM6aC5zdHlsZX0sZik7ZWxzZSBpZig0PT09aC5zdHlsZSlvPWcsYT12b2lkIDAsKGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpLmlubmVySFRNTD1vLGw9KGY9IkEiPT09KG89YS5maXJzdENoaWxkKS5ub2RlTmFtZT9bby5ocmVmLG8udGV4dF06IiN0ZXh0Ij09PW8ubm9kZU5hbWUmJltvLnRleHRDb250ZW50LG8udGV4dENvbnRlbnRdKT8oYT17dDoic3RyIixyOmQsczpoLnN0eWxlfSxvPSdIWVBFUkxJTksoIicrZlswXSsnIiwiJytmWzFdKyciKScsWWUuamdyaWQubWFrZU5vZGUodiwiYyIse2F0dHI6YSxjaGlsZHJlbjpbWWUuamdyaWQubWFrZU5vZGUodiwiZiIse3RleHQ6b30pXX0pKTpiKGQsZyk7ZWxzZXtpZihZZS5pbkFycmF5KGguc3R5bGUsWyI2MyIsIjY0IiwiNjUiLCI2NiJdKSYmMTU8Zi50b1N0cmluZygpLmxlbmd0aCl7bD1iKGQsZy5yZXBsYWNlP3ooZyk6ZyksXy5hcHBlbmRDaGlsZChsKTticmVha31sPWooe3I6ZCxzOmguc3R5bGV9LGYpfV8uYXBwZW5kQ2hpbGQobCk7YnJlYWt9fWx8fChmLm1hdGNoJiYocz1mLm1hdGNoKC9eLT8oWzEtOV1cZCspKFwuKFxkKykpPyQvKSksbD0ibnVtYmVyIj09dHlwZW9mIGYmJmYudG9TdHJpbmcoKS5sZW5ndGg8PTE1fHxzJiZzWzFdLmxlbmd0aCsoc1syXT9zWzNdLmxlbmd0aDowKTw9MTU/aih7dDoibiIscjpkfSxmKTpiKGQsZi5yZXBsYWNlP3ooZik6ZiksXy5hcHBlbmRDaGlsZChsKSl9QS5hcHBlbmRDaGlsZChfKSxtKyt9O2Z1bmN0aW9uIEgocCl7dmFyIGM9dy5wLmdyb3VwaW5nVmlldyx1PVtdLGg9Yy5ncm91cEZpZWxkLmxlbmd0aCxnPXkubGVuZ3RoLGY9MDtmdW5jdGlvbiBtKGUsdCxyLGkpe2Zvcih2YXIgbyxhLG49ZnVuY3Rpb24oZSx0LHIpe3ZhciBpLG89ITE7aWYoMD09PXQpbz1yW2VdO2Vsc2V7dmFyIGE9cltlXS5pZHg7aWYoMD09PWEpbz1yW2VdO2Vsc2UgZm9yKGk9ZTswPD1pO2ktLSlpZihyW2ldLmlkeD09PWEtdCl7bz1yW2ldO2JyZWFrfX1yZXR1cm4gb30oZSx0LHIpLGw9bi5jbnQscz12KHguaGVhZGVyKSxkPWk7ZDxnO2QrKyl5W2RdLl9leHBjb2wmJihhPSJ7MH0iLFllLmVhY2gobi5zdW1tYXJ5LGZ1bmN0aW9uKCl7aWYodGhpcy5ubT09PXlbZF0ubmFtZSl7eVtkXS5zdW1tYXJ5VHBsJiYoYT15W2RdLnN1bW1hcnlUcGwpLG89dGhpcy52LCJzdHJpbmciPT10eXBlb2YgdGhpcy5zdCYmImF2ZyI9PT10aGlzLnN0LnRvTG93ZXJDYXNlKCkmJih0aGlzLnNkJiZ0aGlzLnZkP289dGhpcy52L3RoaXMudmQ6dGhpcy52JiYwPGwmJihvPXRoaXMudi9sKSk7dHJ5e3RoaXMuZ3JvdXBDb3VudD1uLmNudCx0aGlzLmdyb3VwSW5kZXg9bi5kYXRhSW5kZXgsdGhpcy5ncm91cFZhbHVlPW4udmFsdWV9Y2F0Y2goZSl7bz10aGlzLnZ9cmV0dXJuIHNbdGhpcy5ubV09WWUuamdyaWQuc3RyaXBIdG1sKFllLmpncmlkLnRlbXBsYXRlKGEsbykpLCExfX0pKTtyZXR1cm4gc31mdW5jdGlvbiB2KGUpe2Zvcih2YXIgdD17fSxyPTA7cjxlLmxlbmd0aDtyKyspdFtlW3JdXT0iIjtyZXR1cm4gdH1ZZS5lYWNoKHksZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9MDtyPGg7cisrKWlmKGMuZ3JvdXBGaWVsZFtyXT09PXQubmFtZSl7dVtyXT1lO2JyZWFrfX0pO3ZhciBqLGI9WWUubWFrZUFycmF5KGMuZ3JvdXBTdW1tYXJ5KTtpZihiLnJldmVyc2UoKSwibG9jYWwiPT09dy5wLmRhdGF0eXBlJiYhdy5wLmxvYWRvbmNlKXtZZSh3KS5qcUdyaWQoImdyb3VwaW5nU2V0dXAiKTtmb3IodmFyIGU9WWUuamdyaWQuZ2V0TWV0aG9kKCJncm91cGluZ1ByZXBhcmUiKSx0PTA7dDx4LmJvZHkubGVuZ3RoO3QrKyllLmNhbGwoWWUodykseC5ib2R5W3RdLHQpfVllLmVhY2goYy5ncm91cHMsZnVuY3Rpb24oZSx0KXtmKys7dHJ5e2o9QXJyYXkuaXNBcnJheShjLmZvcm1hdERpc3BsYXlGaWVsZCkmJlllLmpncmlkLmlzRnVuY3Rpb24oYy5mb3JtYXREaXNwbGF5RmllbGRbdC5pZHhdKT9jLmZvcm1hdERpc3BsYXlGaWVsZFt0LmlkeF0uY2FsbCh3LHQuZGlzcGxheVZhbHVlLHQudmFsdWUsdy5wLmNvbE1vZGVsW3VbdC5pZHhdXSx0LmlkeCxjKTp3LmZvcm1hdHRlcigiIix0LmRpc3BsYXlWYWx1ZSx1W3QuaWR4XSx0LnZhbHVlKX1jYXRjaChlKXtqPXQuZGlzcGxheVZhbHVlfXZhciByPSIiLGk9KCJzdHJpbmciIT10eXBlb2Yocj1ZZS5qZ3JpZC5pc0Z1bmN0aW9uKGMuZ3JvdXBUZXh0W3QuaWR4XSk/Yy5ncm91cFRleHRbdC5pZHhdLmNhbGwodyxqLHQuY250LHQuc3VtbWFyeSk6WWUuamdyaWQudGVtcGxhdGUoYy5ncm91cFRleHRbdC5pZHhdLGosdC5jbnQsdC5zdW1tYXJ5KSkmJiJudW1iZXIiIT10eXBlb2YgciYmKHI9aiksImhlYWRlciI9PT1jLmdyb3VwU3VtbWFyeVBvc1t0LmlkeF0/bShlLDAsYy5ncm91cHMsMCk6dih4LmhlYWRlcikpO2lmKGlbT2JqZWN0LmtleXMoaSlbMF1dPVllLmpncmlkLnN0cmlwSHRtbChuZXcgQXJyYXkoNSp0LmlkeCkuam9pbigiICIpK3IpLHEoaSwhMSwhMSwhMCksaC0xPT09dC5pZHgpe2Zvcih2YXIgbyxhLG49Yy5ncm91cHNbZSsxXSxyPXQuc3RhcnRSb3csbD12b2lkIDAhPT1uP24uc3RhcnRSb3c6Yy5ncm91cHNbZV0uc3RhcnRSb3crYy5ncm91cHNbZV0uY250LHM9cjtzPGwmJnBbK3NdO3MrKyl7dmFyIGQ9cFsrc107cShkLCExKX1pZigiaGVhZGVyIiE9PWMuZ3JvdXBTdW1tYXJ5UG9zW3QuaWR4XSl7aWYodm9pZCAwIT09bil7Zm9yKGE9MDthPGMuZ3JvdXBGaWVsZC5sZW5ndGgmJm4uZGF0YUluZGV4IT09Yy5ncm91cEZpZWxkW2FdO2ErKyk7Zj1jLmdyb3VwRmllbGQubGVuZ3RoLWF9Zm9yKG89MDtvPGY7bysrKWJbb10mJihpPW0oZSxvLGMuZ3JvdXBzLDApLHEoaSwhMSwhMSwhMCkpO2Y9YX19fSl9WWUuamdyaWQuaXNGdW5jdGlvbihlZS5sb2FkSW5kaWNhdG9yKT9lZS5sb2FkSW5kaWNhdG9yLmNhbGwodywic2hvdyIpOmVlLmxvYWRJbmRpY2F0b3ImJlllKHcpLmpxR3JpZCgicHJvZ3Jlc3NCYXIiLHttZXRob2Q6InNob3ciLGxvYWR0eXBlOncucC5sb2FkdWksaHRtbGNvbnRlbnQ6WWUuamdyaWQuZ2V0UmVnaW9uYWwodywiZGVmYXVsdHMubG9hZHRleHQiKX0pLFllKCJzaGVldHMgc2hlZXQiLHIueGxbIndvcmtib29rLnhtbCJdKS5hdHRyKCJuYW1lIixlZS5zaGVldE5hbWUpO3ZhciBzLGQscCxjLHUsaCxnPTAsZj1bXSxDPXt9O2lmKGVlLmluY2x1ZGVHcm91cEhlYWRlciYmWWUodykuanFHcmlkKCJpc0dyb3VwSGVhZGVyT24iKSlmb3Iocz13LnAuZ3JvdXBIZWFkZXIscD0wO3A8cy5sZW5ndGg7cCsrKXt2YXIgSSxELEcsRixTPXNbcF0uZ3JvdXBIZWFkZXJzLFU9c1twXS51c2VDb2xTcGFuU3R5bGUmJjE9PT1zLmxlbmd0aCxMPVtdLFY9W10sVz1bXTtpZihnKyssVSlmb3IoST0wO0k8Uy5sZW5ndGg7SSsrKWZvcihkPVNbSV0uc3RhcnRDb2x1bW5OYW1lLEQ9U1tJXS5udW1iZXJPZkNvbHVtbnMsRj1HPVllLmpncmlkLmdldEVsZW1CeUF0dHJWYWwoeSwibmFtZSIsZCwhMCk7RjxHK1NbSV0ubnVtYmVyT2ZDb2x1bW5zO0YrKylXW3lbRl0ubmFtZV09ZCwtMSE9PShjPXguaGVhZGVyLmluZGV4T2YoeVtGXS5uYW1lKSkmJkwucHVzaChjKTtmb3IoYT0wO2E8eC5oZWFkZXIubGVuZ3RoO2ErKyl7Zm9yKENbZD14LmhlYWRlclthXV09VT94LmxhYmVsc1thXToiIixoPXU9LTEsST0wO0k8Uy5sZW5ndGg7SSsrKWlmKFNbSV0uc3RhcnRDb2x1bW5OYW1lPT09ZCl7Zm9yKFYucHVzaChkKSxDW2RdPVNbSV0udGl0bGVUZXh0LEQ9U1tJXS5udW1iZXJPZkNvbHVtbnMsRj1HPVllLmpncmlkLmdldEVsZW1CeUF0dHJWYWwoeSwibmFtZSIsZCwhMCk7RjxHK1NbSV0ubnVtYmVyT2ZDb2x1bW5zO0YrKykhMD09PXlbRl0uaGlkZGVuJiZELS07dT1ZZS5qZ3JpZC5leGNlbENlbGxQb3MoYSkrZyxoPVllLmpncmlkLmV4Y2VsQ2VsbFBvcyhhK0QtMSkrZyxmLnB1c2goe3JlZjp1KyI6IitofSl9LTE9PT11JiYtMT09PWgmJlUmJi0xPT09TC5pbmRleE9mKGEpJiYodT1ZZS5qZ3JpZC5leGNlbENlbGxQb3MoYSkrZyxoPVllLmpncmlkLmV4Y2VsQ2VsbFBvcyhhKSsoZysxKSxmLnB1c2goe3JlZjp1KyI6IitofSkpfWlmKFYubGVuZ3RoPFMubGVuZ3RoKWZvcihJPTA7STx4LmhpZGRlbi5sZW5ndGg7SSsrKXt2YXIgaz1ZZS5qZ3JpZC5pbkNvbHVtbkhlYWRlcih4LmhpZGRlbltJXSxTKTtpZigwPD1rKWZvcih2YXIgUiBpbiBkPXguaGlkZGVuW0ldLFcpaWYoV1tSXT09PWQmJkNbUl0pe2ZvcihDW1JdPVNba10udGl0bGVUZXh0LGM9eC5oZWFkZXIuaW5kZXhPZihSKSxEPVNba10ubnVtYmVyT2ZDb2x1bW5zLEY9Rz1ZZS5qZ3JpZC5nZXRFbGVtQnlBdHRyVmFsKHksIm5hbWUiLGQsITApO0Y8RytTW2tdLm51bWJlck9mQ29sdW1ucztGKyspITA9PT15W0ZdLmhpZGRlbiYmRC0tO3U9WWUuamdyaWQuZXhjZWxDZWxsUG9zKGMpK2csaD1ZZS5qZ3JpZC5leGNlbENlbGxQb3MoYytELTEpK2csZi5wdXNoKHtyZWY6dSsiOiIraH0pO2JyZWFrfX1xKEMsITAsITApfWlmKGVlLmluY2x1ZGVMYWJlbHMpaWYody5wLmNvbFNwYW5IZWFkZXIubGVuZ3RoKXtmb3IoZysrLHM9dy5wLmNvbFNwYW5IZWFkZXIsQz17fSxhPTA7YTx4LmhlYWRlci5sZW5ndGg7YSsrKWZvcihDW2Q9eC5oZWFkZXJbYV1dPXgubGFiZWxzW2FdLHA9MDtwPHMubGVuZ3RoO3ArKykoUz1zW3BdKS5zdGFydENvbHVtbk5hbWU9PT1kJiYoQ1tkXT1TLnRpdGxlVGV4dCx1PVllLmpncmlkLmV4Y2VsQ2VsbFBvcyhhKStnLGg9WWUuamdyaWQuZXhjZWxDZWxsUG9zKGErUy5udW1iZXJPZkNvbHVtbnMtMSkrZyxmLnB1c2goe3JlZjp1KyI6IitofSkpO3EoQywhMCwhMCl9ZWxzZSBxKHguaGVhZGVyLCEwLCEwKTtpZigoZj14Lm1lcmdlY2VsbC5sZW5ndGg/Zi5jb25jYXQoeC5tZXJnZWNlbGwpOmYpLmxlbmd0aCl7dmFyIFE9WWUuamdyaWQubWFrZU5vZGUodiwibWVyZ2VDZWxscyIse2F0dHI6e2NvdW50OmYubGVuZ3RofX0pO2ZvcihZZSgid29ya3NoZWV0Iix2KS5hcHBlbmQoUSksbz0wO288Zi5sZW5ndGg7bysrKVEuYXBwZW5kQ2hpbGQoWWUuamdyaWQubWFrZU5vZGUodiwibWVyZ2VDZWxsIix7YXR0cjpmW29dfSkpfWlmKGVlLmluY2x1ZGVIZWFkZXJ8fHcucC5oZWFkZXJyb3cpZm9yKHZhciBOLFg9WWUodykuanFHcmlkKCJoZWFkZXJEYXRhIiwiZ2V0bGVuZ3RoIiksSz0wO0s8WDtLKyspe2ZvcihvIGluIE49WWUodykuanFHcmlkKCJoZWFkZXJEYXRhIiwiZ2V0IixudWxsLCExLEssITEpKU4uaGFzT3duUHJvcGVydHkobykmJihOW29dPVllLmpncmlkLnN0cmlwSHRtbChOW29dKSk7WWUuaXNFbXB0eU9iamVjdChOKXx8KHEoTiwhMCksWWUoInJvdyIsdikubGFzdCgpLmZpbmQoImMiKS5hdHRyKCJzIiwiMiIpKX1pZih3LnAuZ3JvdXBpbmcpe3ZhciAkPSEhdy5wLmdyb3VwaW5nVmlldy5fbG9jZ3I7dy5wLmdyb3VwaW5nVmlldy5fbG9jZ3I9ITEsSCh4LmJvZHkpLHcucC5ncm91cGluZ1ZpZXcuX2xvY2dyPSR9ZWxzZSBmb3IodmFyIE09MCxZPXguYm9keS5sZW5ndGg7TTxZO00rKylxKHguYm9keVtNXSwhMSk7aWYoKGVlLmluY2x1ZGVGb290ZXJ8fHcucC5mb290ZXJyb3cpJiYhWWUuaXNFbXB0eU9iamVjdCh4LmZvb3RlcikpaWYoQXJyYXkuaXNBcnJheSh4LmZvb3RlcikpZm9yKE09MDtNPHguZm9vdGVyLmxlbmd0aDtNKyspcSh4LmZvb3RlcltNXSwhMCksWWUoInJvdyIsdikubGFzdCgpLmZpbmQoImMiKS5hdHRyKCJzIiwiMiIpO2Vsc2UgcSh4LmZvb3RlciwhMCksWWUoInJvdyIsdikubGFzdCgpLmZpbmQoImMiKS5hdHRyKCJzIiwiMiIpO3ZhciBKPVllLmpncmlkLm1ha2VOb2RlKHYsImNvbHMiKTtmb3IoWWUoIndvcmtzaGVldCIsdikucHJlcGVuZChKKSxvPTAsbj14LndpZHRoLmxlbmd0aDtvPG47bysrKUouYXBwZW5kQ2hpbGQoWWUuamdyaWQubWFrZU5vZGUodiwiY29sIix7YXR0cjp7bWluOm8rMSxtYXg6bysxLHdpZHRoOngud2lkdGhbb10sY3VzdG9tV2lkdGg6MX19KSk7WWUuamdyaWQuaXNGdW5jdGlvbihlZS5vbkJlZm9yZUV4cG9ydCkmJmVlLm9uQmVmb3JlRXhwb3J0LmNhbGwodyxyLG0pLHg9bnVsbDt0cnl7dmFyIE89bmV3IEpTWmlwLFo9e3R5cGU6ImJsb2IiLG1pbWVUeXBlOmVlLm1pbWV0eXBlfTtZZS5qZ3JpZC54bWxUb1ppcChPLHIpLE8uZ2VuZXJhdGVBc3luYz9PLmdlbmVyYXRlQXN5bmMoWikudGhlbihmdW5jdGlvbihlKXtZZS5qZ3JpZC5zYXZlQXMoZSxlZS5maWxlTmFtZSx7dHlwZTplZS5taW1ldHlwZX0pfSk6WWUuamdyaWQuc2F2ZUFzKE8uZ2VuZXJhdGUoWiksZWUuZmlsZU5hbWUse3R5cGU6ZWUubWltZXR5cGV9KX1jYXRjaChlKXt0aHJvdyBlfWZpbmFsbHl7WWUuamdyaWQuaXNGdW5jdGlvbihlZS5sb2FkSW5kaWNhdG9yKT9lZS5sb2FkSW5kaWNhdG9yLmNhbGwodywiaGlkZSIpOmVlLmxvYWRJbmRpY2F0b3ImJlllKHcpLmpxR3JpZCgicHJvZ3Jlc3NCYXIiLHttZXRob2Q6ImhpZGUiLGxvYWR0eXBlOncucC5sb2FkdWl9KX19KX0sZXhwb3J0VG9QZGY6ZnVuY3Rpb24oUyl7cmV0dXJuIFM9WWUuZXh0ZW5kKCEwLHt0aXRsZTpudWxsLG9yaWVudGF0aW9uOiJwb3J0cmFpdCIscGFnZVNpemU6IkE0IixkZXNjcmlwdGlvbjpudWxsLG9uQmVmb3JlRXhwb3J0Om51bGwsZG93bmxvYWQ6ImRvd25sb2FkIixpbmNsdWRlTGFiZWxzOiEwLGluY2x1ZGVHcm91cEhlYWRlcjohMCxpbmNsdWRlRm9vdGVyOiEwLGluY2x1ZGVIZWFkZXI6ITAsZmlsZU5hbWU6ImpxR3JpZEV4cG9ydC5wZGYiLG1pbWV0eXBlOiJhcHBsaWNhdGlvbi9wZGYiLHRyZWVpbmRlbnQ6Ii0iLHZpc2libGVUcmVlTm9kZXM6ITEsY2VudGVyVGFibGVPblBhZ2U6ITEsbG9hZEluZGljYXRvcjohMH0sU3x8e30pLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBlLHQscix4PXRoaXMsXz1bXSxpPXgucC5jb2xNb2RlbCxsPXt9LHM9eC5wLnRyZWVHcmlkP1llKHgpLmpxR3JpZCgiZ2V0Um93RGF0YSIsbnVsbCwhMCxTLnRyZWVpbmRlbnQsUy52aXNpYmxlVHJlZU5vZGVzKTp4LmFkZExvY2FsRGF0YSghMCkscT1bXSxkPTAsQz1bXSxvPVtdLGE9W10sST17fTtmdW5jdGlvbiBuKHApe3ZhciBjPXgucC5ncm91cGluZ1ZpZXcsdT1bXSxoPWMuZ3JvdXBGaWVsZC5sZW5ndGgsZz14LnAuY29sTW9kZWwsZj1nLmxlbmd0aCxtPTA7ZnVuY3Rpb24gdihlLHQscil7dmFyIGksbz0wLGE9W107dm9pZCAwPT09ciYmKHI9ITEpO2Zvcih2YXIgbj0wO248cS5sZW5ndGg7bisrKWk9ZVtxW25dXSxsPXt0ZXh0Om51bGw9PWl8fCIiPT09aT8iIjp0JiYhKDA9PT1uJiZyKT9ZZS5qZ3JpZC5mb3JtYXRDZWxsKGkrIiIsQ1tvXSxzW2RdLGdbQ1tvXV0seCwicGRmIik6aSxhbGlnbm1lbnQ6SVtuXSxzdHlsZToidGFibGVCb2R5In0sYS5wdXNoKGwpLG8rKztyZXR1cm4gYX1mdW5jdGlvbiBqKGUsdCxyLGkpe2Zvcih2YXIgbyxhLG49ZnVuY3Rpb24oZSx0LHIpe3ZhciBpLG89ITE7aWYoMD09PXQpbz1yW2VdO2Vsc2V7dmFyIGE9cltlXS5pZHg7aWYoMD09PWEpbz1yW2VdO2Vsc2UgZm9yKGk9ZTswPD1pO2ktLSlpZihyW2ldLmlkeD09PWEtdCl7bz1yW2ldO2JyZWFrfX1yZXR1cm4gb30oZSx0LHIpLGw9bi5jbnQscz1iKHEpLGQ9aTtkPGY7ZCsrKWdbZF0uX2V4cGNvbCYmKGE9InswfSIsWWUuZWFjaChuLnN1bW1hcnksZnVuY3Rpb24oKXtpZih0aGlzLm5tPT09Z1tkXS5uYW1lKXtnW2RdLnN1bW1hcnlUcGwmJihhPWdbZF0uc3VtbWFyeVRwbCksbz10aGlzLnYsInN0cmluZyI9PXR5cGVvZiB0aGlzLnN0JiYiYXZnIj09PXRoaXMuc3QudG9Mb3dlckNhc2UoKSYmKHRoaXMuc2QmJnRoaXMudmQ/bz10aGlzLnYvdGhpcy52ZDp0aGlzLnYmJjA8bCYmKG89dGhpcy52L2wpKTt0cnl7dGhpcy5ncm91cENvdW50PW4uY250LHRoaXMuZ3JvdXBJbmRleD1uLmRhdGFJbmRleCx0aGlzLmdyb3VwVmFsdWU9bi52YWx1ZX1jYXRjaChlKXtvPXRoaXMudn1yZXR1cm4gc1t0aGlzLm5tXT1ZZS5qZ3JpZC5zdHJpcEh0bWwoWWUuamdyaWQudGVtcGxhdGUoYSxvKSksITF9fSkpO3JldHVybiBzfWZ1bmN0aW9uIGIoZSl7Zm9yKHZhciB0PXt9LHI9MDtyPGUubGVuZ3RoO3IrKyl0W2Vbcl1dPSIiO3JldHVybiB0fVllLmVhY2goZyxmdW5jdGlvbihlLHQpe2Zvcih2YXIgcj0wO3I8aDtyKyspaWYoYy5ncm91cEZpZWxkW3JdPT09dC5uYW1lKXt1W3JdPWU7YnJlYWt9fSk7dmFyIHcseT1ZZS5tYWtlQXJyYXkoYy5ncm91cFN1bW1hcnkpO2lmKHkucmV2ZXJzZSgpLCJsb2NhbCI9PT14LnAuZGF0YXR5cGUmJiF4LnAubG9hZG9uY2Upe1llKHgpLmpxR3JpZCgiZ3JvdXBpbmdTZXR1cCIpO2Zvcih2YXIgZT1ZZS5qZ3JpZC5nZXRNZXRob2QoImdyb3VwaW5nUHJlcGFyZSIpLHQ9MDt0PHMubGVuZ3RoO3QrKyllLmNhbGwoWWUoeCksc1t0XSx0KX1ZZS5lYWNoKGMuZ3JvdXBzLGZ1bmN0aW9uKGUsdCl7bSsrO3RyeXt3PUFycmF5LmlzQXJyYXkoYy5mb3JtYXREaXNwbGF5RmllbGQpJiZZZS5qZ3JpZC5pc0Z1bmN0aW9uKGMuZm9ybWF0RGlzcGxheUZpZWxkW3QuaWR4XSk/Yy5mb3JtYXREaXNwbGF5RmllbGRbdC5pZHhdLmNhbGwoeCx0LmRpc3BsYXlWYWx1ZSx0LnZhbHVlLHgucC5jb2xNb2RlbFt1W3QuaWR4XV0sdC5pZHgsYyk6eC5mb3JtYXR0ZXIoIiIsdC5kaXNwbGF5VmFsdWUsdVt0LmlkeF0sdC52YWx1ZSl9Y2F0Y2goZSl7dz10LmRpc3BsYXlWYWx1ZX12YXIgcj0iIixpPSgic3RyaW5nIiE9dHlwZW9mKHI9WWUuamdyaWQuaXNGdW5jdGlvbihjLmdyb3VwVGV4dFt0LmlkeF0pP2MuZ3JvdXBUZXh0W3QuaWR4XS5jYWxsKHgsdyx0LmNudCx0LnN1bW1hcnkpOlllLmpncmlkLnRlbXBsYXRlKGMuZ3JvdXBUZXh0W3QuaWR4XSx3LHQuY250LHQuc3VtbWFyeSkpJiYibnVtYmVyIiE9dHlwZW9mIHImJihyPXcpLCJoZWFkZXIiPT09Yy5ncm91cFN1bW1hcnlQb3NbdC5pZHhdP2ooZSwwLGMuZ3JvdXBzLDApOmIocSkpO2lmKGlbT2JqZWN0LmtleXMoaSlbMF1dPVllLmpncmlkLnN0cmlwSHRtbChuZXcgQXJyYXkoNSp0LmlkeCkuam9pbigiICIpK3IpLF8ucHVzaCh2KGksITAsITApKSxoLTE9PT10LmlkeCl7Zm9yKHZhciBvLGEsbj1jLmdyb3Vwc1tlKzFdLHI9dC5zdGFydFJvdyxsPXZvaWQgMCE9PW4/bi5zdGFydFJvdzpjLmdyb3Vwc1tlXS5zdGFydFJvdytjLmdyb3Vwc1tlXS5jbnQscz1yO3M8bCYmcFsrc107cysrKXt2YXIgZD1wWytzXTtfLnB1c2godihkLCEwKSl9aWYoImhlYWRlciIhPT1jLmdyb3VwU3VtbWFyeVBvc1t0LmlkeF0pe2lmKHZvaWQgMCE9PW4pe2ZvcihhPTA7YTxjLmdyb3VwRmllbGQubGVuZ3RoJiZuLmRhdGFJbmRleCE9PWMuZ3JvdXBGaWVsZFthXTthKyspO209Yy5ncm91cEZpZWxkLmxlbmd0aC1hfWZvcihvPTA7bzxtO28rKyl5W29dJiYoaT1qKGUsbyxjLmdyb3VwcywwKSxfLnB1c2godihpLCEwLCEwKSkpO209YX19fSl9Zm9yKFllLmpncmlkLmlzRnVuY3Rpb24oUy5sb2FkSW5kaWNhdG9yKT9TLmxvYWRJbmRpY2F0b3IuY2FsbCh4LCJzaG93Iik6Uy5sb2FkSW5kaWNhdG9yJiZZZSh4KS5qcUdyaWQoInByb2dyZXNzQmFyIix7bWV0aG9kOiJzaG93Iixsb2FkdHlwZTp4LnAubG9hZHVpLGh0bWxjb250ZW50OlllLmpncmlkLmdldFJlZ2lvbmFsKHgsImRlZmF1bHRzLmxvYWR0ZXh0Iil9KSxlPTAsRD1pLmxlbmd0aDtlPEQ7ZSsrKWlbZV0uX2V4cGNvbD0hMCx2b2lkIDA9PT1pW2VdLmV4cG9ydGNvbD9pW2VdLmhpZGRlbiYmKGlbZV0uX2V4cGNvbD0hMSk6aVtlXS5fZXhwY29sPWlbZV0uZXhwb3J0Y29sLCFZZS5qZ3JpZC5pc1NlcnZpY2VDb2woaVtlXS5uYW1lKSYmaVtlXS5fZXhwY29sJiYobD17dGV4dDp4LnAuY29sTmFtZXNbZV0sc3R5bGU6InRhYmxlSGVhZGVyIn0sby5wdXNoKGwpLHFbZF09aVtlXS5uYW1lLENbZF09ZSxhLnB1c2goaVtlXS53aWR0aCksSVtpW2VdLm5hbWVdPWlbZV0uYWxpZ258fCJsZWZ0IixkKyspO2lmKFMuaW5jbHVkZUdyb3VwSGVhZGVyJiZZZSh4KS5qcUdyaWQoImlzR3JvdXBIZWFkZXJPbiIpKWZvcihyPXgucC5ncm91cEhlYWRlcixkPTA7ZDxyLmxlbmd0aDtkKyspe2Zvcih2YXIgcD1bXSxjPXJbZF0uZ3JvdXBIZWFkZXJzLHU9cltkXS51c2VDb2xTcGFuU3R5bGUsaD0wO2g8aS5sZW5ndGg7aCsrKXt2YXIgZz0hMDtmb3IoWWUuamdyaWQuaXNTZXJ2aWNlQ29sKGlbaF0ubmFtZSl8fCFpW2hdLl9leHBjb2w/Zz0hMTpsPXU/e3RleHQ6eC5wLmNvbE5hbWVzW2hdLHN0eWxlOiJ0YWJsZUhlYWRlciIscm93U3BhbjoyLHZlcnRpY2FsQWxpZ246ImNlbnRlciJ9Ont0ZXh0OiIiLHN0eWxlOiJ0YWJsZUhlYWRlciJ9LHQ9MDt0PGMubGVuZ3RoO3QrKylpZihjW3RdLnN0YXJ0Q29sdW1uTmFtZT09PWlbaF0ubmFtZSl7Zm9yKHZhciBmPWNbdF0ubnVtYmVyT2ZDb2x1bW5zLG09aDttPGgrY1t0XS5udW1iZXJPZkNvbHVtbnM7bSsrKSEwPT09aVttXS5oaWRkZW4mJmYtLTshKGw9e3RleHQ6Y1t0XS50aXRsZVRleHQsY29sU3BhbjpmLHN0eWxlOiJ0YWJsZUhlYWRlciJ9KT09PWcmJjA8ZiYmKGc9ITAsaCs9Y1t0XS5udW1iZXJPZkNvbHVtbnMtZil9ZyYmcC5wdXNoKGwpfV8ucHVzaChwKX1pZihTLmluY2x1ZGVMYWJlbHMpaWYoeC5wLmNvbFNwYW5IZWFkZXIubGVuZ3RoKXtmb3Iocj14LnAuY29sU3BhbkhlYWRlcixwPVtdLGg9MDtoPHEubGVuZ3RoO2grKyl7Zm9yKGw9e3RleHQ6eC5wLmNvbE5hbWVzW2hdLHN0eWxlOiJ0YWJsZUhlYWRlciIsdmVydGljYWxBbGlnbjoiY2VudGVyIn0sdD0wO3Q8ci5sZW5ndGg7dCsrKXJbdF0uc3RhcnRDb2x1bW5OYW1lPT09cVtoXSYmKGw9e3RleHQ6clt0XS50aXRsZVRleHQsY29sU3BhbjpyW3RdLm51bWJlck9mQ29sdW1ucyxzdHlsZToidGFibGVIZWFkZXIifSk7cC5wdXNoKGwpLGUrK31fLnB1c2gocCl9ZWxzZSBfLnB1c2gobyk7aWYoUy5pbmNsdWRlSGVhZGVyJiZ4LnAuaGVhZGVycm93KWZvcih2YXIgdixqPVllKHgpLmpxR3JpZCgiaGVhZGVyRGF0YSIsImdldGxlbmd0aCIpLGI9MDtiPGo7YisrKXtmb3Iodj1ZZSh4KS5qcUdyaWQoImhlYWRlckRhdGEiLCJnZXQiLG51bGwsITEsYiwhMSksbz1bXSxoPTA7aDxxLmxlbmd0aDtoKyspbD17dGV4dDpZZS5qZ3JpZC5zdHJpcEh0bWwoWWUuamdyaWQuZ2V0QWNjZXNzb3IodixxW2hdKSksc3R5bGU6InRhYmxlRm9vdGVyIixhbGlnbm1lbnQ6SVtxW2hdXX0sby5wdXNoKGwpO18ucHVzaChvKX1pZih4LnAuZ3JvdXBpbmcpe3ZhciB3PSEheC5wLmdyb3VwaW5nVmlldy5fbG9jZ3I7eC5wLmdyb3VwaW5nVmlldy5fbG9jZ3I9ITEsbihzKSx4LnAuZ3JvdXBpbmdWaWV3Ll9sb2Nncj13fWVsc2UgZm9yKHZhciB5LGQ9MCxEPXMubGVuZ3RoO2Q8RDtkKyspe2ZvcihvPVtdLHk9c1tkXSxoPXQ9MDtoPHEubGVuZ3RoO2grKylsPXt0ZXh0Om51bGw9PXlbcVtoXV0/IiI6WWUuamdyaWQuc3RyaXBIdG1sKFllLmpncmlkLmZvcm1hdENlbGwoWWUuamdyaWQuZ2V0QWNjZXNzb3IoeSxxW2hdKSsiIixDW3RdLHNbZF0saVtDW3RdXSx4LCJwZGYiKSksYWxpZ25tZW50OklbcVtoXV0sc3R5bGU6InRhYmxlQm9keSJ9LG8ucHVzaChsKSx0Kys7Xy5wdXNoKG8pfWlmKFMuaW5jbHVkZUZvb3RlciYmeC5wLmZvb3RlcnJvdylmb3Ioaj1ZZSh4KS5qcUdyaWQoImZvb3RlckRhdGEiLCJnZXRsZW5ndGgiKSxiPTA7YjxqO2IrKyl7dmFyIEc9WWUoeCkuanFHcmlkKCJmb290ZXJEYXRhIiwiZ2V0IixudWxsLCExLGIsITEpLG89W107Zm9yKGg9MDtoPHEubGVuZ3RoO2grKylsPXt0ZXh0OlllLmpncmlkLnN0cmlwSHRtbChZZS5qZ3JpZC5nZXRBY2Nlc3NvcihHLHFbaF0pKSxzdHlsZToidGFibGVGb290ZXIiLGFsaWdubWVudDpJW3FbaF1dfSxvLnB1c2gobCk7Xy5wdXNoKG8pfXc9e3N0eWxlOiJ0YWJsZUV4YW1wbGUiLHdpZHRoczphLHRhYmxlOntoZWFkZXJSb3dzOm51bGwhPXI/MDoxLGJvZHk6X319LFMuY2VudGVyVGFibGVPblBhZ2UmJih3PXtjb2x1bW5zOlt7d2lkdGg6IioiLHRleHQ6IiJ9LHtzdHlsZToidGFibGVFeGFtcGxlIix3aWR0aDoiYXV0byIsd2lkdGhzOmEsdGFibGU6e2hlYWRlclJvd3M6bnVsbCE9cj8wOjEsYm9keTpffSxhbGlnbm1lbnQ6ImNlbnRlciJ9LHt3aWR0aDoiKiIsdGV4dDoiIn1dfSksdz17cGFnZVNpemU6Uy5wYWdlU2l6ZSxwYWdlT3JpZW50YXRpb246Uy5vcmllbnRhdGlvbixjb250ZW50Olt3XSxzdHlsZXM6e3RhYmxlSGVhZGVyOntib2xkOiEwLGZvbnRTaXplOjExLGNvbG9yOiIjMmU2ZTllIixmaWxsQ29sb3I6IiNkZmVmZmMiLGFsaWdubWVudDoiY2VudGVyIn0sdGFibGVCb2R5Ontmb250U2l6ZToxMH0sdGFibGVGb290ZXI6e2JvbGQ6ITAsZm9udFNpemU6MTEsY29sb3I6IiMyZTZlOWUiLGZpbGxDb2xvcjoiI2RmZWZmYyJ9LHRpdGxlOnthbGlnbm1lbnQ6ImNlbnRlciIsZm9udFNpemU6MTV9LGRlc2NyaXB0aW9uOnt9fSxkZWZhdWx0U3R5bGU6e2ZvbnRTaXplOjEwfX07Uy5kZXNjcmlwdGlvbiYmdy5jb250ZW50LnVuc2hpZnQoe3RleHQ6Uy5kZXNjcmlwdGlvbixzdHlsZToiZGVzY3JpcHRpb24iLG1hcmdpbjpbMCwwLDAsMTJdfSksUy50aXRsZSYmdy5jb250ZW50LnVuc2hpZnQoe3RleHQ6Uy50aXRsZSxzdHlsZToidGl0bGUiLG1hcmdpbjpbMCwwLDAsMTJdfSksWWUuamdyaWQuaXNGdW5jdGlvbihTLm9uQmVmb3JlRXhwb3J0KSYmUy5vbkJlZm9yZUV4cG9ydC5jYWxsKHgsdyk7dHJ5e3ZhciBGPXBkZk1ha2UuY3JlYXRlUGRmKHcpO0YuZ2V0RGF0YVVybChmdW5jdGlvbihlKXtZZS5qZ3JpZC5pc0Z1bmN0aW9uKFMubG9hZEluZGljYXRvcik/Uy5sb2FkSW5kaWNhdG9yLmNhbGwoeCwiaGlkZSIpOlMubG9hZEluZGljYXRvciYmWWUoeCkuanFHcmlkKCJwcm9ncmVzc0JhciIse21ldGhvZDoiaGlkZSIsbG9hZHR5cGU6eC5wLmxvYWR1aX0pfSksIm9wZW4iPT09Uy5kb3dubG9hZD9GLm9wZW4oKTpGLmdldEJ1ZmZlcihmdW5jdGlvbihlKXtZZS5qZ3JpZC5zYXZlQXMoZSxTLmZpbGVOYW1lLHt0eXBlOlMubWltZXR5cGV9KX0pfWNhdGNoKGUpe3Rocm93IGV9fSl9LGV4cG9ydFRvSHRtbDpmdW5jdGlvbihnKXt2YXIgZjtyZXR1cm4gZz1ZZS5leHRlbmQoITAse3RpdGxlOiIiLG9uQmVmb3JlRXhwb3J0Om51bGwsaW5jbHVkZUxhYmVsczohMCxpbmNsdWRlR3JvdXBIZWFkZXI6ITAsaW5jbHVkZUZvb3RlcjohMCxpbmNsdWRlSGVhZGVyOiEwLHRhYmxlQ2xhc3M6ImpxZ3JpZHByaW50IixhdXRvUHJpbnQ6ITEsdG9wVGV4dDoiIixib3R0b21UZXh0OiIiLHJldHVybkFzU3RyaW5nOiExLHRyZWVpbmRlbnQ6IiZuYnNwOyIsdmlzaWJsZVRyZWVOb2RlczohMSxsb2FkSW5kaWNhdG9yOiEwfSxnfHx7fSksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Zm9yKHZhciB4PXRoaXMsYz14LnAuY29sTW9kZWwsZT0wLF89e2JvZHk6eC5wLnRyZWVHcmlkP1llKHgpLmpxR3JpZCgiZ2V0Um93RGF0YSIsbnVsbCwhMCxnLnRyZWVpbmRlbnQsZy52aXNpYmxlVHJlZU5vZGVzKTp4LmFkZExvY2FsRGF0YSghMCksaGVhZGVyOltdLGZvb3RlcjpbXSx3aWR0aDpbXSxtYXA6W10sYWxpZ246W119LHQ9MCxyPWMubGVuZ3RoO3Q8cjt0KyspY1t0XS5fZXhwY29sPSEwLHZvaWQgMD09PWNbdF0uZXhwb3J0Y29sP2NbdF0uaGlkZGVuJiYoY1t0XS5fZXhwY29sPSExKTpjW3RdLl9leHBjb2w9Y1t0XS5leHBvcnRjb2wsImNiIiE9PWNbdF0ubmFtZSYmInJuIiE9PWNbdF0ubmFtZSYmInN1YmdyaWQiIT09Y1t0XS5uYW1lJiYic2MiIT09Y1t0XS5uYW1lJiZjW3RdLl9leHBjb2wmJihfLmhlYWRlcltlXT1jW3RdLm5hbWUsXy53aWR0aFtlXT1jW3RdLndpZHRoLF8ubWFwW2VdPXQsXy5hbGlnbltlXT1jW3RdLmFsaWdufHwibGVmdCIsZSsrKTt2YXIgaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIiksbz1mdW5jdGlvbihlKXtpLmhyZWY9ZTtlPWkuaG9zdDtyZXR1cm4tMT09PWUuaW5kZXhPZigiLyIpJiYwIT09aS5wYXRobmFtZS5pbmRleE9mKCIvIikmJihlKz0iLyIpLGkucHJvdG9jb2wrIi8vIitlK2kucGF0aG5hbWUraS5zZWFyY2h9LHE9ZnVuY3Rpb24oZSx0LHIsaSxvKXtmb3IodmFyIGEsbixsPSI8dHI+IixzPTAsZD1fLmhlYWRlci5sZW5ndGg7czxkJiYobj1vPycgY29sc3Bhbj0gIicrXy5oZWFkZXIubGVuZ3RoKyciIHN0eWxlPXRleHQtYWxpZ246bGVmdCc6ITA9PT1pPyIgc3R5bGU9d2lkdGg6IitfLndpZHRoW3NdKyJweDt0ZXh0LWFsaWduOiIrXy5hbGlnbltzXSsiOyI6IiBzdHlsZT10ZXh0LWFsaWduOiIrXy5hbGlnbltzXSsiOyIsYT1fLmhlYWRlcltzXSxlLmhhc093blByb3BlcnR5KGEpJiYobCs9IjwiK3QrbisiPiIrKHI/WWUuamdyaWQuZm9ybWF0Q2VsbChZZS5qZ3JpZC5nZXRBY2Nlc3NvcihlLGEpLF8ubWFwW3NdLGUsY1tfLm1hcFtzXV0seCwiaHRtbCIpOmVbYV0pKyI8LyIrdCsiPiIpLCFvKTtzKyspO3JldHVybiBsKyI8L3RyPiJ9O2Z1bmN0aW9uIGEodSl7dmFyIGg9eC5wLmdyb3VwaW5nVmlldyxnPVtdLGY9aC5ncm91cEZpZWxkLmxlbmd0aCxwPWMubGVuZ3RoLG09MCx2PSIiO2Z1bmN0aW9uIGooZSx0LHIsaSl7Zm9yKHZhciBvLGEsbj1mdW5jdGlvbihlLHQscil7dmFyIGksbz0hMTtpZigwPT09dClvPXJbZV07ZWxzZXt2YXIgYT1yW2VdLmlkeDtpZigwPT09YSlvPXJbZV07ZWxzZSBmb3IoaT1lOzA8PWk7aS0tKWlmKHJbaV0uaWR4PT09YS10KXtvPXJbaV07YnJlYWt9fXJldHVybiBvfShlLHQsciksbD1uLmNudCxzPWIoXy5oZWFkZXIpLGQ9aTtkPHA7ZCsrKWNbZF0uX2V4cGNvbCYmKGE9InswfSIsWWUuZWFjaChuLnN1bW1hcnksZnVuY3Rpb24oKXtpZih0aGlzLm5tPT09Y1tkXS5uYW1lKXtjW2RdLnN1bW1hcnlUcGwmJihhPWNbZF0uc3VtbWFyeVRwbCksbz10aGlzLnYsInN0cmluZyI9PXR5cGVvZiB0aGlzLnN0JiYiYXZnIj09PXRoaXMuc3QudG9Mb3dlckNhc2UoKSYmKHRoaXMuc2QmJnRoaXMudmQ/bz10aGlzLnYvdGhpcy52ZDp0aGlzLnYmJjA8bCYmKG89dGhpcy52L2wpKTt0cnl7dGhpcy5ncm91cENvdW50PW4uY250LHRoaXMuZ3JvdXBJbmRleD1uLmRhdGFJbmRleCx0aGlzLmdyb3VwVmFsdWU9bi52YWx1ZX1jYXRjaChlKXtvPXRoaXMudn1yZXR1cm4gc1t0aGlzLm5tXT1ZZS5qZ3JpZC5zdHJpcEh0bWwoWWUuamdyaWQudGVtcGxhdGUoYSxvKSksITF9fSkpO3JldHVybiBzfWZ1bmN0aW9uIGIoZSl7Zm9yKHZhciB0PXt9LHI9MDtyPGUubGVuZ3RoO3IrKyl0W2Vbcl1dPSIiO3JldHVybiB0fVllLmVhY2goYyxmdW5jdGlvbihlLHQpe2Zvcih2YXIgcj0wO3I8ZjtyKyspaWYoaC5ncm91cEZpZWxkW3JdPT09dC5uYW1lKXtnW3JdPWU7YnJlYWt9fSk7dmFyIHcseT1ZZS5tYWtlQXJyYXkoaC5ncm91cFN1bW1hcnkpO2lmKHkucmV2ZXJzZSgpLCJsb2NhbCI9PT14LnAuZGF0YXR5cGUmJiF4LnAubG9hZG9uY2Upe1llKHgpLmpxR3JpZCgiZ3JvdXBpbmdTZXR1cCIpO2Zvcih2YXIgZT1ZZS5qZ3JpZC5nZXRNZXRob2QoImdyb3VwaW5nUHJlcGFyZSIpLHQ9MDt0PF8uYm9keS5sZW5ndGg7dCsrKWUuY2FsbChZZSh4KSxfLmJvZHlbdF0sdCl9cmV0dXJuIFllLmVhY2goaC5ncm91cHMsZnVuY3Rpb24oZSx0KXttKys7dHJ5e3c9QXJyYXkuaXNBcnJheShoLmZvcm1hdERpc3BsYXlGaWVsZCkmJlllLmpncmlkLmlzRnVuY3Rpb24oaC5mb3JtYXREaXNwbGF5RmllbGRbdC5pZHhdKT9oLmZvcm1hdERpc3BsYXlGaWVsZFt0LmlkeF0uY2FsbCh4LHQuZGlzcGxheVZhbHVlLHQudmFsdWUseC5wLmNvbE1vZGVsW2dbdC5pZHhdXSx0LmlkeCxoKTp4LmZvcm1hdHRlcigiIix0LmRpc3BsYXlWYWx1ZSxnW3QuaWR4XSx0LnZhbHVlKX1jYXRjaChlKXt3PXQuZGlzcGxheVZhbHVlfXZhciByPSIiOyJzdHJpbmciIT10eXBlb2Yocj1ZZS5qZ3JpZC5pc0Z1bmN0aW9uKGguZ3JvdXBUZXh0W3QuaWR4XSk/aC5ncm91cFRleHRbdC5pZHhdLmNhbGwoeCx3LHQuY250LHQuc3VtbWFyeSk6WWUuamdyaWQudGVtcGxhdGUoaC5ncm91cFRleHRbdC5pZHhdLHcsdC5jbnQsdC5zdW1tYXJ5KSkmJiJudW1iZXIiIT10eXBlb2YgciYmKHI9dyk7dmFyIGksbz0hMSxhPSgiaGVhZGVyIj09PWguZ3JvdXBTdW1tYXJ5UG9zW3QuaWR4XT9pPWooZSwwLGguZ3JvdXBzLDApOihpPWIoXy5oZWFkZXIpLG89ITApLE9iamVjdC5rZXlzKGkpKTtpZihpW2FbMF1dPW5ldyBBcnJheSg1KnQuaWR4KS5qb2luKCIgIikrcix2Kz1xKGksInRkIiwhMCwxPT09bSxvKSxmLTE9PT10LmlkeCl7Zm9yKHZhciBuLGwscz1oLmdyb3Vwc1tlKzFdLGE9dC5zdGFydFJvdyxkPXZvaWQgMCE9PXM/cy5zdGFydFJvdzpoLmdyb3Vwc1tlXS5zdGFydFJvdytoLmdyb3Vwc1tlXS5jbnQscD1hO3A8ZCYmdVsrcF07cCsrKXt2YXIgYz11WytwXTt2Kz1xKGMsInRkIiwhMCl9aWYoImhlYWRlciIhPT1oLmdyb3VwU3VtbWFyeVBvc1t0LmlkeF0pe2lmKHZvaWQgMCE9PXMpe2ZvcihsPTA7bDxoLmdyb3VwRmllbGQubGVuZ3RoJiZzLmRhdGFJbmRleCE9PWguZ3JvdXBGaWVsZFtsXTtsKyspO209aC5ncm91cEZpZWxkLmxlbmd0aC1sfWZvcihuPTA7bjxtO24rKyl5W25dJiYoaT1qKGUsbixoLmdyb3VwcywwKSx2Kz1xKGksInRkIiwhMCkpO209bH19fSksdn1ZZS5qZ3JpZC5pc0Z1bmN0aW9uKGcubG9hZEluZGljYXRvcik/Zy5sb2FkSW5kaWNhdG9yLmNhbGwoeCwic2hvdyIpOmcubG9hZEluZGljYXRvciYmWWUoeCkuanFHcmlkKCJwcm9ncmVzc0JhciIse21ldGhvZDoic2hvdyIsbG9hZHR5cGU6eC5wLmxvYWR1aSxodG1sY29udGVudDpZZS5qZ3JpZC5nZXRSZWdpb25hbCh4LCJkZWZhdWx0cy5sb2FkdGV4dCIpfSk7dmFyIG49Jzx0YWJsZSBjbGFzcz0iJytnLnRhYmxlQ2xhc3MrJyI+JztpZihnLmluY2x1ZGVMYWJlbHMmJihuKz0iPHRoZWFkPiIrZnVuY3Rpb24oZSx0LHIpe2Zvcih2YXIgaT0iPHRyPiIsbz0wLGE9ZS5sZW5ndGg7bzxhO28rKylpKz0iPCIrdCsoITA9PT1yPyIgc3R5bGU9d2lkdGg6IitfLndpZHRoW29dKyJweDsiOiIiKSsiPiIreC5wLmNvbE5hbWVzW18ubWFwW29dXSsiPC8iK3QrIj4iO3JldHVybiBpKyI8L3RyPiJ9KF8uaGVhZGVyLCJ0aCIsITApKyI8L3RoZWFkPiIpLG4rPSI8dGJvZHk+IixnLmluY2x1ZGVIZWFkZXImJngucC5oZWFkZXJyb3cpZm9yKHZhciBsLHM9WWUoeCkuanFHcmlkKCJmb290ZXJEYXRhIiwiZ2V0bGVuZ3RoIiksZD0wO2Q8cztkKyspZm9yKGQ9MDtkPHM7ZCsrKWw9WWUoeCkuanFHcmlkKCJoZWFkZXJEYXRhIiwiZ2V0IixudWxsLCExLGQsITEpLG4rPXEobCwidGQiLCExKTtpZih4LnAuZ3JvdXBpbmcpe3ZhciBwPSEheC5wLmdyb3VwaW5nVmlldy5fbG9jZ3I7eC5wLmdyb3VwaW5nVmlldy5fbG9jZ3I9ITEsbis9YShfLmJvZHkpLHgucC5ncm91cGluZ1ZpZXcuX2xvY2dyPXB9ZWxzZSBmb3IoZT0wLHI9Xy5ib2R5Lmxlbmd0aDtlPHI7ZSsrKW4rPXEoXy5ib2R5W2VdLCJ0ZCIsITAsMD09PWUpO2lmKGcuaW5jbHVkZUZvb3RlciYmeC5wLmZvb3RlcnJvdylmb3Iocz1ZZSh4KS5qcUdyaWQoImZvb3RlckRhdGEiLCJnZXRsZW5ndGgiKSxkPTA7ZDxzO2QrKylfLmZvb3RlcltkXT1ZZSh4KS5qcUdyaWQoImZvb3RlckRhdGEiLCJnZXQiLG51bGwsITEsZCwhMSksbis9cShfLmZvb3RlcltkXSwidGQiLCExKTtpZihuPW4rIjwvdGJvZHk+IisiPC90YWJsZT4iLGcucmV0dXJuQXNTdHJpbmcpZj1uO2Vsc2V7dmFyIHU9d2luZG93Lm9wZW4oIiIsIiIpLGg9KHUuZG9jdW1lbnQuY2xvc2UoKSxnLnRpdGxlPyI8dGl0bGU+IitnLnRpdGxlKyI8L3RpdGxlPiI6IiIpO1llKCJzdHlsZSwgbGluayIpLmVhY2goZnVuY3Rpb24oKXtoKz1mdW5jdGlvbihlKXtlPVllKGUpLmNsb25lKClbMF07cmV0dXJuImxpbmsiPT09ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpJiYoZS5ocmVmPW8oZS5ocmVmKSksZS5vdXRlckhUTUx9KHRoaXMpfSk7dHJ5e3UuZG9jdW1lbnQuaGVhZC5pbm5lckhUTUw9aH1jYXRjaChlKXtZZSh1LmRvY3VtZW50LmhlYWQpLmh0bWwoaCl9dS5kb2N1bWVudC5ib2R5LmlubmVySFRNTD0oZy50aXRsZT8iPGgxPiIrZy50aXRsZSsiPC9oMT4iOiIiKSsiPGRpdj4iKyhnLnRvcFRleHR8fCIiKSsiPC9kaXY+IituKyI8ZGl2PiIrKGcuYm90dG9tVGV4dHx8IiIpKyI8L2Rpdj4iLFllKHUuZG9jdW1lbnQuYm9keSkuYWRkQ2xhc3MoImh0bWwtdmlldyIpLFllKCJpbWciLHUuZG9jdW1lbnQuYm9keSkuZWFjaChmdW5jdGlvbihlLHQpe3Quc2V0QXR0cmlidXRlKCJzcmMiLG8odC5nZXRBdHRyaWJ1dGUoInNyYyIpKSl9KSxZZS5qZ3JpZC5pc0Z1bmN0aW9uKGcub25CZWZvcmVFeHBvcnQpJiZnLm9uQmVmb3JlRXhwb3J0LmNhbGwoeCx1KSxCb29sZWFuKHUuY2hyb21lKT9nLmF1dG9QcmludCYmKHUucHJpbnQoKSx1LmNsb3NlKCkpOnNldFRpbWVvdXQoZnVuY3Rpb24oKXtnLmF1dG9QcmludCYmKHUucHJpbnQoKSx1LmNsb3NlKCkpfSwxZTMpfVllLmpncmlkLmlzRnVuY3Rpb24oZy5sb2FkSW5kaWNhdG9yKT9nLmxvYWRJbmRpY2F0b3IuY2FsbCh4LCJoaWRlIik6Zy5sb2FkSW5kaWNhdG9yJiZZZSh4KS5qcUdyaWQoInByb2dyZXNzQmFyIix7bWV0aG9kOiJoaWRlIixsb2FkdHlwZTp4LnAubG9hZHVpfSl9KSxmfX0pLFllLmV4dGVuZChZZS5qZ3JpZCx7Zm9jdXNhYmxlRWxlbWVudHNMaXN0OlsiPmFbaHJlZl0iLCI+YnV0dG9uOm5vdChbZGlzYWJsZWRdKSIsIj5hcmVhW2hyZWZdIiwiPmlucHV0Om5vdChbZGlzYWJsZWRdKSIsIj5zZWxlY3Q6bm90KFtkaXNhYmxlZF0pIiwiPnRleHRhcmVhOm5vdChbZGlzYWJsZWRdKSIsIj5pZnJhbWUiLCI+b2JqZWN0IiwiPmVtYmVkIiwiPipbdGFiaW5kZXhdIiwiPipbY29udGVudGVkaXRhYmxlXSJdfSksWWUuamdyaWQuZXh0ZW5kKHthcmlhQm9keUdyaWQ6ZnVuY3Rpb24oZSl7dmFyIGg9WWUuZXh0ZW5kKHtvbkVudGVyQ2VsbDpudWxsLG9uS2V5Q2hlY2s6bnVsbCxjdXN0b21DZWxsQWN0aW9uOm51bGx9LGV8fHt9KTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIG49dGhpcyxyPVllLmpncmlkLmdldE1ldGhvZCgiZ2V0U3R5bGVVSSIpLGw9cihuLnAuc3R5bGVVSSsiLmNvbW1vbiIsImhpZ2hsaWdodCIsITApO2Z1bmN0aW9uIGEoZSx0KXtyZXR1cm4haXNOYU4oZSkmJiFpc05hTih0KSYmMDw9ZSYmMDw9dCYmbi5yb3dzLmxlbmd0aCYmZTxuLnJvd3MubGVuZ3RoJiZ0PG4ucC5jb2xNb2RlbC5sZW5ndGh9ZnVuY3Rpb24gaShlLHQpe3ZhciByLHQ9bi5wLmlSb3crdCxpPW4ucC5pQ29sK2Usbz1uLnJvd3MubGVuZ3RoLGU9MCE9PWU7cmV0dXJuISFvJiYocj1uLnAuY29sTW9kZWwubGVuZ3RoLGUmJihpPDAmJjI8PXQmJihpPXItMSx0LS0pLHI8PWkpJiYoaT0wLHQrKyksZXx8KHQ8MT8oaS0tLG4ucm93c1t0PW8tMV0mJjA8PWkmJiFuLnJvd3NbdF0uY2VsbHNbaV0mJnQtLSk6KG88PXR8fCFuLnJvd3NbdF0uY2VsbHNbaV0pJiYodD0xLGkrKykpLGEodCxpKT97cm93OnQsY29sOml9OiEhYShuLnAuaVJvdyxuLnAuaUNvbCkmJntyb3c6bi5wLmlSb3csY29sOm4ucC5pQ29sfSl9ZnVuY3Rpb24gbyhlLHQpe3ZhciByPWkoZSx0KTtpZighcilyZXR1cm4hMTtmb3IoO1llKG4ucm93c1tyLnJvd10uY2VsbHNbci5jb2xdKS5pcygiOmhpZGRlbiIpOylpZihuLnAuaVJvdz1yLnJvdyxuLnAuaUNvbD1yLmNvbCxyPWkoZSx0KSxuLnAuaVJvdz09PXIucm93JiZuLnAuaUNvbD09PXIuY29sKXJldHVybiExO3JldHVybiAwIT09dCYmWWUobikuanFHcmlkKCJzZXRTZWxlY3Rpb24iLG4ucm93c1tyLnJvd10uaWQsITEsbnVsbCwhMSkscn1mdW5jdGlvbiBzKGUpe3ZhciB0PW4ucC5wYWdlLHI9bi5wLmxhc3RwYWdlO24ucC5wYWdlIT09KHQ9cjwodD0odCs9ZSk8PTA/MTp0KT9yOnQpJiYobi5wLnBhZ2U9dCxuLmdyaWQucG9wdWxhdGUoKSl9dmFyIHQ9WWUuamdyaWQuZm9jdXNhYmxlRWxlbWVudHNMaXN0LmpvaW4oKSxkPShZZShuKS5yZW1vdmVBdHRyKCJ0YWJpbmRleCIpLFllKG4pLm9uKCJqcUdyaWRBZnRlckdyaWRDb21wbGV0ZS5zZXRBcmlhR3JpZCIsZnVuY3Rpb24oZSl7WWUoInRib2R5IixuKS5maXJzdCgpLmZpbmQoIj50cjpub3QoLmpxZ2ZpcnN0cm93KT50ZDpub3QoOmhpZGRlbiwgOmhhcygiK3QrIikpIikuYXR0cigidGFiaW5kZXgiLC0xKSxZZSgidGJvZHkiLG4pLmZpcnN0KCkuZmluZCgiPnRyOm5vdCguanFnZmlyc3Ryb3cpIikucmVtb3ZlQXR0cigidGFiaW5kZXgiKSx2b2lkIDAhPT1uLnAuaVJvdyYmdm9pZCAwIT09bi5wLmlDb2wmJm4ucm93c1tuLnAuaVJvd10mJlllKG4ucm93c1tuLnAuaVJvd10uY2VsbHNbbi5wLmlDb2xdKS5hdHRyKCJ0YWJpbmRleCIsMCkuZm9jdXMoZnVuY3Rpb24oKXtZZSh0aGlzKS5hZGRDbGFzcyhsKX0pLmJsdXIoZnVuY3Rpb24oKXtZZSh0aGlzKS5yZW1vdmVDbGFzcyhsKX0pfSksbi5wLmlSb3c9MSxuLnAuaUNvbD1ZZS5qZ3JpZC5nZXRGaXJzdFZpc2libGVDb2wobiksMCkscD0wLGM9ISFZZS5qZ3JpZC5pc0Z1bmN0aW9uKGguY3VzdG9tQ2VsbEFjdGlvbikmJmguY3VzdG9tQ2VsbEFjdGlvbix1PSEhWWUuamdyaWQuaXNGdW5jdGlvbihoLm9uS2V5Q2hlY2spJiZoLm9uS2V5Q2hlY2s7WWUobikub24oImtleWRvd24iLGZ1bmN0aW9uKGUpe2lmKCghbi5wLm5hdmlnYXRpb25EaXNhYmxlZHx8ITAhPT1uLnAubmF2aWdhdGlvbkRpc2FibGVkKSYmIWUudGFyZ2V0LmlkLnN0YXJ0c1dpdGgoImpxc18iK24ucC5pZCkmJighdXx8dS5jYWxsKG4sbi5yb3dzW24ucC5pUm93XS5pZCxuLnAuaVJvdyxuLnAuaUNvbCxlKSkpe3ZhciB0O3N3aXRjaChlLndoaWNofHxlLmtleUNvZGUpe2Nhc2UgMzg6dD1vKDAsLTEpLGQ9dC5yb3cscD10LmNvbCxlLnByZXZlbnREZWZhdWx0KCk7YnJlYWs7Y2FzZSA0MDp0PW8oMCwxKSxkPXQucm93LHA9dC5jb2wsZS5wcmV2ZW50RGVmYXVsdCgpO2JyZWFrO2Nhc2UgMzc6dD1vKC0xLDApLGQ9dC5yb3cscD10LmNvbCxlLnByZXZlbnREZWZhdWx0KCk7YnJlYWs7Y2FzZSAzOTp0PW8oMSwwKSxkPXQucm93LHA9dC5jb2wsZS5wcmV2ZW50RGVmYXVsdCgpO2JyZWFrO2Nhc2UgMzY6ZD1lLmN0cmxLZXk/MTpuLnAuaVJvdyxwPTAsZS5wcmV2ZW50RGVmYXVsdCgpO2JyZWFrO2Nhc2UgMzU6ZD1lLmN0cmxLZXk/bi5yb3dzLmxlbmd0aC0xOm4ucC5pUm93LHA9bi5wLmNvbE1vZGVsLmxlbmd0aC0xLGUucHJldmVudERlZmF1bHQoKTticmVhaztjYXNlIDMzOnMoLTEpLHA9bi5wLmlDb2wsZD1uLnAuaVJvdyxlLnByZXZlbnREZWZhdWx0KCk7YnJlYWs7Y2FzZSAzNDpzKDEpLHA9bi5wLmlDb2wsKGQ9bi5wLmlSb3cpPm4ucm93cy5sZW5ndGgtMSYmKGQ9bi5yb3dzLmxlbmd0aC0xLG4ucC5pUm93PW4ucm93cy5sZW5ndGgtMSksZS5wcmV2ZW50RGVmYXVsdCgpO2JyZWFrO2Nhc2UgMTM6cmV0dXJuIHZvaWQoWWUuamdyaWQuaXNGdW5jdGlvbihoLm9uRW50ZXJDZWxsKSYmKGgub25FbnRlckNlbGwuY2FsbChuLG4ucm93c1tuLnAuaVJvd10uaWQsbi5wLmlSb3csbi5wLmlDb2wsZSksZS5wcmV2ZW50RGVmYXVsdCgpKSk7Y2FzZSAxMTM6dHJ5e1llKG4pLmpxR3JpZCgiZWRpdENlbGwiLG4ucC5pUm93LG4ucC5pQ29sLCEwLGUpfWNhdGNoKGUpe31icmVhaztkZWZhdWx0OnJldHVybiB2b2lkKGMmJmMuY2FsbChuLG4ucm93c1tuLnAuaVJvd10uaWQsbi5wLmlSb3csbi5wLmlDb2wsZSkpfXNldFRpbWVvdXQoZnVuY3Rpb24oKXtZZShuKS5qcUdyaWQoImZvY3VzQm9keUNlbGwiLGQscCxyLGwpfSw1MCl9fSksWWUobikub24oImpxR3JpZEJlZm9yZVNlbGVjdFJvdy5hcmlhR3JpZENsaWNrIixmdW5jdGlvbigpe3JldHVybiExfSksWWUobikub24oImpxR3JpZENlbGxTZWxlY3QuYXJpYUdyaWRDbGljayIsZnVuY3Rpb24oZSx0LHIsaSxvKXt2YXIgYSxvPW8udGFyZ2V0OzA8bi5wLmlSb3cmJjA8PW4ucC5pQ29sJiZZZShuLnJvd3Nbbi5wLmlSb3ddLmNlbGxzW24ucC5pQ29sXSkuYXR0cigidGFiaW5kZXgiLC0xKSwoWWUobykuaXMoInRkIil8fFllKG8pLmlzKCJ0aCIpfHxvLmlkLnN0YXJ0c1dpdGgoImpxc18iK24ucC5pZCkpJiYobi5wLmlDb2w9by5jZWxsSW5kZXgsYT1ZZShvKS5jbG9zZXN0KCJ0ci5qcWdyb3ciKSxuLnAuaVJvdz1hWzBdLnJvd0luZGV4LFllKG8pLmF0dHIoInRhYmluZGV4IiwwKS5hZGRDbGFzcyhsKS5mb2N1cygpLmJsdXIoZnVuY3Rpb24oKXtZZSh0aGlzKS5yZW1vdmVDbGFzcyhsKX0pKX0pLG4ucC5hcmlhQm9keT0hMH0pfSxleGNlbExpa2VHcmlkOmZ1bmN0aW9uKGUpe3ZhciBqPVllLmV4dGVuZCh7YmVmb3JlRGVsZXRlQ2VsbDpudWxsLGN1c3RvbUNlbGxBY3Rpb246bnVsbCxjdXN0b21VbmRvRnVuY3Rpb246bnVsbCxzcGVjaWFsQ2hhcnM6WyJ+IiwiISIsIkAiLCIjIiwiJCIsIiUiLCJeIiwiJiIsIioiLCIoIiwiKSIsIl8iLCIrIiwieyIsIn0iLCI6IiwnIicsInwiLCI8IiwiPiIsIj8iLCIsIiwiLiIsIi8iLCI7IiwiXFwiLCJbIiwiXSJdLGFkZG9uQ2hhcnM6ITEsb25LZXlDaGVjazpudWxsfSxlfHx7fSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBuPXRoaXMsbD1ZZS5qZ3JpZC5nZXRNZXRob2QoImdldFN0eWxlVUkiKSxzPWwobi5wLnN0eWxlVUkrIi5jb21tb24iLCJoaWdobGlnaHQiLCEwKTtmdW5jdGlvbiBhKGUsdCl7cmV0dXJuIWlzTmFOKGUpJiYhaXNOYU4odCkmJjA8PWUmJjA8PXQmJm4ucm93cy5sZW5ndGgmJmU8bi5yb3dzLmxlbmd0aCYmdDxuLnAuY29sTW9kZWwubGVuZ3RofWZ1bmN0aW9uIGkoZSx0KXt2YXIgdD1uLnAuaVJvdyt0LHI9bi5wLmlDb2wrZSxpPW4ucm93cy5sZW5ndGgsZT0wIT09ZSxvPW4ucC5mcm96ZW5Db2x1bW5zP24ucC5mcm96ZW5Db2xDb3VudCsxOjA7cmV0dXJuISFpJiYoaT1uLnAuY29sTW9kZWwubGVuZ3RoLGUmJihyPXI8bz9vOnIpPT09aSYmKHI9aSksZXx8bi5yb3dzW3RdJiYwPD1yJiYhbi5yb3dzW3RdLmNlbGxzW3JdJiZ0LS0sYSh0LHIpP3tyb3c6dCxjb2w6cn06ISFhKG4ucC5pUm93LG4ucC5pQ29sKSYme3JvdzpuLnAuaVJvdyxjb2w6bi5wLmlDb2x9KX1mdW5jdGlvbiBkKGUsdCl7dmFyIHI9aShlLHQpO2lmKCFyKXJldHVybiExO2Zvcig7WWUobi5yb3dzW3Iucm93XS5jZWxsc1tyLmNvbF0pLmlzKCI6aGlkZGVuIik7KWlmKG4ucC5pUm93PXIucm93LG4ucC5pQ29sPXIuY29sLHI9aShlLHQpLG4ucC5pUm93PT09ci5yb3cmJm4ucC5pQ29sPT09ci5jb2wpcmV0dXJuITE7cmV0dXJuIDAhPT10JiZZZShuKS5qcUdyaWQoInNldFNlbGVjdGlvbiIsbi5yb3dzW3Iucm93XS5pZCwhMSxudWxsLCExKSxyfWZ1bmN0aW9uIHAoZSl7dmFyIHQ9bi5wLnBhZ2Uscj1uLnAubGFzdHBhZ2U7bi5wLnBhZ2UhPT0odD1yPCh0PSh0Kz1lKTw9MD8xOnQpP3I6dCkmJihuLnAucGFnZT10LG4uZ3JpZC5wb3B1bGF0ZSgpKX1uLnAuRjJrZXk9ITE7dmFyIHQ9WWUuamdyaWQuZm9jdXNhYmxlRWxlbWVudHNMaXN0LmpvaW4oKSxjPShZZShuKS5yZW1vdmVBdHRyKCJ0YWJpbmRleCIpLFllKG4pLm9uKCJqcUdyaWRBZnRlckdyaWRDb21wbGV0ZS5zZXRBcmlhR3JpZCIsZnVuY3Rpb24oZSl7WWUoInRib2R5IixuKS5maXJzdCgpLmZpbmQoIj50cjpub3QoLmpxZ2ZpcnN0cm93KT50ZDpub3QoOmhpZGRlbiwgOmhhcygiK3QrIikpIikuYXR0cigidGFiaW5kZXgiLC0xKSxZZSgidGJvZHkiLG4pLmZpcnN0KCkuZmluZCgiPnRyOm5vdCguanFnZmlyc3Ryb3cpIikucmVtb3ZlQXR0cigidGFiaW5kZXgiKSx2b2lkIDAhPT1uLnAuaVJvdyYmdm9pZCAwIT09bi5wLmlDb2wmJm4ucm93c1tuLnAuaVJvd10mJlllKG4ucm93c1tuLnAuaVJvd10uY2VsbHNbbi5wLmlDb2xdKS5hdHRyKCJ0YWJpbmRleCIsMCkuZm9jdXMoZnVuY3Rpb24oKXtZZSh0aGlzKS5hZGRDbGFzcyhzKX0pLmJsdXIoZnVuY3Rpb24oKXtZZSh0aGlzKS5yZW1vdmVDbGFzcyhzKX0pfSksbi5wLmlSb3c9MSxuLnAuaUNvbD1ZZS5qZ3JpZC5nZXRGaXJzdFZpc2libGVDb2wobiksbi5wLmFyaWFCb2R5PSEwLDApLHU9MCxoPSEhWWUuamdyaWQuaXNGdW5jdGlvbihqLmN1c3RvbUNlbGxBY3Rpb24pJiZqLmN1c3RvbUNlbGxBY3Rpb24sZz0hIVllLmpncmlkLmlzRnVuY3Rpb24oai5iZWZvcmVEZWxldGVDZWxsKSYmai5iZWZvcmVEZWxldGVDZWxsLGY9bmV3IFNldChqLnNwZWNpYWxDaGFycyksbT0hMSx2PShuLmFkZEV2ZW50TGlzdGVuZXIoInBhc3RlIixmdW5jdGlvbihlKXttJiYoZT0oZS5jbGlwYm9hcmREYXRhfHx3aW5kb3cuY2xpcGJvYXJkRGF0YSkuZ2V0RGF0YSgidGV4dCIpLFllKG4pLmpxR3JpZCgic2F2ZUNlbGwiLG4ucC5pUm93LG4ucC5pQ29sLGUpLG09ITEpfSksISFZZS5qZ3JpZC5pc0Z1bmN0aW9uKGoub25LZXlDaGVjaykmJmoub25LZXlDaGVjayk7WWUobikub24oImtleWRvd24iLGZ1bmN0aW9uKGUpe2lmKCghbi5wLm5hdmlnYXRpb25EaXNhYmxlZHx8ITAhPT1uLnAubmF2aWdhdGlvbkRpc2FibGVkKSYmIWUudGFyZ2V0LmlkLnN0YXJ0c1dpdGgoImpxc18iK24ucC5pZCkmJighdnx8di5jYWxsKG4sbi5yb3dzW24ucC5pUm93XS5pZCxuLnAuaVJvdyxuLnAuaUNvbCxlKSkpe3ZhciB0PWUud2hpY2h8fGUua2V5Q29kZSxyPWUuY3RybEtleXx8MTc9PT10O3N3aXRjaCh0KXtjYXNlIDM4Omk9ZCgwLC0xKSxjPWkucm93LHU9aS5jb2wsZS5wcmV2ZW50RGVmYXVsdCgpO2JyZWFrO2Nhc2UgNDA6Y2FzZSAxMzppPWQoMCwxKSxjPWkucm93LHU9aS5jb2wsZS5wcmV2ZW50RGVmYXVsdCgpO2JyZWFrO2Nhc2UgMzc6aT1kKC0xLDApLGM9aS5yb3csdT1pLmNvbCxlLnByZXZlbnREZWZhdWx0KCk7YnJlYWs7Y2FzZSAzOTppPWQoMSwwKSxjPWkucm93LHU9aS5jb2wsZS5wcmV2ZW50RGVmYXVsdCgpO2JyZWFrO2Nhc2UgMzY6Yz1lLmN0cmxLZXk/MTpuLnAuaVJvdyx1PW4ucC5mcm96ZW5Db2x1bW5zP24ucC5mcm96ZW5Db2xDb3VudCsxOjAsZS5wcmV2ZW50RGVmYXVsdCgpO2JyZWFrO2Nhc2UgMzU6Yz1lLmN0cmxLZXk/bi5yb3dzLmxlbmd0aC0xOm4ucC5pUm93LHU9bi5wLmNvbE1vZGVsLmxlbmd0aC0xLGUucHJldmVudERlZmF1bHQoKTticmVhaztjYXNlIDMzOnAoLTEpLHU9bi5wLmlDb2wsYz1uLnAuaVJvdyxlLnByZXZlbnREZWZhdWx0KCk7YnJlYWs7Y2FzZSAzNDpwKDEpLHU9bi5wLmlDb2wsKGM9bi5wLmlSb3cpPm4ucm93cy5sZW5ndGgtMSYmKGM9bi5yb3dzLmxlbmd0aC0xLG4ucC5pUm93PW4ucm93cy5sZW5ndGgtMSksZS5wcmV2ZW50RGVmYXVsdCgpO2JyZWFrO2Nhc2UgOTppPWUuc2hpZnRLZXk/ZCgtMSwwKTpkKDEsMCksYz1pLnJvdyx1PWkuY29sLGUucHJldmVudERlZmF1bHQoKTticmVhaztjYXNlIDExMzp0cnl7WWUobikuanFHcmlkKCJlZGl0Q2VsbCIsbi5wLmlSb3csbi5wLmlDb2wsITAsZSwhMSksbi5wLkYya2V5PSEwfWNhdGNoKGUpe31icmVhaztjYXNlIDg6Y2FzZSA0Njp2YXIgaT0hMDshMD09PShpPWc/Zy5jYWxsKG4sbi5yb3dzW24ucC5pUm93XS5pZCxuLnAuaVJvdyxuLnAuaUNvbCxlKTppKSYmWWUobikuanFHcmlkKCJzYXZlQ2VsbCIsbi5wLmlSb3csbi5wLmlDb2wsIiIpO2JyZWFrO2Nhc2UgODY6aWYocilyZXR1cm4gbT0hMDticmVhaztjYXNlIDkwOmlmKHIpcmV0dXJuIGk9ITAsKGk9WWUuamdyaWQuaXNGdW5jdGlvbihqLmN1c3RvbVVuZG9GdW5jdGlvbik/ai5jdXN0b21VbmRvRnVuY3Rpb24uY2FsbChuLG4ucm93c1tuLnAuaVJvd10uaWQsbi5wLmlSb3csbi5wLmlDb2wsZSk6aSkmJm4ucC5zYXZlZFZhbHVlcyYmWWUobikuanFHcmlkKCJnZXRDZWxsIixuLnJvd3Nbbi5wLmlSb3ddLmlkLG4ucC5jb2xNb2RlbFtuLnAuaUNvbF0ubmFtZSwhMSk9PT1uLnAuc2F2ZWRWYWx1ZXMubmV3dmFsdWUmJm4ucC5pUm93PT09bi5wLnNhdmVkVmFsdWVzLmluZGV4Um93JiZZZShuKS5qcUdyaWQoInNhdmVDZWxsIixuLnAuaVJvdyxuLnAuaUNvbCxuLnAuc2F2ZWRWYWx1ZXMub2xkdmFsdWUpLCEwO2JyZWFrO2RlZmF1bHQ6dmFyIGk9L15bYS16XSQvaS50ZXN0KGUua2V5KSxvPS9eWzAtOV0kL2kudGVzdChlLmtleSksYT0hMTtyZXR1cm4gai5hZGRvbkNoYXJzJiYoYT1qLmFkZG9uQ2hhcnMudGVzdChlLmtleSkpLChpfHxvfHxmLmhhcyhlLmtleSl8fGEpJiZZZShuKS5qcUdyaWQoImVkaXRDZWxsIixuLnAuaVJvdyxuLnAuaUNvbCwhMCxlLCEwKSx2b2lkKGgmJmguY2FsbChuLG4ucm93c1tuLnAuaVJvd10uaWQsbi5wLmlSb3csbi5wLmlDb2wsZSkpfXNldFRpbWVvdXQoZnVuY3Rpb24oKXtZZShuKS5qcUdyaWQoImZvY3VzQm9keUNlbGwiLGMsdSxsLHMpfSw1MCl9fSksWWUobikub24oImpxR3JpZEJlZm9yZVNlbGVjdFJvdy5hcmlhR3JpZENsaWNrIixmdW5jdGlvbigpe3JldHVybiExfSksWWUobikub24oImpxR3JpZENlbGxTZWxlY3QuYXJpYUdyaWRDbGljayIsZnVuY3Rpb24oZSx0LHIsaSxvKXt2YXIgYSxvPW8udGFyZ2V0OzA8bi5wLmlSb3cmJjA8PW4ucC5pQ29sJiZZZShuLnJvd3Nbbi5wLmlSb3ddLmNlbGxzW24ucC5pQ29sXSkuYXR0cigidGFiaW5kZXgiLC0xKSwoWWUobykuaXMoInRkIil8fFllKG8pLmlzKCJ0aCIpfHxvLmlkLnN0YXJ0c1dpdGgoImpxc18iK24ucC5pZCkpJiYobi5wLmlDb2w9by5jZWxsSW5kZXgsbi5wLnNhdmVkUm93Lmxlbmd0aCYmWWUobikuanFHcmlkKCJzYXZlQ2VsbCIsbi5wLnNhdmVkUm93WzBdLmlkLG4ucC5zYXZlZFJvd1swXS5pYyksYT1ZZShvKS5jbG9zZXN0KCJ0ci5qcWdyb3ciKSxuLnAuaVJvdz1hWzBdLnJvd0luZGV4LFllKG8pLmF0dHIoInRhYmluZGV4IiwwKS5hZGRDbGFzcyhzKS5mb2N1cygpLmJsdXIoZnVuY3Rpb24oKXtZZSh0aGlzKS5yZW1vdmVDbGFzcyhzKX0pKX0pLm9uKCJqcUdyaWREYmxDbGlja1Jvdy5hcmlhR3JpZERibENsaWNrIixmdW5jdGlvbihlLHQscixpLG8pe1llKG4pLmpxR3JpZCgiZWRpdENlbGwiLHIsaSwhMCxvLCExKSxuLnAuRjJrZXk9ITB9KX0pfSxmb2N1c0JvZHlDZWxsOmZ1bmN0aW9uKG4sbCxzLGQpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZSx0PXRoaXMscj1zfHxZZS5qZ3JpZC5nZXRNZXRob2QoImdldFN0eWxlVUkiKSxpPWR8fHIodC5wLnN0eWxlVUkrIi5jb21tb24iLCJoaWdobGlnaHQiLCEwKSxvPVllLmpncmlkLmZvY3VzYWJsZUVsZW1lbnRzTGlzdC5qb2luKCk7ZnVuY3Rpb24gYShlKXtyZXR1cm4gWWUobyxlKVswXX12b2lkIDAhPT1uJiZ2b2lkIDAhPT1sPyFpc05hTih0LnAuaVJvdykmJiFpc05hTih0LnAuaUNvbCkmJjA8PXQucC5pQ29sJiYoZT1hKHQucm93c1t0LnAuaVJvd10uY2VsbHNbdC5wLmlDb2xdKSxZZShlfHx0LnJvd3NbdC5wLmlSb3ddLmNlbGxzW3QucC5pQ29sXSkuYXR0cigidGFiaW5kZXgiLC0xKSk6KG49dC5wLmlSb3csbD10LnAuaUNvbCksbj1wYXJzZUludChuLDEwKSxsPXBhcnNlSW50KGwsMTApLDA8biYmMDw9bCYmKGU9YSh0LnJvd3Nbbl0uY2VsbHNbbF0pLFllKGV8fHQucm93c1tuXS5jZWxsc1tsXSkuYXR0cigidGFiaW5kZXgiLDApLmFkZENsYXNzKGkpLmZvY3VzKCkuYmx1cihmdW5jdGlvbigpe1llKHRoaXMpLnJlbW92ZUNsYXNzKGkpfSksdC5wLmlSb3c9bix0LnAuaUNvbD1sKX0pfSxyZXNldEFyaWFCb2R5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciB0PXRoaXMscj0hMSxlPSh0LnAuYXJpYUJvZHk9ITEsWWUodCkuYXR0cigidGFiaW5kZXgiLCIwIikub2ZmKCJrZXlkb3duIikub2ZmKCJqcUdyaWRCZWZvcmVTZWxlY3RSb3cuYXJpYUdyaWRDbGljayIpLm9mZigianFHcmlkQ2VsbFNlbGVjdC5hcmlhR3JpZENsaWNrIikub2ZmKCJqcUdyaWRBZnRlckdyaWRDb21wbGV0ZS5zZXRBcmlhR3JpZCIpLFllLmpncmlkLmZvY3VzYWJsZUVsZW1lbnRzTGlzdC5qb2luKCkpO1llKCJ0Ym9keSIsdCkuZmlyc3QoKS5maW5kKCI+dHI6bm90KC5qcWdmaXJzdHJvdyk+dGQ6bm90KDpoaWRkZW4sIDpoYXMoIitlKyIpKSIpLnJlbW92ZUF0dHIoInRhYmluZGV4Iikub2ZmKCJmb2N1cyIpLFllKCJ0Ym9keSIsdCkuZmlyc3QoKS5maW5kKCI+dHI6bm90KC5qcWdmaXJzdHJvdykiKS5hdHRyKCJ0YWJpbmRleCIsLTEpO3RyeXt0LnJlbW92ZUV2ZW50TGlzdGVuZXIoInBhc3RlIixmdW5jdGlvbihlKXtyJiYoZT0oZS5jbGlwYm9hcmREYXRhfHx3aW5kb3cuY2xpcGJvYXJkRGF0YSkuZ2V0RGF0YSgidGV4dCIpLFllKHQpLmpxR3JpZCgic2F2ZUNlbGwiLHQucC5pUm93LHQucC5pQ29sLGUpLHI9ITEpfSwhMCl9Y2F0Y2goZSl7fX0pfSxhcmlhSGVhZGVyR3JpZDpmdW5jdGlvbihlKXt2YXIgcj1ZZS5leHRlbmQoe29uSGVhZGVyS2V5Q2hlY2s6bnVsbH0sZXx8e30pO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgbz10aGlzLGU9WWUuamdyaWQuZ2V0TWV0aG9kKCJnZXRTdHlsZVVJIikoby5wLnN0eWxlVUkrIi5jb21tb24iLCJoaWdobGlnaHQiLCEwKSx0PVllKCIjZ2JveF8iK28ucC5pZCkuZmluZCgiLnVpLWpxZ3JpZC1oYm94PnRhYmxlIikuZmlyc3QoKSxhPSEhWWUuamdyaWQuaXNGdW5jdGlvbihyLm9uSGVhZGVyS2V5Q2hlY2spJiZyLm9uSGVhZGVyS2V5Q2hlY2s7WWUoInRyLnVpLWpxZ3JpZC1sYWJlbHMiLHQpLm9uKCJrZXlkb3duIixmdW5jdGlvbihlKXt2YXIgdD1vLnAuc2VsSGVhZEluZCxyPWUud2hpY2h8fGUua2V5Q29kZSxpPW8uZ3JpZC5oZWFkZXJzLmxlbmd0aDtpZighYXx8YS5jYWxsKG8sdCxlKSlzd2l0Y2gocil7Y2FzZSAzNzppZigwPD10LTEpe2Zvcih0LS07WWUoby5ncmlkLmhlYWRlcnNbdF0uZWwpLmlzKCI6aGlkZGVuIikmJjA8PXQtMSYmISgtLXQ8MCk7KTswPD10JiYoWWUoby5ncmlkLmhlYWRlcnNbdF0uZWwpLmZvY3VzKCksWWUoby5ncmlkLmhlYWRlcnNbby5wLnNlbEhlYWRJbmRdLmVsKS5hdHRyKCJ0YWJpbmRleCIsIi0xIiksby5wLnNlbEhlYWRJbmQ9dCxlLnByZXZlbnREZWZhdWx0KCkpfWJyZWFrO2Nhc2UgMzk6aWYodCsxPGkpe2Zvcih0Kys7WWUoby5ncmlkLmhlYWRlcnNbdF0uZWwpLmlzKCI6aGlkZGVuIikmJnQrMTxpJiYhKGktMTwrK3QpOyk7dDxpJiYoWWUoby5ncmlkLmhlYWRlcnNbdF0uZWwpLmZvY3VzKCksWWUoby5ncmlkLmhlYWRlcnNbby5wLnNlbEhlYWRJbmRdLmVsKS5hdHRyKCJ0YWJpbmRleCIsIi0xIiksby5wLnNlbEhlYWRJbmQ9dCxlLnByZXZlbnREZWZhdWx0KCkpfWJyZWFrO2Nhc2UgMTM6WWUoby5ncmlkLmhlYWRlcnNbdF0uZWwpLmZpbmQoImRpdiIpLmZpcnN0KCkudHJpZ2dlcigiY2xpY2siKSxlLnByZXZlbnREZWZhdWx0KCk7YnJlYWs7ZGVmYXVsdDpyZXR1cm59fSksWWUoInRyLnVpLWpxZ3JpZC1sYWJlbHM+dGg6bm90KDpoaWRkZW4pIix0KS5hdHRyKCJ0YWJpbmRleCIsLTEpLmZvY3VzKGZ1bmN0aW9uKCl7WWUodGhpcykuYWRkQ2xhc3MoZSkuYXR0cigidGFiaW5kZXgiLCIwIil9KS5ibHVyKGZ1bmN0aW9uKCl7WWUodGhpcykucmVtb3ZlQ2xhc3MoZSl9KSxvLnAuc2VsSGVhZEluZD1ZZS5qZ3JpZC5nZXRGaXJzdFZpc2libGVDb2wobyksWWUoby5ncmlkLmhlYWRlcnNbby5wLnNlbEhlYWRJbmRdLmVsKS5hdHRyKCJ0YWJpbmRleCIsIjAiKX0pfSxmb2N1c0hlYWRlckNlbGw6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpezA8PShlPXZvaWQgMD09PWU/dGhpcy5wLnNlbEhlYWRJbmQ6ZSkmJmU8dGhpcy5wLmNvbE1vZGVsLmxlbmd0aCYmKFllKHRoaXMuZ3JpZC5oZWFkZXJzW3RoaXMucC5zZWxIZWFkSW5kXS5lbCkuYXR0cigidGFiaW5kZXgiLCItMSIpLFllKHRoaXMuZ3JpZC5oZWFkZXJzW2VdLmVsKS5mb2N1cygpLHRoaXMucC5zZWxIZWFkSW5kPWUpfSl9LHJlc2V0QXJpYUhlYWRlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZT1ZZSgiI2dib3hfIit0aGlzLnAuaWQpLmZpbmQoIi51aS1qcWdyaWQtaGJveD50YWJsZSIpLmZpcnN0KCk7WWUoInRyLnVpLWpxZ3JpZC1sYWJlbHMiLGUpLm9mZigia2V5ZG93biIpLFllKCJ0ci51aS1qcWdyaWQtbGFiZWxzPnRoOm5vdCg6aGlkZGVuKSIsZSkucmVtb3ZlQXR0cigidGFiaW5kZXgiKS5vZmYoImZvY3VzIGJsdXIiKX0pfSxhcmlhUGFnZXJHcmlkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBpPXRoaXMsZT1ZZS5qZ3JpZC5nZXRNZXRob2QoImdldFN0eWxlVUkiKSx0PWUoaS5wLnN0eWxlVUkrIi5jb21tb24iLCJoaWdobGlnaHQiLCEwKSxvPSIuIitlKGkucC5zdHlsZVVJKyIuY29tbW9uIiwiZGlzYWJsZWQiLCEwKSxhPVllKCIudWktcGctYnV0dG9uIixpLnAucGFnZXIpLG49YS5sZW5ndGg7YS5hdHRyKCJ0YWJpbmRleCIsIi0xIikuZm9jdXMoZnVuY3Rpb24oKXtZZSh0aGlzKS5hZGRDbGFzcyh0KX0pLmJsdXIoZnVuY3Rpb24oKXtZZSh0aGlzKS5yZW1vdmVDbGFzcyh0KX0pLGkucC5uYXZJbmRleD0wLHNldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgZT1hLm5vdChvKS5maXJzdCgpLmF0dHIoInRhYmluZGV4IiwiMCIpO2kucC5uYXZJbmRleD1lWzBdJiZlWzBdLmNlbGxJbmRleD9lWzBdLmNlbGxJbmRleC0xOjB9LDEwMCksWWUoaS5wLnBhZ2VyKS5maW5kKCJ0YWJsZS51aS1wYWdlci10YWJsZSB0ciIpLmZpcnN0KCkub24oImtleWRvd24iLGZ1bmN0aW9uKGUpe3ZhciB0PWUud2hpY2h8fGUua2V5Q29kZSxyPWkucC5uYXZJbmRleDtzd2l0Y2godCl7Y2FzZSAzNzppZigwPD1yLTEpe2ZvcihyLS07WWUoYVtyXSkuaXMobykmJjA8PXItMSYmISgtLXI8MCk7KTswPD1yJiYoWWUoYVtpLnAubmF2SW5kZXhdKS5hdHRyKCJ0YWJpbmRleCIsIi0xIiksWWUoYVtyXSkuYXR0cigidGFiaW5kZXgiLCIwIikuZm9jdXMoKSxpLnAubmF2SW5kZXg9ciksZS5wcmV2ZW50RGVmYXVsdCgpfWJyZWFrO2Nhc2UgMzk6aWYocisxPG4pe2ZvcihyKys7WWUoYVtyXSkuaXMobykmJnIrMTxuKzEmJiEobi0xPCsrcik7KTtyPG4mJihZZShhW2kucC5uYXZJbmRleF0pLmF0dHIoInRhYmluZGV4IiwiLTEiKSxZZShhW3JdKS5hdHRyKCJ0YWJpbmRleCIsIjAiKS5mb2N1cygpLGkucC5uYXZJbmRleD1yKSxlLnByZXZlbnREZWZhdWx0KCl9YnJlYWs7Y2FzZSAxMzpZZShlLm9yaWdpbmFsRXZlbnQuc3JjRWxlbWVudCkuaGFzQ2xhc3MoInVpLXBnLWlucHV0Iil8fChZZShhW3JdKS50cmlnZ2VyKCJjbGljayIpLGUucHJldmVudERlZmF1bHQoKSk7YnJlYWs7ZGVmYXVsdDpyZXR1cm59fSl9KX0sZm9jdXNQYWdlckNlbGw6ZnVuY3Rpb24ocil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBlPVllKCIudWktcGctYnV0dG9uIix0aGlzLnAucGFnZXIpLHQ9ZS5sZW5ndGg7MDw9KHI9dm9pZCAwPT09cj90aGlzLnAubmF2SW5kZXg6cikmJnI8dCYmKFllKGVbdGhpcy5wLm5hdkluZGV4XSkuYXR0cigidGFiaW5kZXgiLCItMSIpLFllKGVbcl0pLmF0dHIoInRhYmluZGV4IiwiMCIpLmZvY3VzKCksdGhpcy5wLm5hdkluZGV4PXIpfSl9LHJlc2V0QXJpYVBhZ2VyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe1llKCIudWktcGctYnV0dG9uIix0aGlzLnAucGFnZXIpLnJlbW92ZUF0dHIoInRhYmluZGV4Iikub2ZmKCJmb2N1cyIpLFllKHRoaXMucC5wYWdlcikuZmluZCgidGFibGUudWktcGFnZXItdGFibGUgdHIiKS5maXJzdCgpLm9mZigia2V5ZG93biIpfSl9LHNldEFyaWFHcmlkOmZ1bmN0aW9uKGUpe3ZhciB0PVllLmV4dGVuZCh7aGVhZGVyOiEwLGJvZHk6ITAscGFnZXI6ITAsb25FbnRlckNlbGw6bnVsbCxjdXN0b21DZWxsQWN0aW9uOm51bGwsZXhjZWw6ITF9LGV8fHt9KTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dC5oZWFkZXImJlllKHRoaXMpLmpxR3JpZCgiYXJpYUhlYWRlckdyaWQiLHQpLHQuYm9keSYmKHQuZXhjZWw/WWUodGhpcykuanFHcmlkKCJleGNlbExpa2VHcmlkIix0KTpZZSh0aGlzKS5qcUdyaWQoImFyaWFCb2R5R3JpZCIsdCkpLHQucGFnZXImJlllKHRoaXMpLmpxR3JpZCgiYXJpYVBhZ2VyR3JpZCIpfSl9LHJlc2V0QXJpYUdyaWQ6ZnVuY3Rpb24oZSl7dmFyIHQ9WWUuZXh0ZW5kKHtoZWFkZXI6ITAsYm9keTohMCxwYWdlcjohMH0sZXx8e30pO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt0LmJvZHkmJlllKHRoaXMpLmpxR3JpZCgicmVzZXRBcmlhQm9keSIpLHQuaGVhZGVyJiZZZSh0aGlzKS5qcUdyaWQoInJlc2V0QXJpYUhlYWRlciIpLHQucGFnZXImJlllKHRoaXMpLmpxR3JpZCgicmVzZXRBcmlhUGFnZXIiKX0pfX0pLFllLmpncmlkLmV4dGVuZCh7dHJhbnNwb3NlU2V0dXA6ZnVuY3Rpb24obixlKXt2YXIgbD1bXSxzPVtdLGQ9ITEscD1ZZS5leHRlbmQoe30sZXx8e30pO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZSx0LHI9T2JqZWN0LmtleXMobltwLmJhc2VpbmRleF0pO3AuZXhjbHVkZVNyY0NvbHMubGVuZ3RoJiYocj1yLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hcC5leGNsdWRlU3JjQ29scy5pbmNsdWRlcyhlKX0pKTtmb3IodmFyIGk9MDtpPHIubGVuZ3RoO2krKyl7dD0wLChlPXt9KS5jb2xfbmFtZT1yW2ldLGR8fGwucHVzaCh7bmFtZToiY29sX25hbWUifSksdCsrO2Zvcih2YXIgbz0wO288bi5sZW5ndGg7bysrKXt2YXIgYT1uW29dO2VbcC5uYW1lcHJlZml4K3RdPWFbcltpXV0sZHx8bC5wdXNoKHtuYW1lOnAubmFtZXByZWZpeCt0LGxhYmVsOnAubGFiZWxwcmVmaXgrdH0pLHQrK31kPSEwLHMucHVzaChlKX19KSx7Y29sTW9kZWw6bCxyb3dzOnN9fSxqcVRyYW5zcG9zZTpmdW5jdGlvbihyLGwscyxpKXtyZXR1cm4gbD1ZZS5leHRlbmQoe25hbWVwcmVmaXg6ImNvbCIsbGFiZWxwcmVmaXg6InZhbHVlICIsYmFzZWluZGV4OjAsYmVmb3JlQ3JlYXRlR3JpZDpudWxsLFJvd0FzSGVhZGVyOjAsbG9hZE1zZzohMSxleGNsdWRlU3JjQ29sczpbXX0sbHx8e30pLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBuPXRoaXMsZT1zJiZzLnJlZ2lvbmFsP3MucmVnaW9uYWw6ImVuIjtmdW5jdGlvbiB0KGUsdCl7QXJyYXkuaXNBcnJheShlKXx8KGU9W10pO3ZhciByPWpRdWVyeShuKS5qcUdyaWQoInRyYW5zcG9zZVNldHVwIixlLGwpO2lmKFllLmpncmlkLmlzRnVuY3Rpb24obC5iZWZvcmVDcmVhdGVHcmlkKSYmbC5iZWZvcmVDcmVhdGVHcmlkLmNhbGwobixyLGUpLCExIT09dC5Sb3dBc0hlYWRlciYmMDw9dC5Sb3dBc0hlYWRlciYmci5yb3dzLmxlbmd0aCYmdC5Sb3dBc0hlYWRlcjxyLnJvd3MubGVuZ3RoKXt2YXIgaSxvPXIucm93c1t0LlJvd0FzSGVhZGVyXSxhPTA7Zm9yKGkgaW4gbylPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobyxpKSYmKHIuY29sTW9kZWxbYV0ubGFiZWw9b1tpXSksYSsrO3Iucm93cy5zcGxpY2UodC5Sb3dBc0hlYWRlciwxKX1lPVllLmpncmlkLmZyb20uY2FsbChuLHIucm93cyk7alF1ZXJ5KG4pLmpxR3JpZChZZS5leHRlbmQoITAse2RhdGFzdHI6ZS5zZWxlY3QoKSxkYXRhdHlwZToianNvbnN0cmluZyIsY29sTW9kZWw6ci5jb2xNb2RlbCxqc29uUmVhZGVyOntyZXBlYXRpdGVtczohMX0sdmlld3JlY29yZHM6ITB9LHN8fHt9KSksbC5sb2FkTXNnJiZZZSgiLmxvYWRpbmdfcGl2b3QiKS5yZW1vdmUoKX1sLmxvYWRNc2cmJlllKCI8ZGl2IGNsYXNzPSdsb2FkaW5nX3Bpdm90IHVpLXN0YXRlLWRlZmF1bHQgdWktc3RhdGUtYWN0aXZlIHJvdyc+IitZZS5qZ3JpZC5nZXRSZWdpb25hbChuLCJyZWdpb25hbC4iK2UrIi5kZWZhdWx0cy5sb2FkdGV4dCIpKyI8L2Rpdj4iKS5pbnNlcnRCZWZvcmUobikuc2hvdygpLCJzdHJpbmciPT10eXBlb2Ygcj9ZZS5hamF4KFllLmV4dGVuZCh7dXJsOnIsZGF0YVR5cGU6Impzb24iLHN1Y2Nlc3M6ZnVuY3Rpb24oZSl7dChZZS5qZ3JpZC5nZXRBY2Nlc3NvcihlLGkmJmkucmVhZGVyP2kucmVhZGVyOiJyb3dzIiksbCl9fSxpfHx7fSkpOnQocixsKX0pfX0pLFllLmpncmlkLmV4dGVuZCh7c2V0dXBGcm96ZW5Sb3dzOmZ1bmN0aW9uKGUpe3ZhciBtPVllLmV4dGVuZCh7Zmlyc3Q6MCxsYXN0OjAscm93aWRzOltdLHNhdmVGaXJzdExhc3RJZDohMSxjbGFzc2VzOiIifSxlfHx7fSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2lmKCEoITA9PT10aGlzLnAuc3ViR3JpZHx8ITA9PT10aGlzLnAudHJlZUdyaWR8fCEwPT09dGhpcy5wLmNlbGxFZGl0fHx0aGlzLnAuc2Nyb2xsfHwhMD09PXRoaXMucC5mcm96ZW5Db2x1bW5zfHwhMD09PXRoaXMucC5mcm96ZW5Sb3dzfHwhMD09PXRoaXMucC5ncm91cGluZ3x8bS5maXJzdDw9MCYmbS5sYXN0PD0wJiYwPT09bS5yb3dpZHMubGVuZ3RoKSl7dmFyIGUsdCxyLGk9dGhpcyxvPSJib3JkZXItYm94Ij09PVllKCIjIitZZS5qZ3JpZC5qcUlEKGkucC5pZCkpLmNzcygiYm94LXNpemluZyIpPzE6MCxhPSIjIitZZS5qZ3JpZC5qcUlEKGkucC5pZCksbj0iI2d2aWV3XyIrWWUuamdyaWQuanFJRChpLnAuaWQpLGw9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdib3hfIitpLnAuaWQpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCxzPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGkucC5pZCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wLGQ9WWUobikud2lkdGgoKSxwPVtdLHM9WWUoJzxkaXYgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlO2xlZnQ6MHB4O3RvcDonKyhzLWwtbykrJ3B4O2hlaWdodDowcHg7b3ZlcmZsb3cteDpoaWRkZW47IiBjbGFzcz0iZnJvemVuLXJkaXYgdWktanFncmlkLXJkaXYiPjwvZGl2PicpO2lmKFllKG4pLmFwcGVuZChzKSxZZSgiLmZyb3plbi1yZGl2IixuKS5jc3MoIndpZHRoIixkLShZZS5qZ3JpZC5zY3JvbGxiYXJXaWR0aCgpKzIpKSxwLnB1c2goWWUoIi5qcWdmaXJzdHJvdyIsYSkuY2xvbmUoITApKSxtLnJvd2lkcyYmMDxtLnJvd2lkcy5sZW5ndGgpe2ZvcihlPTA7ZTxtLnJvd2lkcy5sZW5ndGg7ZSsrKWZvcih0PWkucm93cy5sZW5ndGg7dC0tOylpZihpLnJvd3NbdF0uaWQ9PT1tLnJvd2lkc1tlXSl7cC5wdXNoKFllKGkucm93c1t0XSkuY2xvbmUoITApKSxZZShpLnJvd3NbdF0pLmluc2VydEJlZm9yZShpLnJvd3NbZSsxXSk7YnJlYWt9fWVsc2UgaWYoMDxtLmZpcnN0KWZvcihlPTA7ZTxtLmZpcnN0O2UrKylwLnB1c2goWWUoaS5yb3dzW2UrMV0pLmNsb25lKCEwKSksbS5zYXZlRmlyc3RMYXN0SWQmJihtLnJvd2lkc3x8KG0ucm93aWRzPVtdKSxtLnJvd2lkcy5wdXNoKGkucm93c1tlKzFdLmlkKSk7ZWxzZXtpZighKDA8bS5sYXN0KSlyZXR1cm47Zm9yKHQ9aS5yb3dzLmxlbmd0aCxlPTA7ZTxtLmxhc3Q7ZSsrKXAuc3BsaWNlKDEsMCxZZShpLnJvd3NbdC0xXSkuY2xvbmUoITApKSxtLnNhdmVGaXJzdExhc3RJZCYmKG0ucm93aWRzfHwobS5yb3dpZHM9W10pLG0ucm93aWRzLnVuc2hpZnQoaS5yb3dzW3QtMV0uaWQpKSxZZShpLnJvd3NbdC0xXSkuaW5zZXJ0QmVmb3JlKGkucm93c1sxXSl9cy5jc3MoImhlaWdodCIsImF1dG8iKTt2YXIgYz1ZZShhKS5jbG9uZSghMCk7Zm9yKGMuY2hpbGRyZW4oInRib2R5IikuZW1wdHkoKSx0PTAscj1wLmxlbmd0aDt0PHI7dCsrKXBbdF0uYWRkQ2xhc3MobS5jbGFzc2VzKS5hcHBlbmRUbyhjKTtjLmFwcGVuZFRvKHMpO3ZhciB1PWkucC5pZCsiX2ZyIixsPShZZShhLHMpLmF0dHIoImlkIix1KSx1PSIjIitZZS5qZ3JpZC5qcUlEKHUpLFllLmpncmlkLmdldE1ldGhvZCgiZ2V0U3R5bGVVSSIpKSxvPWkucC5zdHlsZVVJKyIuY29tbW9uIixoPWwobywiaGlnaGxpZ2h0IiwhMCksZz1sKG8sImhvdmVyIiwhMCk7aWYoWWUoIi5mcm96ZW4tcmRpdiIsbikub24oImNsaWNrIiwidHIiLGZ1bmN0aW9uKCl7aS5wLnNlbHJvdyYmWWUoaSkuanFHcmlkKCJyZXNldFNlbGVjdGlvbiIsaS5wLnNlbHJvdyk7dmFyIGU9WWUodGhpcykuaW5kZXgoKTtZZSh0aGlzKS5hZGRDbGFzcyhoKS5zaWJsaW5ncygpLnJlbW92ZUNsYXNzKGgpLGkucC5zZWxyb3c9dGhpcy5pZCxZZSgiLmZyb3plbi1yZGl2IHRyIikuZXEoZSkuYWRkQ2xhc3MoaCkuc2libGluZ3MoKS5yZW1vdmVDbGFzcyhoKX0pLFllKHUpLm9uKCJjbGljayIsZnVuY3Rpb24oKXtZZSgiLmZyb3plbi1yZGl2IHRib2R5IikuY2hpbGRyZW4oInRyIikuZWFjaChmdW5jdGlvbigpe1llKHRoaXMpLnJlbW92ZUNsYXNzKGgpfSl9KSxZZShuKyIgLnVpLWpxZ3JpZC1iZGl2IikuZmlyc3QoKS5vbigic2Nyb2xsIixmdW5jdGlvbigpe3ZhciBlPXRoaXMuc2Nyb2xsTGVmdDtZZSgiLmZyb3plbi1yZGl2Iikuc2Nyb2xsTGVmdChlKX0pLFllKCIuZnJvemVuLXJkaXYgdHIiKS5ob3ZlcihmdW5jdGlvbigpe3ZhciBlPVllKHRoaXMpLmluZGV4KCk7WWUoIi5mcm96ZW4tcmRpdiB0ciIpLmVxKGUpLmFkZENsYXNzKGcpfSxmdW5jdGlvbigpe3ZhciBlPVllKHRoaXMpLmluZGV4KCk7WWUoIi5mcm96ZW4tcmRpdiB0ciIpLmVxKGUpLnJlbW92ZUNsYXNzKGcpfSksaS5wLnJvd251bWJlcnMpe3ZhciBmPSExO3RyeXtpZihZZShpLnJvd3NbMF0uY2VsbHMpLmVhY2goZnVuY3Rpb24oZSl7aWYoWWUodGhpcykuaGFzQ2xhc3MoImpxZ3JpZC1yb3dudW1iZXIiKSlyZXR1cm4gZj1lLCExfSksITEhPT1mKXtmb3IodD1pLnJvd3MubGVuZ3RoLGU9MTtlPHQ7KVllKGkucm93c1tlXS5jZWxsc1tmXSkuaHRtbChlKSxlKys7Zm9yKHQ9WWUodSlbMF0ucm93cy5sZW5ndGgsZT0xO2U8dDspWWUodSlbMF0ucm93c1tlXS5jZWxsc1tmXS5pbm5lckhUTUw9ZSxlKyt9fWNhdGNoKGUpe319aS5ncmlkLmZyYkRpdj1zLGkucC5mcm96ZW5Sb3dzPSEwLGkucC5mcm96ZW5Sb3dzUHJtPW19fSl9LGRlc3Ryb3lGcm96ZW5Sb3dzOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt0aGlzLmdyaWQuZnJiRGl2LnJlbW92ZSgpLHRoaXMucC5mcm96ZW5Sb3dzPSExLGUmJih0aGlzLnAuZnJvemVuUm93c1BybT1udWxsKX0pfSxzZXRGcm96ZW5Sb3dzOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXswPHRoaXMucC5yZWNvcmRzJiZZZSh0aGlzKS5qcUdyaWQoInNldHVwRnJvemVuUm93cyIsZSksWWUodGhpcykub24oImpxR3JpZEFmdGVyR3JpZENvbXBsZXRlLnNldEZyb3plblJvd3MiLGZ1bmN0aW9uKCl7dGhpcy5wLmZyb3plblJvd3NQcm0mJiFZZS5pc0VtcHR5T2JqZWN0KHRoaXMucC5mcm96ZW5Sb3dzUHJtKT8oWWUodGhpcykuanFHcmlkKCJkZXN0cm95RnJvemVuUm93cyIpLFllKHRoaXMpLmpxR3JpZCgic2V0dXBGcm96ZW5Sb3dzIix0aGlzLnAuZnJvemVuUm93c1BybSkpOlllKHRoaXMpLmpxR3JpZCgic2V0dXBGcm96ZW5Sb3dzIixlKX0pLFllKHRoaXMpLm9uKCJqcUdyaWRSZXNpemVTdG9wLnNldEZyb3plblJvd3MiLGZ1bmN0aW9uKCl7aWYodGhpcy5wLmZyb3plblJvd3NQcm0pdHJ5e1llKHRoaXMpLmpxR3JpZCgiZGVzdHJveUZyb3plblJvd3MiKTt2YXIgZT0wPHRoaXMucC5mcm96ZW5Sb3dzUHJtLmxhc3QmJiF0aGlzLnAuZnJvemVuUm93c1BybS5zYXZlRmlyc3RMYXN0SWQmJjA9PT10aGlzLnAuZnJvemVuUm93c1BybS5maXJzdDtlJiYodGhpcy5wLmZyb3plblJvd3NQcm0uZmlyc3Q9dGhpcy5wLmZyb3plblJvd3NQcm0ubGFzdCksWWUodGhpcykuanFHcmlkKCJzZXR1cEZyb3plblJvd3MiLHRoaXMucC5mcm96ZW5Sb3dzUHJtKSxlJiYodGhpcy5wLmZyb3plblJvd3NQcm0uZmlyc3Q9MCl9Y2F0Y2goZSl7fX0pfSl9fSksWWUuamdyaWQuZXh0ZW5kKHtkYkluaXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpeyJpbmRleGVkZGIiPT09ZSYmWWUodGhpcykuanFHcmlkKCJfaW5pdEluZGV4ZWREQl8iKX0pfSxfaW5pdEluZGV4ZWREQl86ZnVuY3Rpb24oKXt0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZD10aGlzO2luZGV4ZWREQi5kYXRhYmFzZXMoKS50aGVuKGZ1bmN0aW9uKGUpe3ZhciB0PWluZGV4ZWREQi5vcGVuKGQucC5kYmNvbmZpZy5kYm5hbWUpO3Qub251cGdyYWRlbmVlZGVkPWU9Pntjb25zb2xlLmluZm8oIkRhdGFiYXNlIGNyZWF0ZWQ6ICIrZC5wLmRiY29uZmlnLmRibmFtZSl9LHQub25zdWNjZXNzPWZ1bmN0aW9uKGUpe2NvbnN0IHQ9ZS50YXJnZXQucmVzdWx0O3ZhciByPXBhcnNlSW50KHQudmVyc2lvbikscz1ZZS5qZ3JpZC5nZXRFbGVtQnlBdHRyVmFsKGQucC5jb2xNb2RlbCwia2V5IiwhMCk7YXN5bmMgZnVuY3Rpb24gaShuKXt2YXIgbCxlPWQucC5kYmNvbmZpZyxlPSgic3RyaW5nIj09dHlwZW9mIGUuZGF0YVVybD8obD1hd2FpdChhd2FpdCBmZXRjaChlLmRhdGFVcmwsZS5mZXRjaE9wdGlvbnMpKS5qc29uKCksWWUuamdyaWQuaXNGdW5jdGlvbihlLmJlZm9yZUluc2VydERhdGEpJiYobD1lLmJlZm9yZUluc2VydERhdGEuY2FsbChkLGwpKSk6QXJyYXkuaXNBcnJheShlLmRhdGFVcmwpJiYobD1lLmRhdGFVcmwpLGQucC5kYmNvbmZpZy5kYnZlcnNpb249cisxLGluZGV4ZWREQi5vcGVuKGUuZGJuYW1lLHIrMSkpO2Uub251cGdyYWRlbmVlZGVkPWZ1bmN0aW9uKGUpe3ZhciB0PWUudGFyZ2V0LnJlc3VsdDtpZighbil7dmFyIHI9dC5jcmVhdGVPYmplY3RTdG9yZShkLnAuZGJjb25maWcuZGJ0YWJsZSx7a2V5UGF0aDpzLm5hbWV9KTtmb3IobGV0IGU9MDtlPGQucC5jb2xNb2RlbC5sZW5ndGg7ZSsrKXt2YXIgaT1kLnAuY29sTW9kZWxbZV07aS5uYW1lPT09cy5uYW1lP3IuY3JlYXRlSW5kZXgoaS5uYW1lLGkubmFtZSx7dW5pcXVlOiEwfSk6ci5jcmVhdGVJbmRleChpLm5hbWUsaS5uYW1lLHt1bmlxdWU6ITF9KX19dmFyIG8sYT1lLnRhcmdldC50cmFuc2FjdGlvbi5vYmplY3RTdG9yZShkLnAuZGJjb25maWcuZGJ0YWJsZSk7YS50cmFuc2FjdGlvbi5vbmNvbXBsZXRlPWZ1bmN0aW9uKGUpe2QucC5kYmNvbmZpZy5sb2FkSWZFeGlzdHM9ITF9LGEudHJhbnNhY3Rpb24ub25lcnJvcj1mdW5jdGlvbihlKXtZZS5qZ3JpZC5pbmZvX2RpYWxvZygiRXJyb3IiLGUudGFyZ2V0LmVycm9yLm5hbWUrIiA6ICIrZS50YXJnZXQuZXJyb3IubWVzc2FnZSwiQ2xvc2UiKX07Zm9yKG8gb2YgbClkLnAuZGJjb25maWcuaXNLZXlJbkRhdGF8fChvW3MubmFtZV09TWF0aC5yYW5kb20oKS50b1N0cmluZygxNikuc2xpY2UoMikpLGEuYWRkKG8pO2QucC5kYmNvbmZpZy5yZWFkeV9yZXE9ITAsZC5ncmlkLnBvcHVsYXRlKCl9LGUub25lcnJvcj1lPT57WWUuamdyaWQuaW5mb19kaWFsb2coIkVycm9yIixlLnRhcmdldC5lcnJvci5uYW1lKyIgOiAiK2UudGFyZ2V0LmVycm9yLm1lc3NhZ2UsIkNsb3NlIil9fWlmKFllLmlzRW1wdHlPYmplY3QocykpWWUuamdyaWQuaW5mb19kaWFsb2coIldhcm5pbmciLCJNaXNzZWQga2V5OiBObyB1bmlxdWllIGtleSBpcyBzZXQgaW4gY29sTW9kZWwuIENyZWF0aW5nIHRhYmxlIGZhaWwiLCJDbG9zZSIpO2Vsc2UgaWYodC5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKGQucC5kYmNvbmZpZy5kYnRhYmxlKSlpZihkLnAuZGJjb25maWcubG9hZElmRXhpc3RzKXtjb25zdCBvPXQudHJhbnNhY3Rpb24oZC5wLmRiY29uZmlnLmRidGFibGUpLm9iamVjdFN0b3JlKGQucC5kYmNvbmZpZy5kYnRhYmxlKS5jb3VudCgpO28ub25zdWNjZXNzPSgpPT57ISgwPG8ucmVzdWx0KXx8ITA9PT1jb25maXJtKCJUaGUgb2JqZWN0IHN0b3JlOiAiK2QucC5kYmNvbmZpZy5kYnRhYmxlKyIgY29udGFpbiBkYXRhISBXb3VsZCB5b3UgbGlrZSB0byBpbnNlcnQgbmV3IGRhdGEgc2V0IG9uZSIpPyh0LmNsb3NlKCksaSghMCkpOih0LmNsb3NlKCksZC5wLmRiY29uZmlnLnJlYWR5X3JlcT0hMCxkLmdyaWQucG9wdWxhdGUoKSl9fWVsc2UgdC5jbG9zZSgpLGQucC5kYmNvbmZpZy5yZWFkeV9yZXE9ITAsZC5ncmlkLnBvcHVsYXRlKCk7ZWxzZSB0LmNsb3NlKCksaSghMSl9LHQub25lcnJvcj1lPT57WWUuamdyaWQuaW5mb19kaWFsb2coIkVycm9yIixlLnRhcmdldC5lcnJvci5uYW1lKyIgOiAiK2UudGFyZ2V0LmVycm9yLm1lc3NhZ2UsIkNsb3NlIil9fSl9KX0sdXBkYXRlU3RvcmFnZVJlY29yZDphc3luYyBmdW5jdGlvbihsLHMpe2xldCBlPXRoaXNbMF0sZD1lLnAuZGJjb25maWcscj1lLnAuZGF0YXR5cGU7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHQsYSl7aWYoQXJyYXkuaXNBcnJheShsKXx8KGw9W2xdKSxzPXN8fGUucC5rZXlOYW1lLGw9WWUuamdyaWQubm9ybWFsaXplRGJEYXRhLmNhbGwoZSxsLGUucC5jb2xNb2RlbCksImluZGV4ZWRkYiI9PT1yKXtjb25zdCBuPXdpbmRvdy5pbmRleGVkREIub3BlbihkLmRibmFtZSk7bi5vbnN1Y2Nlc3M9ZT0+e3ZhciByPW4ucmVzdWx0LnRyYW5zYWN0aW9uKGQuZGJ0YWJsZSwicmVhZHdyaXRlIiksaT0oci5vbmNvbXBsZXRlPWU9Pnt0KGUpLGNvbnNvbGUubG9nKCJUcmFuc2FjdGlvbiBjb21wbGV0ZWQgc3VjY2VmdWxseSIpfSxyLm9uZXJyb3I9ZT0+e2EoZSksY29uc29sZS5sb2coZS50YXJnZXQuZXJyb3IpfSxyLm9iamVjdFN0b3JlKGQuZGJ0YWJsZSkpO2ZvcihsZXQgdD0wO3Q8bC5sZW5ndGg7dCsrKXtpZighbFt0XS5oYXNPd25Qcm9wZXJ0eShzKXx8IiI9PT1sW3RdW3NdKXtyLmFib3J0KCk7YnJlYWt9dmFyIG89aS5vcGVuQ3Vyc29yKCk7by5vbnN1Y2Nlc3M9ZT0+e2U9ZS50YXJnZXQucmVzdWx0O2UmJihlLnZhbHVlW3NdPT09bFt0XVtzXT9lLnVwZGF0ZShsW3RdKTplLmNvbnRpbnVlKCkpfSxvLm9uZXJyb3I9ZT0+e2NvbnNvbGUubG9nKGUudGFyZ2V0LmVycm9yKX19fX19KX0sYWRkU3RvcmFnZVJlY29yZDphc3luYyBmdW5jdGlvbihuLGwpe2xldCBlPXRoaXNbMF0scz1lLnAuZGJjb25maWcsdD1lLnAuZGF0YXR5cGU7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGksbyl7aWYoQXJyYXkuaXNBcnJheShuKXx8KG49W25dKSxsPWx8fGUucC5rZXlOYW1lLG49WWUuamdyaWQubm9ybWFsaXplRGJEYXRhLmNhbGwoZSxuLGUucC5jb2xNb2RlbCksImluZGV4ZWRkYiI9PT10KXtjb25zdCBhPXdpbmRvdy5pbmRleGVkREIub3BlbihzLmRibmFtZSk7YS5vbnN1Y2Nlc3M9ZT0+e3ZhciB0PWEucmVzdWx0LnRyYW5zYWN0aW9uKHMuZGJ0YWJsZSwicmVhZHdyaXRlIikscj0odC5vbmNvbXBsZXRlPWU9PntpKGUpLGNvbnNvbGUubG9nKCJUcmFuc2FjdGlvbiBjb21wbGV0ZWQgc3VjY2VmdWxseSIpfSx0Lm9uZXJyb3I9ZT0+e28oZSksY29uc29sZS5sb2coZS50YXJnZXQuZXJyb3IpfSx0Lm9iamVjdFN0b3JlKHMuZGJ0YWJsZSkpO2ZvcihsZXQgZT0wO2U8bi5sZW5ndGg7ZSsrKW5bZV0uaGFzT3duUHJvcGVydHkobCkmJiIiIT09bltlXVtsXXx8KG5bZV1bbF09TWF0aC5yYW5kb20oKS50b1N0cmluZygxNikuc2xpY2UoMikpLHIuYWRkKG5bZV0pLm9uc3VjY2Vzcz1lPT57fX19fSl9LGRlbGV0ZVN0b3JhZ2VSZWNvcmQ6YXN5bmMgZnVuY3Rpb24obixlKXtsZXQgdD10aGlzWzBdLGw9dC5wLmRiY29uZmlnLHI9dC5wLmRhdGF0eXBlO3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihpLG8pe2lmKEFycmF5LmlzQXJyYXkobil8fChuPVtuXSksZT1lfHx0LnAua2V5TmFtZSwiaW5kZXhlZGRiIj09PXIpe2NvbnN0IGE9d2luZG93LmluZGV4ZWREQi5vcGVuKGwuZGJuYW1lKTthLm9uc3VjY2Vzcz1lPT57dmFyIHQ9YS5yZXN1bHQudHJhbnNhY3Rpb24obC5kYnRhYmxlLCJyZWFkd3JpdGUiKSxyPSh0Lm9uY29tcGxldGU9ZT0+e2koZSksY29uc29sZS5sb2coIlRyYW5zYWN0aW9uIGNvbXBsZXRlZCBzdWNjZWZ1bGx5Iil9LHQub25lcnJvcj1lPT57byhlKSxjb25zb2xlLmxvZyhlLnRhcmdldC5lcnJvcil9LHQub2JqZWN0U3RvcmUobC5kYnRhYmxlKSk7Zm9yKGxldCBlPTA7ZTxuLmxlbmd0aDtlKyspci5kZWxldGUobltlXSkub25jb21wbGV0ZT1lPT57fX19fSl9fSl9KTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9anF1ZXJ5LmpxR3JpZC5taW4uanMubWFw'></script id=script_jgg_jqgrid_end>

<script id=script_jgg_locale_js src='data:/text/plain;base64,LyoqCiAqIGpxR3JpZCBFbmdsaXNoIFRyYW5zbGF0aW9uCiAqIFRvbnkgVG9tb3YgdG9ueUB0cmlyYW5kLmNvbQogKiBodHRwOi8vdHJpcmFuZC5jb20vYmxvZy8gCiAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgR1BMIGxpY2Vuc2VzOgogKiBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocAogKiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLmh0bWwKKiovCi8qZ2xvYmFsIGpRdWVyeSwgZGVmaW5lICovCihmdW5jdGlvbiggZmFjdG9yeSApIHsKCSJ1c2Ugc3RyaWN0IjsKCWlmICggdHlwZW9mIGRlZmluZSA9PT0gImZ1bmN0aW9uIiAmJiBkZWZpbmUuYW1kICkgewoJCS8vIEFNRC4gUmVnaXN0ZXIgYXMgYW4gYW5vbnltb3VzIG1vZHVsZS4KCQlkZWZpbmUoWwoJCQkianF1ZXJ5IiwKCQkJIi4uL2dyaWQuYmFzZSIKCQldLCBmYWN0b3J5ICk7Cgl9IGVsc2UgewoJCS8vIEJyb3dzZXIgZ2xvYmFscwoJCWZhY3RvcnkoIGpRdWVyeSApOwoJfQp9KGZ1bmN0aW9uKCAkICkgewoKJC5qZ3JpZCA9ICQuamdyaWQgfHwge307CmlmKCEkLmpncmlkLmhhc093blByb3BlcnR5KCJyZWdpb25hbCIpKSB7CgkkLmpncmlkLnJlZ2lvbmFsID0gW107Cn0KJC5qZ3JpZC5yZWdpb25hbFsiZW4iXSA9IHsKCWRlZmF1bHRzIDogewoJCXJlY29yZHRleHQ6ICJWaWV3IHswfSAtIHsxfSBvZiB7Mn0iLAoJCWVtcHR5cmVjb3JkczogIk5vIHJlY29yZHMgdG8gdmlldyIsCgkJbG9hZHRleHQ6ICJMb2FkaW5nLi4uIiwKCQlzYXZldGV4dDogIlNhdmluZy4uLiIsCgkJcGd0ZXh0IDogIlBhZ2UgezB9IG9mIHsxfSIsCgkJcGdmaXJzdCA6ICJGaXJzdCBQYWdlIiwKCQlwZ2xhc3QgOiAiTGFzdCBQYWdlIiwKCQlwZ25leHQgOiAiTmV4dCBQYWdlIiwKCQlwZ3ByZXYgOiAiUHJldmlvdXMgUGFnZSIsCgkJcGdyZWNzIDogIlJlY29yZHMgcGVyIFBhZ2UiLAoJCXNob3doaWRlOiAiVG9nZ2xlIEV4cGFuZCBDb2xsYXBzZSBHcmlkIiwKCQkvLyBtb2JpbGUKCQlwYWdlckNhcHRpb24gOiAiR3JpZDo6UGFnZSBTZXR0aW5ncyIsCgkJcGFnZVRleHQgOiAiUGFnZToiLAoJCXJlY29yZFBhZ2UgOiAiUmVjb3JkcyBwZXIgUGFnZSIsCgkJbm9tb3JlcmVjcyA6ICJObyBtb3JlIHJlY29yZHMuLi4iLAoJCXNjcm9sbFB1bGx1cDogIlB1bGwgdXAgdG8gbG9hZCBtb3JlLi4uIiwKCQlzY3JvbGxQdWxsZG93biA6ICJQdWxsIGRvd24gdG8gcmVmcmVzaC4uLiIsCgkJc2Nyb2xsUmVmcmVzaCA6ICJSZWxlYXNlIHRvIHJlZnJlc2guLi4iLAoJCXZhbHVlQ2hlY2tib3ggOiAiQ2hlY2tib3giLAoJCXZhbFQgOiAiY2hlY2tlZCIsCgkJdmFsRiA6ICJ1bmNoZWNrZWQiLAoJCXNlbGVjdExpbmUgOiAiU2VsZWN0IHJvdyIsCgkJc2VsZWN0QWxsTGluZXMgOiAiU2VsZWN0IGFsbCByb3dzIgoJfSwKCXNlYXJjaCA6IHsKCQljYXB0aW9uOiAiU2VhcmNoLi4uIiwKCQlGaW5kOiAiRmluZCIsCgkJUmVzZXQ6ICJSZXNldCIsCgkJb2RhdGE6IFt7IG9wZXI6J2VxJywgdGV4dDonZXF1YWwnfSx7IG9wZXI6J25lJywgdGV4dDonbm90IGVxdWFsJ30seyBvcGVyOidsdCcsIHRleHQ6J2xlc3MnfSx7IG9wZXI6J2xlJywgdGV4dDonbGVzcyBvciBlcXVhbCd9LHsgb3BlcjonZ3QnLCB0ZXh0OidncmVhdGVyJ30seyBvcGVyOidnZScsIHRleHQ6J2dyZWF0ZXIgb3IgZXF1YWwnfSx7IG9wZXI6J2J3JywgdGV4dDonYmVnaW5zIHdpdGgnfSx7IG9wZXI6J2JuJywgdGV4dDonZG9lcyBub3QgYmVnaW4gd2l0aCd9LHsgb3BlcjonaW4nLCB0ZXh0OidpcyBpbid9LHsgb3BlcjonbmknLCB0ZXh0OidpcyBub3QgaW4nfSx7IG9wZXI6J2V3JywgdGV4dDonZW5kcyB3aXRoJ30seyBvcGVyOidlbicsIHRleHQ6J2RvZXMgbm90IGVuZCB3aXRoJ30seyBvcGVyOidjbicsIHRleHQ6J2NvbnRhaW5zJ30seyBvcGVyOiduYycsIHRleHQ6J2RvZXMgbm90IGNvbnRhaW4nfSx7IG9wZXI6J251JywgdGV4dDonaXMgbnVsbCd9LHsgb3Blcjonbm4nLCB0ZXh0OidpcyBub3QgbnVsbCd9LCB7b3BlcjonYnQnLCB0ZXh0OidiZXR3ZWVuJ31dLAoJCWdyb3VwT3BzOiBbeyBvcDogIkFORCIsIHRleHQ6ICJhbGwiIH0seyBvcDogIk9SIiwgIHRleHQ6ICJhbnkiIH1dLAoJCW9wZXJhbmRUaXRsZSA6ICJDbGljayB0byBzZWxlY3Qgc2VhcmNoIG9wZXJhdGlvbi4iLAoJCXJlc2V0VGl0bGUgOiAiUmVzZXQgU2VhcmNoIFZhbHVlIiwKCQlhZGRzdWJncnVwIDogIkFkZCBzdWJncm91cCIsCgkJYWRkcnVsZSA6ICJBZGQgcnVsZSIsCgkJZGVsZ3JvdXAgOiAiRGVsZXRlIGdyb3VwIiwKCQlkZWxydWxlIDogIkRlbGV0ZSBydWxlIiwKCQlDbG9zZSA6ICJDbG9zZSIsCgkJT3BlcmFuZCA6ICJPcGVyYW5kIDogIiwKCQlPcGVyYXRpb24gOiAiT3BlciA6ICIsCgkJZmlsdGVyRm9yIDogImZpbHRlciBmb3IiCgl9LAoJZWRpdCA6IHsKCQlhZGRDYXB0aW9uOiAiQWRkIFJlY29yZCIsCgkJZWRpdENhcHRpb246ICJFZGl0IFJlY29yZCIsCgkJYlN1Ym1pdDogIlN1Ym1pdCIsCgkJYkNhbmNlbDogIkNhbmNlbCIsCgkJYkNsb3NlOiAiQ2xvc2UiLAoJCXNhdmVEYXRhOiAiRGF0YSBoYXMgYmVlbiBjaGFuZ2VkISBTYXZlIGNoYW5nZXM/IiwKCQliWWVzIDogIlllcyIsCgkJYk5vIDogIk5vIiwKCQliRXhpdCA6ICJDYW5jZWwiLAoJCW1zZzogewoJCQlyZXF1aXJlZDoiRmllbGQgaXMgcmVxdWlyZWQiLAoJCQludW1iZXI6IlBsZWFzZSwgZW50ZXIgdmFsaWQgbnVtYmVyIiwKCQkJbWluVmFsdWU6InZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICIsCgkJCW1heFZhbHVlOiJ2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byIsCgkJCWVtYWlsOiAiaXMgbm90IGEgdmFsaWQgZS1tYWlsIiwKCQkJaW50ZWdlcjogIlBsZWFzZSwgZW50ZXIgdmFsaWQgaW50ZWdlciB2YWx1ZSIsCgkJCWRhdGU6ICJQbGVhc2UsIGVudGVyIHZhbGlkIGRhdGUgdmFsdWUiLAoJCQl1cmw6ICJpcyBub3QgYSB2YWxpZCBVUkwuIFByZWZpeCByZXF1aXJlZCAoJ2h0dHA6Ly8nIG9yICdodHRwczovLycpIiwKCQkJbm9kZWZpbmVkIDogIiBpcyBub3QgZGVmaW5lZCEiLAoJCQlub3ZhbHVlIDogIiByZXR1cm4gdmFsdWUgaXMgcmVxdWlyZWQhIiwKCQkJY3VzdG9tYXJyYXkgOiAiQ3VzdG9tIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gYXJyYXkhIiwKCQkJY3VzdG9tZmNoZWNrIDogIkN1c3RvbSBmdW5jdGlvbiBzaG91bGQgYmUgcHJlc2VudCBpbiBjYXNlIG9mIGN1c3RvbSBjaGVja2luZyEiCgkJCQoJCX0KCX0sCgl2aWV3IDogewoJCWNhcHRpb246ICJWaWV3IFJlY29yZCIsCgkJYkNsb3NlOiAiQ2xvc2UiCgl9LAoJZGVsIDogewoJCWNhcHRpb246ICJEZWxldGUiLAoJCW1zZzogIkRlbGV0ZSBzZWxlY3RlZCByZWNvcmQocyk/IiwKCQliU3VibWl0OiAiRGVsZXRlIiwKCQliQ2FuY2VsOiAiQ2FuY2VsIgoJfSwKCW5hdiA6IHsKCQllZGl0dGV4dDogIiIsCgkJZWRpdHRpdGxlOiAiRWRpdCBzZWxlY3RlZCByb3ciLAoJCWFkZHRleHQ6IiIsCgkJYWRkdGl0bGU6ICJBZGQgbmV3IHJvdyIsCgkJZGVsdGV4dDogIiIsCgkJZGVsdGl0bGU6ICJEZWxldGUgc2VsZWN0ZWQgcm93IiwKCQlzZWFyY2h0ZXh0OiAiIiwKCQlzZWFyY2h0aXRsZTogIkZpbmQgcmVjb3JkcyIsCgkJcmVmcmVzaHRleHQ6ICIiLAoJCXJlZnJlc2h0aXRsZTogIlJlbG9hZCBHcmlkIiwKCQlhbGVydGNhcDogIldhcm5pbmciLAoJCWFsZXJ0dGV4dDogIlBsZWFzZSwgc2VsZWN0IHJvdyIsCgkJdmlld3RleHQ6ICIiLAoJCXZpZXd0aXRsZTogIlZpZXcgc2VsZWN0ZWQgcm93IiwKCQlzYXZldGV4dDogIiIsCgkJc2F2ZXRpdGxlOiAiU2F2ZSByb3ciLAoJCWNhbmNlbHRleHQ6ICIiLAoJCWNhbmNlbHRpdGxlIDogIkNhbmNlbCByb3cgZWRpdGluZyIsCgkJc2VsZWN0Y2FwdGlvbiA6ICJBY3Rpb25zLi4uIgoJfSwKCWNvbCA6IHsKCQljYXB0aW9uOiAiU2VsZWN0IGNvbHVtbnMiLAoJCWJTdWJtaXQ6ICJPayIsCgkJYkNhbmNlbDogIkNhbmNlbCIKCX0sCgllcnJvcnMgOiB7CgkJZXJyY2FwIDogIkVycm9yIiwKCQlub3VybCA6ICJObyB1cmwgaXMgc2V0IiwKCQlub3JlY29yZHM6ICJObyByZWNvcmRzIHRvIHByb2Nlc3MiLAoJCW1vZGVsIDogIkxlbmd0aCBvZiBjb2xOYW1lcyA8PiBjb2xNb2RlbCEiCgl9LAoJZm9ybWF0dGVyIDogewoJCWludGVnZXIgOiB7dGhvdXNhbmRzU2VwYXJhdG9yOiAiLCIsIGRlZmF1bHRWYWx1ZTogJzAnfSwKCQludW1iZXIgOiB7ZGVjaW1hbFNlcGFyYXRvcjoiLiIsIHRob3VzYW5kc1NlcGFyYXRvcjogIiwiLCBkZWNpbWFsUGxhY2VzOiAyLCBkZWZhdWx0VmFsdWU6ICcwLjAwJ30sCgkJY3VycmVuY3kgOiB7ZGVjaW1hbFNlcGFyYXRvcjoiLiIsIHRob3VzYW5kc1NlcGFyYXRvcjogIiwiLCBkZWNpbWFsUGxhY2VzOiAyLCBwcmVmaXg6ICIiLCBzdWZmaXg6IiIsIGRlZmF1bHRWYWx1ZTogJzAuMDAnfSwKCQlkYXRlIDogewoJCQlkYXlOYW1lczogICBbCgkJCQkiU3VuIiwgIk1vbiIsICJUdWUiLCAiV2VkIiwgIlRociIsICJGcmkiLCAiU2F0IiwKCQkJCSJTdW5kYXkiLCAiTW9uZGF5IiwgIlR1ZXNkYXkiLCAiV2VkbmVzZGF5IiwgIlRodXJzZGF5IiwgIkZyaWRheSIsICJTYXR1cmRheSIKCQkJXSwKCQkJbW9udGhOYW1lczogWwoJCQkJIkphbiIsICJGZWIiLCAiTWFyIiwgIkFwciIsICJNYXkiLCAiSnVuIiwgIkp1bCIsICJBdWciLCAiU2VwIiwgIk9jdCIsICJOb3YiLCAiRGVjIiwKCQkJCSJKYW51YXJ5IiwgIkZlYnJ1YXJ5IiwgIk1hcmNoIiwgIkFwcmlsIiwgIk1heSIsICJKdW5lIiwgIkp1bHkiLCAiQXVndXN0IiwgIlNlcHRlbWJlciIsICJPY3RvYmVyIiwgIk5vdmVtYmVyIiwgIkRlY2VtYmVyIgoJCQldLAoJCQlBbVBtIDogWyJhbSIsInBtIiwiQU0iLCJQTSJdLAoJCQlTOiBmdW5jdGlvbiAoaikge3JldHVybiBqIDwgMTEgfHwgaiA+IDEzID8gWydzdCcsICduZCcsICdyZCcsICd0aCddW01hdGgubWluKChqIC0gMSkgJSAxMCwgMyldIDogJ3RoJzt9LAoJCQlzcmNmb3JtYXQ6ICdZLW0tZCcsCgkJCW5ld2Zvcm1hdDogJ24vai9ZJywKCQkJcGFyc2VSZSA6IC9bIyVcXFwvOl87LixcdFxzLV0vLAoJCQltYXNrcyA6IHsKCQkJCS8vIHNlZSBodHRwOi8vcGhwLm5ldC9tYW51YWwvZW4vZnVuY3Rpb24uZGF0ZS5waHAgZm9yIFBIUCBmb3JtYXQgdXNlZCBpbiBqcUdyaWQKCQkJCS8vIGFuZCBzZWUgaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9VSS9EYXRlcGlja2VyL2Zvcm1hdERhdGUKCQkJCS8vIGFuZCBodHRwczovL2dpdGh1Yi5jb20vanF1ZXJ5L2dsb2JhbGl6ZSNkYXRlcyBmb3IgYWx0ZXJuYXRpdmUgZm9ybWF0cyB1c2VkIGZyZXF1ZW50bHkKCQkJCS8vIG9uZSBjYW4gZmluZCBvbiBodHRwczovL2dpdGh1Yi5jb20vanF1ZXJ5L2dsb2JhbGl6ZS90cmVlL21hc3Rlci9saWIvY3VsdHVyZXMgbWFueQoJCQkJLy8gaW5mb3JtYXRpb24gYWJvdXQgZGF0ZSwgdGltZSwgbnVtYmVycyBhbmQgY3VycmVuY3kgZm9ybWF0cyB1c2VkIGluIGRpZmZlcmVudCBjb3VudHJpZXMKCQkJCS8vIG9uZSBzaG91bGQganVzdCBjb252ZXJ0IHRoZSBpbmZvcm1hdGlvbiBpbiBQSFAgZm9ybWF0CgkJCQlJU084NjAxTG9uZzoiWS1tLWQgSDppOnMiLAoJCQkJSVNPODYwMVNob3J0OiJZLW0tZCIsCgkJCQkvLyBzaG9ydCBkYXRlOgoJCQkJLy8gICAgbiAtIE51bWVyaWMgcmVwcmVzZW50YXRpb24gb2YgYSBtb250aCwgd2l0aG91dCBsZWFkaW5nIHplcm9zCgkJCQkvLyAgICBqIC0gRGF5IG9mIHRoZSBtb250aCB3aXRob3V0IGxlYWRpbmcgemVyb3MKCQkJCS8vICAgIFkgLSBBIGZ1bGwgbnVtZXJpYyByZXByZXNlbnRhdGlvbiBvZiBhIHllYXIsIDQgZGlnaXRzCgkJCQkvLyBleGFtcGxlOiAzLzEvMjAxMiB3aGljaCBtZWFucyAxIE1hcmNoIDIwMTIKCQkJCVNob3J0RGF0ZTogIm4vai9ZIiwgLy8gaW4galF1ZXJ5IFVJIERhdGVwaWNrZXI6ICJNL2QveXl5eSIKCQkJCS8vIGxvbmcgZGF0ZToKCQkJCS8vICAgIGwgLSBBIGZ1bGwgdGV4dHVhbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgZGF5IG9mIHRoZSB3ZWVrCgkJCQkvLyAgICBGIC0gQSBmdWxsIHRleHR1YWwgcmVwcmVzZW50YXRpb24gb2YgYSBtb250aAoJCQkJLy8gICAgZCAtIERheSBvZiB0aGUgbW9udGgsIDIgZGlnaXRzIHdpdGggbGVhZGluZyB6ZXJvcwoJCQkJLy8gICAgWSAtIEEgZnVsbCBudW1lcmljIHJlcHJlc2VudGF0aW9uIG9mIGEgeWVhciwgNCBkaWdpdHMKCQkJCUxvbmdEYXRlOiAibCwgRiBkLCBZIiwgLy8gaW4galF1ZXJ5IFVJIERhdGVwaWNrZXI6ICJkZGRkLCBNTU1NIGRkLCB5eXl5IgoJCQkJLy8gbG9uZyBkYXRlIHdpdGggbG9uZyB0aW1lOgoJCQkJLy8gICAgbCAtIEEgZnVsbCB0ZXh0dWFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBkYXkgb2YgdGhlIHdlZWsKCQkJCS8vICAgIEYgLSBBIGZ1bGwgdGV4dHVhbCByZXByZXNlbnRhdGlvbiBvZiBhIG1vbnRoCgkJCQkvLyAgICBkIC0gRGF5IG9mIHRoZSBtb250aCwgMiBkaWdpdHMgd2l0aCBsZWFkaW5nIHplcm9zCgkJCQkvLyAgICBZIC0gQSBmdWxsIG51bWVyaWMgcmVwcmVzZW50YXRpb24gb2YgYSB5ZWFyLCA0IGRpZ2l0cwoJCQkJLy8gICAgZyAtIDEyLWhvdXIgZm9ybWF0IG9mIGFuIGhvdXIgd2l0aG91dCBsZWFkaW5nIHplcm9zCgkJCQkvLyAgICBpIC0gTWludXRlcyB3aXRoIGxlYWRpbmcgemVyb3MKCQkJCS8vICAgIHMgLSBTZWNvbmRzLCB3aXRoIGxlYWRpbmcgemVyb3MKCQkJCS8vICAgIEEgLSBVcHBlcmNhc2UgQW50ZSBtZXJpZGllbSBhbmQgUG9zdCBtZXJpZGllbSAoQU0gb3IgUE0pCgkJCQlGdWxsRGF0ZVRpbWU6ICJsLCBGIGQsIFkgZzppOnMgQSIsIC8vIGluIGpRdWVyeSBVSSBEYXRlcGlja2VyOiAiZGRkZCwgTU1NTSBkZCwgeXl5eSBoOm1tOnNzIHR0IgoJCQkJLy8gbW9udGggZGF5OgoJCQkJLy8gICAgRiAtIEEgZnVsbCB0ZXh0dWFsIHJlcHJlc2VudGF0aW9uIG9mIGEgbW9udGgKCQkJCS8vICAgIGQgLSBEYXkgb2YgdGhlIG1vbnRoLCAyIGRpZ2l0cyB3aXRoIGxlYWRpbmcgemVyb3MKCQkJCU1vbnRoRGF5OiAiRiBkIiwgLy8gaW4galF1ZXJ5IFVJIERhdGVwaWNrZXI6ICJNTU1NIGRkIgoJCQkJLy8gc2hvcnQgdGltZSAod2l0aG91dCBzZWNvbmRzKQoJCQkJLy8gICAgZyAtIDEyLWhvdXIgZm9ybWF0IG9mIGFuIGhvdXIgd2l0aG91dCBsZWFkaW5nIHplcm9zCgkJCQkvLyAgICBpIC0gTWludXRlcyB3aXRoIGxlYWRpbmcgemVyb3MKCQkJCS8vICAgIEEgLSBVcHBlcmNhc2UgQW50ZSBtZXJpZGllbSBhbmQgUG9zdCBtZXJpZGllbSAoQU0gb3IgUE0pCgkJCQlTaG9ydFRpbWU6ICJnOmkgQSIsIC8vIGluIGpRdWVyeSBVSSBEYXRlcGlja2VyOiAiaDptbSB0dCIKCQkJCS8vIGxvbmcgdGltZSAod2l0aCBzZWNvbmRzKQoJCQkJLy8gICAgZyAtIDEyLWhvdXIgZm9ybWF0IG9mIGFuIGhvdXIgd2l0aG91dCBsZWFkaW5nIHplcm9zCgkJCQkvLyAgICBpIC0gTWludXRlcyB3aXRoIGxlYWRpbmcgemVyb3MKCQkJCS8vICAgIHMgLSBTZWNvbmRzLCB3aXRoIGxlYWRpbmcgemVyb3MKCQkJCS8vICAgIEEgLSBVcHBlcmNhc2UgQW50ZSBtZXJpZGllbSBhbmQgUG9zdCBtZXJpZGllbSAoQU0gb3IgUE0pCgkJCQlMb25nVGltZTogImc6aTpzIEEiLCAvLyBpbiBqUXVlcnkgVUkgRGF0ZXBpY2tlcjogImg6bW06c3MgdHQiCgkJCQlTb3J0YWJsZURhdGVUaW1lOiAiWS1tLWRcXFRIOmk6cyIsCgkJCQlVbml2ZXJzYWxTb3J0YWJsZURhdGVUaW1lOiAiWS1tLWQgSDppOnNPIiwKCQkJCS8vIG1vbnRoIHdpdGggeWVhcgoJCQkJLy8gICAgWSAtIEEgZnVsbCBudW1lcmljIHJlcHJlc2VudGF0aW9uIG9mIGEgeWVhciwgNCBkaWdpdHMKCQkJCS8vICAgIEYgLSBBIGZ1bGwgdGV4dHVhbCByZXByZXNlbnRhdGlvbiBvZiBhIG1vbnRoCgkJCQlZZWFyTW9udGg6ICJGLCBZIiAvLyBpbiBqUXVlcnkgVUkgRGF0ZXBpY2tlcjogIk1NTU0sIHl5eXkiCgkJCX0sCgkJCXJlZm9ybWF0QWZ0ZXJFZGl0IDogZmFsc2UsCgkJCXVzZXJMb2NhbFRpbWUgOiBmYWxzZQoJCX0sCgkJYmFzZUxpbmtVcmw6ICcnLAoJCXNob3dBY3Rpb246ICcnLAoJCXRhcmdldDogJycsCgkJY2hlY2tib3ggOiB7ZGlzYWJsZWQ6dHJ1ZX0sCgkJaWROYW1lIDogJ2lkJwoJfSwKCWNvbG1lbnUgOiB7CgkJc29ydGFzYyA6ICJTb3J0IEFzY2VuZGluZyIsCgkJc29ydGRlc2MgOiAiU29ydCBEZXNjZW5kaW5nIiwKCQljb2x1bW5zIDogIkNvbHVtbnMiLAoJCWZpbHRlciA6ICJGaWx0ZXIiLAoJCWdyb3VwaW5nIDogIkdyb3VwIEJ5IiwKCQl1bmdyb3VwaW5nIDogIlVuZ3JvdXAiLAoJCXNlYXJjaFRpdGxlIDogIkdldCBpdGVtcyB3aXRoIHZhbHVlIHRoYXQ6IiwKCQlmcmVlemUgOiAiRnJlZXplIiwKCQl1bmZyZWV6ZSA6ICJVbmZyZWV6ZSIsCgkJcmVvcmRlciA6ICJNb3ZlIHRvIHJlb3JkZXIiLCAKCQlob3Zlcm1lbnU6ICJDbGljayBmb3IgY29sdW1uIHF1aWNrIGFjdGlvbnMiCgl9Cn07Cn0pKTsK'></script id=script_jgg_locale  src="




<link rel=stylesheet  id=style_jgg_jquery_css href='data:/text/plain;base64,LypHcmlkKi8KLnVpLWpxZ3JpZCB7Cglwb3NpdGlvbjogcmVsYXRpdmU7CgktbW96LWJveC1zaXppbmc6IGNvbnRlbnQtYm94OyAKCS13ZWJraXQtYm94LXNpemluZzogY29udGVudC1ib3g7IAoJYm94LXNpemluZzogY29udGVudC1ib3g7Cglmb250LXNpemU6MTFweDsKfQoudWktanFncmlkIC51aS1qcWdyaWQtdmlldyB7Cglwb3NpdGlvbjogcmVsYXRpdmU7CglsZWZ0OjA7IAoJdG9wOiAwOyAKCXBhZGRpbmc6IDA7CgkvKmZvbnQtc2l6ZToxMXB4OyovCgl6LWluZGV4OjEwMDsKfQoudWktanFncmlkIC51aS1jb21tb24tdGFibGUge2JvcmRlci13aWR0aDogMHB4OyBib3JkZXItc3R5bGU6IG5vbmU7IGJvcmRlci1zcGFjaW5nOiAwcHg7IHBhZGRpbmc6IDA7fQovKiBjYXB0aW9uKi8KLnVpLWpxZ3JpZCAudWktanFncmlkLXRpdGxlYmFyIHsKCWhlaWdodDoxOXB4OyAKCXBhZGRpbmc6IC4zZW0gLjJlbSAuMmVtIC4zZW07IAoJcG9zaXRpb246IHJlbGF0aXZlOyAKCWZvbnQtc2l6ZTogMTJweDsgCglib3JkZXItbGVmdDogMCBub25lOwoJYm9yZGVyLXJpZ2h0OiAwIG5vbmU7IAoJYm9yZGVyLXRvcDogMCBub25lOwoJYm94LXNpemluZzpjb250ZW50LWJveDsKfQoudWktanFncmlkIC51aS1qcWdyaWQtY2FwdGlvbiB7dGV4dC1hbGlnbjogbGVmdDt9Ci51aS1qcWdyaWQgLnVpLWpxZ3JpZC10aXRsZSB7CglwYWRkaW5nOiAuMmVtIC4xZW0gLjFlbTsKCS8qcG9zaXRpb246IGFic29sdXRlOyAqLwp9Ci51aS1qcWdyaWQgLnVpLWpxZ3JpZC10aXRsZWJhci1jbG9zZSB7IHBvc2l0aW9uOiBhYnNvbHV0ZTt0b3A6IDUwJTsgd2lkdGg6IDE5cHg7IG1hcmdpbjogLTEwcHggMCAwIDA7IHBhZGRpbmc6IDFweDsgaGVpZ2h0OjE4cHg7IGN1cnNvcjpwb2ludGVyO30KLnVpLWpxZ3JpZCAudWktanFncmlkLXRpdGxlYmFyLWNsb3NlIHNwYW4geyBkaXNwbGF5OiBibG9jazsgbWFyZ2luOiAxcHg7IH0KLnVpLWpxZ3JpZCAudWktanFncmlkLXRpdGxlYmFyLWNsb3NlOmhvdmVyIHsgcGFkZGluZzogMDsgfQoudWktanFncmlkIC5tZW51YmFyOmhvdmVyIHsgIGJvcmRlcjogMCBub25lO30KLyogaGVhZGVyKi8KLnVpLWpxZ3JpZCAudWktanFncmlkLWhkaXYge3Bvc2l0aW9uOiByZWxhdGl2ZTsgbWFyZ2luOiAwO3BhZGRpbmc6IDA7IG92ZXJmbG93OiBoaWRkZW47IGJvcmRlci1sZWZ0OiAwIG5vbmUgIWltcG9ydGFudDsgYm9yZGVyLXRvcCA6IDAgbm9uZSAhaW1wb3J0YW50OyBib3JkZXItcmlnaHQgOiAwIG5vbmUgIWltcG9ydGFudDt9Ci51aS1qcWdyaWQgLnVpLWpxZ3JpZC1oYm94IHtmbG9hdDogbGVmdDsgcGFkZGluZy1yaWdodDogMjBweDt9Ci51aS1qcWdyaWQgLnVpLWpxZ3JpZC1odGFibGUge3RhYmxlLWxheW91dDpmaXhlZDttYXJnaW46MDtib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlO30KLnVpLWpxZ3JpZCAudWktanFncmlkLWh0YWJsZSB0aCB7IGhlaWdodDogMjdweDsgcGFkZGluZzogMCAycHggMCAycHg7fQoudWktanFncmlkIC51aS1qcWdyaWQtaHRhYmxlIHRoIGRpdiB7b3ZlcmZsb3c6IGhpZGRlbjsgcG9zaXRpb246cmVsYXRpdmU7bWFyZ2luOiAuMWVtIDBlbSAuMWVtIDBlbTt9Ci51aS10aC1jb2x1bW4sIC51aS1qcWdyaWQgLnVpLWpxZ3JpZC1odGFibGUgdGgudWktdGgtY29sdW1uIHtvdmVyZmxvdzogaGlkZGVuO3doaXRlLXNwYWNlOiBub3dyYXA7dGV4dC1hbGlnbjpjZW50ZXI7Ym9yZGVyLXRvcCA6IDAgbm9uZTtib3JkZXItYm90dG9tIDogMCBub25lO30KLnVpLXRoLWNvbHVtbi1oZWFkZXIsIC51aS1qcWdyaWQgLnVpLWpxZ3JpZC1odGFibGUgdGgudWktdGgtY29sdW1uLWhlYWRlciB7b3ZlcmZsb3c6IGhpZGRlbjt3aGl0ZS1zcGFjZTogbm93cmFwO3RleHQtYWxpZ246Y2VudGVyO2JvcmRlci10b3AgOiAwIG5vbmU7IGhlaWdodDogMjZweDt9Ci51aS10aC1sdHIsIC51aS1qcWdyaWQgLnVpLWpxZ3JpZC1odGFibGUgdGgudWktdGgtbHRyIHtib3JkZXItbGVmdCA6IDAgbm9uZTt9Ci51aS10aC1ydGwsIC51aS1qcWdyaWQgLnVpLWpxZ3JpZC1odGFibGUgdGgudWktdGgtcnRsIHtib3JkZXItcmlnaHQgOiAwIG5vbmU7fQoudWktZmlyc3QtdGgtbHRyIHtib3JkZXItcmlnaHQ6IDFweCBzb2xpZDsgfQoudWktZmlyc3QtdGgtcnRsIHtib3JkZXItbGVmdDogMXB4IHNvbGlkOyB9Ci51aS1qcWdyaWQgLnVpLXRoLWRpdi1pZSB7d2hpdGUtc3BhY2U6IG5vd3JhcDsgaGVpZ2h0OjE3cHg7fQoudWktanFncmlkIC51aS1qcWdyaWQtcmVzaXplIHtoZWlnaHQ6MjBweCAhaW1wb3J0YW50O3Bvc2l0aW9uOiByZWxhdGl2ZTsgY3Vyc29yIDplLXJlc2l6ZTtkaXNwbGF5OiBpbmxpbmU7b3ZlcmZsb3c6IGhpZGRlbjt9Ci51aS1qcWdyaWQgLnVpLWdyaWQtaWNvLXNvcnQge292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjphYnNvbHV0ZTtkaXNwbGF5OmlubGluZTsgY3Vyc29yOiBwb2ludGVyICFpbXBvcnRhbnQ7fQoudWktanFncmlkIC51aS1pY29uLWFzYyB7bWFyZ2luLXRvcDotM3B4OyBoZWlnaHQ6MTJweDt9Ci51aS1qcWdyaWQgLnVpLWljb24tZGVzYyB7bWFyZ2luLXRvcDozcHg7bWFyZ2luLWxlZnQ6LTFweDtoZWlnaHQ6MTJweDt9Ci51aS1qcWdyaWQgLnVpLWktYXNjIHttYXJnaW4tdG9wOjA7aGVpZ2h0OjE4cHg7fQoudWktanFncmlkIC51aS1pLWRlc2Mge21hcmdpbi10b3A6MDttYXJnaW4tbGVmdDoxMnB4O2hlaWdodDoxOHB4O30KLnVpLWpxZ3JpZCAudWktc2luZ2xlLXNvcnQtYXNjIHttYXJnaW4tdG9wOi0xcHg7aGVpZ2h0OjE4cHg7fQoudWktanFncmlkIC51aS1zaW5nbGUtc29ydC1kZXNjIHttYXJnaW4tdG9wOjA7aGVpZ2h0OjE4cHg7fQoudWktanFncmlkIC51aS1pY29uLWxlZnQgLnMtaWNvIHttYXJnaW4tcmlnaHQ6IDE2cHg7fQoudWktanFncmlkIC51aS1qcWdyaWQtc29ydGFibGUge2N1cnNvcjpwb2ludGVyO2hlaWdodDoxNHB4fQoudWktanFncmlkIHRyLnVpLXNlYXJjaC10b29sYmFyIHRoIHsgYm9yZGVyLWJvdHRvbTogMHB4IG5vbmV9Ci51aS1qcWdyaWQgLnVpLXNlYXJjaC10YWJsZSB0ZC51aS1zZWFyY2gtY2xlYXIgeyB3aWR0aDoyNXB4O30KLnVpLWpxZ3JpZCB0ci51aS1zZWFyY2gtdG9vbGJhciB0ZCBpbnB1dCB7IHBhZGRpbmctcmlnaHQ6IDBweDsgd2lkdGg6IDk1JTt9Ci51aS1qcWdyaWQgdHIudWktc2VhcmNoLXRvb2xiYXIgc2VsZWN0IHt9Ci8qIGJvZHkgKi8gCi51aS1qcWdyaWQgLnVpLWpxZ3JpZC1iZGl2IHtwb3NpdGlvbjogcmVsYXRpdmU7IG1hcmdpbjogMDsgcGFkZGluZzowOyBvdmVyZmxvdzogYXV0bzsgdGV4dC1hbGlnbjpsZWZ0O3otaW5kZXg6IDEwMTt9Ci51aS1qcWdyaWQgLnVpLWpxZ3JpZC1idGFibGUge3RhYmxlLWxheW91dDpmaXhlZDsgbWFyZ2luOjA7IG91dGxpbmUtc3R5bGU6IG5vbmU7IGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7fQoudWktanFncmlkIHRyLmpxZ3JvdywKLnVpLWpxZ3JpZCB0ci5qcWdyb3VwIAoJeyBvdXRsaW5lLXN0eWxlOiBub25lOyB9Ci51aS1qcWdyaWQgdHIuanFncm93IHRkLAoudWktanFncmlkIHRyLmpxZ3JvdXAgdGQKewlmb250LXdlaWdodDogbm9ybWFsOyAKCW92ZXJmbG93OiBoaWRkZW47IAoJd2hpdGUtc3BhY2U6IHByZTsgCgloZWlnaHQ6IDIzcHg7CglwYWRkaW5nOiAxcHggMnB4IDFweCAycHg7Cglib3JkZXItYm90dG9tLXdpZHRoOiAxcHg7IAoJYm9yZGVyLWJvdHRvbS1jb2xvcjogaW5oZXJpdDsgCglib3JkZXItYm90dG9tLXN0eWxlOiBzb2xpZDsKfQoudWktanFncmlkIHRyLmpxZ2ZpcnN0cm93IHRkIHtwYWRkaW5nOiAwIDJweCAwIDJweDtib3JkZXItcmlnaHQtd2lkdGg6IDFweDsgYm9yZGVyLXJpZ2h0LXN0eWxlOiBzb2xpZDsgaGVpZ2h0OmF1dG87fQoudWktanFncmlkIHRyLmpxZm9vdCB0ZCB7Zm9udC13ZWlnaHQ6IGJvbGQ7IG92ZXJmbG93OiBoaWRkZW47IHdoaXRlLXNwYWNlOiBwcmU7IGhlaWdodDogMjJweDtwYWRkaW5nOiAwIDJweCAwIDJweDtib3JkZXItYm90dG9tLXdpZHRoOiAxcHg7IGJvcmRlci1ib3R0b20tY29sb3I6IGluaGVyaXQ7IGJvcmRlci1ib3R0b20tc3R5bGU6IHNvbGlkO30KLnVpLWpxZ3JpZCB0ci51aS1yb3ctbHRyIHRkIHt0ZXh0LWFsaWduOmxlZnQ7Ym9yZGVyLXJpZ2h0LXdpZHRoOiAxcHg7IGJvcmRlci1yaWdodC1jb2xvcjogaW5oZXJpdDsgYm9yZGVyLXJpZ2h0LXN0eWxlOiBzb2xpZDt9Ci51aS1qcWdyaWQgdHIudWktcm93LXJ0bCB0ZCB7dGV4dC1hbGlnbjpyaWdodDtib3JkZXItbGVmdC13aWR0aDogMXB4OyBib3JkZXItbGVmdC1jb2xvcjogaW5oZXJpdDsgYm9yZGVyLWxlZnQtc3R5bGU6IHNvbGlkO30KLnVpLWpxZ3JpZCB0ZC5qcWdyaWQtcm93bnVtIHsgcGFkZGluZzogMCAycHggMCAycHg7IG1hcmdpbjogMDsgYm9yZGVyOiAwIG5vbmU7fQoudWktanFncmlkIC51aS1qcWdyaWQtcmVzaXplLW1hcmsgeyB3aWR0aDoycHg7IGxlZnQ6MDsgYmFja2dyb3VuZC1jb2xvcjojNzc3OyBjdXJzb3I6IGUtcmVzaXplOyBjdXJzb3I6IGNvbC1yZXNpemU7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6MDsgaGVpZ2h0OjEwMHB4OyBvdmVyZmxvdzpoaWRkZW47IGRpc3BsYXk6bm9uZTsgYm9yZGVyOjAgbm9uZTsgei1pbmRleDogOTk5OTk7fQoudWktanFncmlkLXRhYmxlLXN0cmlwZWQgPiB0Ym9keSA+IHRyOm50aC1vZi10eXBlKG9kZCkgewoJb3BhY2l0eTogLjc7Cglmb250LXdlaWdodDogbm9ybWFsOwp9Ci8qIGZvb3RlciAqLwoudWktanFncmlkIC51aS1qcWdyaWQtc2RpdiB7cG9zaXRpb246IHJlbGF0aXZlOyBtYXJnaW46IDA7cGFkZGluZzogMDsgb3ZlcmZsb3c6IGhpZGRlbjsgYm9yZGVyLWxlZnQ6IDAgbm9uZSAhaW1wb3J0YW50OyBib3JkZXItdG9wIDogMCBub25lICFpbXBvcnRhbnQ7IGJvcmRlci1yaWdodCA6IDAgbm9uZSAhaW1wb3J0YW50O30KLnVpLWpxZ3JpZCAudWktanFncmlkLWZ0YWJsZSB7dGFibGUtbGF5b3V0OmZpeGVkOyBtYXJnaW4tYm90dG9tOjA7Ym9yZGVyLWNvbGxhcHNlOiBzZXBhcmF0ZTt9Ci51aS1qcWdyaWQgdHIuZm9vdHJvdyB0ZCB7Zm9udC13ZWlnaHQ6IGJvbGQ7IG92ZXJmbG93OiBoaWRkZW47IHdoaXRlLXNwYWNlOm5vd3JhcDsgaGVpZ2h0OiAyM3B4O3BhZGRpbmc6IDFweCAycHggMXB4IDJweDtib3JkZXItdG9wLXdpZHRoOiAxcHg7IGJvcmRlci10b3AtY29sb3I6IGluaGVyaXQ7IGJvcmRlci10b3Atc3R5bGU6IHNvbGlkO2JvcmRlci1ib3R0b206IDAgbm9uZTt9Ci51aS1qcWdyaWQgdHIuZm9vdHJvdy1sdHIgdGQge3RleHQtYWxpZ246bGVmdDtib3JkZXItcmlnaHQtd2lkdGg6IDFweDsgYm9yZGVyLXJpZ2h0LWNvbG9yOiBpbmhlcml0OyBib3JkZXItcmlnaHQtc3R5bGU6IHNvbGlkO30KLnVpLWpxZ3JpZCB0ci5mb290cm93LXJ0bCB0ZCB7dGV4dC1hbGlnbjpyaWdodDtib3JkZXItbGVmdC13aWR0aDogMXB4OyBib3JkZXItbGVmdC1jb2xvcjogaW5oZXJpdDsgYm9yZGVyLWxlZnQtc3R5bGU6IHNvbGlkO30KLyogaGVhZGVycm93ICovCi51aS1qcWdyaWQgLnVpLWpxZ3JpZC1ocmRpdiB7cG9zaXRpb246IHJlbGF0aXZlOyBtYXJnaW46IDA7cGFkZGluZzogMDsgb3ZlcmZsb3c6IGhpZGRlbjsgYm9yZGVyLWxlZnQ6IDAgbm9uZSAhaW1wb3J0YW50OyBib3JkZXItdG9wIDogMCBub25lICFpbXBvcnRhbnQ7IGJvcmRlci1yaWdodCA6IDAgbm9uZSAhaW1wb3J0YW50O30KLnVpLWpxZ3JpZCAudWktanFncmlkLWhydGFibGUge3RhYmxlLWxheW91dDpmaXhlZDsgbWFyZ2luLWJvdHRvbTowO2JvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7fQoudWktanFncmlkIHRyLmhyaGVhZHJvdyB0ZCB7IG92ZXJmbG93OiBoaWRkZW47IHdoaXRlLXNwYWNlOm5vd3JhcDsgaGVpZ2h0OiAyM3B4O3BhZGRpbmc6IDFweCAycHggMXB4IDJweDtib3JkZXItYm90dG9tLXdpZHRoOiAxcHg7IGJvcmRlci1ib3R0b20tY29sb3I6IGluaGVyaXQ7IGJvcmRlci1ib3R0b20tc3R5bGU6IHNvbGlkO2JvcmRlci10b3A6IDAgbm9uZTt9Ci51aS1qcWdyaWQgdHIuaHJoZWFkcm93LWx0ciB0ZCB7dGV4dC1hbGlnbjpsZWZ0O2JvcmRlci1yaWdodC13aWR0aDogMXB4OyBib3JkZXItcmlnaHQtY29sb3I6IGluaGVyaXQ7IGJvcmRlci1yaWdodC1zdHlsZTogc29saWQ7fQoudWktanFncmlkIHRyLmhyaGVhZHJvdy1ydGwgdGQge3RleHQtYWxpZ246cmlnaHQ7Ym9yZGVyLWxlZnQtd2lkdGg6IDFweDsgYm9yZGVyLWxlZnQtY29sb3I6IGluaGVyaXQ7IGJvcmRlci1sZWZ0LXN0eWxlOiBzb2xpZDt9Ci8qIFBhZ2VyKi8KLnVpLWpxZ3JpZCAudWktanFncmlkLXBhZ2VyIHsgCglib3JkZXItbGVmdDogMCBub25lICFpbXBvcnRhbnQ7Cglib3JkZXItcmlnaHQ6IDAgbm9uZSAhaW1wb3J0YW50OyAKCWJvcmRlci1ib3R0b206IDAgbm9uZSAhaW1wb3J0YW50OyAKCWJvcmRlci10b3A6IDAgbm9uZTsgCgltYXJnaW46IDAgIWltcG9ydGFudDsgCglwYWRkaW5nOiAwICFpbXBvcnRhbnQ7IAoJcG9zaXRpb246IHJlbGF0aXZlOyAKCWhlaWdodDogYXV0bzsgCgltaW4taGVpZ2h0OiAyOHB4OyAKCXdoaXRlLXNwYWNlOiBub3dyYXA7CglvdmVyZmxvdzogaGlkZGVuOwoJLypmb250LXNpemU6MTFweDsgKi8KCXotaW5kZXg6MTAwCn0KLnVpLWpxZ3JpZCAudWktanFncmlkLXRvcHBhZ2VyIC51aS1wYWdlci1jb250cm9sLCAudWktanFncmlkIC51aS1qcWdyaWQtcGFnZXIgLnVpLXBhZ2VyLWNvbnRyb2wge3Bvc2l0aW9uOiByZWxhdGl2ZTtib3JkZXItbGVmdDogMDtib3JkZXItYm90dG9tOiAwO2JvcmRlci10b3A6IDA7IGhlaWdodDogMjhweDt9Ci51aS1qcWdyaWQgLnVpLXBnLXRhYmxlIHtwb3NpdGlvbjogcmVsYXRpdmU7IHBhZGRpbmc6IDFweCAwOyB3aWR0aDphdXRvOyBtYXJnaW46IDA7fQoudWktanFncmlkIC51aS1wZy10YWJsZSB0ZCB7Zm9udC13ZWlnaHQ6bm9ybWFsOyB2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7IHBhZGRpbmc6MHB4IDFweDt9Ci51aS1qcWdyaWQgLnVpLXBnLWJ1dHRvbiAgeyBoZWlnaHQ6YXV0b30KLnVpLWpxZ3JpZCAudWktcGctYnV0dG9uIHNwYW4geyBkaXNwbGF5OiBibG9jazsgbWFyZ2luOiAycHg7IGZsb2F0OmxlZnQ7fQoudWktanFncmlkIC51aS1wZy1idXR0b246aG92ZXIgeyBwYWRkaW5nOiAwO30KLnVpLWpxZ3JpZCAudWktc3RhdGUtZGlzYWJsZWQ6aG92ZXIge3BhZGRpbmc6MHB4O30KLnVpLWpxZ3JpZCAudWktcGctaW5wdXQsLnVpLWpxZ3JpZCAudWktanFncmlkLXRvcHBhZ2VyIC51aS1wZy1pbnB1dCB7IGhlaWdodDoxNHB4O3dpZHRoOiBhdXRvO2ZvbnQtc2l6ZTouOWVtOyBtYXJnaW46MDtsaW5lLWhlaWdodDogaW5oZXJpdDtib3JkZXI6IG5vbmU7IHBhZGRpbmc6IDNweCAycHh9Ci51aS1qcWdyaWQgLnVpLXBnLXNlbGJveCwgLnVpLWpxZ3JpZCAudWktanFncmlkLXRvcHBhZ2VyIC51aS1wZy1zZWxib3gge2ZvbnQtc2l6ZTouOWVtOyBsaW5lLWhlaWdodDppbmhlcml0OyBkaXNwbGF5OmJsb2NrOyBoZWlnaHQ6MTlweDsgbWFyZ2luOiAwOyBwYWRkaW5nOiAzcHggMHB4OyBib3JkZXI6bm9uZTt9Ci51aS1qcWdyaWQgLnVpLXNlcGFyYXRvciB7aGVpZ2h0OiAxOHB4OyBib3JkZXItbGVmdDogMnB4IHNvbGlkICNjY2MgO30KLnVpLXNlcGFyYXRvci1saSB7aGVpZ2h0OiAycHg7IGJvcmRlciA6IG5vbmU7Ym9yZGVyLXRvcDogMnB4IHNvbGlkICNjY2MgOyBtYXJnaW46IDA7IHBhZGRpbmc6IDA7IHdpZHRoOjEwMCV9Ci51aS1qcWdyaWQgIC5kcm9wZG93bm1lbnUgewoJcGFkZGluZzogM3B4IDAgM3B4IDA7CgltYXJnaW4tbGVmdDogNHB4Owp9Ci51aS1qcWdyaWQgLnVpLWpxZ3JpZC1wYWdlciAudWktcGctZGl2LAoudWktanFncmlkIC51aS1qcWdyaWQtdG9wcGFnZXIgLnVpLXBnLWRpdgp7cGFkZGluZzoxcHggMDtmbG9hdDpsZWZ0O3Bvc2l0aW9uOnJlbGF0aXZlOyBsaW5lLWhlaWdodDogMjBweDt9Ci51aS1qcWdyaWQgLnVpLWpxZ3JpZC1wYWdlciAudWktcGctYnV0dG9uLAoudWktanFncmlkIC51aS1qcWdyaWQtdG9wcGFnZXIgLnVpLXBnLWJ1dHRvbgp7IGN1cnNvcjpwb2ludGVyOyB9Ci51aS1qcWdyaWQgLnVpLWpxZ3JpZC1wYWdlciAudWktcGctZGl2ICBzcGFuLnVpLWljb24sCi51aS1qcWdyaWQgLnVpLWpxZ3JpZC10b3BwYWdlciAudWktcGctZGl2ICBzcGFuLnVpLWljb24Ke2Zsb2F0OmxlZnQ7bWFyZ2luOiAycHg7IHdpZHRoOjE4cHg7fQoudWktanFncmlkIHRkIGlucHV0LCAudWktanFncmlkIHRkIHNlbGVjdCwgLnVpLWpxZ3JpZCB0ZCB0ZXh0YXJlYSB7IG1hcmdpbjogMDsgcGFkZGluZy10b3A6NXB4O3BhZGRpbmctYm90dG9tOiA1cHg7fQoudWktanFncmlkIHRkIHRleHRhcmVhIHt3aWR0aDphdXRvO2hlaWdodDphdXRvO30KLnVpLWpxZ3JpZCAudWktanFncmlkLXRvcHBhZ2VyIHtib3JkZXItbGVmdDogMCBub25lICFpbXBvcnRhbnQ7Ym9yZGVyLXJpZ2h0OiAwIG5vbmUgIWltcG9ydGFudDsgYm9yZGVyLXRvcDogMCBub25lICFpbXBvcnRhbnQ7IG1hcmdpbjogMCAhaW1wb3J0YW50OyBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7IHBvc2l0aW9uOiByZWxhdGl2ZTt3aGl0ZS1zcGFjZTogbm93cmFwO292ZXJmbG93OiBoaWRkZW47fQoudWktanFncmlkIC51aS1qcWdyaWQtcGFnZXIgLnVpLXBhZ2VyLXRhYmxlLAoudWktanFncmlkIC51aS1qcWdyaWQtdG9wcGFnZXIgLnVpLXBhZ2VyLXRhYmxlIAp7Cgl3aWR0aDoxMDAlOwoJdGFibGUtbGF5b3V0OmZpeGVkOwoJaGVpZ2h0OjEwMCU7Cn0KLnVpLWpxZ3JpZCAudWktanFncmlkLXBhZ2VyIC51aS1wYWdpbmctaW5mbywKLnVpLWpxZ3JpZCAudWktanFncmlkLXRvcHBhZ2VyIC51aS1wYWdpbmctaW5mbwp7IAoJZm9udC13ZWlnaHQ6IG5vcm1hbDsKCWhlaWdodDphdXRvOyAKCW1hcmdpbi10b3A6M3B4OwoJbWFyZ2luLXJpZ2h0OjRweDsKCWRpc3BsYXk6IGlubGluZTsKfQoudWktanFncmlkIC51aS1qcWdyaWQtcGFnZXIgLnVpLXBhZ2luZy1wYWdlciwKLnVpLWpxZ3JpZCAudWktanFncmlkLXRvcHBhZ2VyIC51aS1wYWdpbmctcGFnZXIKewoJdGFibGUtbGF5b3V0OmF1dG87CgloZWlnaHQ6MTAwJTsKfQoudWktanFncmlkIC51aS1qcWdyaWQtcGFnZXIgLm5hdnRhYmxlLAoudWktanFncmlkIC51aS1qcWdyaWQtdG9wcGFnZXIgLm5hdnRhYmxlCnsKCWZsb2F0OmxlZnQ7Cgl0YWJsZS1sYXlvdXQ6YXV0bzsKCWhlaWdodDoxMDAlOwp9Ci51aS1qcWdyaWQgLnVpLWpxZ3JpZC1wYWdlciAubmF2dGFibGUgdGQsCi51aS1qcWdyaWQgLnVpLWpxZ3JpZC10b3BwYWdlciAubmF2dGFibGUgdGQgCnsgCglvdmVyZmxvdzogaGlkZGVuOwp9CgoKLyoudWktanFncmlkIC51aS1qcWdyaWQtdG9wcGFnZXIgLnVpLXBnLWRpdiB7cGFkZGluZzoxcHggMDtmbG9hdDpsZWZ0O3Bvc2l0aW9uOnJlbGF0aXZlOyBsaW5lLWhlaWdodDogMjBweDsgbWFyZ2luLXJpZ2h0OjNweDt9Ci51aS1qcWdyaWQgLnVpLWpxZ3JpZC10b3BwYWdlciAudWktcGctYnV0dG9uIHsgY3Vyc29yOnBvaW50ZXI7IH0KLnVpLWpxZ3JpZCAudWktanFncmlkLXRvcHBhZ2VyIC51aS1wZy1kaXYgIHNwYW4udWktaWNvbiB7ZmxvYXQ6bGVmdDttYXJnaW46IDJweDsgd2lkdGg6MThweDt9CiovCgovKnN1YmdyaWQqLwoudWktanFncmlkIC51aS1qcWdyaWQtYnRhYmxlIC51aS1zZ2NvbGxhcHNlZCBzcGFuIHtkaXNwbGF5OiBibG9jazt9Ci51aS1qcWdyaWQgLnVpLXN1YmdyaWQge21hcmdpbjowO3BhZGRpbmc6MDsgd2lkdGg6MTAwJTt9Ci51aS1qcWdyaWQgLnVpLXN1YmdyaWQgdGFibGUge3RhYmxlLWxheW91dDogZml4ZWQ7fQoudWktanFncmlkIC51aS1zdWJncmlkIHRyLnVpLXN1YnRibGNlbGwgdGQge2hlaWdodDoxOHB4O2JvcmRlci1yaWdodC13aWR0aDogMXB4OyBib3JkZXItcmlnaHQtY29sb3I6IGluaGVyaXQ7IGJvcmRlci1yaWdodC1zdHlsZTogc29saWQ7Ym9yZGVyLWJvdHRvbS13aWR0aDogMXB4OyBib3JkZXItYm90dG9tLWNvbG9yOiBpbmhlcml0OyBib3JkZXItYm90dG9tLXN0eWxlOiBzb2xpZDt9Ci51aS1qcWdyaWQgLnVpLXN1YmdyaWQgdGQuc3ViZ3JpZC1kYXRhIHtib3JkZXItdG9wOiAgMCBub25lICFpbXBvcnRhbnQ7IGJvcmRlci1sZWZ0OiAwIG5vbmUgIWltcG9ydGFudDt9Ci51aS1qcWdyaWQgLnVpLXN1YmdyaWQgdGQuc3ViZ3JpZC1jZWxsIHtib3JkZXItd2lkdGg6IDAgMXB4IDFweCAwO30KLnVpLWpxZ3JpZCAudWktdGgtc3ViZ3JpZCB7aGVpZ2h0OjIwcHg7fQovKiBsb2FkaW5nICovCi51aS1qcWdyaWQgLmxvYWRpbmcsCi5sb2FkaW5nX3Bpdm90IHsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsgCgl0b3A6IDQ1JTsKCWxlZnQ6IDQ1JTsKCXdpZHRoOiBhdXRvOwoJei1pbmRleDoxMDE7CglwYWRkaW5nOiA2cHg7CgltYXJnaW46IDVweDsKCXRleHQtYWxpZ246IGNlbnRlcjsKCWZvbnQtd2VpZ2h0OiBib2xkOwoJZGlzcGxheTogbm9uZTsKCWJvcmRlci13aWR0aDogMnB4ICFpbXBvcnRhbnQ7CgkvKmZvbnQtc2l6ZToxMXB4OyovCn0KLnVpLWpxZ3JpZCAuanFncmlkLW92ZXJsYXkge2Rpc3BsYXk6bm9uZTt9Ci8qIElFICogaHRtbCAuanFncmlkLW92ZXJsYXkge3dpZHRoOiBleHByZXNzaW9uKHRoaXMucGFyZW50Tm9kZS5vZmZzZXRXaWR0aCsncHgnKTtoZWlnaHQ6IGV4cHJlc3Npb24odGhpcy5wYXJlbnROb2RlLm9mZnNldEhlaWdodCsncHgnKTt9ICovCiogLmpxZ3JpZC1vdmVybGF5IGlmcmFtZSB7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO3otaW5kZXg6LTE7fQovKiBJRSB3aWR0aDogZXhwcmVzc2lvbih0aGlzLnBhcmVudE5vZGUub2Zmc2V0V2lkdGgrJ3B4Jyk7aGVpZ2h0OiBleHByZXNzaW9uKHRoaXMucGFyZW50Tm9kZS5vZmZzZXRIZWlnaHQrJ3B4Jyk7fSovCi8qIGVuZCBsb2FkaW5nIGRpdiAqLwovKiB0b29sYmFyICovCi51aS1qcWdyaWQgLnVpLXVzZXJkYXRhIHtib3JkZXItbGVmdDogMCBub25lOyAgICBib3JkZXItcmlnaHQ6IDAgbm9uZTsJaGVpZ2h0IDogMjdweDtvdmVyZmxvdzogaGlkZGVuOwl9Ci8qTW9kYWwgV2luZG93ICovCi51aS1qcWRpYWxvZyB7IAoJLypmb250LXNpemU6MTFweCAhaW1wb3J0YW50OyAqLwp9Ci51aS1qcWRpYWxvZyB7IAoJZGlzcGxheTogbm9uZTsgCgl3aWR0aDogMzAwcHg7IAoJcG9zaXRpb246IGFic29sdXRlOyAKCXBhZGRpbmc6IC4yZW07IAoJLypmb250LXNpemU6MTFweDsqLwoJb3ZlcmZsb3c6dmlzaWJsZTsKCWJveC1zaXppbmc6Y29udGVudC1ib3g7Cn0KLnVpLWpxZGlhbG9nIC51aS1qcWRpYWxvZy10aXRsZWJhciB7IAoJcGFkZGluZzogLjNlbSAuMmVtOyAKCXBvc2l0aW9uOiByZWxhdGl2ZTsgaGVpZ2h0OjIwcHg7Cglib3gtc2l6aW5nOmNvbnRlbnQtYm94Owp9Ci51aS1qcWRpYWxvZyAudWktanFkaWFsb2ctdGl0bGUgeyBtYXJnaW46IC4zZW0gLjJlbSAuMmVtIC4yZW07fSAKLnVpLWpxZGlhbG9nIC51aS1qcWRpYWxvZy10aXRsZWJhci1jbG9zZSB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgIHRvcDogNTAlOyB3aWR0aDogMTlweDsgbWFyZ2luOiAtMTJweCAwIDAgMDsgcGFkZGluZzogMXB4OyBoZWlnaHQ6IDE4cHg7IGN1cnNvcjpwb2ludGVyO30KCi51aS1qcWRpYWxvZyAudWktanFkaWFsb2ctdGl0bGViYXItY2xvc2Ugc3BhbiB7IGRpc3BsYXk6IGJsb2NrOyBtYXJnaW46IDFweDsgfQoudWktanFkaWFsb2cgLnVpLWpxZGlhbG9nLXRpdGxlYmFyLWNsb3NlOmhvdmVyLCAudWktanFkaWFsb2cgLnVpLWpxZGlhbG9nLXRpdGxlYmFyLWNsb3NlOmZvY3VzIHsgcGFkZGluZzogMDsgfQoudWktanFkaWFsb2ctY29udGVudCwgLnVpLWpxZGlhbG9nIC51aS1qcWRpYWxvZy1jb250ZW50IHsgYm9yZGVyOiAwOyBwYWRkaW5nOiAuM2VtIC4yZW07IGJhY2tncm91bmQ6IG5vbmU7IGhlaWdodDphdXRvO30KLnVpLWpxZGlhbG9nIC51aS1qcWNvbmZpcm0ge3BhZGRpbmc6IC40ZW0gMWVtOyBib3JkZXItd2lkdGg6M3B4O3Bvc2l0aW9uOmFic29sdXRlO2JvdHRvbToxMHB4O3JpZ2h0OjEwcHg7b3ZlcmZsb3c6dmlzaWJsZTtkaXNwbGF5Om5vbmU7aGVpZ2h0OjgwcHg7d2lkdGg6MjIwcHg7dGV4dC1hbGlnbjpjZW50ZXI7fQoudWktanFkaWFsb2c+LnVpLXJlc2l6YWJsZS1zZSB7IAoJYm90dG9tOiAycHg7IAoJcmlnaHQ6IDJweDsKCWJhY2tncm91bmQtcG9zaXRpb246IC02NHB4IC0yMjRweDsKfQoudWktanFncmlkPi51aS1yZXNpemFibGUtc2UgeyBib3R0b206IC0zcHg7IHJpZ2h0OiAtM3B4IH0KLnVpLXJlc2l6YWJsZS1pY29uIHsKCXJlc2l6ZTogYm90aDsKCW92ZXJmbG93OiBhdXRvOwp9Ci5qcWdyaWQtb3ZlcmxheS1tb2RhbCB7CWRpc3BsYXkgOiBub25lOyB9Ci8qIGVuZCBNb2RhbCB3aW5kb3cqLwovKiBGb3JtIGVkaXQgKi8KLnVpLWpxZGlhbG9nLWNvbnRlbnQgLkZvcm1HcmlkIHttYXJnaW46IDA7IG92ZXJmbG93OmF1dG87cG9zaXRpb246cmVsYXRpdmU7fQoudWktanFkaWFsb2ctY29udGVudCAuRWRpdFRhYmxlIHsgd2lkdGg6IDEwMCU7IG1hcmdpbi1ib3R0b206MDt9Ci51aS1qcWRpYWxvZy1jb250ZW50IC5EZWxUYWJsZSB7IHdpZHRoOiAxMDAlOyBtYXJnaW4tYm90dG9tOjA7fQouRWRpdFRhYmxlIHRkIGlucHV0LCAuRWRpdFRhYmxlIHRkIHNlbGVjdCwgLkVkaXRUYWJsZSB0ZCB0ZXh0YXJlYSB7bWFyZ2luOiAwO30KLkVkaXRUYWJsZSB0ZCB0ZXh0YXJlYSB7IHdpZHRoOmF1dG87IGhlaWdodDphdXRvO30KLnVpLWpxZGlhbG9nLWNvbnRlbnQgdGQuRWRpdEJ1dHRvbiB7dGV4dC1hbGlnbjogcmlnaHQ7Ym9yZGVyLXRvcDogMCBub25lO2JvcmRlci1sZWZ0OiAwIG5vbmU7Ym9yZGVyLXJpZ2h0OiAwIG5vbmU7IHBhZGRpbmctYm90dG9tOjVweDsgcGFkZGluZy10b3A6NXB4O30KLnVpLWpxZGlhbG9nLWNvbnRlbnQgdGQubmF2QnV0dG9uIHt0ZXh0LWFsaWduOiBjZW50ZXI7IGJvcmRlci1sZWZ0OiAwIG5vbmU7Ym9yZGVyLXRvcDogMCBub25lO2JvcmRlci1yaWdodDogMCBub25lOyBwYWRkaW5nLWJvdHRvbTo1cHg7IHBhZGRpbmctdG9wOjVweDt9Ci51aS1qcWRpYWxvZy1jb250ZW50IGlucHV0LkZvcm1FbGVtZW50IHsKCXBhZGRpbmc6IC41ZW0gLjNlbTsgCgltYXJnaW4tYm90dG9tOiAzcHg7Cglmb250LXNpemU6IGluaGVyaXQ7Cn0KLnVpLWpxZGlhbG9nLWNvbnRlbnQgc2VsZWN0LkZvcm1FbGVtZW50IHsKCXBhZGRpbmc6LjNlbTsgCgltYXJnaW4tYm90dG9tOiAzcHg7Cglmb250LXNpemU6IGluaGVyaXQ7Cn0KLnVpLWpxZGlhbG9nLWNvbnRlbnQgLmRhdGEtbGluZSB7cGFkZGluZy10b3A6LjFlbTtib3JkZXI6IDAgbm9uZTt9CgoudWktanFkaWFsb2ctY29udGVudCAuQ2FwdGlvblREIHt2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO2JvcmRlcjogMCBub25lOyBwYWRkaW5nOiAycHg7d2hpdGUtc3BhY2U6IG5vd3JhcDt9Ci51aS1qcWRpYWxvZy1jb250ZW50IC5EYXRhVEQgewoJcGFkZGluZzogMnB4OyAKCWJvcmRlcjogMCBub25lOyAKCXZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cn0KLnVpLWpxZGlhbG9nLWNvbnRlbnQgLmZvcm0tdmlldy1kYXRhIHt3aGl0ZS1zcGFjZTpwcmV9Ci5mbS1idXR0b24geyAKCWhlaWdodDogMThweDsgCglkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IAoJbWFyZ2luOjJweCA0cHggMCAwOyAKCXBhZGRpbmc6IC42ZW0gLjVlbSAuMmVtIC41ZW07IAoJdGV4dC1kZWNvcmF0aW9uOm5vbmUgIWltcG9ydGFudDsgCgljdXJzb3I6cG9pbnRlcjsgCglwb3NpdGlvbjogcmVsYXRpdmU7IAoJdGV4dC1hbGlnbjogY2VudGVyOyAKCWJveC1zaXppbmc6Y29udGVudC1ib3g7Cn0KLmZtLWJ1dHRvbi1pY29uLWxlZnQgeyBwYWRkaW5nLWxlZnQ6IDEuOWVtOyB9Ci5mbS1idXR0b24taWNvbi1yaWdodCB7IHBhZGRpbmctcmlnaHQ6IDEuOWVtOyB9Ci5mbS1idXR0b24taWNvbi1sZWZ0IC51aS1pY29uIHsgcmlnaHQ6IGF1dG87IGxlZnQ6IC4yZW07IG1hcmdpbi1sZWZ0OiAwOyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogNTAlOyBtYXJnaW4tdG9wOiAtOHB4OyB9Ci5mbS1idXR0b24taWNvbi1yaWdodCAudWktaWNvbiB7IGxlZnQ6IGF1dG87IHJpZ2h0OiAuMmVtOyBtYXJnaW4tbGVmdDogMDsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDUwJTsgbWFyZ2luLXRvcDogLThweDt9CiNuRGF0YSwgI3BEYXRhIHsgZmxvYXQ6IGxlZnQ7IG1hcmdpbjozcHg7cGFkZGluZzogMDsgd2lkdGg6IDE1cHg7IH0KLlZpZXdUYWJsZSB7Cglib3JkZXItd2lkdGg6IDA7IAoJYm9yZGVyLXN0eWxlOiBub25lOyAKCWJvcmRlci1zcGFjaW5nOiAxcHg7CglwYWRkaW5nOiA0cHg7Cgl0YWJsZS1sYXlvdXQ6IGZpeGVkOwp9Ci5WaWV3VGFibGUgLkNhcHRpb25URCwgLlZpZXdUYWJsZSAuRGF0YVREIHtwYWRkaW5nIDogNHB4O30gCi8qIEVuZCBFb3JtIGVkaXQgKi8KLypjZWxsIGVkaXQqLwoudWktanFncmlkIC5lZGl0LWNlbGwgewoJcGFkZGluZzogNHB4IDBweCA0cHggNHB4Owp9Ci51aS1qcWdyaWQgLnNlbGVjdGVkLXJvdywgZGl2LnVpLWpxZ3JpZCAuc2VsZWN0ZWQtcm93IHRkIHtmb250LXN0eWxlIDogbm9ybWFsO2JvcmRlci1sZWZ0OiAwIG5vbmU7fQovKiBpbmxpbmUgZWRpdCBhY3Rpb25zIGJ1dHRvbiovCi51aS1pbmxpbmUtZGVsLnVpLXN0YXRlLWhvdmVyIHNwYW4sIC51aS1pbmxpbmUtZWRpdC51aS1zdGF0ZS1ob3ZlciBzcGFuLAoudWktaW5saW5lLXNhdmUudWktc3RhdGUtaG92ZXIgc3BhbiwgLnVpLWlubGluZS1jYW5jZWwudWktc3RhdGUtaG92ZXIgc3BhbiB7CiAgICBtYXJnaW46IC0xcHg7Cn0KLnVpLWlubGluZS1kZWwsIC51aS1pbmxpbmUtY2FuY2VsIHsKICAgIG1hcmdpbi1sZWZ0OiA4cHg7Cn0KCi51aS1qcWdyaWQgLmlubGluZS1lZGl0LWNlbGwgewoJcGFkZGluZzogNHB4IDBweCA0cHggNHB4Owp9Ci8qIFRyZWUgR3JpZCAqLwoudWktanFncmlkIC50cmVlLXdyYXAge2Zsb2F0OiBsZWZ0OyBwb3NpdGlvbjogcmVsYXRpdmU7aGVpZ2h0OiAxOHB4O3doaXRlLXNwYWNlOiBub3dyYXA7b3ZlcmZsb3c6IGhpZGRlbjt9Ci51aS1qcWdyaWQgLnRyZWUtbWludXMge3Bvc2l0aW9uOiBhYnNvbHV0ZTsgaGVpZ2h0OiAxOHB4OyB3aWR0aDogMThweDsgb3ZlcmZsb3c6IGhpZGRlbjt9Ci51aS1qcWdyaWQgLnRyZWUtcGx1cyB7cG9zaXRpb246IGFic29sdXRlOwloZWlnaHQ6IDE4cHg7IHdpZHRoOiAxOHB4OwlvdmVyZmxvdzogaGlkZGVuO30KLnVpLWpxZ3JpZCAudHJlZS1sZWFmIHtwb3NpdGlvbjogYWJzb2x1dGU7CWhlaWdodDogMThweDsgd2lkdGg6IDE4cHg7b3ZlcmZsb3c6IGhpZGRlbjt9Ci51aS1qcWdyaWQgLnRyZWVjbGljayB7Y3Vyc29yOiBwb2ludGVyO30KLyogbW9kYSBkaWFsb2cgKi8KKiBpZnJhbWUuanFtIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7ei1pbmRleDotMTt9Ci8qCSB3aWR0aDogZXhwcmVzc2lvbih0aGlzLnBhcmVudE5vZGUub2Zmc2V0V2lkdGgrJ3B4Jyk7aGVpZ2h0OiBleHByZXNzaW9uKHRoaXMucGFyZW50Tm9kZS5vZmZzZXRIZWlnaHQrJ3B4Jyk7fSovCi51aS1qcWdyaWQtZG5kIHRyIHRkIHtib3JkZXItcmlnaHQtd2lkdGg6IDFweDsgYm9yZGVyLXJpZ2h0LWNvbG9yOiBpbmhlcml0OyBib3JkZXItcmlnaHQtc3R5bGU6IHNvbGlkOyBoZWlnaHQ6MjBweH0KLyogUlRMIFN1cHBvcnQgKi8KLnVpLWpxZ3JpZCAudWktanFncmlkLWNhcHRpb24tcnRsIHt0ZXh0LWFsaWduOiByaWdodDt9Ci51aS1qcWdyaWQgLnVpLWpxZ3JpZC1oYm94LXJ0bCB7ZmxvYXQ6IHJpZ2h0O30KLnVpLWpxZ3JpZCAudWktanFncmlkLXJlc2l6ZS1sdHIge2Zsb2F0OiByaWdodDttYXJnaW46IC0ycHggLTJweCAtMnB4IDA7fQoudWktanFncmlkIC51aS1qcWdyaWQtcmVzaXplLXJ0bCB7ZmxvYXQ6IGxlZnQ7bWFyZ2luOiAtMnB4IDAgLTFweCAtM3B4O30KLnVpLWpxZ3JpZCAudWktc29ydC1ydGwge2xlZnQ6MDt9Ci51aS1qcWdyaWQgLnRyZWUtd3JhcC1sdHIge2Zsb2F0OiBsZWZ0O30KLnVpLWpxZ3JpZCAudHJlZS13cmFwLXJ0bCB7ZmxvYXQ6IHJpZ2h0O30KLnVpLWpxZ3JpZCAudWktZWxsaXBzaXMgey1tb3otdGV4dC1vdmVyZmxvdzplbGxpcHNpczt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO30KCi8qIFRvb2xiYXIgU2VhcmNoIE1lbnUgLCBOYXYgbWVudSovCi51aS1zZWFyY2gtbWVudSwgCi51aS1uYXYtbWVudSB7Cglwb3NpdGlvbjogYWJzb2x1dGU7IAoJcGFkZGluZzogMnB4IDVweDsgCgl6LWluZGV4Ojk5OTk5OwoJLXdlYmtpdC1ib3gtc2hhZG93OiA3cHggN3B4IDVweCAwcHggcmdiYSg1MCwgNTAsIDUwLCAwLjc1KTsKCS1tb3otYm94LXNoYWRvdzogICAgN3B4IDdweCA1cHggMHB4IHJnYmEoNTAsIDUwLCA1MCwgMC43NSk7Cglib3gtc2hhZG93OiAgICAgICAgIDdweCA3cHggNXB4IDBweCByZ2JhKDUwLCA1MCwgNTAsIDAuNzUpOwp9Ci51aS1zZWFyY2gtbWVudS51aS1tZW51IC51aS1tZW51LWl0ZW0sCi51aS1uYXYtbWVudS51aS1tZW51IC51aS1tZW51LWl0ZW0KeyAKCWxpc3Qtc3R5bGUtaW1hZ2U6IG5vbmU7IAoJcGFkZGluZy1yaWdodDogMDsgCglwYWRkaW5nLWxlZnQ6IDA7IAp9Ci51aS1zZWFyY2gtbWVudS51aS1tZW51IC51aS1tZW51LWl0ZW0gYSwgCi51aS1uYXYtbWVudS51aS1tZW51IC51aS1tZW51LWl0ZW0gYSAKeyAKCWRpc3BsYXk6IGJsb2NrOyAKfQoudWktc2VhcmNoLW1lbnUudWktbWVudSAudWktbWVudS1pdGVtIGEuZy1tZW51LWl0ZW06aG92ZXIsCi51aS1uYXYtbWVudS51aS1tZW51IC51aS1tZW51LWl0ZW0gYS5nLW1lbnUtaXRlbTpob3ZlciAKeyAKCW1hcmdpbjogLTFweDsgCglmb250LXdlaWdodDogbm9ybWFsOyAKfQoudWktanFncmlkIC51aS1zZWFyY2gtdGFibGUgeyBwYWRkaW5nOiAwOyBib3JkZXI6IDAgbm9uZTsgaGVpZ2h0OjIwcHg7IHdpZHRoOjEwMCU7fQoudWktanFncmlkIC51aS1zZWFyY2gtdGFibGUgLnVpLXNlYXJjaC1vcGVyIHsgd2lkdGg6MjBweDsgfQphLmctbWVudS1pdGVtLCBhLnNvcHRjbGFzcywgYS5jbGVhcnNlYXJjaGNsYXNzIHsgY3Vyc29yOiBwb2ludGVyOyB9IAoudWktanFncmlkIC51aS1qcWdyaWQtdmlldyBpbnB1dCwKLnVpLWpxZ3JpZCAudWktanFncmlkLXZpZXcgc2VsZWN0LAoudWktanFncmlkIC51aS1qcWdyaWQtdmlldyB0ZXh0YXJlYSwKLnVpLWpxZ3JpZCAudWktanFncmlkLXZpZXcgYnV0dG9uIHsKICAgIGZvbnQtc2l6ZTogaW5oZXJpdDsKfQoKLnVpLXNlYXJjaC1tZW51IGEuc29wdGNsYXNzIAp7CglwYWRkaW5nLWxlZnQ6IDAuNGVtOwoJcGFkZGluZy1yaWdodDogMC40ZW0KfQoKLnVpLW1lbnUtaXRlbSBhLmctbWVudS1pdGVtIC5vcGVyc2lnbiAKewoJd2lkdGggOiAyMHB4Owp9CgoKLnVpLWpxZ3JpZCAudWktc2Nyb2xsLXBvcHVwIHt3aWR0aDogOTVweDt9Ci51aS1zZWFyY2gtdGFibGUgc2VsZWN0LAoudWktc2VhcmNoLXRhYmxlIGlucHV0IAp7CglwYWRkaW5nOiA0cHggM3B4Owp9CgoudWktanFncmlkIC51aS1wZy10YWJsZSAudWktcGctYnV0dG9uLnVpLXN0YXRlLWRpc2FibGVkOmhvdmVyID4gLnVpLXNlcGFyYXRvciB7CgltYXJnaW4tbGVmdDogM3B4OwoJbWFyZ2luLXJpZ2h0OiAzcHg7Cn0KCi51aS1qcWdyaWQgLnVpLXBnLXRhYmxlIC51aS1wZy1idXR0b24udWktc3RhdGUtZGlzYWJsZWQ6aG92ZXIgPiAudWktcGctZGl2ID4gLnVpLWljb24gewoJbWFyZ2luLWxlZnQ6IDNweDsKCW1hcmdpbi1yaWdodDogM3B4Owp9Ci8qIENvbHVtbiBtZW51ICovCi51aS1qcWdyaWQgLnVpLWpxZ3JpZC1odGFibGUgLmNvbG1lbnUKewoJcG9zaXRpb246YWJzb2x1dGU7CglyaWdodDoxcHg7CgloZWlnaHQ6MTAwJTsKCWNvbG9yIDogYmxhY2s7Cn0KLnVpLWpxZ3JpZCAudWktanFncmlkLWh0YWJsZSAuY29sbWVudS1ydGwKewoJcmlnaHQ6IGF1dG87CglsZWZ0IDogMXB4OwoJcG9zaXRpb246YWJzb2x1dGU7CgloZWlnaHQ6MTAwJTsKCWNvbG9yIDogYmxhY2s7Cn0KLnVpLWpxZ3JpZCAudWktanFncmlkLWh0YWJsZSAuY29sbWVudXNwYW4KewoJZGlzcGxheTppbmxpbmUtYmxvY2s7Cn0KLnVpLWpxZ3JpZCAudWktanFncmlkLWh0YWJsZSAudWktdGgtZGl2IHsKCWhlaWdodDoxN3B4OwoJbWFyZ2luLXRvcDo1cHg7Cn0KdGguanFncmlkLW11bHRpYm94IC51aS10aC1kaXYgewoJbWFyZ2luLXRvcDoycHggIWltcG9ydGFudDsKCXBhZGRpbmctYm90dG9tOiA0cHg7Cn0KLmNvbHVtbi1tZW51LCAudWktc2VhcmNoLW1lbnUgewoJcGFkZGluZzogMTBweCAxMHB4Owp9Ci5jb2x1bW4tbWVudSAuZGl2aWRlciB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZTVlNWU1OyAKCWhlaWdodDogMXB4OwoJcGFkZGluZzowIDA7CgltYXJnaW46IDVweCAwOyAgCglvdmVyZmxvdzogaGlkZGVuOwp9Ci51aS1tZW51LWl0ZW0gLnVpLWNvbW1vbi10YWJsZSAubWVudV9pY29uIHsKCXdoaXRlLXNwYWNlOiBwcmU7CglwYWRkaW5nLXJpZ2h0OiA0cHg7CglwYWRkaW5nLWxlZnQ6IDRweDsKCXdpZHRoIDogYXV0bzsKfQoudWktbWVudS1pdGVtIC51aS1jb21tb24tdGFibGUgLm1lbnVfaWNvbiAudWktaWNvbiB7CglkaXNwbGF5IDogaW5saW5lLWJsb2NrOwoJcG9zaXRpb246IHJlbGF0aXZlOwp9CnRkLm1lbnVfdGV4dCB7Cgl3aWR0aDogYXV0bzsKCXdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KLnVpLXNlYXJjaC1tZW51IC51aS1tZW51LWl0ZW0gewoJcGFkZGluZyA6IDAgMDsKfQoudWktY29sLW1lbnUgLnVpLW1lbnUtaXRlbSB0ZC5tZW51X3RleHR7CglwYWRkaW5nLXRvcDogMDsKCXBhZGRpbmctYm90dG9tOiAwOwoJcGFkZGluZy1sZWZ0IDogMXB4Owp9Ci51aS1jb2wtbWVudSAudWktbWVudS1pdGVtIHRkLm1lbnVfaWNvbnsKCXBhZGRpbmctdG9wOiAwOwoJcGFkZGluZy1ib3R0b206IDA7Cgl2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwp9Ci51aS1jb2wtbWVudSAudWktbWVudS1pdGVtIHRkLm1lbnVfaWNvbiBpbnB1dHsKCW1hcmdpbjogMnB4IDA7CgkKfQojc2VhcmNoX21lbnUgLnVpLW1lbnUtaXRlbSBkaXYgewoJbWFyZ2luOiAzcHggMDsKCXdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KCiNzZWFyY2hfbWVudSAudWktbWVudS1pdGVtIGRpdiBpbnB1dCwKI3NlYXJjaF9tZW51IC51aS1tZW51LWl0ZW0gZGl2IHNlbGVjdAp7CglwYWRkaW5nOiAzcHggMnB4Owp9CiNzZWFyY2hfbWVudSAgLnNlYXJjaF9idXR0b25zIHsKCWRpc3BsYXk6aW5saW5lLWJsb2NrOwoJd2lkdGg6NTAlOwp9CiNzZWFyY2hfbWVudSAgI2JzX2Nsb3NlIHsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCXBhZGRpbmc6ICAwcHggMHB4OwoJdG9wOiA4cHg7CglyaWdodDogMTlweDsKfQoKI2NvbHVtbl9tZW51LnVpLW1lbnUgLnVpLW1lbnUtaXRlbSB7Cglwb3NpdGlvbiA6c3RhdGljOwp9Ci8qbWVudWJhciovCi51aS1qcWdyaWQgLnVpLWpxZ3JpZC1tZW51YmFyIHsKCW1hcmdpbjogMHB4IDVweDsKCXdpZHRoOjE5cHg7CgloZWlnaHQ6MThweDsKfQoudWktanFncmlkIC51aS1qcWdyaWQtbWVudWJhcjpob3ZlciB7Cglib3JkZXI6IDAgbm9uZTsKfQoudWktanFncmlkIC5tZW51YmFyLXJ0bCB7CglmbG9hdCA6IHJpZ2h0Owp9CgoudWktanFncmlkIC5tZW51YmFyLWx0ciB7CglmbG9hdCA6IGxlZnQ7Cn0KLypwcmludGluZyovCgouanFncmlkcHJpbnQgewoJd2lkdGggOiAxMDAlOwoJZm9udC1zaXplOiAxM3B4Owp9CgouanFncmlkcHJpbnQgdGgsCi5qcWdyaWRwcmludCB0ZCB7CglwYWRkaW5nOiA0cHggNHB4IDRweCA0cHggOwoJdGV4dC1hbGlnbjogY2VudGVyIDsKfQouanFncmlkcHJpbnQgdGggewoJYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICMzMzMzMzMgOwp9Ci5qcWdyaWRwcmludCB0ZCB7Cglib3JkZXItYm90dG9tOiAxcHggZG90dGVkICM5OTk5OTkgOwp9CgouanFncmlkcHJpbnQgdGZvb3QgdGQgewoJYm9yZGVyLWJvdHRvbS13aWR0aDogMHB4IDsKCWJvcmRlci10b3A6IDJweCBzb2xpZCAjMzMzMzMzIDsKCXBhZGRpbmctdG9wOiAyMHB4IDsKfQoKLnVpLWpxZ3JpZCAuanFncmlkLWNhcHRpb24tbWVudSAKeyAKCWxlZnQ6MDsKCXRvcDozMHB4OwoJcG9zaXRpb246YWJzb2x1dGU7CglkaXNwbGF5Om5vbmU7Cglmb250LXNpemU6IGluaGVyaXQ7Cgl3aWR0aCA6IGF1dG87Cn0KLnVpLWpxZ3JpZCAuanFncmlkLWNvbHVtbi1tZW51CnsKCWZvbnQtc2l6ZTppbmhlcml0OwoJd2lkdGg6YXV0bzsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKfQoKLnVpLWpxZ3JpZCAuc2VhcmNoLWNvbC1pbnB1dAp7CglwYWRkaW5nOiAzcHggMnB4Owp9Ci51aS1qcWdyaWQgdGQuanFncmlkLXNlYXJjaGNvbCBpbnB1dCB7Cgl3aWR0aDogMTAwJTsKCW92ZXJmbG93OiBhdXRvOwp9CgoudWktanFncmlkIC5mcm96ZW4tcmRpdiAgewoJei1pbmRleDogMTAwMDA7Cn0KLnVpLWNvbC1tZW51IHsKCW92ZXJmbG93OiBhdXRvOwoJaGVpZ2h0OiAxN2VtOwp9Cg=='>


<link id=style_jgg_jqgrid_css href='data:/text/plain;base64,LypHcmlkKi8KLnVpLWpxZ3JpZCB7Cglwb3NpdGlvbjogcmVsYXRpdmU7CgktbW96LWJveC1zaXppbmc6IGNvbnRlbnQtYm94OyAKCS13ZWJraXQtYm94LXNpemluZzogY29udGVudC1ib3g7IAoJYm94LXNpemluZzogY29udGVudC1ib3g7Cglmb250LXNpemU6MTFweDsKfQoudWktanFncmlkIC51aS1qcWdyaWQtdmlldyB7Cglwb3NpdGlvbjogcmVsYXRpdmU7CglsZWZ0OjA7IAoJdG9wOiAwOyAKCXBhZGRpbmc6IDA7CgkvKmZvbnQtc2l6ZToxMXB4OyovCgl6LWluZGV4OjEwMDsKfQoudWktanFncmlkIC51aS1jb21tb24tdGFibGUge2JvcmRlci13aWR0aDogMHB4OyBib3JkZXItc3R5bGU6IG5vbmU7IGJvcmRlci1zcGFjaW5nOiAwcHg7IHBhZGRpbmc6IDA7fQovKiBjYXB0aW9uKi8KLnVpLWpxZ3JpZCAudWktanFncmlkLXRpdGxlYmFyIHsKCWhlaWdodDoxOXB4OyAKCXBhZGRpbmc6IC4zZW0gLjJlbSAuMmVtIC4zZW07IAoJcG9zaXRpb246IHJlbGF0aXZlOyAKCWZvbnQtc2l6ZTogMTJweDsgCglib3JkZXItbGVmdDogMCBub25lOwoJYm9yZGVyLXJpZ2h0OiAwIG5vbmU7IAoJYm9yZGVyLXRvcDogMCBub25lOwoJYm94LXNpemluZzpjb250ZW50LWJveDsKfQoudWktanFncmlkIC51aS1qcWdyaWQtY2FwdGlvbiB7dGV4dC1hbGlnbjogbGVmdDt9Ci51aS1qcWdyaWQgLnVpLWpxZ3JpZC10aXRsZSB7CglwYWRkaW5nOiAuMmVtIC4xZW0gLjFlbTsKCS8qcG9zaXRpb246IGFic29sdXRlOyAqLwp9Ci51aS1qcWdyaWQgLnVpLWpxZ3JpZC10aXRsZWJhci1jbG9zZSB7IHBvc2l0aW9uOiBhYnNvbHV0ZTt0b3A6IDUwJTsgd2lkdGg6IDE5cHg7IG1hcmdpbjogLTEwcHggMCAwIDA7IHBhZGRpbmc6IDFweDsgaGVpZ2h0OjE4cHg7IGN1cnNvcjpwb2ludGVyO30KLnVpLWpxZ3JpZCAudWktanFncmlkLXRpdGxlYmFyLWNsb3NlIHNwYW4geyBkaXNwbGF5OiBibG9jazsgbWFyZ2luOiAxcHg7IH0KLnVpLWpxZ3JpZCAudWktanFncmlkLXRpdGxlYmFyLWNsb3NlOmhvdmVyIHsgcGFkZGluZzogMDsgfQoudWktanFncmlkIC5tZW51YmFyOmhvdmVyIHsgIGJvcmRlcjogMCBub25lO30KLyogaGVhZGVyKi8KLnVpLWpxZ3JpZCAudWktanFncmlkLWhkaXYge3Bvc2l0aW9uOiByZWxhdGl2ZTsgbWFyZ2luOiAwO3BhZGRpbmc6IDA7IG92ZXJmbG93OiBoaWRkZW47IGJvcmRlci1sZWZ0OiAwIG5vbmUgIWltcG9ydGFudDsgYm9yZGVyLXRvcCA6IDAgbm9uZSAhaW1wb3J0YW50OyBib3JkZXItcmlnaHQgOiAwIG5vbmUgIWltcG9ydGFudDt9Ci51aS1qcWdyaWQgLnVpLWpxZ3JpZC1oYm94IHtmbG9hdDogbGVmdDsgcGFkZGluZy1yaWdodDogMjBweDt9Ci51aS1qcWdyaWQgLnVpLWpxZ3JpZC1odGFibGUge3RhYmxlLWxheW91dDpmaXhlZDttYXJnaW46MDtib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlO30KLnVpLWpxZ3JpZCAudWktanFncmlkLWh0YWJsZSB0aCB7IGhlaWdodDogMjdweDsgcGFkZGluZzogMCAycHggMCAycHg7fQoudWktanFncmlkIC51aS1qcWdyaWQtaHRhYmxlIHRoIGRpdiB7b3ZlcmZsb3c6IGhpZGRlbjsgcG9zaXRpb246cmVsYXRpdmU7bWFyZ2luOiAuMWVtIDBlbSAuMWVtIDBlbTt9Ci51aS10aC1jb2x1bW4sIC51aS1qcWdyaWQgLnVpLWpxZ3JpZC1odGFibGUgdGgudWktdGgtY29sdW1uIHtvdmVyZmxvdzogaGlkZGVuO3doaXRlLXNwYWNlOiBub3dyYXA7dGV4dC1hbGlnbjpjZW50ZXI7Ym9yZGVyLXRvcCA6IDAgbm9uZTtib3JkZXItYm90dG9tIDogMCBub25lO30KLnVpLXRoLWNvbHVtbi1oZWFkZXIsIC51aS1qcWdyaWQgLnVpLWpxZ3JpZC1odGFibGUgdGgudWktdGgtY29sdW1uLWhlYWRlciB7b3ZlcmZsb3c6IGhpZGRlbjt3aGl0ZS1zcGFjZTogbm93cmFwO3RleHQtYWxpZ246Y2VudGVyO2JvcmRlci10b3AgOiAwIG5vbmU7IGhlaWdodDogMjZweDt9Ci51aS10aC1sdHIsIC51aS1qcWdyaWQgLnVpLWpxZ3JpZC1odGFibGUgdGgudWktdGgtbHRyIHtib3JkZXItbGVmdCA6IDAgbm9uZTt9Ci51aS10aC1ydGwsIC51aS1qcWdyaWQgLnVpLWpxZ3JpZC1odGFibGUgdGgudWktdGgtcnRsIHtib3JkZXItcmlnaHQgOiAwIG5vbmU7fQoudWktZmlyc3QtdGgtbHRyIHtib3JkZXItcmlnaHQ6IDFweCBzb2xpZDsgfQoudWktZmlyc3QtdGgtcnRsIHtib3JkZXItbGVmdDogMXB4IHNvbGlkOyB9Ci51aS1qcWdyaWQgLnVpLXRoLWRpdi1pZSB7d2hpdGUtc3BhY2U6IG5vd3JhcDsgaGVpZ2h0OjE3cHg7fQoudWktanFncmlkIC51aS1qcWdyaWQtcmVzaXplIHtoZWlnaHQ6MjBweCAhaW1wb3J0YW50O3Bvc2l0aW9uOiByZWxhdGl2ZTsgY3Vyc29yIDplLXJlc2l6ZTtkaXNwbGF5OiBpbmxpbmU7b3ZlcmZsb3c6IGhpZGRlbjt9Ci51aS1qcWdyaWQgLnVpLWdyaWQtaWNvLXNvcnQge292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjphYnNvbHV0ZTtkaXNwbGF5OmlubGluZTsgY3Vyc29yOiBwb2ludGVyICFpbXBvcnRhbnQ7fQoudWktanFncmlkIC51aS1pY29uLWFzYyB7bWFyZ2luLXRvcDotM3B4OyBoZWlnaHQ6MTJweDt9Ci51aS1qcWdyaWQgLnVpLWljb24tZGVzYyB7bWFyZ2luLXRvcDozcHg7bWFyZ2luLWxlZnQ6LTFweDtoZWlnaHQ6MTJweDt9Ci51aS1qcWdyaWQgLnVpLWktYXNjIHttYXJnaW4tdG9wOjA7aGVpZ2h0OjE4cHg7fQoudWktanFncmlkIC51aS1pLWRlc2Mge21hcmdpbi10b3A6MDttYXJnaW4tbGVmdDoxMnB4O2hlaWdodDoxOHB4O30KLnVpLWpxZ3JpZCAudWktc2luZ2xlLXNvcnQtYXNjIHttYXJnaW4tdG9wOi0xcHg7aGVpZ2h0OjE4cHg7fQoudWktanFncmlkIC51aS1zaW5nbGUtc29ydC1kZXNjIHttYXJnaW4tdG9wOjA7aGVpZ2h0OjE4cHg7fQoudWktanFncmlkIC51aS1pY29uLWxlZnQgLnMtaWNvIHttYXJnaW4tcmlnaHQ6IDE2cHg7fQoudWktanFncmlkIC51aS1qcWdyaWQtc29ydGFibGUge2N1cnNvcjpwb2ludGVyO2hlaWdodDoxNHB4fQoudWktanFncmlkIHRyLnVpLXNlYXJjaC10b29sYmFyIHRoIHsgYm9yZGVyLWJvdHRvbTogMHB4IG5vbmV9Ci51aS1qcWdyaWQgLnVpLXNlYXJjaC10YWJsZSB0ZC51aS1zZWFyY2gtY2xlYXIgeyB3aWR0aDoyNXB4O30KLnVpLWpxZ3JpZCB0ci51aS1zZWFyY2gtdG9vbGJhciB0ZCBpbnB1dCB7IHBhZGRpbmctcmlnaHQ6IDBweDsgd2lkdGg6IDk1JTt9Ci51aS1qcWdyaWQgdHIudWktc2VhcmNoLXRvb2xiYXIgc2VsZWN0IHt9Ci8qIGJvZHkgKi8gCi51aS1qcWdyaWQgLnVpLWpxZ3JpZC1iZGl2IHtwb3NpdGlvbjogcmVsYXRpdmU7IG1hcmdpbjogMDsgcGFkZGluZzowOyBvdmVyZmxvdzogYXV0bzsgdGV4dC1hbGlnbjpsZWZ0O3otaW5kZXg6IDEwMTt9Ci51aS1qcWdyaWQgLnVpLWpxZ3JpZC1idGFibGUge3RhYmxlLWxheW91dDpmaXhlZDsgbWFyZ2luOjA7IG91dGxpbmUtc3R5bGU6IG5vbmU7IGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7fQoudWktanFncmlkIHRyLmpxZ3JvdywKLnVpLWpxZ3JpZCB0ci5qcWdyb3VwIAoJeyBvdXRsaW5lLXN0eWxlOiBub25lOyB9Ci51aS1qcWdyaWQgdHIuanFncm93IHRkLAoudWktanFncmlkIHRyLmpxZ3JvdXAgdGQKewlmb250LXdlaWdodDogbm9ybWFsOyAKCW92ZXJmbG93OiBoaWRkZW47IAoJd2hpdGUtc3BhY2U6IHByZTsgCgloZWlnaHQ6IDIzcHg7CglwYWRkaW5nOiAxcHggMnB4IDFweCAycHg7Cglib3JkZXItYm90dG9tLXdpZHRoOiAxcHg7IAoJYm9yZGVyLWJvdHRvbS1jb2xvcjogaW5oZXJpdDsgCglib3JkZXItYm90dG9tLXN0eWxlOiBzb2xpZDsKfQoudWktanFncmlkIHRyLmpxZ2ZpcnN0cm93IHRkIHtwYWRkaW5nOiAwIDJweCAwIDJweDtib3JkZXItcmlnaHQtd2lkdGg6IDFweDsgYm9yZGVyLXJpZ2h0LXN0eWxlOiBzb2xpZDsgaGVpZ2h0OmF1dG87fQoudWktanFncmlkIHRyLmpxZm9vdCB0ZCB7Zm9udC13ZWlnaHQ6IGJvbGQ7IG92ZXJmbG93OiBoaWRkZW47IHdoaXRlLXNwYWNlOiBwcmU7IGhlaWdodDogMjJweDtwYWRkaW5nOiAwIDJweCAwIDJweDtib3JkZXItYm90dG9tLXdpZHRoOiAxcHg7IGJvcmRlci1ib3R0b20tY29sb3I6IGluaGVyaXQ7IGJvcmRlci1ib3R0b20tc3R5bGU6IHNvbGlkO30KLnVpLWpxZ3JpZCB0ci51aS1yb3ctbHRyIHRkIHt0ZXh0LWFsaWduOmxlZnQ7Ym9yZGVyLXJpZ2h0LXdpZHRoOiAxcHg7IGJvcmRlci1yaWdodC1jb2xvcjogaW5oZXJpdDsgYm9yZGVyLXJpZ2h0LXN0eWxlOiBzb2xpZDt9Ci51aS1qcWdyaWQgdHIudWktcm93LXJ0bCB0ZCB7dGV4dC1hbGlnbjpyaWdodDtib3JkZXItbGVmdC13aWR0aDogMXB4OyBib3JkZXItbGVmdC1jb2xvcjogaW5oZXJpdDsgYm9yZGVyLWxlZnQtc3R5bGU6IHNvbGlkO30KLnVpLWpxZ3JpZCB0ZC5qcWdyaWQtcm93bnVtIHsgcGFkZGluZzogMCAycHggMCAycHg7IG1hcmdpbjogMDsgYm9yZGVyOiAwIG5vbmU7fQoudWktanFncmlkIC51aS1qcWdyaWQtcmVzaXplLW1hcmsgeyB3aWR0aDoycHg7IGxlZnQ6MDsgYmFja2dyb3VuZC1jb2xvcjojNzc3OyBjdXJzb3I6IGUtcmVzaXplOyBjdXJzb3I6IGNvbC1yZXNpemU7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6MDsgaGVpZ2h0OjEwMHB4OyBvdmVyZmxvdzpoaWRkZW47IGRpc3BsYXk6bm9uZTsgYm9yZGVyOjAgbm9uZTsgei1pbmRleDogOTk5OTk7fQoudWktanFncmlkLXRhYmxlLXN0cmlwZWQgPiB0Ym9keSA+IHRyOm50aC1vZi10eXBlKG9kZCkgewoJb3BhY2l0eTogLjc7Cglmb250LXdlaWdodDogbm9ybWFsOwp9Ci8qIGZvb3RlciAqLwoudWktanFncmlkIC51aS1qcWdyaWQtc2RpdiB7cG9zaXRpb246IHJlbGF0aXZlOyBtYXJnaW46IDA7cGFkZGluZzogMDsgb3ZlcmZsb3c6IGhpZGRlbjsgYm9yZGVyLWxlZnQ6IDAgbm9uZSAhaW1wb3J0YW50OyBib3JkZXItdG9wIDogMCBub25lICFpbXBvcnRhbnQ7IGJvcmRlci1yaWdodCA6IDAgbm9uZSAhaW1wb3J0YW50O30KLnVpLWpxZ3JpZCAudWktanFncmlkLWZ0YWJsZSB7dGFibGUtbGF5b3V0OmZpeGVkOyBtYXJnaW4tYm90dG9tOjA7Ym9yZGVyLWNvbGxhcHNlOiBzZXBhcmF0ZTt9Ci51aS1qcWdyaWQgdHIuZm9vdHJvdyB0ZCB7Zm9udC13ZWlnaHQ6IGJvbGQ7IG92ZXJmbG93OiBoaWRkZW47IHdoaXRlLXNwYWNlOm5vd3JhcDsgaGVpZ2h0OiAyM3B4O3BhZGRpbmc6IDFweCAycHggMXB4IDJweDtib3JkZXItdG9wLXdpZHRoOiAxcHg7IGJvcmRlci10b3AtY29sb3I6IGluaGVyaXQ7IGJvcmRlci10b3Atc3R5bGU6IHNvbGlkO2JvcmRlci1ib3R0b206IDAgbm9uZTt9Ci51aS1qcWdyaWQgdHIuZm9vdHJvdy1sdHIgdGQge3RleHQtYWxpZ246bGVmdDtib3JkZXItcmlnaHQtd2lkdGg6IDFweDsgYm9yZGVyLXJpZ2h0LWNvbG9yOiBpbmhlcml0OyBib3JkZXItcmlnaHQtc3R5bGU6IHNvbGlkO30KLnVpLWpxZ3JpZCB0ci5mb290cm93LXJ0bCB0ZCB7dGV4dC1hbGlnbjpyaWdodDtib3JkZXItbGVmdC13aWR0aDogMXB4OyBib3JkZXItbGVmdC1jb2xvcjogaW5oZXJpdDsgYm9yZGVyLWxlZnQtc3R5bGU6IHNvbGlkO30KLyogaGVhZGVycm93ICovCi51aS1qcWdyaWQgLnVpLWpxZ3JpZC1ocmRpdiB7cG9zaXRpb246IHJlbGF0aXZlOyBtYXJnaW46IDA7cGFkZGluZzogMDsgb3ZlcmZsb3c6IGhpZGRlbjsgYm9yZGVyLWxlZnQ6IDAgbm9uZSAhaW1wb3J0YW50OyBib3JkZXItdG9wIDogMCBub25lICFpbXBvcnRhbnQ7IGJvcmRlci1yaWdodCA6IDAgbm9uZSAhaW1wb3J0YW50O30KLnVpLWpxZ3JpZCAudWktanFncmlkLWhydGFibGUge3RhYmxlLWxheW91dDpmaXhlZDsgbWFyZ2luLWJvdHRvbTowO2JvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7fQoudWktanFncmlkIHRyLmhyaGVhZHJvdyB0ZCB7IG92ZXJmbG93OiBoaWRkZW47IHdoaXRlLXNwYWNlOm5vd3JhcDsgaGVpZ2h0OiAyM3B4O3BhZGRpbmc6IDFweCAycHggMXB4IDJweDtib3JkZXItYm90dG9tLXdpZHRoOiAxcHg7IGJvcmRlci1ib3R0b20tY29sb3I6IGluaGVyaXQ7IGJvcmRlci1ib3R0b20tc3R5bGU6IHNvbGlkO2JvcmRlci10b3A6IDAgbm9uZTt9Ci51aS1qcWdyaWQgdHIuaHJoZWFkcm93LWx0ciB0ZCB7dGV4dC1hbGlnbjpsZWZ0O2JvcmRlci1yaWdodC13aWR0aDogMXB4OyBib3JkZXItcmlnaHQtY29sb3I6IGluaGVyaXQ7IGJvcmRlci1yaWdodC1zdHlsZTogc29saWQ7fQoudWktanFncmlkIHRyLmhyaGVhZHJvdy1ydGwgdGQge3RleHQtYWxpZ246cmlnaHQ7Ym9yZGVyLWxlZnQtd2lkdGg6IDFweDsgYm9yZGVyLWxlZnQtY29sb3I6IGluaGVyaXQ7IGJvcmRlci1sZWZ0LXN0eWxlOiBzb2xpZDt9Ci8qIFBhZ2VyKi8KLnVpLWpxZ3JpZCAudWktanFncmlkLXBhZ2VyIHsgCglib3JkZXItbGVmdDogMCBub25lICFpbXBvcnRhbnQ7Cglib3JkZXItcmlnaHQ6IDAgbm9uZSAhaW1wb3J0YW50OyAKCWJvcmRlci1ib3R0b206IDAgbm9uZSAhaW1wb3J0YW50OyAKCWJvcmRlci10b3A6IDAgbm9uZTsgCgltYXJnaW46IDAgIWltcG9ydGFudDsgCglwYWRkaW5nOiAwICFpbXBvcnRhbnQ7IAoJcG9zaXRpb246IHJlbGF0aXZlOyAKCWhlaWdodDogYXV0bzsgCgltaW4taGVpZ2h0OiAyOHB4OyAKCXdoaXRlLXNwYWNlOiBub3dyYXA7CglvdmVyZmxvdzogaGlkZGVuOwoJLypmb250LXNpemU6MTFweDsgKi8KCXotaW5kZXg6MTAwCn0KLnVpLWpxZ3JpZCAudWktanFncmlkLXRvcHBhZ2VyIC51aS1wYWdlci1jb250cm9sLCAudWktanFncmlkIC51aS1qcWdyaWQtcGFnZXIgLnVpLXBhZ2VyLWNvbnRyb2wge3Bvc2l0aW9uOiByZWxhdGl2ZTtib3JkZXItbGVmdDogMDtib3JkZXItYm90dG9tOiAwO2JvcmRlci10b3A6IDA7IGhlaWdodDogMjhweDt9Ci51aS1qcWdyaWQgLnVpLXBnLXRhYmxlIHtwb3NpdGlvbjogcmVsYXRpdmU7IHBhZGRpbmc6IDFweCAwOyB3aWR0aDphdXRvOyBtYXJnaW46IDA7fQoudWktanFncmlkIC51aS1wZy10YWJsZSB0ZCB7Zm9udC13ZWlnaHQ6bm9ybWFsOyB2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7IHBhZGRpbmc6MHB4IDFweDt9Ci51aS1qcWdyaWQgLnVpLXBnLWJ1dHRvbiAgeyBoZWlnaHQ6YXV0b30KLnVpLWpxZ3JpZCAudWktcGctYnV0dG9uIHNwYW4geyBkaXNwbGF5OiBibG9jazsgbWFyZ2luOiAycHg7IGZsb2F0OmxlZnQ7fQoudWktanFncmlkIC51aS1wZy1idXR0b246aG92ZXIgeyBwYWRkaW5nOiAwO30KLnVpLWpxZ3JpZCAudWktc3RhdGUtZGlzYWJsZWQ6aG92ZXIge3BhZGRpbmc6MHB4O30KLnVpLWpxZ3JpZCAudWktcGctaW5wdXQsLnVpLWpxZ3JpZCAudWktanFncmlkLXRvcHBhZ2VyIC51aS1wZy1pbnB1dCB7IGhlaWdodDoxNHB4O3dpZHRoOiBhdXRvO2ZvbnQtc2l6ZTouOWVtOyBtYXJnaW46MDtsaW5lLWhlaWdodDogaW5oZXJpdDtib3JkZXI6IG5vbmU7IHBhZGRpbmc6IDNweCAycHh9Ci51aS1qcWdyaWQgLnVpLXBnLXNlbGJveCwgLnVpLWpxZ3JpZCAudWktanFncmlkLXRvcHBhZ2VyIC51aS1wZy1zZWxib3gge2ZvbnQtc2l6ZTouOWVtOyBsaW5lLWhlaWdodDppbmhlcml0OyBkaXNwbGF5OmJsb2NrOyBoZWlnaHQ6MTlweDsgbWFyZ2luOiAwOyBwYWRkaW5nOiAzcHggMHB4OyBib3JkZXI6bm9uZTt9Ci51aS1qcWdyaWQgLnVpLXNlcGFyYXRvciB7aGVpZ2h0OiAxOHB4OyBib3JkZXItbGVmdDogMnB4IHNvbGlkICNjY2MgO30KLnVpLXNlcGFyYXRvci1saSB7aGVpZ2h0OiAycHg7IGJvcmRlciA6IG5vbmU7Ym9yZGVyLXRvcDogMnB4IHNvbGlkICNjY2MgOyBtYXJnaW46IDA7IHBhZGRpbmc6IDA7IHdpZHRoOjEwMCV9Ci51aS1qcWdyaWQgIC5kcm9wZG93bm1lbnUgewoJcGFkZGluZzogM3B4IDAgM3B4IDA7CgltYXJnaW4tbGVmdDogNHB4Owp9Ci51aS1qcWdyaWQgLnVpLWpxZ3JpZC1wYWdlciAudWktcGctZGl2LAoudWktanFncmlkIC51aS1qcWdyaWQtdG9wcGFnZXIgLnVpLXBnLWRpdgp7cGFkZGluZzoxcHggMDtmbG9hdDpsZWZ0O3Bvc2l0aW9uOnJlbGF0aXZlOyBsaW5lLWhlaWdodDogMjBweDt9Ci51aS1qcWdyaWQgLnVpLWpxZ3JpZC1wYWdlciAudWktcGctYnV0dG9uLAoudWktanFncmlkIC51aS1qcWdyaWQtdG9wcGFnZXIgLnVpLXBnLWJ1dHRvbgp7IGN1cnNvcjpwb2ludGVyOyB9Ci51aS1qcWdyaWQgLnVpLWpxZ3JpZC1wYWdlciAudWktcGctZGl2ICBzcGFuLnVpLWljb24sCi51aS1qcWdyaWQgLnVpLWpxZ3JpZC10b3BwYWdlciAudWktcGctZGl2ICBzcGFuLnVpLWljb24Ke2Zsb2F0OmxlZnQ7bWFyZ2luOiAycHg7IHdpZHRoOjE4cHg7fQoudWktanFncmlkIHRkIGlucHV0LCAudWktanFncmlkIHRkIHNlbGVjdCwgLnVpLWpxZ3JpZCB0ZCB0ZXh0YXJlYSB7IG1hcmdpbjogMDsgcGFkZGluZy10b3A6NXB4O3BhZGRpbmctYm90dG9tOiA1cHg7fQoudWktanFncmlkIHRkIHRleHRhcmVhIHt3aWR0aDphdXRvO2hlaWdodDphdXRvO30KLnVpLWpxZ3JpZCAudWktanFncmlkLXRvcHBhZ2VyIHtib3JkZXItbGVmdDogMCBub25lICFpbXBvcnRhbnQ7Ym9yZGVyLXJpZ2h0OiAwIG5vbmUgIWltcG9ydGFudDsgYm9yZGVyLXRvcDogMCBub25lICFpbXBvcnRhbnQ7IG1hcmdpbjogMCAhaW1wb3J0YW50OyBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7IHBvc2l0aW9uOiByZWxhdGl2ZTt3aGl0ZS1zcGFjZTogbm93cmFwO292ZXJmbG93OiBoaWRkZW47fQoudWktanFncmlkIC51aS1qcWdyaWQtcGFnZXIgLnVpLXBhZ2VyLXRhYmxlLAoudWktanFncmlkIC51aS1qcWdyaWQtdG9wcGFnZXIgLnVpLXBhZ2VyLXRhYmxlIAp7Cgl3aWR0aDoxMDAlOwoJdGFibGUtbGF5b3V0OmZpeGVkOwoJaGVpZ2h0OjEwMCU7Cn0KLnVpLWpxZ3JpZCAudWktanFncmlkLXBhZ2VyIC51aS1wYWdpbmctaW5mbywKLnVpLWpxZ3JpZCAudWktanFncmlkLXRvcHBhZ2VyIC51aS1wYWdpbmctaW5mbwp7IAoJZm9udC13ZWlnaHQ6IG5vcm1hbDsKCWhlaWdodDphdXRvOyAKCW1hcmdpbi10b3A6M3B4OwoJbWFyZ2luLXJpZ2h0OjRweDsKCWRpc3BsYXk6IGlubGluZTsKfQoudWktanFncmlkIC51aS1qcWdyaWQtcGFnZXIgLnVpLXBhZ2luZy1wYWdlciwKLnVpLWpxZ3JpZCAudWktanFncmlkLXRvcHBhZ2VyIC51aS1wYWdpbmctcGFnZXIKewoJdGFibGUtbGF5b3V0OmF1dG87CgloZWlnaHQ6MTAwJTsKfQoudWktanFncmlkIC51aS1qcWdyaWQtcGFnZXIgLm5hdnRhYmxlLAoudWktanFncmlkIC51aS1qcWdyaWQtdG9wcGFnZXIgLm5hdnRhYmxlCnsKCWZsb2F0OmxlZnQ7Cgl0YWJsZS1sYXlvdXQ6YXV0bzsKCWhlaWdodDoxMDAlOwp9Ci51aS1qcWdyaWQgLnVpLWpxZ3JpZC1wYWdlciAubmF2dGFibGUgdGQsCi51aS1qcWdyaWQgLnVpLWpxZ3JpZC10b3BwYWdlciAubmF2dGFibGUgdGQgCnsgCglvdmVyZmxvdzogaGlkZGVuOwp9CgoKLyoudWktanFncmlkIC51aS1qcWdyaWQtdG9wcGFnZXIgLnVpLXBnLWRpdiB7cGFkZGluZzoxcHggMDtmbG9hdDpsZWZ0O3Bvc2l0aW9uOnJlbGF0aXZlOyBsaW5lLWhlaWdodDogMjBweDsgbWFyZ2luLXJpZ2h0OjNweDt9Ci51aS1qcWdyaWQgLnVpLWpxZ3JpZC10b3BwYWdlciAudWktcGctYnV0dG9uIHsgY3Vyc29yOnBvaW50ZXI7IH0KLnVpLWpxZ3JpZCAudWktanFncmlkLXRvcHBhZ2VyIC51aS1wZy1kaXYgIHNwYW4udWktaWNvbiB7ZmxvYXQ6bGVmdDttYXJnaW46IDJweDsgd2lkdGg6MThweDt9CiovCgovKnN1YmdyaWQqLwoudWktanFncmlkIC51aS1qcWdyaWQtYnRhYmxlIC51aS1zZ2NvbGxhcHNlZCBzcGFuIHtkaXNwbGF5OiBibG9jazt9Ci51aS1qcWdyaWQgLnVpLXN1YmdyaWQge21hcmdpbjowO3BhZGRpbmc6MDsgd2lkdGg6MTAwJTt9Ci51aS1qcWdyaWQgLnVpLXN1YmdyaWQgdGFibGUge3RhYmxlLWxheW91dDogZml4ZWQ7fQoudWktanFncmlkIC51aS1zdWJncmlkIHRyLnVpLXN1YnRibGNlbGwgdGQge2hlaWdodDoxOHB4O2JvcmRlci1yaWdodC13aWR0aDogMXB4OyBib3JkZXItcmlnaHQtY29sb3I6IGluaGVyaXQ7IGJvcmRlci1yaWdodC1zdHlsZTogc29saWQ7Ym9yZGVyLWJvdHRvbS13aWR0aDogMXB4OyBib3JkZXItYm90dG9tLWNvbG9yOiBpbmhlcml0OyBib3JkZXItYm90dG9tLXN0eWxlOiBzb2xpZDt9Ci51aS1qcWdyaWQgLnVpLXN1YmdyaWQgdGQuc3ViZ3JpZC1kYXRhIHtib3JkZXItdG9wOiAgMCBub25lICFpbXBvcnRhbnQ7IGJvcmRlci1sZWZ0OiAwIG5vbmUgIWltcG9ydGFudDt9Ci51aS1qcWdyaWQgLnVpLXN1YmdyaWQgdGQuc3ViZ3JpZC1jZWxsIHtib3JkZXItd2lkdGg6IDAgMXB4IDFweCAwO30KLnVpLWpxZ3JpZCAudWktdGgtc3ViZ3JpZCB7aGVpZ2h0OjIwcHg7fQovKiBsb2FkaW5nICovCi51aS1qcWdyaWQgLmxvYWRpbmcsCi5sb2FkaW5nX3Bpdm90IHsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsgCgl0b3A6IDQ1JTsKCWxlZnQ6IDQ1JTsKCXdpZHRoOiBhdXRvOwoJei1pbmRleDoxMDE7CglwYWRkaW5nOiA2cHg7CgltYXJnaW46IDVweDsKCXRleHQtYWxpZ246IGNlbnRlcjsKCWZvbnQtd2VpZ2h0OiBib2xkOwoJZGlzcGxheTogbm9uZTsKCWJvcmRlci13aWR0aDogMnB4ICFpbXBvcnRhbnQ7CgkvKmZvbnQtc2l6ZToxMXB4OyovCn0KLnVpLWpxZ3JpZCAuanFncmlkLW92ZXJsYXkge2Rpc3BsYXk6bm9uZTt9Ci8qIElFICogaHRtbCAuanFncmlkLW92ZXJsYXkge3dpZHRoOiBleHByZXNzaW9uKHRoaXMucGFyZW50Tm9kZS5vZmZzZXRXaWR0aCsncHgnKTtoZWlnaHQ6IGV4cHJlc3Npb24odGhpcy5wYXJlbnROb2RlLm9mZnNldEhlaWdodCsncHgnKTt9ICovCiogLmpxZ3JpZC1vdmVybGF5IGlmcmFtZSB7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO3otaW5kZXg6LTE7fQovKiBJRSB3aWR0aDogZXhwcmVzc2lvbih0aGlzLnBhcmVudE5vZGUub2Zmc2V0V2lkdGgrJ3B4Jyk7aGVpZ2h0OiBleHByZXNzaW9uKHRoaXMucGFyZW50Tm9kZS5vZmZzZXRIZWlnaHQrJ3B4Jyk7fSovCi8qIGVuZCBsb2FkaW5nIGRpdiAqLwovKiB0b29sYmFyICovCi51aS1qcWdyaWQgLnVpLXVzZXJkYXRhIHtib3JkZXItbGVmdDogMCBub25lOyAgICBib3JkZXItcmlnaHQ6IDAgbm9uZTsJaGVpZ2h0IDogMjdweDtvdmVyZmxvdzogaGlkZGVuOwl9Ci8qTW9kYWwgV2luZG93ICovCi51aS1qcWRpYWxvZyB7IAoJLypmb250LXNpemU6MTFweCAhaW1wb3J0YW50OyAqLwp9Ci51aS1qcWRpYWxvZyB7IAoJZGlzcGxheTogbm9uZTsgCgl3aWR0aDogMzAwcHg7IAoJcG9zaXRpb246IGFic29sdXRlOyAKCXBhZGRpbmc6IC4yZW07IAoJLypmb250LXNpemU6MTFweDsqLwoJb3ZlcmZsb3c6dmlzaWJsZTsKCWJveC1zaXppbmc6Y29udGVudC1ib3g7Cn0KLnVpLWpxZGlhbG9nIC51aS1qcWRpYWxvZy10aXRsZWJhciB7IAoJcGFkZGluZzogLjNlbSAuMmVtOyAKCXBvc2l0aW9uOiByZWxhdGl2ZTsgaGVpZ2h0OjIwcHg7Cglib3gtc2l6aW5nOmNvbnRlbnQtYm94Owp9Ci51aS1qcWRpYWxvZyAudWktanFkaWFsb2ctdGl0bGUgeyBtYXJnaW46IC4zZW0gLjJlbSAuMmVtIC4yZW07fSAKLnVpLWpxZGlhbG9nIC51aS1qcWRpYWxvZy10aXRsZWJhci1jbG9zZSB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgIHRvcDogNTAlOyB3aWR0aDogMTlweDsgbWFyZ2luOiAtMTJweCAwIDAgMDsgcGFkZGluZzogMXB4OyBoZWlnaHQ6IDE4cHg7IGN1cnNvcjpwb2ludGVyO30KCi51aS1qcWRpYWxvZyAudWktanFkaWFsb2ctdGl0bGViYXItY2xvc2Ugc3BhbiB7IGRpc3BsYXk6IGJsb2NrOyBtYXJnaW46IDFweDsgfQoudWktanFkaWFsb2cgLnVpLWpxZGlhbG9nLXRpdGxlYmFyLWNsb3NlOmhvdmVyLCAudWktanFkaWFsb2cgLnVpLWpxZGlhbG9nLXRpdGxlYmFyLWNsb3NlOmZvY3VzIHsgcGFkZGluZzogMDsgfQoudWktanFkaWFsb2ctY29udGVudCwgLnVpLWpxZGlhbG9nIC51aS1qcWRpYWxvZy1jb250ZW50IHsgYm9yZGVyOiAwOyBwYWRkaW5nOiAuM2VtIC4yZW07IGJhY2tncm91bmQ6IG5vbmU7IGhlaWdodDphdXRvO30KLnVpLWpxZGlhbG9nIC51aS1qcWNvbmZpcm0ge3BhZGRpbmc6IC40ZW0gMWVtOyBib3JkZXItd2lkdGg6M3B4O3Bvc2l0aW9uOmFic29sdXRlO2JvdHRvbToxMHB4O3JpZ2h0OjEwcHg7b3ZlcmZsb3c6dmlzaWJsZTtkaXNwbGF5Om5vbmU7aGVpZ2h0OjgwcHg7d2lkdGg6MjIwcHg7dGV4dC1hbGlnbjpjZW50ZXI7fQoudWktanFkaWFsb2c+LnVpLXJlc2l6YWJsZS1zZSB7IAoJYm90dG9tOiAycHg7IAoJcmlnaHQ6IDJweDsKCWJhY2tncm91bmQtcG9zaXRpb246IC02NHB4IC0yMjRweDsKfQoudWktanFncmlkPi51aS1yZXNpemFibGUtc2UgeyBib3R0b206IC0zcHg7IHJpZ2h0OiAtM3B4IH0KLnVpLXJlc2l6YWJsZS1pY29uIHsKCXJlc2l6ZTogYm90aDsKCW92ZXJmbG93OiBhdXRvOwp9Ci5qcWdyaWQtb3ZlcmxheS1tb2RhbCB7CWRpc3BsYXkgOiBub25lOyB9Ci8qIGVuZCBNb2RhbCB3aW5kb3cqLwovKiBGb3JtIGVkaXQgKi8KLnVpLWpxZGlhbG9nLWNvbnRlbnQgLkZvcm1HcmlkIHttYXJnaW46IDA7IG92ZXJmbG93OmF1dG87cG9zaXRpb246cmVsYXRpdmU7fQoudWktanFkaWFsb2ctY29udGVudCAuRWRpdFRhYmxlIHsgd2lkdGg6IDEwMCU7IG1hcmdpbi1ib3R0b206MDt9Ci51aS1qcWRpYWxvZy1jb250ZW50IC5EZWxUYWJsZSB7IHdpZHRoOiAxMDAlOyBtYXJnaW4tYm90dG9tOjA7fQouRWRpdFRhYmxlIHRkIGlucHV0LCAuRWRpdFRhYmxlIHRkIHNlbGVjdCwgLkVkaXRUYWJsZSB0ZCB0ZXh0YXJlYSB7bWFyZ2luOiAwO30KLkVkaXRUYWJsZSB0ZCB0ZXh0YXJlYSB7IHdpZHRoOmF1dG87IGhlaWdodDphdXRvO30KLnVpLWpxZGlhbG9nLWNvbnRlbnQgdGQuRWRpdEJ1dHRvbiB7dGV4dC1hbGlnbjogcmlnaHQ7Ym9yZGVyLXRvcDogMCBub25lO2JvcmRlci1sZWZ0OiAwIG5vbmU7Ym9yZGVyLXJpZ2h0OiAwIG5vbmU7IHBhZGRpbmctYm90dG9tOjVweDsgcGFkZGluZy10b3A6NXB4O30KLnVpLWpxZGlhbG9nLWNvbnRlbnQgdGQubmF2QnV0dG9uIHt0ZXh0LWFsaWduOiBjZW50ZXI7IGJvcmRlci1sZWZ0OiAwIG5vbmU7Ym9yZGVyLXRvcDogMCBub25lO2JvcmRlci1yaWdodDogMCBub25lOyBwYWRkaW5nLWJvdHRvbTo1cHg7IHBhZGRpbmctdG9wOjVweDt9Ci51aS1qcWRpYWxvZy1jb250ZW50IGlucHV0LkZvcm1FbGVtZW50IHsKCXBhZGRpbmc6IC41ZW0gLjNlbTsgCgltYXJnaW4tYm90dG9tOiAzcHg7Cglmb250LXNpemU6IGluaGVyaXQ7Cn0KLnVpLWpxZGlhbG9nLWNvbnRlbnQgc2VsZWN0LkZvcm1FbGVtZW50IHsKCXBhZGRpbmc6LjNlbTsgCgltYXJnaW4tYm90dG9tOiAzcHg7Cglmb250LXNpemU6IGluaGVyaXQ7Cn0KLnVpLWpxZGlhbG9nLWNvbnRlbnQgLmRhdGEtbGluZSB7cGFkZGluZy10b3A6LjFlbTtib3JkZXI6IDAgbm9uZTt9CgoudWktanFkaWFsb2ctY29udGVudCAuQ2FwdGlvblREIHt2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO2JvcmRlcjogMCBub25lOyBwYWRkaW5nOiAycHg7d2hpdGUtc3BhY2U6IG5vd3JhcDt9Ci51aS1qcWRpYWxvZy1jb250ZW50IC5EYXRhVEQgewoJcGFkZGluZzogMnB4OyAKCWJvcmRlcjogMCBub25lOyAKCXZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cn0KLnVpLWpxZGlhbG9nLWNvbnRlbnQgLmZvcm0tdmlldy1kYXRhIHt3aGl0ZS1zcGFjZTpwcmV9Ci5mbS1idXR0b24geyAKCWhlaWdodDogMThweDsgCglkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IAoJbWFyZ2luOjJweCA0cHggMCAwOyAKCXBhZGRpbmc6IC42ZW0gLjVlbSAuMmVtIC41ZW07IAoJdGV4dC1kZWNvcmF0aW9uOm5vbmUgIWltcG9ydGFudDsgCgljdXJzb3I6cG9pbnRlcjsgCglwb3NpdGlvbjogcmVsYXRpdmU7IAoJdGV4dC1hbGlnbjogY2VudGVyOyAKCWJveC1zaXppbmc6Y29udGVudC1ib3g7Cn0KLmZtLWJ1dHRvbi1pY29uLWxlZnQgeyBwYWRkaW5nLWxlZnQ6IDEuOWVtOyB9Ci5mbS1idXR0b24taWNvbi1yaWdodCB7IHBhZGRpbmctcmlnaHQ6IDEuOWVtOyB9Ci5mbS1idXR0b24taWNvbi1sZWZ0IC51aS1pY29uIHsgcmlnaHQ6IGF1dG87IGxlZnQ6IC4yZW07IG1hcmdpbi1sZWZ0OiAwOyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogNTAlOyBtYXJnaW4tdG9wOiAtOHB4OyB9Ci5mbS1idXR0b24taWNvbi1yaWdodCAudWktaWNvbiB7IGxlZnQ6IGF1dG87IHJpZ2h0OiAuMmVtOyBtYXJnaW4tbGVmdDogMDsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDUwJTsgbWFyZ2luLXRvcDogLThweDt9CiNuRGF0YSwgI3BEYXRhIHsgZmxvYXQ6IGxlZnQ7IG1hcmdpbjozcHg7cGFkZGluZzogMDsgd2lkdGg6IDE1cHg7IH0KLlZpZXdUYWJsZSB7Cglib3JkZXItd2lkdGg6IDA7IAoJYm9yZGVyLXN0eWxlOiBub25lOyAKCWJvcmRlci1zcGFjaW5nOiAxcHg7CglwYWRkaW5nOiA0cHg7Cgl0YWJsZS1sYXlvdXQ6IGZpeGVkOwp9Ci5WaWV3VGFibGUgLkNhcHRpb25URCwgLlZpZXdUYWJsZSAuRGF0YVREIHtwYWRkaW5nIDogNHB4O30gCi8qIEVuZCBFb3JtIGVkaXQgKi8KLypjZWxsIGVkaXQqLwoudWktanFncmlkIC5lZGl0LWNlbGwgewoJcGFkZGluZzogNHB4IDBweCA0cHggNHB4Owp9Ci51aS1qcWdyaWQgLnNlbGVjdGVkLXJvdywgZGl2LnVpLWpxZ3JpZCAuc2VsZWN0ZWQtcm93IHRkIHtmb250LXN0eWxlIDogbm9ybWFsO2JvcmRlci1sZWZ0OiAwIG5vbmU7fQovKiBpbmxpbmUgZWRpdCBhY3Rpb25zIGJ1dHRvbiovCi51aS1pbmxpbmUtZGVsLnVpLXN0YXRlLWhvdmVyIHNwYW4sIC51aS1pbmxpbmUtZWRpdC51aS1zdGF0ZS1ob3ZlciBzcGFuLAoudWktaW5saW5lLXNhdmUudWktc3RhdGUtaG92ZXIgc3BhbiwgLnVpLWlubGluZS1jYW5jZWwudWktc3RhdGUtaG92ZXIgc3BhbiB7CiAgICBtYXJnaW46IC0xcHg7Cn0KLnVpLWlubGluZS1kZWwsIC51aS1pbmxpbmUtY2FuY2VsIHsKICAgIG1hcmdpbi1sZWZ0OiA4cHg7Cn0KCi51aS1qcWdyaWQgLmlubGluZS1lZGl0LWNlbGwgewoJcGFkZGluZzogNHB4IDBweCA0cHggNHB4Owp9Ci8qIFRyZWUgR3JpZCAqLwoudWktanFncmlkIC50cmVlLXdyYXAge2Zsb2F0OiBsZWZ0OyBwb3NpdGlvbjogcmVsYXRpdmU7aGVpZ2h0OiAxOHB4O3doaXRlLXNwYWNlOiBub3dyYXA7b3ZlcmZsb3c6IGhpZGRlbjt9Ci51aS1qcWdyaWQgLnRyZWUtbWludXMge3Bvc2l0aW9uOiBhYnNvbHV0ZTsgaGVpZ2h0OiAxOHB4OyB3aWR0aDogMThweDsgb3ZlcmZsb3c6IGhpZGRlbjt9Ci51aS1qcWdyaWQgLnRyZWUtcGx1cyB7cG9zaXRpb246IGFic29sdXRlOwloZWlnaHQ6IDE4cHg7IHdpZHRoOiAxOHB4OwlvdmVyZmxvdzogaGlkZGVuO30KLnVpLWpxZ3JpZCAudHJlZS1sZWFmIHtwb3NpdGlvbjogYWJzb2x1dGU7CWhlaWdodDogMThweDsgd2lkdGg6IDE4cHg7b3ZlcmZsb3c6IGhpZGRlbjt9Ci51aS1qcWdyaWQgLnRyZWVjbGljayB7Y3Vyc29yOiBwb2ludGVyO30KLyogbW9kYSBkaWFsb2cgKi8KKiBpZnJhbWUuanFtIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7ei1pbmRleDotMTt9Ci8qCSB3aWR0aDogZXhwcmVzc2lvbih0aGlzLnBhcmVudE5vZGUub2Zmc2V0V2lkdGgrJ3B4Jyk7aGVpZ2h0OiBleHByZXNzaW9uKHRoaXMucGFyZW50Tm9kZS5vZmZzZXRIZWlnaHQrJ3B4Jyk7fSovCi51aS1qcWdyaWQtZG5kIHRyIHRkIHtib3JkZXItcmlnaHQtd2lkdGg6IDFweDsgYm9yZGVyLXJpZ2h0LWNvbG9yOiBpbmhlcml0OyBib3JkZXItcmlnaHQtc3R5bGU6IHNvbGlkOyBoZWlnaHQ6MjBweH0KLyogUlRMIFN1cHBvcnQgKi8KLnVpLWpxZ3JpZCAudWktanFncmlkLWNhcHRpb24tcnRsIHt0ZXh0LWFsaWduOiByaWdodDt9Ci51aS1qcWdyaWQgLnVpLWpxZ3JpZC1oYm94LXJ0bCB7ZmxvYXQ6IHJpZ2h0O30KLnVpLWpxZ3JpZCAudWktanFncmlkLXJlc2l6ZS1sdHIge2Zsb2F0OiByaWdodDttYXJnaW46IC0ycHggLTJweCAtMnB4IDA7fQoudWktanFncmlkIC51aS1qcWdyaWQtcmVzaXplLXJ0bCB7ZmxvYXQ6IGxlZnQ7bWFyZ2luOiAtMnB4IDAgLTFweCAtM3B4O30KLnVpLWpxZ3JpZCAudWktc29ydC1ydGwge2xlZnQ6MDt9Ci51aS1qcWdyaWQgLnRyZWUtd3JhcC1sdHIge2Zsb2F0OiBsZWZ0O30KLnVpLWpxZ3JpZCAudHJlZS13cmFwLXJ0bCB7ZmxvYXQ6IHJpZ2h0O30KLnVpLWpxZ3JpZCAudWktZWxsaXBzaXMgey1tb3otdGV4dC1vdmVyZmxvdzplbGxpcHNpczt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO30KCi8qIFRvb2xiYXIgU2VhcmNoIE1lbnUgLCBOYXYgbWVudSovCi51aS1zZWFyY2gtbWVudSwgCi51aS1uYXYtbWVudSB7Cglwb3NpdGlvbjogYWJzb2x1dGU7IAoJcGFkZGluZzogMnB4IDVweDsgCgl6LWluZGV4Ojk5OTk5OwoJLXdlYmtpdC1ib3gtc2hhZG93OiA3cHggN3B4IDVweCAwcHggcmdiYSg1MCwgNTAsIDUwLCAwLjc1KTsKCS1tb3otYm94LXNoYWRvdzogICAgN3B4IDdweCA1cHggMHB4IHJnYmEoNTAsIDUwLCA1MCwgMC43NSk7Cglib3gtc2hhZG93OiAgICAgICAgIDdweCA3cHggNXB4IDBweCByZ2JhKDUwLCA1MCwgNTAsIDAuNzUpOwp9Ci51aS1zZWFyY2gtbWVudS51aS1tZW51IC51aS1tZW51LWl0ZW0sCi51aS1uYXYtbWVudS51aS1tZW51IC51aS1tZW51LWl0ZW0KeyAKCWxpc3Qtc3R5bGUtaW1hZ2U6IG5vbmU7IAoJcGFkZGluZy1yaWdodDogMDsgCglwYWRkaW5nLWxlZnQ6IDA7IAp9Ci51aS1zZWFyY2gtbWVudS51aS1tZW51IC51aS1tZW51LWl0ZW0gYSwgCi51aS1uYXYtbWVudS51aS1tZW51IC51aS1tZW51LWl0ZW0gYSAKeyAKCWRpc3BsYXk6IGJsb2NrOyAKfQoudWktc2VhcmNoLW1lbnUudWktbWVudSAudWktbWVudS1pdGVtIGEuZy1tZW51LWl0ZW06aG92ZXIsCi51aS1uYXYtbWVudS51aS1tZW51IC51aS1tZW51LWl0ZW0gYS5nLW1lbnUtaXRlbTpob3ZlciAKeyAKCW1hcmdpbjogLTFweDsgCglmb250LXdlaWdodDogbm9ybWFsOyAKfQoudWktanFncmlkIC51aS1zZWFyY2gtdGFibGUgeyBwYWRkaW5nOiAwOyBib3JkZXI6IDAgbm9uZTsgaGVpZ2h0OjIwcHg7IHdpZHRoOjEwMCU7fQoudWktanFncmlkIC51aS1zZWFyY2gtdGFibGUgLnVpLXNlYXJjaC1vcGVyIHsgd2lkdGg6MjBweDsgfQphLmctbWVudS1pdGVtLCBhLnNvcHRjbGFzcywgYS5jbGVhcnNlYXJjaGNsYXNzIHsgY3Vyc29yOiBwb2ludGVyOyB9IAoudWktanFncmlkIC51aS1qcWdyaWQtdmlldyBpbnB1dCwKLnVpLWpxZ3JpZCAudWktanFncmlkLXZpZXcgc2VsZWN0LAoudWktanFncmlkIC51aS1qcWdyaWQtdmlldyB0ZXh0YXJlYSwKLnVpLWpxZ3JpZCAudWktanFncmlkLXZpZXcgYnV0dG9uIHsKICAgIGZvbnQtc2l6ZTogaW5oZXJpdDsKfQoKLnVpLXNlYXJjaC1tZW51IGEuc29wdGNsYXNzIAp7CglwYWRkaW5nLWxlZnQ6IDAuNGVtOwoJcGFkZGluZy1yaWdodDogMC40ZW0KfQoKLnVpLW1lbnUtaXRlbSBhLmctbWVudS1pdGVtIC5vcGVyc2lnbiAKewoJd2lkdGggOiAyMHB4Owp9CgoKLnVpLWpxZ3JpZCAudWktc2Nyb2xsLXBvcHVwIHt3aWR0aDogOTVweDt9Ci51aS1zZWFyY2gtdGFibGUgc2VsZWN0LAoudWktc2VhcmNoLXRhYmxlIGlucHV0IAp7CglwYWRkaW5nOiA0cHggM3B4Owp9CgoudWktanFncmlkIC51aS1wZy10YWJsZSAudWktcGctYnV0dG9uLnVpLXN0YXRlLWRpc2FibGVkOmhvdmVyID4gLnVpLXNlcGFyYXRvciB7CgltYXJnaW4tbGVmdDogM3B4OwoJbWFyZ2luLXJpZ2h0OiAzcHg7Cn0KCi51aS1qcWdyaWQgLnVpLXBnLXRhYmxlIC51aS1wZy1idXR0b24udWktc3RhdGUtZGlzYWJsZWQ6aG92ZXIgPiAudWktcGctZGl2ID4gLnVpLWljb24gewoJbWFyZ2luLWxlZnQ6IDNweDsKCW1hcmdpbi1yaWdodDogM3B4Owp9Ci8qIENvbHVtbiBtZW51ICovCi51aS1qcWdyaWQgLnVpLWpxZ3JpZC1odGFibGUgLmNvbG1lbnUKewoJcG9zaXRpb246YWJzb2x1dGU7CglyaWdodDoxcHg7CgloZWlnaHQ6MTAwJTsKCWNvbG9yIDogYmxhY2s7Cn0KLnVpLWpxZ3JpZCAudWktanFncmlkLWh0YWJsZSAuY29sbWVudS1ydGwKewoJcmlnaHQ6IGF1dG87CglsZWZ0IDogMXB4OwoJcG9zaXRpb246YWJzb2x1dGU7CgloZWlnaHQ6MTAwJTsKCWNvbG9yIDogYmxhY2s7Cn0KLnVpLWpxZ3JpZCAudWktanFncmlkLWh0YWJsZSAuY29sbWVudXNwYW4KewoJZGlzcGxheTppbmxpbmUtYmxvY2s7Cn0KLnVpLWpxZ3JpZCAudWktanFncmlkLWh0YWJsZSAudWktdGgtZGl2IHsKCWhlaWdodDoxN3B4OwoJbWFyZ2luLXRvcDo1cHg7Cn0KdGguanFncmlkLW11bHRpYm94IC51aS10aC1kaXYgewoJbWFyZ2luLXRvcDoycHggIWltcG9ydGFudDsKCXBhZGRpbmctYm90dG9tOiA0cHg7Cn0KLmNvbHVtbi1tZW51LCAudWktc2VhcmNoLW1lbnUgewoJcGFkZGluZzogMTBweCAxMHB4Owp9Ci5jb2x1bW4tbWVudSAuZGl2aWRlciB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZTVlNWU1OyAKCWhlaWdodDogMXB4OwoJcGFkZGluZzowIDA7CgltYXJnaW46IDVweCAwOyAgCglvdmVyZmxvdzogaGlkZGVuOwp9Ci51aS1tZW51LWl0ZW0gLnVpLWNvbW1vbi10YWJsZSAubWVudV9pY29uIHsKCXdoaXRlLXNwYWNlOiBwcmU7CglwYWRkaW5nLXJpZ2h0OiA0cHg7CglwYWRkaW5nLWxlZnQ6IDRweDsKCXdpZHRoIDogYXV0bzsKfQoudWktbWVudS1pdGVtIC51aS1jb21tb24tdGFibGUgLm1lbnVfaWNvbiAudWktaWNvbiB7CglkaXNwbGF5IDogaW5saW5lLWJsb2NrOwoJcG9zaXRpb246IHJlbGF0aXZlOwp9CnRkLm1lbnVfdGV4dCB7Cgl3aWR0aDogYXV0bzsKCXdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KLnVpLXNlYXJjaC1tZW51IC51aS1tZW51LWl0ZW0gewoJcGFkZGluZyA6IDAgMDsKfQoudWktY29sLW1lbnUgLnVpLW1lbnUtaXRlbSB0ZC5tZW51X3RleHR7CglwYWRkaW5nLXRvcDogMDsKCXBhZGRpbmctYm90dG9tOiAwOwoJcGFkZGluZy1sZWZ0IDogMXB4Owp9Ci51aS1jb2wtbWVudSAudWktbWVudS1pdGVtIHRkLm1lbnVfaWNvbnsKCXBhZGRpbmctdG9wOiAwOwoJcGFkZGluZy1ib3R0b206IDA7Cgl2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwp9Ci51aS1jb2wtbWVudSAudWktbWVudS1pdGVtIHRkLm1lbnVfaWNvbiBpbnB1dHsKCW1hcmdpbjogMnB4IDA7CgkKfQojc2VhcmNoX21lbnUgLnVpLW1lbnUtaXRlbSBkaXYgewoJbWFyZ2luOiAzcHggMDsKCXdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KCiNzZWFyY2hfbWVudSAudWktbWVudS1pdGVtIGRpdiBpbnB1dCwKI3NlYXJjaF9tZW51IC51aS1tZW51LWl0ZW0gZGl2IHNlbGVjdAp7CglwYWRkaW5nOiAzcHggMnB4Owp9CiNzZWFyY2hfbWVudSAgLnNlYXJjaF9idXR0b25zIHsKCWRpc3BsYXk6aW5saW5lLWJsb2NrOwoJd2lkdGg6NTAlOwp9CiNzZWFyY2hfbWVudSAgI2JzX2Nsb3NlIHsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCXBhZGRpbmc6ICAwcHggMHB4OwoJdG9wOiA4cHg7CglyaWdodDogMTlweDsKfQoKI2NvbHVtbl9tZW51LnVpLW1lbnUgLnVpLW1lbnUtaXRlbSB7Cglwb3NpdGlvbiA6c3RhdGljOwp9Ci8qbWVudWJhciovCi51aS1qcWdyaWQgLnVpLWpxZ3JpZC1tZW51YmFyIHsKCW1hcmdpbjogMHB4IDVweDsKCXdpZHRoOjE5cHg7CgloZWlnaHQ6MThweDsKfQoudWktanFncmlkIC51aS1qcWdyaWQtbWVudWJhcjpob3ZlciB7Cglib3JkZXI6IDAgbm9uZTsKfQoudWktanFncmlkIC5tZW51YmFyLXJ0bCB7CglmbG9hdCA6IHJpZ2h0Owp9CgoudWktanFncmlkIC5tZW51YmFyLWx0ciB7CglmbG9hdCA6IGxlZnQ7Cn0KLypwcmludGluZyovCgouanFncmlkcHJpbnQgewoJd2lkdGggOiAxMDAlOwoJZm9udC1zaXplOiAxM3B4Owp9CgouanFncmlkcHJpbnQgdGgsCi5qcWdyaWRwcmludCB0ZCB7CglwYWRkaW5nOiA0cHggNHB4IDRweCA0cHggOwoJdGV4dC1hbGlnbjogY2VudGVyIDsKfQouanFncmlkcHJpbnQgdGggewoJYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICMzMzMzMzMgOwp9Ci5qcWdyaWRwcmludCB0ZCB7Cglib3JkZXItYm90dG9tOiAxcHggZG90dGVkICM5OTk5OTkgOwp9CgouanFncmlkcHJpbnQgdGZvb3QgdGQgewoJYm9yZGVyLWJvdHRvbS13aWR0aDogMHB4IDsKCWJvcmRlci10b3A6IDJweCBzb2xpZCAjMzMzMzMzIDsKCXBhZGRpbmctdG9wOiAyMHB4IDsKfQoKLnVpLWpxZ3JpZCAuanFncmlkLWNhcHRpb24tbWVudSAKeyAKCWxlZnQ6MDsKCXRvcDozMHB4OwoJcG9zaXRpb246YWJzb2x1dGU7CglkaXNwbGF5Om5vbmU7Cglmb250LXNpemU6IGluaGVyaXQ7Cgl3aWR0aCA6IGF1dG87Cn0KLnVpLWpxZ3JpZCAuanFncmlkLWNvbHVtbi1tZW51CnsKCWZvbnQtc2l6ZTppbmhlcml0OwoJd2lkdGg6YXV0bzsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKfQoKLnVpLWpxZ3JpZCAuc2VhcmNoLWNvbC1pbnB1dAp7CglwYWRkaW5nOiAzcHggMnB4Owp9Ci51aS1qcWdyaWQgdGQuanFncmlkLXNlYXJjaGNvbCBpbnB1dCB7Cgl3aWR0aDogMTAwJTsKCW92ZXJmbG93OiBhdXRvOwp9CgoudWktanFncmlkIC5mcm96ZW4tcmRpdiAgewoJei1pbmRleDogMTAwMDA7Cn0KLnVpLWNvbC1tZW51IHsKCW92ZXJmbG93OiBhdXRvOwoJaGVpZ2h0OiAxN2VtOwp9Cg=='>

<!--
	<script type="text/ecmascript" src="/js/jgg/jgg_jquery.js"></script> 
	<script type="text/ecmascript" src="/js/jgg/jgg_jgrid.js"></script> 
	<script type="text/ecmascript" src="/js/jgg/jgg_locale.js"></script> 
	<link rel="stylesheet" type="text/css" media="screen" href="/js/jgg/jgg_jquery.css" /> 
	<link rel="stylesheet" type="text/css" media="screen" href="/js/jgg/jgg_jqgrid.css" /> 
	-->
	<div id=div_jgg_edit>
		<h1>div_jgg_edit</h1>

		<style id=style_jgg_edit type="text/css">
/* set the size of the datepicker search control for Order Date*/
			#ui-datepicker-div { font-size:11px; }
/* set the size of the autocomplete search control*/
			.ui-menu-item { font-size: 11px; }
			.ui-autocomplete { font-size: 11px; position: absolute; cursor: default;z-index:5000 !important;}      
			</style id=style_jgg_edit_end>

		<table id="jqGrid"></table>
		<div id="jqGridPager"></div>

    <script id=script_jgg_edit type="text/javascript"> 
		$(document).ready(function () {
			$("#jqGrid").jqGrid({
				url: 'data.json',
                		editurl: 'clientArray',
				mtype: "GET",
				datatype: "json",
				page: 1,
				colModel: [
					{ label: 'Order ID', name: 'OrderID', key: true, width: 75 },                   
					{
						label: 'Order Date',
						name: 'OrderDate',
						width: 150,
						editable: true,
						edittype:"text",
					editoptions: {
// dataInit is the client-side event that fires upon initializing the toolbar search field for a column
// use it to place a third party control to customize the toolbar
						dataInit: function (element) {
							$(element).datepicker({
								id: 'orderDate_datePicker',
								dateFormat: 'M/d/yy',
// minDate: new Date(2010, 0, 1),
								maxDate: new Date(2020, 0, 1),
								showOn: 'focus'
								});
							}
						}
					},
			{
				label: 'Customer ID',
				name: 'CustomerID',
				width: 150,
				editable: true,
				edittype: "select",
				editoptions: {
				value: "ALFKI:ALFKI;ANATR:ANATR;ANTON:ANTON;AROUT:AROUT;BERGS:BERGS;BLAUS:BLAUS;BLONP:BLONP;BOLID:BOLID;BONAP:BONAP;BOTTM:BOTTM;BSBEV:BSBEV;CACTU:CACTU;CENTC:CENTC;CHOPS:CHOPS;COMMI:COMMI;CONSH:CONSH;DRACD:DRACD;DUMON:DUMON;EASTC:EASTC;ERNSH:ERNSH;FAMIA:FAMIA;FISSA:FISSA;FOLIG:FOLIG;FOLKO:FOLKO;FRANK:FRANK;FRANR:FRANR;FRANS:FRANS;FURIB:FURIB;GALED:GALED;GODOS:GODOS;GOURL:GOURL;GREAL:GREAL;GROSR:GROSR;HANAR:HANAR;HILAA:HILAA;HUNGC:HUNGC;HUNGO:HUNGO;ISLAT:ISLAT;KOENE:KOENE;LACOR:LACOR;LAMAI:LAMAI;LAUGB:LAUGB;LAZYK:LAZYK;LEHMS:LEHMS;LETSS:LETSS;LILAS:LILAS;LINOD:LINOD;LONEP:LONEP;MAGAA:MAGAA;MAISD:MAISD;MEREP:MEREP;MORGK:MORGK;NORTS:NORTS;OCEAN:OCEAN;OLDWO:OLDWO;OTTIK:OTTIK;PARIS:PARIS;PERIC:PERIC;PICCO:PICCO;PRINI:PRINI;QUEDE:QUEDE;QUEEN:QUEEN;QUICK:QUICK;RANCH:RANCH;RATTC:RATTC;REGGC:REGGC;RICAR:RICAR;RICSU:RICSU;ROMEY:ROMEY;SANTG:SANTG;SAVEA:SAVEA;SEVES:SEVES;SIMOB:SIMOB;SPECD:SPECD;SPLIR:SPLIR;SUPRD:SUPRD;THEBI:THEBI;THECR:THECR;TOMSP:TOMSP;TORTU:TORTU;TRADH:TRADH;TRAIH:TRAIH;VAFFE:VAFFE;VICTE:VICTE;VINET:VINET;WANDK:WANDK;WARTH:WARTH;WELLI:WELLI;WHITC:WHITC;WILMK:WILMK;WOLZA:WOLZA"
					}
				},
			{
				label: 'Freigh',
				name: 'Freight',
				width: 150,
				editable: true,
				edittype: "custom",
				editoptions: {
					custom_value: getFreightElementValue,
					custom_element: createFreightEditElement
					}
				},
                    {
						label: 'Ship Name',
                        name: 'ShipName',
                        width: 150,
                        editable: true,
                        edittype: "text",
                        editoptions: {
                            // dataInit is the client-side event that fires upon initializing the toolbar search field for a column
                            // use it to place a third party control to customize the toolbar
                            dataInit: function (element) {
                                window.setTimeout(function () {
                                    $(element).autocomplete({
                                        id: 'AutoComplete',
                                    source: function(request, response){
										this.xhr = $.ajax({
											url: 'http://trirand.com/blog/phpjqgrid/examples/jsonp/autocompletep.php?callback=?&acelem=ShipName',
											data: request,
											dataType: "jsonp",
											success: function( data ) {
												response( data );
											},
											error: function(model, response, options) {
												response([]);
											}
										});
									},
                                    autoFocus: true
                                    });
                                }, 100);
                            }
                        }
                    }
                ],
				loadonce : true,
				viewrecords: true,
                width: 780,
                height: 250,
                rowNum: 10,
                pager: "#jqGridPager"
            });

            $("#jqGrid").navGrid("#jqGridPager",
                { edit: true, add: false, del: false, search: false, refresh: true, view: false, align: "left" },
                { closeAfterEdit: true }
            );

            function createFreightEditElement(value, editOptions) {

                var span = $("<span />");
                var label = $("<span />", { html: "0" });
                var radio = $("<input>", { type: "radio", value: "0", name: "freight", id: "zero", checked: (value != 25 && value != 50 && value != 100) });
                var label1 = $("<span />", { html: "25" });
                var radio1 = $("<input>", { type: "radio", value: "25", name: "freight", id: "fifty", checked: value == 25 });
                var label2 = $("<span />", { html: "50" });
                var radio2 = $("<input>", { type: "radio", value: "50", name: "freight", id: "fifty", checked: value == 50 });
                var label3 = $("<span />", { html: "100" });
                var radio3 = $("<input>", { type: "radio", value: "100", name: "freight", id: "hundred", checked: value == 100 });

                span.append(label).append(radio).append(label1).append(radio1).append(label2).append(radio2).append(label3).append(radio3);

                return span;
            }

            // The javascript executed specified by JQGridColumn.EditTypeCustomGetValue when EditType = EditType.Custom
// One parameter passed - the custom element created in JQGridColumn.EditTypeCustomCreateElement
			function getFreightElementValue(elem, oper, value) {
				if (oper === "set") {
					var radioButton = $(elem).find("input:radio[value='" + value + "']");
					if (radioButton.length > 0) { radioButton.prop("checked", true); }
					}
	
				if (oper === "get") { return $(elem).find("input:radio:checked").val(); }
				}
			});

		</script id=script_jgg_edit_end>
		</div id=div_jgg_edit_end>



//


koh5_pano



Your browser does not support the HTML5 canvas element.


Drag mouse to navigate.

Navigation





17.Aug.2010, Martin Wengenmayer