art gallery at abelard.org - ss by abelard
latest changes & additions at abelard.org link to document abstracts link to list of useful data tables quotations at abelard.org, with source document where relevant      latest news headlines at abelard's news and comment zone link to short briefings documents interesting site links at abelard's news and comment zone about abelard and abelard.org
    France zone at abelard.org - another France economics and money zone at abelard.org - government swindles and how to transfer money on the net   technology zone at abelard.org: how to survive and thrive on the web Energy - beyond fossil fuels    

back to abelard's front page

ss by abelard

click to return to the front lobby of abelard.org's art gallery

ss by abelard

ss by abelard

Description: ".base64_decode("PD9waHANCg0KLyoNCi8qIFRveGljIEJveXMgVGVhbSBQYWtpc3RhbgkvKg0KLyogCQkJCS8qDQovKgkJCQkvKg0KLyogIENvZGVkIEJ5IEZhaGltIE1hZ3NpIA0KLyoNCi8qDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiovDQoNCi8qLS0tLS0tLS0tLS0tLS0tLS0tIExPR0lOIC0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyoNCiovDQoNCj8+DQovDQo8P3BocA0KDQokdXNlcm5hbWU9IjEyMyI7DQokcGFzc3dvcmQ9IjEyMyI7DQokZW1haWw9ImFuYWwwODM0M0BnbWFpbC5jb20iOw0KDQovKi0tLS0tLS0tLS0tLS0tLS0tLSBMb2dpbiBEYXRhIEVuZCAtLS0tLS0tLS0tKi8NCg0KQGVycm9yX3JlcG9ydGluZyg0KTsNCg0KLyotLS0tLS0tLS0tLS0tLS0tLS0gQW50aSBDcmF3bGVyIC0tLS0tLS0tLS0tLSovDQppZighZW1wdHkoJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddKSkNCnsNCiR1c2VyQWdlbnRzID0gYXJyYXkoIkdvb2dsZSIsICJTbHVycCIsICJNU05Cb3QiLCAiaWFfYXJjaGl2ZXIiLCAiWWFuZGV4IiwgIlJhbWJsZXIiKTsNCmlmKHByZWdfbWF0Y2goJy8nIC4gaW1wbG9kZSgnfCcsICR1c2VyQWdlbnRzKSAuICcvaScsICRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSkpDQp7DQpoZWFkZXIoJ0hUVFAvMS4wIDQwNCBOb3QgRm91bmQnKTsNCmV4aXQ7DQp9DQp9DQplY2hvICI8bWV0YSBuYW1lPVwiUk9CT1RTXCIgY29udGVudD1cIk5PSU5ERVgsIE5PRk9MTE9XXCIgLz4iOyAvL0ZvciBFbnN1cmluZy4uLiBGdWNrIGFsbCBSb2JvdHMuLi4NCi8qLS0tLS0tLS0tLS0tLS0tLS0tIEVuZCBvZiBBbnRpIENyYXdsZXIgLS0tLS0qLw0KDQoNCg0KZWNobyAiPGxpbmsgaHJlZj1odHRwOi8vczEucG9zdGltZy5vcmcva2J3aXYwZ3U3L3RveGljYm95cy5qcGcgcmVsPWljb24gdHlwZT1pbWFnZS94LWljb24gLz4iOw0KZWNobyAiPHN0eWxlPg0KaHRtbCB7IGJhY2tncm91bmQ6dXJsKGh0dHA6Ly9zMS5wb3N0aW1nLm9yZy9rYndpdjBndTcvdG94aWNib3lzLmpwZykgOyB9DQojbG9naW5ib3ggeyBmb250LXNpemU6MTFweDsgY29sb3I6Z3JlZW47IHdpZHRoOjEyMDBweDsgaGVpZ2h0OjIwMHB4OyBib3JkZXI6MXB4IHNvbGlkICM0QzgzQUY7IGJhY2tncm91bmQtY29sb3I6IzExMTExMTsgYm9yZGVyLXJhZGl1czo1cHg7IC1tb3otYm9kZXItcmFkaXVzOjVweDsgcG9zaXRpb246Zml4ZWQ7IHRvcDoyNTBweDsgfQ0KaW5wdXQgeyBmb250LXNpemU6MTFweDsgYmFja2dyb3VuZDojMTkxOTE5OyBjb2xvcjpncmVlbjsgbWFyZ2luOjAgNHB4OyBib3JkZXI6MXB4IHNvbGlkICMyMjIyMjI7IH0NCmxvZ2luYm94IHRkIHsgYm9yZGVyLXJhZGl1czo1cHg7IGZvbnQtc2l6ZToxMXB4OyB9DQouaGVhZGVyIHsgc2l6ZToyNXB4OyBjb2xvcjpncmVlbjsgfQ0KaDEgeyBmb250LWZhbWlseTpEaWdpZmFjZVdpZGU7IGNvbG9yOmdyZWVuOyBmb250LXNpemU6MjAwJTsgfQ0KaDE6aG92ZXIgeyB0ZXh0LXNoYWRvdzowIDAgMjBweCAjMDBGRkZGLCAwIDAgMTAwcHggIzAwRkZGRjsgfQ0KLmdvIHsgaGVpZ2h0OiA1MHB4OyB3aWR0aDogNTBweDtmbG9hdDogbGVmdDsgbWFyZ2luLXJpZ2h0OiAxMHB4OyBkaXNwbGF5OiBub25lOyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDkwO30NCi5pbnB1dF9iaWcgeyB3aWR0aDo3NXB4OyBoZWlnaHQ6MzBweDsgYmFja2dyb3VuZDojMTkxOTE5OyBjb2xvcjpncmVlbjsgbWFyZ2luOjAgNHB4OyBib3JkZXI6MXB4IHNvbGlkICMyMjIyMjI7IGZvbnQtc2l6ZToxN3B4OyB9DQpociB7IGJvcmRlcjoxcHggc29saWQgIzIyMjIyMjsgfQ0KI21ldW5saXN0IHsgd2lkdGg6IGF1dG87IGhlaWdodDogYXV0bzsgZm9udC1zaXplOiAxMnB4OyBmb250LXdlaWdodDogYm9sZDsgfQ0KI21ldW5saXN0IHVsIHsgcGFkZGluZy10b3A6IDVweDsgcGFkZGluZy1yaWdodDogNXB4OyBwYWRkaW5nLWJvdHRvbTogN3B4OyBwYWRkaW5nLWxlZnQ6IDJweDsgdGV4dC1hbGlnbjpjZW50ZXI7IGxpc3Qtc3R5bGUtdHlwZTogbm9uZTsgbWFyZ2luOiAwcHg7IH0NCiNtZXVubGlzdCBsaSB7IG1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGRpc3BsYXk6IGlubGluZTsgfQ0KI21ldW5saXN0IGEgeyBmb250LXNpemU6IDE0cHg7IHRleHQtZGVjb3JhdGlvbjpub25lOyBmb250LXdlaWdodDogYm9sZDtjb2xvcjpncmVlbjtjbGVhcjogYm90aDt3aWR0aDogMTAwcHg7bWFyZ2luLXJpZ2h0OiAtNnB4OyBwYWRkaW5nLXRvcDogM3B4OyBwYWRkaW5nLXJpZ2h0OiAxNXB4OyBwYWRkaW5nLWJvdHRvbTogM3B4OyBwYWRkaW5nLWxlZnQ6IDE1cHg7IH0NCiNtZXVubGlzdCBhOmhvdmVyIHsgYmFja2dyb3VuZDogIzMzMzsgY29sb3I6Z3JlZW47IH0NCi5tZW51YmFyIHstbW96LWJvcmRlci1yYWRpdXM6IDEwcHg7IGJvcmRlci1yYWRpdXM6IDEwcHg7IGJvcmRlcjoxcHggc29saWQgZ3JlZW47IHBhZGRpbmc6NHB4IDhweDsgbGluZS1oZWlnaHQ6MTZweDsgYmFja2dyb3VuZDojMTExMTExOyBjb2xvcjojYWFhOyBtYXJnaW46MCAwIDhweCAwOyB9DQoubWVudSB7IGZvbnQtc2l6ZToyNXB4OyBjb2xvcjogfQ0KLnRleHRhcmVhX2VkaXQgeyBiYWNrZ3JvdW5kLWNvbG9yOiMxMTExMTE7IGJvcmRlcjoxcHggZ3Jvb3ZlICMzMzM7IGNvbG9yOmdyZWVuOyB9DQoudGV4dGFyZWFfZWRpdDpob3ZlciB7IHRleHQtZGVjb3JhdGlvbjpub25lOyBib3JkZXI6MXB4IGRhc2hlZCAjMzMzOyB9DQouaW5wdXRfYnV0dCB7Zm9udC1zaXplOjExcHg7IGJhY2tncm91bmQ6IzE5MTkxOTsgY29sb3I6IzRDODNBRjsgbWFyZ2luOjAgNHB4OyBib3JkZXI6MXB4IHNvbGlkICMyMjIyMjI7fQ0KI3Jlc3VsdHsgLW1vei1ib3JkZXItcmFkaXVzOiAxMHB4OyBib3JkZXItcmFkaXVzOiAxMHB4OyBib3JkZXI6MXB4IHNvbGlkIGdyZWVuOyBwYWRkaW5nOjRweCA4cHg7IGxpbmUtaGVpZ2h0OjE2cHg7IGJhY2tncm91bmQ6IzExMTExMTsgY29sb3I6I2FhYTsgbWFyZ2luOjAgMCA4cHggMDsgbWluLWhlaWdodDoxMDBweDt9DQoudGFibGV7IHdpZHRoOjEwMCU7IHBhZGRpbmc6NHB4IDA7IGNvbG9yOiM4ODg7IGZvbnQtc2l6ZToxNXB4OyB9DQoudGFibGUgYXsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGNvbG9yOmdyZWVuOyBmb250LXNpemU6MTVweDsgfQ0KLnRhYmxlIGE6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt9DQoudGFibGUgdGR7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkICMyMjIyMjI7IHBhZGRpbmc6MCA4cHg7IGxpbmUtaGVpZ2h0OjI0cHg7IHZlcnRpY2FsLWFsaWduOnRvcDsgfQ0KLnRhYmxlIHRoeyBwYWRkaW5nOjNweCA4cHg7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgYmFja2dyb3VuZDojMjIyMjIyOyBjb2xvcjojNTU1OyB9DQoudGFibGUgdHI6aG92ZXJ7IGJhY2tncm91bmQ6IzE4MTgxODsgfQ0KLnRibHsgd2lkdGg6MTAwJTsgcGFkZGluZzo0cHggMDsgY29sb3I6Izg4ODsgZm9udC1zaXplOjE1cHg7IHRleHQtYWxpZ246Y2VudGVyOyB9DQoudGJsIGF7IHRleHQtZGVjb3JhdGlvbjpub25lOyBjb2xvcjpncmVlbjsgZm9udC1zaXplOjE1cHg7IHZlcnRpY2FsLWFsaWduOm1pZGRsZTsgfQ0KLnRibCBhOmhvdmVye3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7fQ0KLnRibCB0ZHsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgIzIyMjIyMjsgcGFkZGluZzowIDhweDsgbGluZS1oZWlnaHQ6MjRweDsgdmVydGljYWwtYWxpZ246bWlkZGxlOyB3aWR0aDogMzAwcHg7IH0NCi50YmwgdGh7IHBhZGRpbmc6M3B4IDhweDsgZm9udC13ZWlnaHQ6bm9ybWFsOyBiYWNrZ3JvdW5kOiMyMjIyMjI7IGNvbG9yOiM1NTU7IHZlcnRpY2FsLWFsaWduOm1pZGRsZTsgfQ0KLnRibCB0ZDpob3ZlcnsgYmFja2dyb3VuZDojMTgxODE4OyB9DQojYWxlcnQge3Bvc2l0aW9uOiByZWxhdGl2ZTt9DQojYWxlcnQ6aG92ZXI6YWZ0ZXIge2JhY2tncm91bmQ6IGhzbGEoMCwwJSwwJSwuOCk7Ym9yZGVyLXJhZGl1czogM3B4O2NvbG9yOiAjZjZmNmY2O2NvbnRlbnQ6ICdDbGljayB0byBkaXNtaXNzJztmb250OiBib2xkIDEycHgvMzBweCBzYW5zLXNlcmlmO2hlaWdodDogMzBweDtsZWZ0OiA1MCU7bWFyZ2luLWxlZnQ6IC02MHB4O3Bvc2l0aW9uOiBhYnNvbHV0ZTt0ZXh0LWFsaWduOiBjZW50ZXI7dG9wOiA1MHB4OyB3aWR0aDogMTIwcHg7fQ0KI2FsZXJ0OmhvdmVyOmJlZm9yZSB7Ym9yZGVyLWJvdHRvbTogMTBweCBzb2xpZCBoc2xhKDAsMCUsMCUsLjgpO2JvcmRlci1sZWZ0OiAxMHB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yaWdodDogMTBweCBzb2xpZCB0cmFuc3BhcmVudDtjb250ZW50OiAnJztoZWlnaHQ6IDA7bGVmdDogNTAlO21hcmdpbi1sZWZ0OiAtMTBweDtwb3NpdGlvbjogYWJzb2x1dGU7dG9wOiA0MHB4O3dpZHRoOiAwO30NCiNhbGVydDp0YXJnZXQge2Rpc3BsYXk6IG5vbmU7fQ0KLmFsZXJ0X3JlZCB7YW5pbWF0aW9uOiBhbGVydCAxcyBlYXNlIGZvcndhcmRzO2JhY2tncm91bmQtY29sb3I6ICNjNDQ1M2M7YmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdHJhbnNwYXJlbnQsdHJhbnNwYXJlbnQgMjUlLCBoc2xhKDAsMCUsMCUsLjEpIDI1JSxoc2xhKDAsMCUsMCUsLjEpIDUwJSwgdHJhbnNwYXJlbnQgNTAlLHRyYW5zcGFyZW50IDc1JSwgaHNsYSgwLDAlLDAlLC4xKSA3NSUsaHNsYSgwLDAlLDAlLC4xKSk7YmFja2dyb3VuZC1zaXplOiAyMHB4IDIwcHg7Ym94LXNoYWRvdzogMCA1cHggMCBoc2xhKDAsMCUsMCUsLjEpO2NvbG9yOiAjZjZmNmY2O2Rpc3BsYXk6IGJsb2NrO2ZvbnQ6IGJvbGQgMTZweC80MHB4IHNhbnMtc2VyaWY7aGVpZ2h0OiA0MHB4O3Bvc2l0aW9uOiBhYnNvbHV0ZTt0ZXh0LWFsaWduOiBjZW50ZXI7dGV4dC1kZWNvcmF0aW9uOiBub25lO3RvcDogLTQ1cHg7d2lkdGg6IDEwMCU7fQ0KLmFsZXJ0X2dyZWVuIHthbmltYXRpb246IGFsZXJ0IDFzIGVhc2UgZm9yd2FyZHM7YmFja2dyb3VuZC1jb2xvcjogIzQzQ0Q4MDtiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB0cmFuc3BhcmVudCx0cmFuc3BhcmVudCAyNSUsIGhzbGEoMCwwJSwwJSwuMSkgMjUlLGhzbGEoMCwwJSwwJSwuMSkgNTAlLCB0cmFuc3BhcmVudCA1MCUsdHJhbnNwYXJlbnQgNzUlLCBoc2xhKDAsMCUsMCUsLjEpIDc1JSxoc2xhKDAsMCUsMCUsLjEpKTtiYWNrZ3JvdW5kLXNpemU6IDIwcHggMjBweDtib3gtc2hhZG93OiAwIDVweCAwIGhzbGEoMCwwJSwwJSwuMSk7Y29sb3I6ICNmNmY2ZjY7ZGlzcGxheTogYmxvY2s7Zm9udDogYm9sZCAxNnB4LzQwcHggc2Fucy1zZXJpZjtoZWlnaHQ6IDQwcHg7cG9zaXRpb246IGFic29sdXRlO3RleHQtYWxpZ246IGNlbnRlcjt0ZXh0LWRlY29yYXRpb246IG5vbmU7dG9wOiAtNDVweDt3aWR0aDogMTAwJTt9DQpAa2V5ZnJhbWVzIGFsZXJ0IHswJSB7IG9wYWNpdHk6IDA7IH01MCUgeyBvcGFjaXR5OiAxOyB9MTAwJSB7IHRvcDogMDsgfX0NCjwvc3R5bGU+IjsNCmlmKCRfQ09PS0lFWyJ1c2VyIl0gIT0gJHVzZXJuYW1lICYmICRfQ09PS0lFWyJwYXNzIl0gIT0gbWQ1KCRwYXNzd29yZCkpDQp7DQppZigkX1BPU1RbInVzcm5hbWUiXT09JHVzZXJuYW1lICYmICRfUE9TVFsicGFzc3dyZCJdPT0kcGFzc3dvcmQpDQp7DQpwcmludCc8c2NyaXB0PmRvY3VtZW50LmNvb2tpZT0idXNlcj0nLiRfUE9TVFsidXNybmFtZSJdLic7Ijtkb2N1bWVudC5jb29raWU9InBhc3M9Jy5tZDUoJF9QT1NUWyJwYXNzd3JkIl0pLic7Ijs8L3NjcmlwdD4nOw0KaWYoJGVtYWlsIT0iIikNCnsNCm1haWxfYWxlcnQoKTsNCn0NCn0NCmVsc2UNCnsNCmlmKCRfUE9TVFsndXNybmFtZSddKQ0Kew0KcHJpbnQnPHNjcmlwdD5hbGVydCgiU29ycnkuLi4gV3JvbmcgVXNlck5hbWUvUGFzc1dvcmQiKTs8L3NjcmlwdD4nOw0KfQ0KZWNobyAnPHRpdGxlPlRveGljIEJveXMgVGVhbSBTSEVMTCA8L3RpdGxlPjxjZW50ZXI+DQo8ZGl2IGlkPWxvZ2luYm94PjxwPjxmb250IGZhY2U9IlJFRCIgc2l6ZT0tMT4NCjxmb250IGNvbG9yPUdyZWVuPlRveGljPC9mb250Pjxmb250IGNvbG9yPXJlZD5Cb3lzPC9mb250Pjxmb250IGNvbG9yPUdyZWVuPlRlYW08L2ZvbnQ+DQo8Y2VudGVyPjx0YWJsZSBjZWxscGFkZGluZz1cJzJcJyBjZWxsc3BhY2luZz1cJzBcJyBib3JkZXI9XCcwXCcgaWQ9XCdhcF90YWJsZVwnPg0KPHRyPjx0ZCBiZ2NvbG9yPSIjRkZGRkZGIj48dGFibGUgY2VsbHBhZGRpbmc9XCcwXCcgY2VsbHNwYWNpbmc9XCcwXCcgYm9yZGVyPVwnMFwnIHdpZHRoPVwnMTAwJVwnPjx0cj48dGQgYmdjb2xvcj0iI0ZGRkZGRiIgYWxpZ249Y2VudGVyIHN0eWxlPSJwYWRkaW5nOjI7cGFkZGluZy1ib3R0b206NCI+PGI+PGZvbnQgY29sb3I9IiNGRkZGRkYiIHNpemU9LTEgY29sb3I9IiNGRkZGRkYiIGZhY2U9InZlcmRhbmEsYXJpYWwiPjxiPlRveGljIEJveXMgVGVhbSBTaGVsbCB2LjEuMDwvYj48L2ZvbnQ+PC90aD48L3RyPg0KPHRyPjx0ZCBiZ2NvbG9yPSIjRkZGRkZGIiBzdHlsZT0icGFkZGluZzo1Ij4NCjxmb3JtIG1ldGhvZD0icG9zdCI+DQo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhY3Rpb24iIHZhbHVlPSJsb2dpbiI+DQo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJoaWRlIiB2YWx1ZT0iIj4NCjxjZW50ZXI+PHRhYmxlPg0KPHRyPjx0ZD48Zm9udCBjb2xvcj0iZ3JlZW4iIGZhY2U9InZlcmRhbmEsYXJpYWwiIHNpemU9LTE+TG9naW46PC9mb250PjwvdGQ+PHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBzaXplPSIzMCIgbmFtZT0idXNybmFtZSIgdmFsdWU9InVzZXJuYW1lIiBvbmZvY3VzPSJpZiAodGhpcy52YWx1ZSA9PSBcJ3VzZXJuYW1lXCcpe3RoaXMudmFsdWUgPSBcJ1wnO30iPjwvdGQ+PC90cj4NCjx0cj48dGQ+PGZvbnQgY29sb3I9ImdyZWVuIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsIiBzaXplPS0xPlBhc3N3b3JkOjwvZm9udD48L3RkPjx0ZD48aW5wdXQgdHlwZT0icGFzc3dvcmQiIHNpemU9IjMwIiBuYW1lPSJwYXNzd3JkIiB2YWx1ZT0icGFzc3dvcmQiIG9uZm9jdXM9ImlmICh0aGlzLnZhbHVlID09IFwncGFzc3dvcmRcJykgdGhpcy52YWx1ZSA9IFwnXCc7Ij48L3RkPjwvdHI+DQo8dHI+PHRkPjxmb250IGZhY2U9InZlcmRhbmEsYXJpYWwiIHNpemU9LTE+Jm5ic3A7PC9mb250PjwvdGQ+PHRkPjxmb250IGZhY2U9InZlcmRhbmEsYXJpYWwiIHNpemU9LTE+PGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkVudGVyIj48L2ZvbnQ+PC90ZD48L3RyPjwvdGFibGU+DQo8L2Rpdj48YnIgLz48L2NlbnRlcj4nOw0KZXhpdDsNCn0NCn0NCg0KJGNvbG9yX2c9ImdyZWVuIjsNCiRjb2xvcl9iPSI0QzgzQUYiOw0KJGNvbG9yX2JnPSIjRkZGRkZGIjsNCiRjb2xvcl9ocj0iIzIyMiI7DQokY29sb3Jfd3JpPSJncmVlbiI7DQokY29sb3JfcmVhPSJ5ZWxsb3ciOw0KJGNvbG9yX25vbj0icmVkIjsNCiRwYXRoPSRfR0VUWydwYXRoJ107DQoNCkBzZXNzaW9uX3N0YXJ0KCk7DQpAc2V0X3RpbWVfbGltaXQoMCk7DQpAaW5pX3Jlc3RvcmUoInNhZmVfbW9kZV9pbmNsdWRlX2RpciIpOw0KQGluaV9yZXN0b3JlKCJzYWZlX21vZGVfZXhlY19kaXIiKTsNCkBpbmlfcmVzdG9yZSgiZGlzYWJsZV9mdW5jdGlvbnMiKTsNCkBpbmlfcmVzdG9yZSgiYWxsb3dfdXJsX2ZvcGVuIik7DQpAaW5pX3Jlc3RvcmUoInNhZmVfbW9kZSIpOw0KQGluaV9yZXN0b3JlKCJvcGVuX2Jhc2VkaXIiKTsNCkBpZ25vcmVfdXNlcl9hYm9ydChGQUxTRSk7DQpAaW5pX3NldCgnemxpYi5vdXRwdXRfY29tcHJlc3Npb24nLCdPZmYnKTsNCg0KJHNlcD0iLyI7DQppZihzdHJ0b2xvd2VyKHN1YnN0cihQSFBfT1MsMCwzKSk9PSJ3aW4iKQ0Kew0KJG9zPSJ3aW4iOw0KJHNlcD0iXFwiOw0KJG94PSJXaW5kb3dzIjsNCn0NCmVsc2UNCnsNCiRvcz0ibml4IjsNCiRveD0iTGludXgiOw0KfQ0KDQoNCg0KJHNlbGY9JF9TRVJWRVJbJ1BIUF9TRUxGJ107DQokc3J2cl9zb2Y9JF9TRVJWRVJbJ1NFUlZFUl9TT0ZUV0FSRSddOw0KJHlvdXJfaXA9JF9TRVJWRVJbJ1JFTU9URV9BRERSJ107DQokc3J2cl9pcD0kX1NFUlZFUlsnU0VSVkVSX0FERFInXTsNCiRhZG1pbj0kX1NFUlZFUlsnU0VSVkVSX0FETUlOJ107DQoNCiRzX3BocF9pbmk9InNhZmVfbW9kZT1PRkYNCmRpc2FibGVfZnVuY3Rpb25zPU5PTkUiOw0KDQokaW5pX3BocD0iPD8NCmVjaG8gaW5pX2dldChcInNhZmVfbW9kZVwiKTsNCmVjaG8gaW5pX2dldChcIm9wZW5fYmFzZWRpclwiKTsNCmluY2x1ZGUoXCRfR0VUW1wiZmlsZVwiXSk7DQppbmlfcmVzdG9yZShcInNhZmVfbW9kZVwiKTsNCmluaV9yZXN0b3JlKFwib3Blbl9iYXNlZGlyXCIpOw0KZWNobyBpbmlfZ2V0KFwic2FmZV9tb2RlXCIpOw0KZWNobyBpbmlfZ2V0KFwib3Blbl9iYXNlZGlyXCIpOw0KaW5jbHVkZShcJF9HRVRbXCJzc1wiXSk7DQo/PiI7DQoNCiRzX2h0YWNjZXNzPSI8SWZNb2R1bGUgbW9kX3NlY3VyaXR5LmM+DQpTZWMtLS0tLS1FbmdpbmUgT2ZmDQpTZWMtLS0tLS1TY2FuUE9TVCBPZmYNCjwvSWZNb2R1bGU+IjsNCg0KJHNfaHRhY2Nlc3NfcGw9Ik9wdGlvbnMgRm9sbG93U3ltTGlua3MgTXVsdGlWaWV3cyBJbmRleGVzIEV4ZWNDR0kNCkFkZFR5cGUgYXBwbGljYXRpb24veC1odHRwZC1jZ2kgLnNoDQpBZGRIYW5kbGVyIGNnaS1zY3JpcHQgLnBsDQpBZGRIYW5kbGVyIGNnaS1zY3JpcHQgLnBsIjsNCg0KJHN5bV9odGFjY2Vzcz0iT3B0aW9ucyBhbGwNCkRpcmVjdG9yeUluZGV4IFN1eC5odG1sDQpBZGRUeXBlIHRleHQvcGxhaW4gLnBocA0KQWRkSGFuZGxlciBzZXJ2ZXItcGFyc2VkIC5waHANCkFkZFR5cGUgdGV4dC9wbGFpbiAuaHRtbA0KQWRkSGFuZGxlciB0eHQgLmh0bWwNClJlcXVpcmUgTm9uZQ0KU2F0aXNmeSBBbnkiOw0KDQokc3ltX3BocF9pbmk9InNhZmVfbW9kZT1PRkYNCmRpc2FibGVfZnVuY3Rpb25zPU5PTkUiOw0KDQokZm9yYmlkX2Rpcj0iT3B0aW9ucyAtSW5kZXhlcyI7DQoNCiRjb29raWVfaGlnaGphY2tlcj0iclZWZGM1cEFGSDEzeHY5d2gzRWlwcTIyTTNtaWFzYUpHR21OV3NTMm1VNkhRVnlFRmxuQ0xrazdJZis5ZDhFUENLRnRwdVZCMmQxejd6MTc3Z2YxV3ZjOGRNTjZyWFA2YXYvQUpRbElaSEd5Qm91QkJhRVZjYUFPYU5PaFBuaW5HV05Zak5YSkJNS0lmaU0yaDUzWmFhZGVjK0xBNWg0TjBBWFg1bktyWHJ1djF3QWZ6d0Y1UXpnSmJtVnBiQmh6ODJLaXFWUEQxT1pTQzA1T2dQSEl0aGl4dDJFbDdDVkljZkE5b0hlQjFHcGxYbmZPeGRQd1F1aEJsZTNiRFBpUS9SR2ZrVEtqeitab3BuOGE2RU4xS041K3o2c0VmamE3a29jL2NOVFZxNW1obW9QaHNKcGFBZk1jUmdYRENpSWVZNFRMRFhPaDZoOVYvVXN6WjlQOG1qS3FPSHRFdGdMMU4zUXJUTXVFSyt3UEVZb1dFZUZ4Rk1pSUVYZC95Sld4VHpkRGkxdTVRa2JRaEc1NmtrMER4OXZFMkNhSVkyMytnKytkTm14S3YzdWtRUGZEVXRXdnpZV2hhOVBMQTk5R1JEWWU0eVF5Tno1ZFdUNURFM2xGcWQ4Q0wvQk16STNjUEVKU1JIT2ZISkdRa24ycm1OV0NTSHZETkowWmJOZWplSERnc3pWRGlzMytoTkx6bVc0Y21jY01vMW9iRWhTeGFXRXZjV1VPTHJIMWNqZTlZZHpjRXU3U2RjSGdTalhHczJGZWthM3BVdllrZy9Gc2tmZElIQktScUJ4ZVYwZXFyaDZyb3JIR1NkWVRQeUJMUHF3WFlwU040QnBjeFZNWURBNzEzc0JrOXh3YWtrQ1dzaXhMV0pQV0MrbW9rRkE5Uk5YTnJjVnRWNVk2SzVkdlZ4MFBnWmxGQzVJRVNnaS9BQ2tYdHhQR25Na2lQZ2JVNWtxYW53U0U1RW91S3drSUNaU2NTZ2tNUkE2VVFrSVN5RlJWaXJJbmdNb29SK0VTR0E0TTlSNFVlTWcwd3AyTDJleTlwaXJIR3U2dW92NVRBK0YvWHVHZjdwQmVRcW0rUUJBOHB1L1lQbVVrcGJycjlrT1Q0NUxZTGdXcFh1dUt0UFc3THJIV2ZWeHhqL3VrZi9iNkRLYVV3NGpHd2JyYnlUYnh0SlBDdWl1Ni9pbVc3cHQrRG9VcjNBdjdoa3R3ME56RWhJa1A2MUtmZ05RdUZEbk9pSVZoTG5VTkoyWmJnanY4OWdib3hoRnVBR2NSZHowR0tORXRpZHJkVHBnR1RrT0t3WE9PeTE4PSI7DQokYmluZF9wZXJsPSJyWkpkYjVzd0ZJYXZpOFIvT0hYVEZTU21aSnUyaTBhYnhBanRXQXBFUUx0TlZZVW9PSzFWZ2ltbW1xSXEvMzArZHBLbW1uYTErQXEvNy9GenZqZzZIRDZKYm5qTG1tRkx1eHJlL2pZTjB6amF4NUVZK1Arak1lZTBvVjNSMHdvS0FRVzBSZGNEbjBNUVRSTDNlNUI5ZzVBMUROSjdXdGZ3ZFFsS204NCtmaHJCZFJhZjNXd3dlNmxtUDdNeGpTZEJJZVhsQSszSCt1THhaczd1NUdYQWhjcjJHUVphZSthaUtSWjBoVjdMdS81QU9tNXlmblU5dWxGU3gzc3V0VHZhcTgvYkpVWmJKMzNabnRnWVVDNHFhWk82cmNnWVV3L0VVdlIwZ1pwYXZialhPcHRibUpzK0FnblRINno1OEo3WXB2RnNHZ2ZyRjdJa2N1ekZZVHJ6dldNWVR2SFpTaEZIV0szTW96aEN0V1dsZm5MbEp3N016dklnOGpNSDB0aWI1bW1XK0c3b2dDN2JCdDVCeFNnUS9laDBjSWhRUVh1ODgvYUZrc1lYT1FJMEtFLzh5OVIzSnhQcHRFWDVZSkdhT1BETzN1RnRFYWVnb2JMVmFvdERyNmlxTG1lTnBZYnF5TjhKZWJrYi9kckI0S01Ob0daeUNNMU9SYUg3MDR1ajZDVmFSMnppVFdQT08yc3NXOFZNY2tKRldWTFprbmNSK0JHMm9VRDJHTXFhNHcrZzVQWEVlWXVac2trUU9VQyt2TkVld1hWdXJmZ3krNmZuSjhsZm50Nmh0ZDZsa2xSaW5lYjFYYkpmQ3hLSXd1b1AiOw0KDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFRvcCBNZW51IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQoNCmlmKCRzYWZlbW9kZT09Ik9uIikNCnsNCmVjaG8gIjxkaXYgaWQ9J2FsZXJ0Jz48YSBjbGFzcz1cImFsZXJ0X3JlZFwiIGhyZWY9XCIjYWxlcnRcIj5TYWZlIE1vZGUgOiA8Zm9udCBjb2xvcj1ncmVlbj5PTjwvZm9udD48L2E+PC9kaXY+IjsNCn0NCmVsc2UNCnsNCmVjaG8gIjxkaXYgaWQ9J2FsZXJ0Jz48YSBjbGFzcz1cImFsZXJ0X2dyZWVuXCIgaHJlZj1cIiNhbGVydFwiPlNhZmUgTW9kZSA6IDxmb250IGNvbG9yPXJlZD5PRkY8L2ZvbnQ+PC9hPjwvZGl2PiI7DQp9DQoNCmVjaG8gIjxzY3JpcHQgc3JjPVwiaHR0cDovL2NvZGUuanF1ZXJ5LmNvbS9qcXVlcnktbGF0ZXN0LmpzXCI+PC9zY3JpcHQ+PHNjcmlwdD4kKFwiI2FsZXJ0XCIpLmRlbGF5KDIwMDApLmZhZGVPdXQoMzAwKTs8L3NjcmlwdD4iOw0KDQplY2hvICI8dGl0bGU+VG94aWNCb3lzVGVhbSBTSEVMTCB2LjIuMDwvdGl0bGU+PGRpdiBpZD1yZXN1bHQ+DQo8dGFibGU+DQo8dGJvZHk+DQo8dHI+DQo8dGQgc3R5bGU9J2JvcmRlci1yaWdodDoxcHggc29saWQgIzEwNEU4QjsnIHdpZHRoPVwiMzAwcHg7XCI+DQo8ZGl2IHN0eWxlPSd0ZXh0LWFsaWduOmNlbnRlcjsnPg0KPGEgaHJlZj0nPycgc3R5bGU9J3RleHQtZGVjb3JhdGlvbjpub25lOyc+PGgxPlRveGljIEJveXMgVGVhbTwvaDE+PC9hPjxmb250IGNvbG9yPWJsdWU+VEJHIFNIRUxMPC9mb250Pg0KPC9kaXY+DQo8L3RkPg0KPHRkPg0KPGRpdiBjbGFzcz1cImhlYWRlclwiPk9TPC9mb250PiA8Zm9udCBjb2xvcj1cIiM2NjZcIiA+OjwvZm9udD4NCiIuJG94LiIgPC9mb250PiA8Zm9udCBjb2xvcj1cIiM2NjZcIiA+fDwvZm9udD4gIi5waHBfdW5hbWUoKS4iPGJyIC8+DQpZb3VyIElQIDogPGZvbnQgY29sb3I9cmVkPiIuJHlvdXJfaXAuIjwvZm9udD4gPGZvbnQgY29sb3I9XCIjNjY2XCIgPnw8L2ZvbnQ+IFNlcnZlciBJUCA6IDxmb250IGNvbG9yPXJlZD4iLiRzcnZyX2lwLiI8L2ZvbnQ+IDxmb250IGNvbG9yPVwiIzY2NlwiID4gfCA8L2ZvbnQ+IEFkbWluIDxmb250IGNvbG9yPVwiIzY2NlwiID4gOiA8L2ZvbnQ+IDxmb250IGNvbG9yPUdyZWVuPiB7JGFkbWlufSA8L2ZvbnQ+IDxiciAvPg0KTXlTUUwgPGZvbnQgY29sb3I9XCIjNjY2XCIgPiA6IDwvZm9udD4iOyBlY2hvIG15c3FseCgpOw0KZWNobyAiPGZvbnQgY29sb3I9XCIjNjY2XCIgPiB8IDwvZm9udD4gT3JhY2xlIDxmb250IGNvbG9yPVwiIzY2NlwiID4gOiA8L2ZvbnQ+IjsgZWNobyBvcmFjbGVzeCgpOw0KZWNobyAiPGZvbnQgY29sb3I9XCIjNjY2XCIgPiB8IDwvZm9udD4gTVNTUUwgPGZvbnQgY29sb3I9XCIjNjY2XCIgPiA6IDwvZm9udD4iOyBlY2hvIG1zc3FseCgpOw0KZWNobyAiPGZvbnQgY29sb3I9XCIjNjY2XCIgPiB8IDwvZm9udD4gUG9zdEdyZXlTUUwgPGZvbnQgY29sb3I9XCIjNjY2XCIgPiA6IDwvZm9udD4iO2VjaG8gcG9zdGdyZXl4KCk7DQplY2hvICI8YnIgLz5jVVJMIDxmb250IGNvbG9yPVwiIzY2NlwiID4gOiA8L2ZvbnQ+IjtlY2hvIGN1cmx4KCk7DQplY2hvICI8Zm9udCBjb2xvcj1cIiM2NjZcIiA+IHwgPC9mb250PlRvdGFsIFNwYWNlPGZvbnQgY29sb3I9XCIjNjY2XCIgPiA6IDwvZm9udD4iOyBlY2hvIGRpc2Nfc2l6ZSgpOw0KZWNobyAiPGZvbnQgY29sb3I9XCIjNjY2XCIgPiB8IDwvZm9udD5GcmVlIFNwYWNlPGZvbnQgY29sb3I9XCIjNjY2XCIgPiA6IDwvZm9udD4iOyBlY2hvIGZyZWVzaXplKCk7DQplY2hvICI8YnIgLz5Tb2Z0d2FyZTxmb250IGNvbG9yPVwiIzY2NlwiID4gOiA8L2ZvbnQ+PGZvbnQgY29sb3I9cmVkPnskc3J2cl9zb2Z9PC9mb250Pjxmb250IGNvbG9yPVwiIzY2NlwiID4gfCA8L2ZvbnQ+IFBIUDxmb250IGNvbG9yPVwiIzY2NlwiID4gOiA8L2ZvbnQ+PGEgc3R5bGU9J2NvbG9yOkdyZWVuOyB0ZXh0LWRlY29yYXRpb246bm9uZTsnIHRhcmdldD1fYmxhbmsgaHJlZj0/cGhwaW5mbz4iLnBocHZlcnNpb24oKS4iPC9hPg0KPGJyIC8+RGlzYWJsZWQgRnVuY3Rpb25zPGZvbnQgY29sb3I9XCIjNjY2XCIgPiA6IDwvZm9udD48L2ZvbnQ+PGZvbnQgY29sb3I9cmVkPiI7ZWNobyBkaXNhYmxlZF9mdW5jdG5zKCkuIjwvZm9udD48YnIgLz4iOw0KaWYoJG9zID09ICd3aW4nKXsgZWNobyAiRHJpdmVzIDxmb250IGNvbG9yPVwiIzY2NlwiID4gOiA8L2ZvbnQ+IjtlY2hvIGRyaXZlc3goKTsgfQ0KZWxzZSB7IGVjaG8gInIwMHQgRXhwbG9pdCA8Zm9udCBjb2xvcj1cIiM2NjZcIiA+IDogPC9mb250Pjxmb250IGNvbG9yPXJlZD4iOyBlY2hvIHIwMHRfZXhwbG9pdCgpIC4iPC9mb250PiI7IH0NCmVjaG8gIg0KPC9kaXY+DQo8L3RkPg0KPC90cj4NCjwvdGJvZHk+DQo8L3RhYmxlPjwvZGl2PiI7DQplY2hvICI8ZGl2IGNsYXNzPSdtZW51YmFyJz4gPGRpdiBpZD1cIm1ldW5saXN0XCI+DQo8dWw+DQo8bGk+PGEgaHJlZj1cIj9cIj5IT01FPC9hPjwvbGk+DQo8bGk+PGEgaHJlZj1cIj9zeW1saW5rXCI+U3ltTGluazwvYT48L2xpPg0KPGxpPjxhIGhyZWY9XCI/cnNcIj4oKCggQ29ubmVjdCApKSk8L2E+PC9saT4NCjxsaT48YSBocmVmPVwiP2Nvb2tpZWphY2tcIj5Db29raWUgSGlnaEphY2s8L2E+PC9saT4NCjxsaT48YSBocmVmPVwiP2VuY29kZWZpbGVcIj5QSFAgRW5jb2RlL0RlY29kZTwvYT48L2xpPg0KPGxpPjxhIGhyZWY9XCI/cGF0aD17JHBhdGh9JmFtcDtzYWZlX21vZFwiPlNNIE1vZGU8L2E+PC9saT4NCjxsaT48YSBocmVmPVwiP3BhdGg9eyRwYXRofSZhbXA7Zm9yYmRfZGlyXCI+REwgRm9yYmlkZGVuPC9hPjwvbGk+DQo8L3VsPg0KPHVsPg0KPGxpPjxhIGhyZWY9XCI/bWFzc21haWxlclwiPk1hc3MgTWFpbGVyPC9hPjwvbGk+DQo8bGk+PGEgaHJlZj1cIj9jcGFuZWxfY3JhY2tcIj5DUEFORUwgQ3JhY2s8L2E+PC9saT4NCjxsaT48YSBocmVmPVwiP3NlcnZlcl9leHBsb2l0X2RldGFpbHNcIj5FeHBsb2l0IERldGFpbHM8L2E+PC9saT4NCjxsaT48YSBocmVmPVwiP3JlbW90ZV9zZXJ2ZXJfc2NhblwiPlJlbW90ZSBTZXJ2ZXIgU2NhbjwvYT48L2xpPg0KPGxpPjxhIGhyZWY9XCI/cmVtb3RlZmlsZWRvd25cIj5SZW1vdGUgRmlsZSBEb3dubG9hZGVyPC9hPjwvbGk+DQo8bGk+PGEgaHJlZj1cIj9oZXhlbmNcIj5IZXggRUM8L2E+PC9saT4NCjwvdWw+DQo8dWw+DQo8bGk+PGEgaHJlZj1cIj9zaDMxMV9zY2FubmVyXCI+U2hlbGwgU2NhbjwvYT48L2xpPg0KPGxpPjxhIGhyZWY9XCI/c3NobWFuXCI+U1NIIFNoZWxsPC9hPjwvbGk+DQo8bGk+PGEgaHJlZj1cIj9wYXRoPXskcGF0aH0mYzBkZV9pbmplY3RcIj5Db2RlIEluamVjdGlvbjwvYT48L2xpPg0KPGxpPjxhIGhyZWY9XCI/ZnRwbWFuXCI+RlRQIE1hbmFnZXI8L2E+PC9saT4NCjxsaT48YSBocmVmPVwiP2Z0cF9hbm9uX3NjYW5cIj5GVFAgQW5vbnltb3VzIEFjY2VzcyBTY2FuPC9hPjwvbGk+DQo8bGk+PGEgaHJlZj1cIj9wYXRoPXskcGF0aH0mYW1wO21hc3NfeHBsb2l0XCI+TWFzcyBEZWZhY2VtZW50PC9hPjwvbGk+DQo8bGk+PGEgaHJlZj1cIj9jb25maWdfZ3JhYlwiPkNvbmZpZyBHcmFiYmVyPC9hPjwvbGk+DQo8bGk+PGEgaHJlZj1cIj9raWxsbWVcIj48Zm9udCBjb2xvcj1yZWQ+S2lsbCBNZTwvZm9udD48L2E+PC9saT4NCjwvdWw+DQo8L2Rpdj48L2Rpdj4iOw0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFbmQgb2YgVG9wIE1lbnUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KDQoNCi8qLS0tLS0tLS0tLS0tLS0tIEZVTkNUSU9OUyAtLS0tLS0tLS0tLS0tLS0tKi8NCmZ1bmN0aW9uIGFsZXJ0KCRhbGVydF90eHQpDQp7DQplY2hvICI8c2NyaXB0PmFsZXJ0KCciLiRhbGVydF90eHQuIicpO3dpbmRvdy5sb2NhdGlvbi5ocmVmPSc/Jzs8L3NjcmlwdD4iOw0KfQ0KDQpmdW5jdGlvbiBkaXNhYmxlZF9mdW5jdG5zKCkNCnsNCmlmKCFAaW5pX2dldCgnZGlzYWJsZV9mdW5jdGlvbnMnKSkNCnsNCmVjaG8gIk5vbmUiOw0KfQ0KZWxzZQ0Kew0KZWNobyBAaW5pX2dldCgnZGlzYWJsZV9mdW5jdGlvbnMnKTsNCn0NCn0NCg0KDQpmdW5jdGlvbiBkcml2ZXN4KCkNCnsNCmZvcmVhY2gocmFuZ2UoJ0EnLCdaJykgYXMgJGRyaXZlKQ0Kew0KaWYoaXNfZGlyKCRkcml2ZS4nOlxcJykpDQp7DQplY2hvICI8YSBzdHlsZT0nY29sb3I6Z3JlZW47IHRleHQtZGVjb3JhdGlvbjpub25lOycgaHJlZj0nP3BhdGg9Ii4kZHJpdmUuIjpcXCc+WyIuJGRyaXZlLiJdPC9hPiI7IA0KfQ0KfQ0KfQ0KDQpmdW5jdGlvbiBtYWlsX2FsZXJ0KCkNCnsNCmdsb2JhbCAkZW1haWwsICR5b3VyX2lwOw0KJHNoZWxsX3BhdGg9Imh0dHA6Ly8iLiRfU0VSVkVSWydTRVJWRVJfTkFNRSddLiRfU0VSVkVSWydSRVFVRVNUX1VSSSddOw0KJGNvbnRlbnRfbWFpbD0iSGVsbG8gTWFzdGVyLFxuDQpZb3VyIHNoZWxsIGluICRzaGVsbF9wYXRoIGlzIGFjY2Vzc2VkIGJ5ICIuJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10gLiIuIEhvcGUgWW91IEVuam95IHRoaXMgc2hlbGwgdmVyeSBtdWNoLlxuDQpCeSBUb3hpY0JveXNUZWFtIjsNCm1haWwoJGVtYWlsLCAiU2hlbGwgQWNjZXNzZWQhISEiLCAkY29udGVudF9tYWlsICwiRnJvbTpUb3hpY0JveXNUZWFtQHNoZWxsLmNvbSIpOw0KfQ0KDQpmdW5jdGlvbiBmaWxlc2l6ZXgoJHNpemUpDQp7DQppZiAoJHNpemU+PTEwNzM3NDE4MjQpJHNpemUgPSByb3VuZCgoJHNpemUvMTA3Mzc0MTgyNCkgLDIpLiIgR0IiOw0KZWxzZWlmICgkc2l6ZT49MTA0ODU3Nikkc2l6ZSA9IHJvdW5kKCgkc2l6ZS8xMDQ4NTc2KSwyKS4iIE1CIjsNCmVsc2VpZiAoJHNpemU+PTEwMjQpJHNpemUgPSByb3VuZCgoJHNpemUvMTAyNCksMikuIiBLQiI7DQplbHNlICRzaXplIC49ICIgQiI7DQpyZXR1cm4gJHNpemU7DQp9DQoNCmZ1bmN0aW9uIGRpc2Nfc2l6ZSgpDQp7DQplY2hvIGZpbGVzaXpleChkaXNrX3RvdGFsX3NwYWNlKCIvIikpOw0KfQ0KDQpmdW5jdGlvbiBmcmVlc2l6ZSgpDQp7DQplY2hvIGZpbGVzaXpleChkaXNrX2ZyZWVfc3BhY2UoIi8iKSk7DQp9DQoNCmZ1bmN0aW9uIGZpbGVfcGVybSgkZmlseil7DQppZigkbT1maWxlcGVybXMoJGZpbHopKXsNCiRwPScnOw0KJHAgLj0gKCRtICYgMDA0MDApID8gJ3InIDogJy0nOw0KJHAgLj0gKCRtICYgMDAyMDApID8gJ3cnIDogJy0nOw0KJHAgLj0gKCRtICYgMDAxMDApID8gJ3gnIDogJy0nOw0KJHAgLj0gKCRtICYgMDAwNDApID8gJ3InIDogJy0nOw0KJHAgLj0gKCRtICYgMDAwMjApID8gJ3cnIDogJy0nOw0KJHAgLj0gKCRtICYgMDAwMTApID8gJ3gnIDogJy0nOw0KJHAgLj0gKCRtICYgMDAwMDQpID8gJ3InIDogJy0nOw0KJHAgLj0gKCRtICYgMDAwMDIpID8gJ3cnIDogJy0nOw0KJHAgLj0gKCRtICYgMDAwMDEpID8gJ3gnIDogJy0nOw0KcmV0dXJuICRwOw0KfQ0KZWxzZSByZXR1cm4gIj8/Pz8/IjsNCn0NCg0KDQpmdW5jdGlvbiBteXNxbHgoKQ0Kew0KaWYoZnVuY3Rpb25fZXhpc3RzKCdteXNxbF9jb25uZWN0JykpDQp7DQplY2hvICI8Zm9udCBjb2xvcj0nR3JlZW4nPkVuYWJsZWQ8L2ZvbnQ+IjsNCn0NCmVsc2UNCnsNCmVjaG8gIjxmb250IGNvbG9yPSdncmVlbic+RGlzYWJsZWQ8L2ZvbnQ+IjsNCn0gDQp9DQoNCmZ1bmN0aW9uIG9yYWNsZXN4KCkNCnsNCmlmKGZ1bmN0aW9uX2V4aXN0cygnb2NpX2Nvbm5lY3QnKSkNCnsNCmVjaG8gIjxmb250IGNvbG9yPSdHcmVlbic+RW5hYmxlZDwvZm9udD4iOw0KfQ0KZWxzZQ0Kew0KZWNobyAiPGZvbnQgY29sb3I9J2dyZWVuJz5EaXNhYmxlZDwvZm9udD4iOw0KfQ0KfQ0KDQpmdW5jdGlvbiBtc3NxbHgoKQ0Kew0KaWYoZnVuY3Rpb25fZXhpc3RzKCdtc3NxbF9jb25uZWN0JykpDQp7DQplY2hvICI8Zm9udCBjb2xvcj0nR3JlZW4nPkVuYWJsZWQ8L2ZvbnQ+IjsNCn0NCmVsc2UNCnsNCmVjaG8gIjxmb250IGNvbG9yPSdncmVlbic+RGlzYWJsZWQ8L2ZvbnQ+IjsNCn0gDQp9DQoNCmZ1bmN0aW9uIHBvc3RncmV5eCgpDQp7DQppZihmdW5jdGlvbl9leGlzdHMoJ3BnX2Nvbm5lY3QnKSkNCnsNCmVjaG8gIjxmb250IGNvbG9yPSdyZWQnPkVuYWJsZWQ8L2ZvbnQ+IjsNCn0NCmVsc2UNCnsNCmVjaG8gIjxmb250IGNvbG9yPSdncmVlbic+RGlzYWJsZWQ8L2ZvbnQ+IjsNCn0gDQp9DQoNCmZ1bmN0aW9uIHN0cmlwKCRmaWx4KQ0Kew0KaWYoIWdldF9tYWdpY19xdW90ZXNfZ3BjKCkpIHJldHVybiB0cmltKHVybGRlY29kZSgkZmlseCkpOw0KcmV0dXJuIHRyaW0odXJsZGVjb2RlKHN0cmlwc2xhc2hlcygkZmlseCkpKTsNCn0NCg0KZnVuY3Rpb24gY3VybHgoKQ0Kew0KaWYoZnVuY3Rpb25fZXhpc3RzKCdjdXJsX3ZlcnNpb24nKSkNCnsNCmVjaG8gIjxmb250IGNvbG9yPSdyZWQnPkVuYWJsZWQ8L2ZvbnQ+IjsNCn0NCmVsc2UNCnsNCmVjaG8gIjxmb250IGNvbG9yPSdncmVlbic+RGlzYWJsZWQ8L2ZvbnQ+IjsNCn0gDQp9DQoNCmZ1bmN0aW9uIGZpbGVzaXplX3goJGZpbGV4KQ0Kew0KJGZfc2l6ZT1maWxlc2l6ZXgoZmlsZXNpemUoJGZpbGV4KSk7DQpyZXR1cm4gJGZfc2l6ZTsNCn0NCg0KZnVuY3Rpb24gcmVuYW1lX3VpKCkNCnsNCiRyZl9wYXRoPSRfR0VUWydyZW5hbWUnXTsNCmVjaG8gIjxkaXYgaWQ9cmVzdWx0PjxjZW50ZXI+PGgyPlJlbmFtZTwvaDI+PGhyIC8+PHA+PGJyIC8+PGJyIC8+PGZvcm0gbWV0aG9kPSdHRVQnPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSdvbGRfbmFtZScgc2l6ZT0nNDAnIHZhbHVlPSIuJHJmX3BhdGguIj5OZXcgTmFtZSA6IDxpbnB1dCBuYW1lPSduZXdfbmFtZScgc2l6ZT0nNDAnIHZhbHVlPSIuYmFzZW5hbWUoJHJmX3BhdGgpLiI+PGlucHV0IHR5cGU9J3N1Ym1pdCcgdmFsdWU9JyA+Pj4gJyAvPjwvZm9ybT48L3A+PGJyIC8+PGJyIC8+PGhyIC8+PGJyIC8+PGJyIC8+PC9jZW50ZXI+PC9kaXY+IjsNCn0NCg0KZnVuY3Rpb24gZmlsZW1hbmFnZXJfYmcoKQ0Kew0KZ2xvYmFsICRzZXAsICRzZWxmOw0KJHBhdGg9IWVtcHR5KCRfR0VUWydwYXRoJ10pPyRfR0VUWydwYXRoJ106Z2V0Y3dkKCk7DQokZGlycz1hcnJheSgpOw0KJGZpbHM9YXJyYXkoKTsNCmlmKGlzX2RpcigkcGF0aCkpDQp7DQpjaGRpcigkcGF0aCk7DQppZigkaGFuZGxlPW9wZW5kaXIoJHBhdGgpKQ0Kew0Kd2hpbGUoKCRpdGVtPXJlYWRkaXIoJGhhbmRsZSkpIT09RkFMU0UpDQp7DQppZigkaXRlbT09Ii4iKXtjb250aW51ZTt9DQppZigkaXRlbT09Ii4uIil7Y29udGludWU7fQ0KaWYoaXNfZGlyKCRpdGVtKSkNCnsNCmFycmF5X3B1c2goJGRpcnMsICRwYXRoLiRzZXAuJGl0ZW0pOw0KfQ0KZWxzZQ0Kew0KYXJyYXlfcHVzaCgkZmlscywgJHBhdGguJHNlcC4kaXRlbSk7DQp9DQp9DQp9DQplbHNlDQp7DQphbGVydCgiQWNjZXNzIERlbmllZCBmb3IgdGhpcyBvcGVyYXRpb24iKTsNCn0NCn0NCmVsc2UNCnsNCmFsZXJ0KCJEaXJlY3RvcnkgTm90IEZvdW5kISEhIik7DQp9DQplY2hvICI8ZGl2IGlkPXJlc3VsdD48dGFibGUgY2xhc3M9dGFibGU+DQo8dHI+DQo8dGggd2lkdGg9JzUwMHB4Jz5OYW1lPC90aD4NCjx0aCB3aWR0aD0nMTAwcHgnPlNpemU8L3RoPg0KPHRoIHdpZHRoPScxMDBweCc+UGVybWlzc2lvbnM8L3RoPg0KPHRoIHdpZHRoPSc1MDBweCc+QWN0aW9uczwvdGg+DQo8L3RyPiI7DQpmb3JlYWNoKCRkaXJzIGFzICRkaXIpDQp7DQplY2hvICI8dHI+PHRkPjxhIGhyZWY9J3skc2VsZn0/cGF0aD17JGRpcn0nPiIuYmFzZW5hbWUoJGRpcikuIjwvYT48L3RkPg0KPHRkPiIuZmlsZXNpemVfeCgkZGlyKS4iPC90ZD4NCjx0ZD48YSBocmVmPSd7JHNlbGZ9P3BhdGg9eyRwYXRofSZhbXA7cGVybT17JGRpcn0nPiIuZmlsZV9wZXJtKCRkaXIpLiI8L2E+PC90ZD4NCjx0ZD48YSBocmVmPSd7JHNlbGZ9P3BhdGg9eyRwYXRofSZhbXA7ZGVsX2Rpcj17JGRpcn0nPkRlbGV0ZTwvYT4gfCA8YSBocmVmPSd7JHNlbGZ9P3BhdGg9eyRwYXRofSZhbXA7cmVuYW1lPXskZGlyfSc+UmVuYW1lPC9hPjwvdGQ+PC90cj4iOw0KfQ0KZm9yZWFjaCgkZmlscyBhcyAkZmlsKQ0Kew0KZWNobyAiPHRyPjx0ZD48YSBocmVmPSd7JHNlbGZ9P3BhdGg9eyRwYXRofSZhbXA7cmVhZD17JGZpbH0nPiIuYmFzZW5hbWUoJGZpbCkuIjwvYT48L3RkPg0KPHRkPiIuZmlsZXNpemVfeCgkZmlsKS4iPC90ZD4NCjx0ZD48YSBocmVmPSd7JHNlbGZ9P3BhdGg9eyRwYXRofSZhbXA7cGVybT17JGZpbH0nPiIuZmlsZV9wZXJtKCRmaWwpLiI8L2E+PC90ZD4NCjx0ZD48YSBocmVmPSd7JHNlbGZ9P3BhdGg9eyRwYXRofSZhbXA7ZGVsX2ZpbD17JGZpbH0nPkRlbGV0ZTwvYT4gfCA8YSBocmVmPSd7JHNlbGZ9P3BhdGg9eyRwYXRofSZhbXA7cmVuYW1lPXskZmlsfSc+UmVuYW1lPC9hPiB8IDxhIGhyZWY9J3skc2VsZn0/cGF0aD17JHBhdGh9JmFtcDtlZGl0PXskZmlsfSc+RWRpdDwvYT4gfCA8YSBocmVmPSd7JHNlbGZ9P3BhdGg9eyRwYXRofSZhbXA7Y29weT17JGZpbH0nPkNvcHk8L2E+IDwvdGQ+IjsNCn0NCmVjaG8gIjwvdHI+PC90YWJsZT48L2Rpdj4iOw0KfQ0KDQpmdW5jdGlvbiByZW5hbWVfYmcoKQ0Kew0KaWYoaXNzZXQoJF9HRVRbJ29sZF9uYW1lJ10pICYmIGlzc2V0KCRfR0VUWyduZXdfbmFtZSddKSkNCnsNCiRvX3JfcGF0aD1iYXNlbmFtZSgkX0dFVFsnb2xkX25hbWUnXSk7DQokcl9wYXRoPXN0cl9yZXBsYWNlKCRvX3JfcGF0aCwgIiIsICRfR0VUWydvbGRfbmFtZSddKTsNCiRyX25ld19uYW1lPSRyX3BhdGguJF9HRVRbJ25ld19uYW1lJ107DQplY2hvICRyX25ld19uYW1lOw0KaWYocmVuYW1lKCRfR0VUWydvbGRfbmFtZSddLCAkcl9uZXdfbmFtZSk9PUZBTFNFKQ0Kew0KYWxlcnQoIkFjY2VzcyBEZW5pZWQgZm9yIHRoaXMgYWN0aW9uISEhIik7DQp9DQplbHNlDQp7DQphbGVydCgiUmVuYW1lZCBGaWxlIFN1Y2NlZXNzZnVsbHkiKTsNCn0NCn0NCn0NCg0KZnVuY3Rpb24gZWRpdF9maWxlKCkNCnsNCiRwYXRoPSRfR0VUWydwYXRoJ107DQpjaGRpcigkcGF0aCk7DQokZWR0X2ZpbGU9JF9HRVRbJ2VkaXQnXTsNCiRlX2NvbnRlbnQgPSB3b3Jkd3JhcChodG1sc3BlY2lhbGNoYXJzKGZpbGVfZ2V0X2NvbnRlbnRzKCRlZHRfZmlsZSkpKTsNCmlmKCRlX2NvbnRlbnQpDQp7DQokb19jb250ZW50PSRlX2NvbnRlbnQ7DQp9DQplbHNlIGlmKGZ1bmN0aW9uX2V4aXN0cygnZmdldHMnKSAmJiBmdW5jdGlvbl9leGlzdHMoJ2ZvcGVuJykgJiYgZnVuY3Rpb25fZXhpc3RzKCdmZW9mJykpDQp7DQokZmQgPSBmb3BlbigkZWR0X2ZpbGUsICJyYiIpOw0KaWYoISRmZCkNCnsNCmFsZXJ0KCJQZXJtaXNzaW9uIERlbmllZCBUcnkgdG8gQWNjZXNzIEJ5IENvZGluZyIpOw0KfQ0KZWxzZQ0Kew0Kd2hpbGUoIWZlb2YoJGZkKSkNCnsNCiRvX2NvbnRlbnQ9d29yZHdyYXAoaHRtbHNwZWNpYWxjaGFycyhmZ2V0cygkZmQpKSk7DQp9DQp9DQpmY2xvc2UoJGZkKTsNCn0NCmVjaG8gIjxkaXYgaWQ9J3Jlc3VsdCc+PGNlbnRlcj48aDI+RWRpdCBGaWxlPC9oMj48aHIgLz48L2NlbnRlcj48YnIgLz48Zm9udCBjb2xvcj1yZWQ+VmlldyBGaWxlPC9mb250PiA6IDxmb250IGNvbG9yPWdyZWVuPjxhIHN0eWxlPSd0ZXh0LWRlY29yYXRpb246bm9uZTsgY29sb3I6Z3JlZW47JyBocmVmPSc/cmVhZD0iLiRfR0VUWydlZGl0J10uIic+Ii4gYmFzZW5hbWUoJF9HRVRbJ2VkaXQnXSkgLiI8L2E+PGJyIC8+PGJyIC8+PGhyIC8+PGJyIC8+PC9mb250Pjxmb3JtIG1ldGhvZD0nUE9TVCc+PGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nZV9maWxlJyB2YWx1ZT0iLiRfR0VUWydlZGl0J10uIj4NCjxjZW50ZXI+PHRleHRhcmVhIHNwZWxsY2hlY2s9J2ZhbHNlJyBjbGFzcz0ndGV4dGFyZWFfZWRpdCcgbmFtZT0nZV9jb250ZW50X24nIGNvbHM9JzgwJyByb3dzPScyNSc+Ii4kb19jb250ZW50LiI8L3RleHRhcmVhPjwvY2VudGVyPjxociAvPg0KPGlucHV0IGNsYXNzPSdpbnB1dF9iaWcnIG5hbWU9J3NhdmUnIHR5cGU9J3N1Ym1pdCcgdmFsdWU9JyBTYXZlICcgLz48YnIgLz48YnIgLz48aHIgLz48YnIgLz48YnIgLz48L2Rpdj4iOw0KfQ0KZnVuY3Rpb24gZWRpdF9maWxlX2JnKCkNCnsNCmlmKGZpbGVfZXhpc3RzKCRfUE9TVFsnZV9maWxlJ10pKQ0Kew0KJGhhbmRsZSA9IGZvcGVuKCRfUE9TVFsnZV9maWxlJ10sIncrIik7DQppZiAoIWhhbmRsZSkNCnsNCmFsZXJ0KCJQZXJtaXNzaW9uIERlbmllZCBUcnkgdG8gQWNjZXNzIEJ5IENvZGluZyIpOw0KfQ0KZWxzZQ0Kew0KZndyaXRlKCRoYW5kbGUsJF9QT1NUWydlX2NvbnRlbnRfbiddKTsNCmFsZXJ0KCJZb3VyIGNoYW5nZXMgd2VyZSBTdWNjZXNzZnVsbHkgU2F2ZWQhIik7DQp9DQpmY2xvc2UoJGhhbmRsZSk7DQp9DQplbHNlDQp7DQphbGVydCgiRmlsZSBOb3QgRm91bmQhISEiKTsNCn0NCn0NCmZ1bmN0aW9uIGRlbGV0ZV9maWxlKCkNCnsNCiRkZWxfZmlsZT0kX0dFVFsnZGVsX2ZpbCddOw0KaWYodW5saW5rKCRkZWxfZmlsZSkgIT0gRkFMU0UpDQp7DQphbGVydCgiRGVsZXRlZCBTdWNjZXNzZnVsbHkiKTsNCmV4aXQ7DQp9DQplbHNlDQp7DQphbGVydCgiQWNjZXNzIERlbmllZCBmb3IgdGhpcyBPcGVyYXRpb24iKTsNCmV4aXQ7DQp9DQp9DQpmdW5jdGlvbiBkZWxkaXJzKCRkX2RpcikNCnsNCiRkX2ZpbGVzPSBnbG9iKCRkX2Rpci4nKicsIEdMT0JfTUFSSyk7DQpmb3JlYWNoKCRkX2ZpbGVzIGFzICRkX2ZpbGUpDQp7DQppZihpc19kaXIoJGRfZmlsZSkpDQp7DQpkZWxkaXJzKCRkX2ZpbGUpOw0KfQ0KZWxzZQ0Kew0KdW5saW5rKCRkX2ZpbGUpOw0KfQ0KfQ0KaWYoaXNfZGlyKCRkX2RpcikpDQp7DQppZihybWRpcigkZF9kaXIpKQ0Kew0KYWxlcnQoIkRlbGV0ZWQgRGlyZWN0b3J5IFN1Y2Nlc3NmdWxseSIpOw0KfQ0KZWxzZQ0Kew0KYWxlcnQoIkFjY2VzcyBEZW5pZWQgZm9yIHRoaXMgT3BlcmF0aW9uIik7DQp9DQp9DQp9DQoNCmZ1bmN0aW9uIGNvZGVfdmlld2VyKCkNCnsNCiRwYXRoPSRfR0VUWydwYXRoJ107DQokcl9maWxlPSRfR0VUWydyZWFkJ107DQokcl9jb250ZW50ID0gd29yZHdyYXAoaHRtbHNwZWNpYWxjaGFycyhmaWxlX2dldF9jb250ZW50cygkcl9maWxlKSkpOw0KaWYoJHJfY29udGVudCkNCnsNCiRycl9jb250ZW50PSRyX2NvbnRlbnQ7DQp9DQplbHNlIGlmKGZ1bmN0aW9uX2V4aXN0cygnZmdldHMnKSAmJiBmdW5jdGlvbl9leGlzdHMoJ2ZvcGVuJykgJiYgZnVuY3Rpb25fZXhpc3RzKCdmZW9mJykpDQp7DQokZmQgPSBmb3Blbigkcl9maWxlLCAicmIiKTsNCmlmICghJGZkKQ0Kew0KYWxlcnQoIlBlcm1pc3Npb24gRGVuaWVkIik7DQp9DQplbHNlDQp7DQp3aGlsZSghZmVvZigkZmQpKQ0Kew0KJHJyX2NvbnRlbnQ9d29yZHdyYXAoaHRtbHNwZWNpYWxjaGFycyhmZ2V0cygkZmQpKSk7DQp9DQp9DQpmY2xvc2UoJGZkKTsNCn0NCmVjaG8gIjxkaXYgaWQ9cmVzdWx0PjxjZW50ZXI+PGgyPlZpZXcgRmlsZTwvaDI+PC9jZW50ZXI+PGhyIC8+PGJyIC8+PGZvbnQgY29sb3I9cmVkPkVkaXQgRmlsZTwvZm9udD48Zm9udCBjb2xvcj1ncmVlbj4gOiA8L2ZvbnQ+PGZvbnQgY29sb3I9Izk5OT48YSBzdHlsZT0ndGV4dC1kZWNvcmF0aW9uOm5vbmU7IGNvbG9yOmdyZWVuOycgaHJlZj0nP3BhdGg9eyRwYXRofSZhbXA7ZWRpdD0iLiRfR0VUWydyZWFkJ10uIic+Ii4gYmFzZW5hbWUoJF9HRVRbJ3JlYWQnXSkgLiI8L2E+PC9mb250PjxiciAvPjxiciAvPjxociAvPjxwcmU+PGNvZGU+Ii4kcnJfY29udGVudC4iPC9jb2RlPjwvcHJlPjxiciAvPjxiciAvPjxociAvPjxiciAvPjxiciAvPjwvZGl2PiI7DQp9DQpmdW5jdGlvbiBjb3B5X2ZpbGVfdWkoKQ0Kew0KZWNobyAiPGRpdiBpZD1yZXN1bHQ+PGNlbnRlcj48aDI+Q29weSBGaWxlPC9oMj48aHIgLz48YnIgLz48YnIgLz48dGFibGUgY2xhc3M9dGFibGU+PGZvcm0gbWV0aG9kPSdHRVQnPjx0cj48dGQgc3R5bGU9J3RleHQtYWxpZ246Y2VudGVyOyc+Q29weSA6IDxpbnB1dCBzaXplPTQwIG5hbWU9J2NfZmlsZScgdmFsdWU9Ii4kX0dFVFsnY29weSddLiIgPiBUbyA6IDxpbnB1dCBzaXplPTQwIG5hbWU9J2NfdGFyZ2V0JyB2YWx1ZT0iLiRfR0VUWydwYXRoJ10uJHNlcC4iPiBOYW1lIDogPGlucHV0IG5hbWU9J2NuX25hbWUnPjxpbnB1dCB0eXBlPSdzdWJtaXQnIHZhbHVlPScgPj4gJyAvPjwvZm9ybT48L3RhYmxlPjxiciAvPjxiciAvPjxociAvPjxiciAvPjxiciAvPjxiciAvPjwvY2VudGVyPjwvZGl2PiI7DQp9DQpmdW5jdGlvbiBjb3B5X2ZpbGVfYmcoKQ0Kew0KZ2xvYmFsICRzZXA7DQppZihmdW5jdGlvbl9leGlzdHMoY29weSkpDQp7DQppZihjb3B5KCRfR0VUWydjX2ZpbGUnXSwgJF9HRVRbJ2NfdGFyZ2V0J10uJHNlcC4kX0dFVFsnY25fbmFtZSddKSkNCnsNCmFsZXJ0KCJTdWNjZWRlZCIpOw0KfQ0KZWxzZQ0Kew0KYWxlcnQoIkFjY2VzcyBEZW5pZWQiKTsNCn0NCn0NCn0NCmZ1bmN0aW9uIGNoX3Blcm1fYmcoKQ0Kew0KaWYoaXNzZXQoJF9HRVRbJ3BfZmlsZXgnXSkgJiYgaXNzZXQoJF9HRVRbJ25ld19wZXJtJ10pKQ0Kew0KaWYoY2htb2QoJF9HRVRbJ3BfZmlsZXgnXSwgJF9HRVRbJ25ld19wZXJtJ10pICE9RkFMU0UpDQp7DQphbGVydCgiU3VjY2VkZWQuIFBlcm1pc3Npb24gQ2hhbmdlZCEhISIpOw0KfQ0KZWxzZQ0Kew0KYWxlcnQoIkFjY2VzcyBEZW5pZWQgZm9yIFRoaXMgT3BlcmF0aW9uIik7DQp9DQp9DQp9DQpmdW5jdGlvbiBjaF9wZXJtX3VpKCkNCnsNCiRwX2ZpbGU9JF9HRVRbJ3Blcm0nXTsNCmVjaG8gIjxkaXYgaWQgPXJlc3VsdD48Y2VudGVyPjxoMj5OZXcgUGVybWlzc2lvbjwvaDI+PGhyIC8+PHA+PGZvcm0gbWV0aG9kPSdHRVQnPjxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J3BhdGgnIHZhbHVlPSIuZ2V0Y3dkKCkuIiA+PGlucHV0IG5hbWU9J3BfZmlsZXgnIHR5cGU9aGlkZGVuIHZhbHVlPXskcF9maWxlfSA+TmV3IFBlcm1pc3Npb24gOiA8aW5wdXQgbmFtZT0nbmV3X3Blcm0nIGlzemU9JzQwJyB2YWx1ZT0wIi5zdWJzdHIoc3ByaW50ZignJW8nLCBmaWxlcGVybXMoJHBfZmlsZSkpLCAtMykuIj48aW5wdXQgdHlwZT0nc3VibWl0JyB2YWx1ZT0nID4+ICcgLz48L2Zvcm0+PC9wPjxwPkZ1bGwgQWNjZXNzIDogPGZvbnQgY29sb3I9cmVkPjc1NTwvZm9udD48YnIgLz5Ob3RpY2UgOiA8Zm9udCBjb2xvcj1yZWQ+RG9uJ3QgdXNlIFVuaXggQWNjZXNzIGxpa2UgNzc3LCA2NjYsIGV0Yy4gVXNlIDc1NSwgNjU1LCBldGM8L3A+PGJyIC8+PGJyIC8+PGhyIC8+PGJyIC8+PGJyIC8+PC9jZW50ZXI+PC9kaXY+IjsNCmNoX3Blcm1fYmcoKTsNCn0NCmZ1bmN0aW9uIG1rX2ZpbGVfdWkoKQ0Kew0KY2hkaXIoJF9HRVRbJ3BhdGgnXSk7DQplY2hvICI8ZGl2IGlkPXJlc3VsdD48YnIgLz48YnIgLz48Zm9udCBjb2xvcj1yZWQ+PGZvcm0gbWV0aG9kPSdHRVQnPg0KPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0ncGF0aCcgdmFsdWU9Ii5nZXRjd2QoKS4iPg0KTmV3IEZpbGUgTmFtZSA6IDxpbnB1dCBzaXplPSc0MCcgbmFtZT0nbmV3X2ZfbmFtZScgdmFsdWU9Ii4kX0dFVFsnbmV3X2ZpbGUnXS4iPjwvZm9udD48YnIgLz48YnIgLz48aHIgLz48YnIgLz48Y2VudGVyPg0KPHRleHRhcmVhIHNwZWxsY2hlY2s9J2ZhbHNlJyBjb2xzPSc4MCcgcm93cz0nMjUnIGNsYXNzPXRleHRhcmVhX2VkaXQgbmFtZT0nbl9maWxlX2NvbnRlbnQnPjwvdGV4dGFyZWE+PC9jZW50ZXI+PGhyIC8+DQo8aW5wdXQgY2xhc3M9J2lucHV0X2JpZycgdHlwZT0nc3VibWl0JyB2YWx1ZT0nIFNhdmUgJyAvPjwvZm9ybT48L2NlbnRlcj48L2Rpdj4iOw0KfQ0KZnVuY3Rpb24gbWtfZmlsZV9iZygpDQp7DQpjaGRpcigkX0dFVFsncGF0aCddKTsNCiRjX3BhdGg9JF9HRVRbJ3BhdGgnXTsNCiRjX2ZpbGU9JF9HRVRbJ25ld19mX25hbWUnXTsNCiRjX2ZpbGVfY29udGVudHM9JF9HRVRbJ25fZmlsZV9jb250ZW50J107DQokaGFuZGxlPWZvcGVuKCRjX2ZpbGUsICJ3Iik7DQppZighJGhhbmRsZSkNCnsNCmFsZXJ0KCJQZXJtaXNzaW9uIERlbmllZCIpOw0KfQ0KZWxzZQ0Kew0KZndyaXRlKCRoYW5kbGUsJGNfZmlsZV9jb250ZW50cyk7DQphbGVydCgiWW91ciBjaGFuZ2VzIHdlcmUgU3VjY2Vzc2Z1bGx5IFNhdmVkISIpOw0KfQ0KZmNsb3NlKCRoYW5kbGUpOw0KfQ0KZnVuY3Rpb24gY3JlYXRlX2RpcigpDQp7DQpjaGRpcigkX0dFVFsncGF0aCddKTsNCiRuZXdfZGlyPSRfR0VUWyduZXdfZGlyJ107DQppZihpc193cml0YWJsZSgkX0dFVFsncGF0aCddKSkNCnsNCm1rZGlyKCRuZXdfZGlyKTsNCmFsZXJ0KCJEaXJlY29yeSBDcmVhdGVkIFN1Y2Nlc3NmdWxseSIpOw0KZXhpdDsNCn0NCmVsc2UNCnsNCmFsZXJ0KCJBY2Nlc3MgRGVuaWVkIGZvciB0aGlzIE9wZXJhdGlvbiIpOw0KZXhpdDsNCn0NCn0NCmZ1bmN0aW9uIGNtZCgkY21kKQ0Kew0KY2hkaXIoJF9HRVRbJ3BhdGgnXSk7DQokcmVzPSIiOw0KaWYoJF9HRVRbJ2NtZGV4ZSddKQ0Kew0KJGNtZD0kX0dFVFsnY21kZXhlJ107DQp9DQppZihmdW5jdGlvbl9leGlzdHMoJ3NoZWxsX2V4ZWMnKSkNCnsNCiRyZXM9c2hlbGxfZXhlYygkY21kKTsNCn0NCmVsc2UgaWYoZnVuY3Rpb25fZXhpc3RzKCdleGVjJykpDQp7DQpleGVjKCRjbWQsJHJlcyk7DQokcmVzPWpvaW4oIlxuIiwkcmVzKTsNCn0NCmVsc2UgaWYoZnVuY3Rpb25fZXhpc3RzKCdzeXN0ZW0nKSkNCnsNCm9iX3N0YXJ0KCk7DQpzeXN0ZW0oJGNtZCk7DQokcmVzID0gb2JfZ2V0X2NvbnRlbnRzKCk7DQpvYl9lbmRfY2xlYW4oKTsgDQp9DQplbHNlaWYoZnVuY3Rpb25fZXhpc3RzKCdwYXNzdGhydScpKQ0Kew0Kb2Jfc3RhcnQoKTsNCnBhc3N0aHJ1KCRjbWQpOw0KJHJlcz1vYl9nZXRfY29udGVudHMoKTsNCm9iX2VuZF9jbGVhbigpOw0KfQ0KZWxzZSBpZihmdW5jdGlvbl9leGlzdHMoJ3Byb2Nfb3BlbicpKQ0Kew0KJGRlc2NyaXB0b3JzcGVjID0gYXJyYXkoMCA9PiBhcnJheSgicGlwZSIsICJyIiksIDEgPT4gYXJyYXkoInBpcGUiLCAidyIpLCAyID0+IGFycmF5KCJwaXBlIiwgInciKSk7DQokaGFuZGxlID0gcHJvY19vcGVuKCRjbWQgLCRkZXNjcmlwdG9yc3BlYyAsICRwaXBlcyk7DQppZihpc19yZXNvdXJjZSgkaGFuZGxlKSkNCnsNCmlmKGZ1bmN0aW9uX2V4aXN0cygnZnJlYWQnKSAmJiBmdW5jdGlvbl9leGlzdHMoJ2Zlb2YnKSkNCnsNCndoaWxlKCFmZW9mKCRwaXBlc1sxXSkpDQp7DQokcmVzIC49IGZyZWFkKCRwaXBlc1sxXSwgNTEyKTsNCn0NCn0NCmVsc2UgaWYoZnVuY3Rpb25fZXhpc3RzKCdmZ2V0cycpICYmIGZ1bmN0aW9uX2V4aXN0cygnZmVvZicpKQ0Kew0Kd2hpbGUoIWZlb2YoJHBpcGVzWzFdKSkNCnsNCiRyZXMgLj0gZmdldHMoJHBpcGVzWzFdLDUxMik7DQp9DQp9DQp9DQpwY2xvc2UoJGhhbmRsZSk7DQp9DQoNCmVsc2UgaWYoZnVuY3Rpb25fZXhpc3RzKCdwb3BlbicpKQ0Kew0KJGhhbmRsZSA9IHBvcGVuKCRjbWQgLCAiciIpOw0KaWYoaXNfcmVzb3VyY2UoJGhhbmRsZSkpDQp7DQppZihmdW5jdGlvbl9leGlzdHMoJ2ZyZWFkJykgJiYgZnVuY3Rpb25fZXhpc3RzKCdmZW9mJykpDQp7DQp3aGlsZSghZmVvZigkaGFuZGxlKSkNCnsNCiRyZXMgLj0gZnJlYWQoJGhhbmRsZSwgNTEyKTsNCn0NCn0NCmVsc2UgaWYoZnVuY3Rpb25fZXhpc3RzKCdmZ2V0cycpICYmIGZ1bmN0aW9uX2V4aXN0cygnZmVvZicpKQ0Kew0Kd2hpbGUoIWZlb2YoJGhhbmRsZSkpDQp7DQokcmVzIC49IGZnZXRzKCRoYW5kbGUsNTEyKTsNCn0NCn0NCn0NCnBjbG9zZSgkaGFuZGxlKTsNCn0NCg0KJHJlcz13b3Jkd3JhcChodG1sc3BlY2lhbGNoYXJzKCRyZXMpKTsNCmlmKCRfR0VUWydjbWRleGUnXSkNCnsNCmVjaG8gIjxkaXYgaWQ9cmVzdWx0PjxjZW50ZXI+PGZvbnQgY29sb3I9Z3JlZW4+PGgyPnIwMHRAVEJHOn4jPC9oMj48L2NlbnRlcj48aHIgLz48cHJlPiIuJHJlcy4iPC9mb250PjwvcHJlPjwvZGl2PiI7DQp9DQpyZXR1cm4gJHJlczsNCn0NCmZ1bmN0aW9uIHVwbG9hZF9maWxlKCkNCnsNCmNoZGlyKCRfUE9TVFsncGF0aCddKTsNCmlmKG1vdmVfdXBsb2FkZWRfZmlsZSgkX0ZJTEVTWyd1cGxvYWRfZiddWyd0bXBfbmFtZSddLCRfRklMRVNbJ3VwbG9hZF9mJ11bJ25hbWUnXSkpDQp7DQphbGVydCgiVXBsb2FkZWQgRmlsZSBTdWNjZXNzZnVsbHkiKTsNCn0NCmVsc2UNCnsNCmFsZXJ0KCJBY2Nlc3MgRGVuaWVkISEhIik7DQp9DQp9DQoNCmZ1bmN0aW9uIHJldmVyc2VfY29ubl91aSgpDQp7DQpnbG9iYWwgJHlvdXJfaXA7DQplY2hvICI8ZGl2IGlkPSdyZXN1bHQnPg0KPGNlbnRlcj48aDI+UmV2ZXJzZSBTaGVsbDwvaDI+PGhyIC8+DQo8YnIgLz48YnIgLz48Zm9ybSBtZXRob2Q9J0dFVCc+PHRhYmxlIGNsYXNzPXRibD4NCjx0cj4NCjx0ZD48c2VsZWN0IG5hbWU9J3Jldl9vcHRpb24nIHN0eWxlPSdjb2xvcjpncmVlbjsgYmFja2dyb3VuZC1jb2xvcjojRkZGRkZGOyBib3JkZXI6MXB4IHNvbGlkICM2NjY7Jz4NCjxvcHRpb24+UEhQIFJldmVyc2UgU2hlbGw8L29wdGlvbj4NCjxvcHRpb24+UEVSTCBCaW5kIFNoZWxsPC9vcHRpb24+DQo8L3NlbGVjdD48L3RkPjwvdHI+PHRyPg0KPHRkPllvdXIgSVAgOiA8aW5wdXQgbmFtZT0nbXlfaXAnIHZhbHVlPSIuJHlvdXJfaXAuIj4NClBPUlQgOiA8aW5wdXQgbmFtZT0nbXlfcG9ydCcgdmFsdWU9JzU2MCc+DQo8aW5wdXQgdHlwZT0nc3VibWl0JyB2YWx1ZT0nID4+ICcgLz48L3RkPjwvdHI+PC9mb3JtPg0KPHRyPjwvdHI+DQo8dHI+PHRkPjxmb250IGNvbG9yPUdyZWVuPlBIUCBSZXZlcnNlIFNoZWxsPC9mb250PiA6IDxmb250IGNvbG9yPWdyZWVuPiBuYyAtbCAtcCA8aT5wb3J0PC9pPjwvZm9udD48L3RkPjwvdHI+PHRyPjx0ZD48Zm9udCBjb2xvcj1HcmVlbj5QRVJMIEJpbmQgU2hlbGw8L2ZvbnQ+IDogPGZvbnQgY29sb3I9R3JlZW4+IG5jIDxpPnNlcnZlcl9pcCBwb3J0PC9pPjwvZm9udD48L3RkPjwvdHI+PC90YWJsZT4gPC9kaXY+IjsNCn0NCmZ1bmN0aW9uIHJldmVyc2VfY29ubl9iZygpDQp7DQpnbG9iYWwgJG9zOw0KJG9wdGlvbj0kX1JFUVVFU1RbJ3Jldl9vcHRpb24nXTsNCiRpcD0kX0dFVFsnbXlfaXAnXTsNCiRwb3J0PSRfR0VUWydteV9wb3J0J107DQppZigkb3B0aW9uPT0iUEhQIFJldmVyc2UgU2hlbGwiKQ0Kew0KZWNobyAiPGRpdiBpZD1yZXN1bHQ+PGgyPlJFU1VMVDwvaDI+PGhyIC8+PGJyIC8+IjsNCmZ1bmN0aW9uIHByaW50aXQgKCRzdHJpbmcpDQp7DQppZiAoISRkYWVtb24pDQp7DQpwcmludCAiJHN0cmluZ1xuIjsNCn0NCn0NCiRjaHVua19zaXplID0gMTQwMDsNCiR3cml0ZV9hID0gbnVsbDsNCiRlcnJvcl9hID0gbnVsbDsNCiRzaGVsbCA9ICd1bmFtZSAtYTsgdzsgaWQ7IC9iaW4vc2ggLWknOw0KJGRhZW1vbiA9IDA7DQokZGVidWcgPSAwOw0KaWYgKGZ1bmN0aW9uX2V4aXN0cygncGNudGxfZm9yaycpKQ0Kew0KJHBpZCA9IHBjbnRsX2ZvcmsoKTsNCmlmICgkcGlkID09IC0xKQ0Kew0KcHJpbnRpdCgiRVJST1I6IENhbid0IGZvcmsiKTsNCmV4aXQoMSk7DQp9DQppZiAoJHBpZCkNCnsNCmV4aXQoMCk7DQp9DQppZiAocG9zaXhfc2V0c2lkKCkgPT0gLTEpDQp7DQpwcmludGl0KCJFcnJvcjogQ2FuJ3Qgc2V0c2lkKCkiKTsNCmV4aXQoMSk7DQp9DQokZGFlbW9uID0gMTsNCn0NCmVsc2UNCnsNCnByaW50aXQoIldBUk5JTkc6IEZhaWxlZCB0byBkYWVtb25pc2UuIFRoaXMgaXMgcXVpdGUgY29tbW9uIGFuZCBub3QgZmF0YWwuIik7DQp9DQpjaGRpcigiLyIpOw0KdW1hc2soMCk7DQokc29jayA9IGZzb2Nrb3BlbigkaXAsICRwb3J0LCAkZXJybm8sICRlcnJzdHIsIDMwKTsNCmlmICghJHNvY2spDQp7DQpwcmludGl0KCIkZXJyc3RyICgkZXJybm8pIik7DQpleGl0KDEpOw0KfQ0KJGRlc2NyaXB0b3JzcGVjID0gYXJyYXkoMCA9PiBhcnJheSgicGlwZSIsICJyIiksIDEgPT4gYXJyYXkoInBpcGUiLCAidyIpLCAyID0+IGFycmF5KCJwaXBlIiwgInciKSk7DQokcHJvY2VzcyA9IHByb2Nfb3Blbigkc2hlbGwsICRkZXNjcmlwdG9yc3BlYywgJHBpcGVzKTsNCmlmICghaXNfcmVzb3VyY2UoJHByb2Nlc3MpKQ0Kew0KcHJpbnRpdCgiRVJST1I6IENhbid0IHNwYXduIHNoZWxsIik7DQpleGl0KDEpOw0KfQ0Kc3RyZWFtX3NldF9ibG9ja2luZygkcGlwZXNbMF0sIDApOw0Kc3RyZWFtX3NldF9ibG9ja2luZygkcGlwZXNbMV0sIDApOw0Kc3RyZWFtX3NldF9ibG9ja2luZygkcGlwZXNbMl0sIDApOw0Kc3RyZWFtX3NldF9ibG9ja2luZygkc29jaywgMCk7DQpwcmludGl0KCI8Zm9udCBjb2xvcj1ncmVlbj5TdWNjZXNzZnVsbHkgb3BlbmVkIHJldmVyc2Ugc2hlbGwgdG8gJGlwOiRwb3J0IDwvZm9udD4iKTsNCndoaWxlICgxKQ0Kew0KaWYgKGZlb2YoJHNvY2spKQ0Kew0KcHJpbnRpdCgiRVJST1I6IFNoZWxsIGNvbm5lY3Rpb24gdGVybWluYXRlZCIpOw0KYnJlYWs7DQp9DQppZiAoZmVvZigkcGlwZXNbMV0pKQ0Kew0KcHJpbnRpdCgiRVJST1I6IFNoZWxsIHByb2Nlc3MgdGVybWluYXRlZCIpOw0KYnJlYWs7DQp9DQokcmVhZF9hID0gYXJyYXkoJHNvY2ssICRwaXBlc1sxXSwgJHBpcGVzWzJdKTsNCiRudW1fY2hhbmdlZF9zb2NrZXRzID0gc3RyZWFtX3NlbGVjdCgkcmVhZF9hLCAkd3JpdGVfYSwgJGVycm9yX2EsIG51bGwpOw0KaWYgKGluX2FycmF5KCRzb2NrLCAkcmVhZF9hKSkNCnsNCmlmICgkZGVidWcpIHByaW50aXQoIlNPQ0sgUkVBRCIpOw0KJGlucHV0ID0gZnJlYWQoJHNvY2ssICRjaHVua19zaXplKTsNCmlmICgkZGVidWcpIHByaW50aXQoIlNPQ0s6ICRpbnB1dCIpOw0KZndyaXRlKCRwaXBlc1swXSwgJGlucHV0KTsNCn0NCmlmIChpbl9hcnJheSgkcGlwZXNbMV0sICRyZWFkX2EpKQ0Kew0KaWYgKCRkZWJ1ZykgcHJpbnRpdCgiU1RET1VUIFJFQUQiKTsNCiRpbnB1dCA9IGZyZWFkKCRwaXBlc1sxXSwgJGNodW5rX3NpemUpOw0KaWYgKCRkZWJ1ZykgcHJpbnRpdCgiU1RET1VUOiAkaW5wdXQiKTsNCmZ3cml0ZSgkc29jaywgJGlucHV0KTsNCn0NCmlmIChpbl9hcnJheSgkcGlwZXNbMl0sICRyZWFkX2EpKQ0Kew0KaWYgKCRkZWJ1ZykgcHJpbnRpdCgiU1RERVJSIFJFQUQiKTsNCiRpbnB1dCA9IGZyZWFkKCRwaXBlc1syXSwgJGNodW5rX3NpemUpOw0KaWYgKCRkZWJ1ZykgcHJpbnRpdCgiU1RERVJSOiAkaW5wdXQiKTsNCmZ3cml0ZSgkc29jaywgJGlucHV0KTsNCn0NCn0NCmZjbG9zZSgkc29jayk7DQpmY2xvc2UoJHBpcGVzWzBdKTsNCmZjbG9zZSgkcGlwZXNbMV0pOw0KZmNsb3NlKCRwaXBlc1syXSk7DQpwcm9jX2Nsb3NlKCRwcm9jZXNzKTsNCmVjaG8gIjxiciAvPjxiciAvPjxociAvPjxiciAvPjxiciAvPjwvZGl2PiI7DQp9DQplbHNlIGlmKCRvcHRpb249PSJQRVJMIEJpbmQgU2hlbGwiKQ0Kew0KZ2xvYmFsICRiaW5kX3BlcmwsICRvczsNCiRwYmZsPSRiaW5kX3Blcmw7DQokaGFuZGxyPWZvcGVuKCJUb3hpYy5wbCIsICJ3YiIpOw0KaWYoJGhhbmRscikNCnsNCmZ3cml0ZSgkaGFuZGxyLCBnemluZmxhdGUoYmFzZTY0X2RlY29kZSgkYmluZF9wZXJsKSkpOw0KfQ0KZWxzZQ0Kew0KYWxlcnQoIkFjY2VzcyBEZW5pZWQgZm9yIGNyZWF0ZSBuZXcgZmlsZSIpOw0KfQ0KZmNsb3NlKCRoYW5kbHIpOw0KaWYoZmlsZV9leGlzdHMoIlRveGljLnBsIikpDQp7DQppZigkb3M9PSJuaXgiKQ0Kew0KY21kKCJjaG1vZCAreCBUb3hpYy5wbDtwZXJsIFRveGljLnBsICRwb3J0Iik7DQp9DQplbHNlDQp7DQpjbWQoInBlcmwgVG94aWMucGwgJHBvcnQiKTsNCn0NCn0NCn0NCn0NCg0KZnVuY3Rpb24gY29va2llX2phY2soKQ0Kew0KZ2xvYmFsICRjb29raWVfaGlnaGphY2tlcjsNCmVjaG8gIjxkaXYgaWQ9cmVzdWx0PjxjZW50ZXI+PGgyPk5PVElDRTwvaDI+PGhyLz4iOw0KaWYoZnVuY3Rpb25fZXhpc3RzKCdmb3BlbicpICYmIGZ1bmN0aW9uX2V4aXN0cygnZndyaXRlJykpDQp7DQokY29vaz1nemluZmxhdGUoYmFzZTY0X2RlY29kZSgkY29va2llX2hpZ2hqYWNrZXIpKTsNCiRoYW5fbGU9Zm9wZW4oInRveGljX2Nvb2tpZS5waHAiLCAidysiKTsNCmlmKCRoYW5fbGUpDQp7DQpmd3JpdGUoJGhhbl9sZSwgJGNvb2spOw0KZWNobyAiWWVzLi4uIENvb2tpZSBoaWdoamFja2VyIGlzIGdlbmVyYXRlZC48YnIgLz4gTmFtZSA6IDxhIHN0eWxlPSdjb2xvcjpncmVlbjsnIHRhcmdldD1fYmxhbmsgaHJlZj10b3hpY19jb29raWUucGhwPnRveGljX2Nvb2tpZS5waHA8L2E+PC9mb250Pi48YnIgLz4gUmVuYW1lIGl0IGFzIDQwNC5waHAgb3Igd2hhdCB5b3UgbGlrZSBhbmQgaGlnaGphY2sgY29va2llIG9mIHlvdXIgdGFyZ2V0LjxiciAvPkl0IGlzIHVzZWZ1bGwgaW4gWFNTPGJyIC8+SXQgd2lsbCBtYWtlIGEgZmlsZSA8Zm9udCBjb2xvcj1ncmVlbj5jb25maWd1cmF0aW9uLnR4dDwvZm9udD4gaW4gdGhpcyBkaXJlY29yeSBhbmQgc2F2ZSB0aGUgY29va2llIHZhbHVlIGluIGl0LiA6cCBjaGVlcnMuLi48YnIgLz48YnIgLz48aHIgLz48YnIgLz48YnIgLz48L2NlbnRlcj48L2Rpdj4iOw0KfQ0KZWxzZQ0Kew0KZWNobyAiPGZvbnQgY29sb3I9cmVkPlNvcnJ5Li4uIEdlbmVyYXRlIENPT0tJRSBISUdISkFDS0VSIGZhaWxlZDxiciAvPjxiciAvPjxociAvPjxiciAvPjxiciAvPjwvY2VudGVyPjwvZGl2PiI7DQp9DQp9DQp9DQoNCg0KDQpmdW5jdGlvbiBzYWZlX21vZGVfZnVjaygpDQp7DQpnbG9iYWwgJHNfcGhwX2luaSwkc19odGFjY2Vzcywkc19odGFjY2Vzc19wbCwkaW5pX3BocDsNCiRwYXRoID0gY2hkaXIoJF9HRVRbJ3BhdGgnXSk7DQpjaGRpcigkX0dFVFsncGF0aCddKTsNCnN3aXRjaCgkX0dFVFsnc2FmZV9tb2RlJ10pDQp7DQpjYXNlICJzX3BocF9pbmkiOg0KJHNfZmlsZT0kc19waHBfaW5pOw0KJHNfbmFtZT0icGhwLmluaSI7DQpicmVhazsNCmNhc2UgInNfaHRhY2Nlc3MiOg0KJHNfbmFtZT0iLmh0YWNjZXNzIjsNCiRzX2ZpbGU9JHNfaHRhY2Nlc3M7DQpicmVhazsNCmNhc2UgInNfaHRhY2Nlc3NfcGwiOg0KJHNfbmFtZT0iLmh0YWNjZXNzIjsNCiRzX2ZpbGU9JHNfaHRhY2Nlc3NfcGw7DQpicmVhazsNCmNhc2UgInNfaW5pX3BocCI6DQokc19uYW1lPSJpbmkucGhwIjsNCiRzX2ZpbGU9JGluaV9waHA7DQpicmVhazsNCg0KfQ0KaWYoZnVuY3Rpb25fZXhpc3RzKCdmb3BlbicpJiYgZnVuY3Rpb25fZXhpc3RzKCdmd3JpdGUnKSkNCnsNCiRzX2hhbmRsZT1mb3BlbigiJHNfbmFtZSIsICJ3KyIpOw0KaWYoJHNfaGFuZGxlKQ0Kew0KZndyaXRlKCRzX2hhbmRsZSwgJHNfZmlsZSk7DQphbGVydCgiT3BlcmF0aW9uIFN1Y2NlZWQhISEiKTsNCn0NCmVsc2UNCnsNCmFsZXJ0KCJBY2Nlc3MgRGVuaWVkISEhIik7DQp9DQpmY2xvc2UoJHNfaGFuZGxlKTsNCn0NCn0NCmZ1bmN0aW9uIHNhZmVfbW9kZV9mdWNrX3VpKCkNCnsNCmdsb2JhbCAkcGF0aDsNCiRwYXRoPWdldGN3ZCgpOw0KZWNobyAiPGRpdiBpZD1yZXN1bHQ+PGJyIC8+PGNlbnRlcj48aDI+U2VsZWN0IFlvdXIgT3B0aW9uczwvaDI+PGhyIC8+DQo8dGFibGUgY2xhc3M9dGJsIHNpemU9MTA+PHRyPjx0ZD48YSBocmVmPT9wYXRoPXskcGF0aH0mYW1wO3NhZmVfbW9kZT1zX3BocF9pbmk+UEhQLklOSTwvYT48L3RkPjx0ZD48YSBocmVmPT9wYXRoPXskcGF0aH0mYW1wO3NhZmVfbW9kZT1zX2h0YWNjZXNzPi5IVEFDQ0VTUzwvYT48L3RkPjx0ZD48YSBocmVmPT9wYXRoPXskcGF0aH0mYW1wO3NhZmVfbW9kZT1zX2h0YWNjZXNzX3BsPi5IVEFDQ0VTUyhwZXJsKTwvdGQ+PHRkPjxhIGhyZWY9P3BhdGg9eyRwYXRofSZhbXA7c2FmZV9tb2RlPXNfaW5pX3BocD5JTkkuUEhQPC90ZD48L3RyPjwvdGFibGU+PGJyIC8+PGJyIC8+PC9kaXY+IjsNCn0NCg0KDQpmdW5jdGlvbiBBY2Nlc3NEZW5pZWQoKQ0Kew0KZ2xvYmFsICRwYXRoLCAkZm9yYmlkX2RpcjsNCiRwYXRoPSRfR0VUWydwYXRoJ107DQpjaGRpcigkcGF0aCk7DQppZihmdW5jdGlvbl9leGlzdHMoJ2ZvcGVuJykgJiYgZnVuY3Rpb25fZXhpc3RzKCdmd3JpdGUnKSkNCnsNCiRmb3JiaWQ9Zm9wZW4oIi5odGFjY2VzcyIsICJ3YiIpOw0KaWYoJGZvcmJpZCkNCnsNCmZ3cml0ZSgkZm9yYmlkLCAkZm9yYmlkX2Rpcik7DQphbGVydCgiT3ByZWF0aW9uIFN1Y2NlZWRlZCIpOw0KfQ0KZWxzZQ0Kew0KYWxlcnQoIkFjY2VzcyBEZW5pZWQiKTsNCn0NCmZjbG9zZSgkZm9yYmlkKTsNCn0NCn0NCg0KZnVuY3Rpb24gcjAwdF9leHBsb2l0KCkNCnsNCiRrZXJuZWwgPSBwaHBfdW5hbWUoKTsNCiRyMDB0X2RiID0gYXJyYXkoJzIuNi4xOSc9PidqZXNzaWNhJywnMi42LjIwJz0+J2plc3NpY2EnLCcyLjYuMjEnPT4namVzc2ljYScsJzIuNi4yMic9PidqZXNzaWNhJywnMi42LjIzJz0+J2plc3NpY2EsIHZtc3BsaWNlJywnMi42LjI0Jz0+J2plc3NpY2EsIHZtc3BpY2UnLCcyLjYuMzEnPT4nZW5saWdodG1lbnQnLCcyLjYuMTgnPT4nYnJrLCBwdHJhY2UsIGttb2QsIGJyazInLCcyLjYuMTcnPT4ncHJjdGwzLCByYXB0b3JfcHJjdGwsIHB5MicsJzIuNi4xNic9PidyYXB0b3JfcHJjdGwsIGV4cC5zaCwgcmFwdG9yLCByYXB0b3IyLCBoMDBseXNoaXQnLCcyLjYuMTUnPT4ncHkyLCBleHAuc2gsIHJhcHRvciwgcmFwdG9yMiwgaDAwbHlzaGl0JywnMi42LjE0Jz0+J3JhcHRvciwgcmFwdG9yMiwgaDAwbHlzaGl0JywnMi42LjEzJz0+J2tkdW1wLCBsb2NhbDI2LCBweTIsIHJhcHRvcl9wcmN0bCwgZXhwLnNoLCBwcmN0bDMsIGgwMGx5c2hpdCcsJzIuNi4xMic9PidoMDBseXNoaXQnLCcyLjYuMTEnPT4na3JhZDMsIGtyYWQsIGgwMGx5c2hpdCcsJzIuNi4xMCc9PidoMDBseXNoaXQsIHN0YWNrZ3JvdzIsIHVzZWxpYjI0LCBleHAuc2gsIGtyYWQsIGtyYWQyJywnMi42LjknPT4nZXhwLnNoLCBrcmFkMywgcHkyLCBwcmN0bDMsIGgwMGx5c2hpdCcsJzIuNi44Jz0+J2gwMGx5c2hpdCwga3JhZCwga3JhZDInLCcyLjYuNyc9PidoMDBseXNoaXQsIGtyYWQsIGtyYWQyJywnMi42LjYnPT4naDAwbHlzaGl0LCBrcmFkLCBrcmFkMicsJzIuNi4yJz0+J2gwMGx5c2hpdCwga3JhZCwgbXJlbWFwX3B0ZScsJzIuNi4nPT4ncHJjdGwsIGttZHgsIG5ld3NtcCwgcHduZWQsIHB0cmFjZV9rbW9kLCBvbmdfYmFrJywnMi40LjI5Jz0+J2VsZmxibCwgZXhwYW5kX3N0YWNrLCBzdGFja2dyb3cyLCB1c2VsaWIyNCwgc21wcmFjZXInLCcyLjQuMjcnPT4nZWxmZHVtcCwgdXNlbGliMjQnLCcyLjQuMjUnPT4ndXNlbGliMjQnLCcyLjQuMjQnPT4nbXJlbWFwX3B0ZSwgbG9rbywgdXNlbGliMjQnLCcyLjQuMjMnPT4nbXJlbWFwX3B0ZSwgbG9rbywgdXNlbGliMjQnLCcyLjQuMjInPT4nbG9naW54LCBicmssIGttMiwgbG9rbywgcHRyYWNlLCB1c2VsaWIyNCwgYnJrMiwgcHRyYWNlLWttb2QnLCcyLjQuMjEnPT4ndzAwdCwgYnJrLCB1c2VsaWIyNCwgbG9naW54LCBicmsyLCBwdHJhY2Uta21vZCcsJzIuNC4yMCc9PidtcmVtYXBfcHRlLCB3MDB0LCBicmssIGF2ZSwgdXNlbGliMjQsIGxvZ2lueCwgcHRyYWNlLWttb2QsIHB0cmFjZSwga21vZCcsJzIuNC4xOSc9PiduZXdsb2NhbCwgdzAwdCwgYXZlLCB1c2VsaWIyNCwgbG9naW54LCBrbW9kJywnMi40LjE4Jz0+J2ttMiwgdzAwdCwgdXNlbGliMjQsIGxvZ2lueCwga21vZCcsJzIuNC4xNyc9PiduZXdsb2NhbCwgdzAwdCwgdXNlbGliMjQsIGxvZ2lueCwga21vZCcsJzIuNC4xNic9Pid3MDB0LCB1c2VsaWIyNCwgbG9naW54JywnMi40LjEwJz0+J3cwMHQsIGJyaywgdXNlbGliMjQsIGxvZ2lueCcsJzIuNC45Jz0+J3B0cmFjZTI0LCB1c2VsaWIyNCcsJzIuNC4nPT4na21keCwgcmVtYXAsIHB3bmVkLCBwdHJhY2Vfa21vZCwgb25nX2JhaycsJzIuMi4yNSc9PidtcmVtYXBfcHRlJywnMi4yLjI0Jz0+J3B0cmFjZScsJzIuMi4nPT4ncmlwLHB0cmFjZScpOw0KZm9yZWFjaCgkcjAwdF9kYiBhcyAka2Vybj0+JGV4cCkNCnsNCmlmKHN0cnN0cigka2VybmVsLCAka2VybikpDQp7DQpyZXR1cm4gJGV4cDsNCn0NCmVsc2UNCnsNCiRleHA9Jzxmb250IGNvbG9yPSJyZWQiPk5vdCBmb3VuZC48L2ZvbnQ+JzsNCnJldHVybiAkZXhwOw0KfQ0KfQ0KfQ0KDQpmdW5jdGlvbiBwaHBfZW5kZV91aSgpDQp7DQplY2hvICI8ZGl2IGlkPXJlc3VsdD48Y2VudGVyPjxoMj5QSFAgRUQ8L2gyPjwvY2VudGVyPjxociAvPjxmb3JtIG1ldGhvZD0ncG9zdCc+PHRhYmxlIGNsYXNzPXRibD4NCjx0cj48dGQ+DQpNZXRob2QgOiA8c2VsZWN0IG5hbWU9J3R5cGVkJyBzdHlsZT0nY29sb3I6Z3JlZW47IGJhY2tncm91bmQtY29sb3I6I0ZGRkZGRiBib3JkZXI6MXB4IHNvbGlkICM2NjY7Jz48b3B0aW9uPkVuY29kZTwvb3B0aW9uPjxvcHRpb24+RGVjb2RlPC9kZWNvZGU+PC9zZWxlY3Q+IFRZUEUgOiA8c2VsZWN0IG5hbWU9J3R5cGVuYycgc3R5bGU9J2NvbG9yOmdyZWVuOyBiYWNrZ3JvdW5kLWNvbG9yOiNGRkZGRkY7IGJvcmRlcjoxcHggc29saWQgIzY2NjsnPjxvcHRpb24+R1otSU5GTEFURTwvb3B0aW9uPjxvcHRpb24+R1otVU5DT01QUkVTUzwvb3B0aW9uPjxvcHRpb24+U1RSX1JPVDEzPC9vcHRpb24+PC90cj4NCjwvdGQ+PHRyPjx0ZD48dGV4dGFyZWEgc3BlbGxjaGVjaz0nZmFsc2UnIGNsYXNzPXRleHRhcmVhX2VkaXQgY29scz0nODAnIHJvd3M9JzI1JyBuYW1lPSdwaHBfY29udGVudCc+SU5QVVQgWU9VUiBDT05URU5UIFRPIEVOQ09ERS9ERUNPREUNCg0KRm9yIEVuY29kZSBJbnB1dCB5b3VyIGZ1bGwgc291cmNlIGNvZGUuDQoNCkZvciBEZWNvZGUgSW5wdXQgdGhlIGVuY29kZWQgcGFydCBvbmx5LjwvdGV4dGFyZWE+PC90cj48L3RkPjwvdGFibGU+PGhyIC8+PGlucHV0IGNsYXNzPSdpbnB1dF9iaWcnIHR5cGU9J3N1Ym1pdCcgdmFsdWU9JyA+PiAnIC8+PGJyIC8+PGhyIC8+PGJyIC8+PGJyIC8+PC9mb3JtPjwvZGl2PiI7DQp9DQpmdW5jdGlvbiBwaHBfZW5kZV9iZygpDQp7DQokbWV0aF9kPSRfUE9TVFsndHlwZWQnXTsNCiR0eXBfZD0kX1BPU1RbJ3R5cGVuYyddOw0KJGNfbnRlbnQ9JF9QT1NUWydwaHBfY29udGVudCddOw0KJGNfbnRlbnQ9JGNfbnRlbnQ7DQpzd2l0Y2goJG1ldGhfZCkNCnsNCmNhc2UgIkVuY29kZSI6DQpzd2l0Y2goJHR5cF9kKQ0Kew0KY2FzZSAiR1otSU5GTEFURSI6DQokcmVzX3Q9YmFzZTY0X2VuY29kZShnemRlZmxhdGUodHJpbShzdHJpcHNsYXNoZXMoJGNfbnRlbnQuJyAnKSwnPD9waHAsID8+JyksOSkpOw0KJHJlc190PSI8P3BocCAvKiBFbmNvZGVkIGluIFRveGljIEJveXMgVGVhbSBTaGVsbCAqLyBldmFsKGd6aW5mbGF0ZShiYXNlNjRfZGVjb2RlKFwiJHJlc190XCIpKSk7ID8+IjsNCmJyZWFrOw0KY2FzZSAiR1otVU5DT01QUkVTUyI6DQokcmVzX3Q9YmFzZTY0X2VuY29kZShnemNvbXByZXNzKHRyaW0oc3RyaXBzbGFzaGVzKCRjX250ZW50LicgJyksJzw/cGhwLCA/PicpLDkpKTsNCiRyZXNfdD0iPD9waHAgLyogRW5jb2RlZCBpbiBUb3hpYyBCb3lzIFRlYW0gU2hlbGwgKi8gZXZhbChnenVuY29tcHJlc3MoYmFzZTY0X2RlY29kZShcIiRyZXNfdFwiKSkpOyA/PiI7DQpicmVhazsNCmNhc2UgIlNUUl9ST1QxMyI6DQokcmVzX3Q9dHJpbShzdHJpcHNsYXNoZXMoJGNfbnRlbnQuJyAnKSwnPD9waHAsID8+Jyk7DQokcmVzX3Q9YmFzZTY0X2VuY29kZShzdHJfcm90MTMoJHJlc190KSk7DQokcmVzX3Q9Ijw/cGhwIC8qIEVuY29kZWQgaW4gVG94aWMgQm95cyBUZWFtIFNoZWxsICovIGV2YWwoc3RyX3JvdDEzKGJhc2U2NF9kZWNvZGUoXCIkcmVzX3RcIikpKTsgPz4iOw0KYnJlYWs7IA0KfQ0KYnJlYWs7DQpjYXNlICJEZWNvZGUiOg0Kc3dpdGNoKCR0eXBfZCkNCnsNCmNhc2UgIkdaLUlORkxBVEUiOg0KJHJlc190PWd6aW5mbGF0ZShiYXNlNjRfZGVjb2RlKCRjX250ZW50KSk7DQpicmVhazsNCmNhc2UgIkdaLVVOQ09NUFJFU1MiOg0KJHJlc190PWd6dW5jb21wcmVzcyhiYXNlNjRfZGVjb2RlKCRjX250ZW50KSk7DQpicmVhazsNCmNhc2UgIlNUUl9ST1QxMyI6DQokcmVzX3Q9c3RyX3JvdDEzKGJhc2U2NF9kZWNvZGUoJGNfbnRlbnQpKTsNCmJyZWFrOyANCn0NCmJyZWFrOw0KfQ0KZWNobyAiPGRpdiBpZD1yZXN1bHQ+PGNlbnRlcj48aDI+VG94aWMgQm95cyBUZWFtIFNoZWxsIChUQkcgU2hlbGwpPC9oMj48aHIgLz48dGV4dGFyZWEgc3BlbGxjaGVjaz0nZmFsc2UnIGNsYXNzPXRleHRhcmVhX2VkaXQgY29scz0nODAnIHJvd3M9JzI1Jz4iLmh0bWxzcGVjaWFsY2hhcnMoJHJlc190KS4iPC90ZXh0YXJlYT48L2NlbnRlcj48L2Rpdj4iOw0KfQ0KDQpmdW5jdGlvbiBtYXNzbWFpbGVyX3VpKCkNCnsNCmVjaG8gIjxkaXYgaWQ9cmVzdWx0PjxjZW50ZXI+PGgyPk1BU1MgTUFJTEVSICYgTUFJTCBCT01CRVI8L2gyPjxociAvPjx0YWJsZSBjbGFzcz10Ymwgd2lkdGg9NDAgc3R5bGU9J2NvbC13aWR0aDo0MCc+PHRkPjx0YWJsZSBjbGFzcz10Ymw+PHRyIHN0eWxlPSdmbG9hdDpsZWZ0Oyc+PHRkPjxmb250IGNvbG9yPWdyZWVuIHNpemU9ND5NYXNzIE1haWw8L2ZvbnQ+PC90ZD48L3RyPjxmb3JtIG1ldGhvZD0nUE9TVCc+PHRyIHN0eWxlPSdmbG9hdDpsZWZ0Oyc+PHRkPiBGUk9NIDogPC90ZD48dGQ+PGlucHV0IG5hbWU9J2Zyb20nIHNpemU9NDAgdmFsdWU9J2Z1Y2tlbmluZGlhQGZiaS5nb3YuaW4nPjwvdGQ+PC90cj48dHIgc3R5bGU9J2Zsb2F0OmxlZnQ7Jz48dGQ+VE8gOjwvdGQ+PHRkPjxpbnB1dCBzaXplPTQwIG5hbWU9J3RvX21haWwnIHZhbHVlPSdmdWNrZW5pbmRpYUBmYmkuZ292LmluLGZhaGltbWFnc2lAZ21haWwuY29tJz48L3RkPjwvdHI+PHRyIHN0eWxlPSdmbG9hdDpsZWZ0Oyc+PHRkPlN1YmplY3QgOjwvdGQ+PHRkPjxpbnB1dCBzaXplPTQwIG5hbWU9J3N1YmplY3RfbWFpbCcgdmFsdWU9J0hpLCBHdXlaJz48L3RkPjwvdHI+PHRyIHN0eWxlPSdmbG9hdDpsZWZ0Oyc+PHRkPjx0ZXh0YXJlYSBzcGVsbGNoZWNrPSdmYWxzZScgY2xhc3M9dGV4dGFyZWFfZWRpdCBjb2xzPSczNCcgcm93cz0nMTAnIG5hbWU9J21haWxfY29udGVudCc+SSdtIGRvaW5nIG1hc3NtYWlsIDpwPC90ZXh0YXJlYT48L3RkPjx0ZD48aW5wdXQgY2xhc3M9J2lucHV0X2JpZycgdHlwZT0nc3VibWl0JyB2YWx1ZT0nID4+ICc+PC90ZD48L3RyPjwvZm9ybT48L3RhYmxlPjwvdGQ+DQo8Zm9ybSBtZXRob2Q9J3Bvc3QnPjx0ZD4gPHRhYmxlIGNsYXNzPSd0YmwnPjx0ZD48Zm9udCBjb2xvcj1ncmVlbiBzaXplPTQ+TWFpbCBCb21iZXI8L2ZvbnQ+PC90ZD48L3RyPjx0ciBzdHlsZT0nZmxvYXQ6bGVmdDsnPjx0ZD5UTyA6IDwvdGQ+PHRkPjxpbnB1dCBzaXplPTQwIG5hbWU9J2JvbWJfdG8nIHZhbHVlPSdmYWhpbW1hZ3NpQGdtYWlsLmNvbSxmdWNrZW5pbmRpYUBmYmkuZ292LmluJz48L3RkPjwvdHI+PHRyIHN0eWxlPSdmbG9hdDpsZWZ0Oyc+PHRkPlN1YmplY3QgOiA8L3RkPjx0ZD48aW5wdXQgc2l6ZT00MCBuYW1lPSdib21iX3N1YmplY3QnIHZhbHVlPSdCb21iaW5nIHdpdGggbWVzc2FnZXMnPjwvdGQ+PC90cj48dHIgc3R5bGU9J2Zsb2F0OmxlZnQ7Jz48dGQ+Tm8uIG9mIHRpbWVzPC90ZD48dGQ+PGlucHV0IHNpemU9NDAgbmFtZT0nYm9tYl9ubycgdmFsdWU9JzEwMCc+PC90ZD48L3RyPjx0ciBzdHlsZT0nZmxvYXQ6bGVmdDsnPjx0ZD4gPHRleHRhcmVhIHNwZWxsY2hlY2s9J2ZhbHNlJyBjbGFzcz10ZXh0YXJlYV9lZGl0IGNvbHM9JzM0JyByb3dzPScxMCcgbmFtZT0nYm1haWxfY29udGVudCc+SSdtIGRvaW5nIEUtTWFpbCBCb21iaW5nIDpwPC90ZXh0YXJlYT4gPC90ZD48dGQ+PGlucHV0IGNsYXNzPSdpbnB1dF9iaWcnIHR5cGU9J3N1Ym1pdCcgdmFsdWU9JyA+PiAnPjwvdGQ+PC90cj48L2Zvcm0+PC90YWJsZT4gPC90ZD48L3RyPjwvdGFibGU+IjsNCn0NCg0KZnVuY3Rpb24gbWFzc21haWxlcl9iZygpDQp7DQokZnJvbT0kX1BPU1RbJ2Zyb20nXTsNCiR0bz0kX1BPU1RbJ3RvX21haWwnXTsNCiRzdWJqZWN0PSRfUE9TVFsnc3ViamVjdF9tYWlsJ107DQokbWVzc2FnZT0kX1BPU1RbJ21haWxfY29udGVudCddOw0KaWYoZnVuY3Rpb25fZXhpc3RzKCdtYWlsJykpDQp7DQppZihtYWlsKCR0bywkc3ViamVjdCwkbWVzc2FnZSwiRnJvbTokZnJvbSIpKQ0Kew0KZWNobyAiPGRpdiBpZD1yZXN1bHQ+PGNlbnRlcj48aDI+TUFJTCBCT01CSU5HPC9oMj48aHIgLz48YnIgLz48YnIgLz48Zm9udCBjb2xvcj1ncmVlbiBzaXplPTQ+U3VjY2Vzc2Z1bGx5IE1haWxzIFNlbmQuLi4gOnA8L2ZvbnQ+PGJyIC8+PGJyIC8+PGhyIC8+PGJyIC8+PGJyIC8+IjsNCn0NCmVsc2UNCnsNCmVjaG8gIjxkaXYgaWQ9cmVzdWx0PjxjZW50ZXI+PGgyPk1BSUwgQk9NQklORzwvaDI+PGhyIC8+PGJyIC8+PGJyIC8+PGZvbnQgY29sb3I9cmVkIHNpemU9ND5Tb3JyeSwgZmFpbGVkIHRvIE1haWxzIFNlbmRpbmcuLi4gOig8L2ZvbnQ+PGJyIC8+PGJyIC8+PGhyIC8+PGJyIC8+PGJyIC8+IjsNCn0NCn0NCmVsc2UNCnsNCmVjaG8gIjxkaXYgaWQ9cmVzdWx0PjxjZW50ZXI+PGgyPk1BSUwgQk9NQklORzwvaDI+PGhyIC8+PGJyIC8+PGJyIC8+PGZvbnQgY29sb3I9cmVkIHNpemU9ND5Tb3JyeSwgZmFpbGVkIHRvIE1haWxzIFNlbmRpbmcuLi4gOig8L2ZvbnQ+PGJyIC8+PGJyIC8+PGhyIC8+PGJyIC8+PGJyIC8+IjsNCn0NCn0NCg0KZnVuY3Rpb24gbWFpbGJvbWJfYmcoKQ0Kew0KJHJhbmQ9cmFuZCgwLCA5OTk5OTk5KTsNCiR0bz0kX1BPU1RbJ2JvbWJfdG8nXTsNCiRmcm9tPSJwcmVzaWRlbnRfJHJhbmRAd2hpdGV3aGl0ZWhvdXNlLmdvdiI7DQokc3ViamVjdD0kX1BPU1RbJ2JvbWJfc3ViamVjdCddLiIgSUQgIi4kcmFuZDsNCiR0aW1lcz0kX1BPU1RbJ2JvbWJfbm8nXTsNCiRjb250ZW50PSRfUE9TVFsnYm1haWxfY29udGVudCddOw0KaWYoJHRpbWVzPT0nJykNCnsNCiR0aW1lcz0xMDAwOw0KfQ0Kd2hpbGUoJHRpbWVzLS0pDQp7DQppZihmdW5jdGlvbl9leGlzdHMoJ21haWwnKSkNCnsNCmlmKG1haWwoJHRvLCRzdWJqZWN0LCRtZXNzYWdlLCJGcm9tOiRmcm9tIikpDQp7DQplY2hvICI8ZGl2IGlkPXJlc3VsdD48Y2VudGVyPjxoMj5NQUlMIEJPTUJJTkc8L2gyPjxociAvPjxiciAvPjxiciAvPjxmb250IGNvbG9yPWdyZWVuIHNpemU9ND5TdWNjZXNzZnVsbHkgTWFpbHMgQm9tYmVkLi4uIDpwPC9mb250PjxiciAvPjxiciAvPjxociAvPjxiciAvPjxiciAvPiI7DQp9DQplbHNlDQp7DQplY2hvICI8ZGl2IGlkPXJlc3VsdD48Y2VudGVyPjxoMj5NQUlMIEJPTUJJTkc8L2gyPjxociAvPjxiciAvPjxiciAvPjxmb250IGNvbG9yPXJlZCBzaXplPTQ+U29ycnksIGZhaWxlZCB0byBNYWlscyBCb21iaW5nLi4uIDooPC9mb250PjxiciAvPjxiciAvPjxociAvPjxiciAvPjxiciAvPiI7DQp9DQp9DQplbHNlDQp7DQplY2hvICI8ZGl2IGlkPXJlc3VsdD48Y2VudGVyPjxoMj5NQUlMIEJPTUJJTkc8L2gyPjxociAvPjxiciAvPjxiciAvPjxmb250IGNvbG9yPXJlZCBzaXplPTQ+U29ycnksIGZhaWxlZCB0byBNYWlscyBCb21iaW5nLi4uIDooPC9mb250PjxiciAvPjxiciAvPjxociAvPjxiciAvPjxiciAvPiI7DQp9DQp9DQp9DQoNCg0KLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ1BBTkVMIENSQUNLIGlzIENvcGllZCBmcm9tIGNwYW5lbCBjcmFja2VyIC0tLS0tLS0tLS0qLw0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ3JlZGl0IEdvZXMgdG8gVGhlbSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KZnVuY3Rpb24gY3BhbmVsX2NoZWNrKCRob3N0LCR1c2VyLCRwYXNzLCR0aW1lb3V0KQ0Kew0Kc2V0X3RpbWVfbGltaXQoMCk7DQpnbG9iYWwgJGNwYW5lbF9wb3J0Ow0KJGNoID0gY3VybF9pbml0KCk7DQpjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVJMLCAiaHR0cDovLyRob3N0OiIgLiAkY3BhbmVsX3BvcnQpOw0KY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCAxKTsNCmN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9IVFRQQVVUSCwgQ1VSTEFVVEhfQkFTSUMpOw0KY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1VTRVJQV0QsICIkdXNlcjokcGFzcyIpOw0KY3VybF9zZXRvcHQgKCRjaCwgQ1VSTE9QVF9DT05ORUNUVElNRU9VVCwgJHRpbWVvdXQpOw0KY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0ZBSUxPTkVSUk9SLCAxKTsNCiRkYXRhID0gY3VybF9leGVjKCRjaCk7DQppZiAoIGN1cmxfZXJybm8oJGNoKSA9PSAyOCApDQp7DQpwcmludCAiPGI+PGZvbnQgY29sb3I9b3JhbmdlPkVycm9yIDo8L2ZvbnQ+IDxmb250IGNvbG9yPXJlZD5Db25uZWN0aW9uIFRpbWVvdXQuIFBsZWFzZSBDaGVjayBUaGUgVGFyZ2V0IEhvc3RuYW1lIC48L2ZvbnQ+PC9iPiI7DQpleGl0Ow0KfQ0KZWxzZSBpZiAoY3VybF9lcnJubygkY2gpID09IDAgKQ0Kew0KcHJpbnQgIjxiPjxmb250IGZhY2U9XCJUYWhvbWFcIiBzdHlsZT1cImZvbnQtc2l6ZTogOXB0XCIgY29sb3I9XCJvcmFuZ2VcIj5bfl08L2ZvbnQ+PC9iPjxmb250IGZhY2U9XCJUYWhvbWFcIiBzdHlsZT1cImZvbnQtc2l6ZTogOXB0XCI+PGI+PGZvbnQgY29sb3I9XCJncmVlblwiPg0KQ3JhY2tpbmcgU3VjY2VzcyBXaXRoIFVzZXJuYW1lICZxdW90OzwvZm9udD48Zm9udCBjb2xvcj1cIiNGRjAwMDBcIj4kdXNlcjwvZm9udD48Zm9udCBjb2xvcj1cIiMwMDgwMDBcIj5cIiBhbmQgUGFzc3dvcmQgXCI8L2ZvbnQ+PGZvbnQgY29sb3I9XCIjRkYwMDAwXCI+JHBhc3M8L2ZvbnQ+PGZvbnQgY29sb3I9XCIjMDA4MDAwXCI+XCI8L2ZvbnQ+PC9iPjxicj48YnI+IjsNCn0NCmN1cmxfY2xvc2UoJGNoKTsNCn0NCg0KZnVuY3Rpb24gY3BhbmVsX2NyYWNrKCkNCnsNCnNldF90aW1lX2xpbWl0KDApOw0KZ2xvYmFsICRvczsNCmVjaG8gIjxkaXYgaWQ9cmVzdWx0PiI7DQokY3BhbmVsX3BvcnQ9IjIwODIiOw0KJGNvbm5lY3RfdGltZW91dD01Ow0KaWYoIWlzc2V0KCRfUE9TVFsndXNlcm5hbWUnXSkgJiYgIWlzc2V0KCRfUE9TVFsncGFzc3dvcmQnXSkgJiYgIWlzc2V0KCRfUE9TVFsndGFyZ2V0J10pICYmICFpc3NldCgkX1BPU1RbJ2NyYWNrdHlwZSddKSkNCnsNCj8+DQo8Y2VudGVyPg0KPGZvcm0gbWV0aG9kPXBvc3Q+DQo8dGFibGUgY2xhc3M9dGJsPg0KPHRyPg0KPHRkIGFsaWduPWNlbnRlciBjb2xzcGFuPTI+VGFyZ2V0IDogPGlucHV0IHR5cGU9dGV4dCBuYW1lPSJzZXJ2ZXIiIHZhbHVlPSJsb2NhbGhvc3QiIGNsYXNzPXNib3g+PC90ZD4NCjwvdHI+DQo8dHI+DQo8dGQgYWxpZ249Y2VudGVyPlVzZXIgbmFtZXM8L3RkPjx0ZCBhbGlnbj1jZW50ZXI+UGFzc3dvcmQ8L3RkPg0KPC90cj4NCjx0cj4NCjx0ZCBhbGlnbj1jZW50ZXI+PHRleHRhcmVhIHNwZWxsY2hlY2s9J2ZhbHNlJyBjbGFzcz10ZXh0YXJlYV9lZGl0IG5hbWU9dXNlcm5hbWUgcm93cz0yNSBjb2xzPTM1IGNsYXNzPWJveD48P3BocCANCmlmKCRvcyAhPSAid2luIikNCnsNCmlmKEBmaWxlKCcvZXRjL3Bhc3N3ZCcpKQ0Kew0KJHVzZXJzID0gZmlsZSgnL2V0Yy9wYXNzd2QnKTsNCmZvcmVhY2goJHVzZXJzIGFzICR1c2VyKSANCnsNCiR1c2VyID0gZXhwbG9kZSgnOicsICR1c2VyKTsNCmVjaG8gJHVzZXJbMF0gLiAiXG4iOw0KfQ0KfQ0KZWxzZQ0Kew0KJHRlbXAgPSAiIjsNCiR2YWwxID0gMDsNCiR2YWwyID0gMTAwMDsNCmZvcig7JHZhbDEgPD0gJHZhbDI7JHZhbDErKykgDQp7DQokdWlkID0gQHBvc2l4X2dldHB3dWlkKCR2YWwxKTsNCmlmICgkdWlkKQ0KJHRlbXAgLj0gam9pbignOicsJHVpZCkuIlxuIjsNCn0NCg0KJHRlbXAgPSB0cmltKCR0ZW1wKTsNCg0KaWYoJGZpbGU1ID0gZm9wZW4oInRlc3QudHh0IiwidyIpKQ0Kew0KZnB1dHMoJGZpbGU1LCR0ZW1wKTsNCmZjbG9zZSgkZmlsZTUpOw0KDQokZmlsZSA9IGZvcGVuKCJ0ZXN0LnR4dCIsICJyIik7DQp3aGlsZSghZmVvZigkZmlsZSkpDQp7DQokcyA9IGZnZXRzKCRmaWxlKTsNCiRtYXRjaGVzID0gYXJyYXkoKTsNCiR0ID0gcHJlZ19tYXRjaCgnL1wvKC4qPylcOlwvL3MnLCAkcywgJG1hdGNoZXMpOw0KJG1hdGNoZXMgPSBzdHJfcmVwbGFjZSgiaG9tZS8iLCIiLCRtYXRjaGVzWzFdKTsNCmlmKHN0cmxlbigkbWF0Y2hlcykgPiAxMiB8fCBzdHJsZW4oJG1hdGNoZXMpID09IDAgfHwgJG1hdGNoZXMgPT0gImJpbiIgfHwgJG1hdGNoZXMgPT0gImV0Yy9YMTEvZnMiIHx8ICRtYXRjaGVzID09ICJ2YXIvbGliL25mcyIgfHwgJG1hdGNoZXMgPT0gInZhci9hcnB3YXRjaCIgfHwgJG1hdGNoZXMgPT0gInZhci9nb3BoZXIiIHx8ICRtYXRjaGVzID09ICJzYmluIiB8fCAkbWF0Y2hlcyA9PSAidmFyL2FkbSIgfHwgJG1hdGNoZXMgPT0gInVzci9nYW1lcyIgfHwgJG1hdGNoZXMgPT0gInZhci9mdHAiIHx8ICRtYXRjaGVzID09ICJldGMvbnRwIiB8fCAkbWF0Y2hlcyA9PSAidmFyL3d3dyIgfHwgJG1hdGNoZXMgPT0gInZhci9uYW1lZCIpDQpjb250aW51ZTsNCmVjaG8gJG1hdGNoZXM7DQp9DQpmY2xvc2UoJGZpbGUpOw0KfQ0KfQ0KfQ0KPz48L3RleHRhcmVhPjwvdGQ+PHRkIGFsaWduPWNlbnRlcj48dGV4dGFyZWEgc3BlbGxjaGVjaz0nZmFsc2UnIGNsYXNzPXRleHRhcmVhX2VkaXQgbmFtZT1wYXNzd29yZCByb3dzPTI1IGNvbHM9MzUgY2xhc3M9Ym94PjwvdGV4dGFyZWE+PC90ZD4NCjwvdHI+DQo8dHI+DQo8dGQgYWxpZ249Y2VudGVyIGNvbHNwYW49Mj5HdWVzcyBvcHRpb25zIDogPGxhYmVsPjxpbnB1dCBuYW1lPSJjcmFja3R5cGUiIHR5cGU9InJhZGlvIiB2YWx1ZT0iY3BhbmVsIiBjaGVja2VkPiBDcGFuZWwoMjA4Mik8L2xhYmVsPjxsYWJlbD48aW5wdXQgbmFtZT0iY3JhY2t0eXBlIiB0eXBlPSJyYWRpbyIgdmFsdWU9ImZ0cCI+IEZ0cCgyMSk8L2xhYmVsPjxsYWJlbD48aW5wdXQgbmFtZT0iY3JhY2t0eXBlIiB0eXBlPSJyYWRpbyIgdmFsdWU9InRlbG5ldCI+IFRlbG5ldCgyMyk8L2xhYmVsPjwvdGQ+DQo8L3RyPg0KPHRyPg0KPHRkIGFsaWduPWNlbnRlciBjb2xzcGFuPTI+VGltZW91dCBkZWxheSA6IDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJkZWxheSIgdmFsdWU9NSBjbGFzcz1zYm94PjwvdGQ+DQo8L3RyPg0KPHRyPg0KPHRkIGFsaWduPWNlbnRlciBjb2xzcGFuPTI+PGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IiBHbyAiIGNsYXNzPWJ1dD48L3RkPg0KPC90cj4NCjwvdGFibGU+DQo8L2Zvcm0+DQo8L2NlbnRlcj4NCjw/cGhwDQp9DQplbHNlDQp7DQppZihlbXB0eSgkX1BPU1RbJ3VzZXJuYW1lJ10pIHx8IGVtcHR5KCRfUE9TVFsncGFzc3dvcmQnXSkpDQplY2hvICI8Y2VudGVyPlBsZWFzZSBFbnRlciBUaGUgVXNlcnMgb3IgUGFzc3dvcmQgTGlzdDwvY2VudGVyPiI7DQplbHNlDQp7DQokdXNlcmxpc3Q9ZXhwbG9kZSgiXG4iLCRfUE9TVFsndXNlcm5hbWUnXSk7DQokcGFzc2xpc3Q9ZXhwbG9kZSgiXG4iLCRfUE9TVFsncGFzc3dvcmQnXSk7DQoNCmlmKCRfUE9TVFsnY3JhY2t0eXBlJ10gPT0gImZ0cCIpDQp7DQpmb3JlYWNoICgkdXNlcmxpc3QgYXMgJHVzZXIpDQp7DQokcHVyZXVzZXIgPSB0cmltKCR1c2VyKTsNCmZvcmVhY2ggKCRwYXNzbGlzdCBhcyAkcGFzc3dvcmQgKQ0Kew0KJHB1cmVwYXNzID0gdHJpbSgkcGFzc3dvcmQpOw0KZnRwX2NoZWNrKCRfUE9TVFsndGFyZ2V0J10sJHB1cmV1c2VyLCRwdXJlcGFzcywkY29ubmVjdF90aW1lb3V0KTsNCn0NCn0NCn0NCmlmICgkX1BPU1RbJ2NyYWNrdHlwZSddID09ICJjcGFuZWwiIHx8ICRfUE9TVFsnY3JhY2t0eXBlJ10gPT0gInRlbG5ldCIpDQp7DQppZigkY3JhY2t0eXBlID09ICJ0ZWxuZXQiKQ0Kew0KJGNwYW5lbF9wb3J0PSIyMyI7DQp9DQplbHNlDQokY3BhbmVsX3BvcnQ9IjIwODIiOw0KZm9yZWFjaCAoJHVzZXJsaXN0IGFzICR1c2VyKQ0Kew0KJHB1cmV1c2VyID0gdHJpbSgkdXNlcik7DQplY2hvICI8Yj48Zm9udCBmYWNlPVRhaG9tYSBzdHlsZT1cImZvbnQtc2l6ZTogOXB0XCIgY29sb3I9IzAwODAwMD4gWyAtIF0gPC9mb250Pjxmb250IGZhY2U9VGFob21hIHN0eWxlPVwiZm9udC1zaXplOiA5cHRcIiBjb2xvcj0jRkYwODAwPg0KUHJvY2Vzc2luZyB1c2VyICRwdXJldXNlciAuLi48L2ZvbnQ+PC9iPjxicj48YnI+IjsNCmZvcmVhY2ggKCRwYXNzbGlzdCBhcyAkcGFzc3dvcmQgKQ0Kew0KJHB1cmVwYXNzID0gdHJpbSgkcGFzc3dvcmQpOw0KY3BhbmVsX2NoZWNrKCRfUE9TVFsndGFyZ2V0J10sJHB1cmV1c2VyLCRwdXJlcGFzcywkY29ubmVjdF90aW1lb3V0KTsNCn0NCn0NCn0NCn0NCn0NCg0KZWNobyAiPC9kaXY+IjsNCn0NCg0KZnVuY3Rpb24gZ2V0X3VzZXJzKCkNCnsNCiR1c2VyeiA9IGFycmF5KCk7DQokdXNlciA9IGZpbGUoIi9ldGMvcGFzc3dkIik7DQpmb3JlYWNoKCR1c2VyIGFzICR1c2VyeD0+JHVzZXJzeikNCnsNCiR1c2VyY3QgPSBleHBsb2RlKCI6IiwkdXNlcnN6KTsNCmFycmF5X3B1c2goJHVzZXJ6LCR1c2VyY3RbMF0pOw0KfQ0KaWYoISR1c2VyKQ0Kew0KaWYoJG9wZCA9IG9wZW5kaXIoIi9ob21lLyIpKQ0Kew0Kd2hpbGUoKCRmaWxlID0gcmVhZGRpcigkb3BkKSkhPT0gZmFsc2UpDQp7DQphcnJheV9wdXNoKCR1c2VyeiwkZmlsZSk7DQp9DQp9DQpjbG9zZWRpcigkb3BkKTsNCn0NCiR1c2Vyej1pbXBsb2RlKCcsICcsJHVzZXJ6KTsNCnJldHVybiAkdXNlcno7DQp9DQoNCmZ1bmN0aW9uIGV4cGxvaXRfZGV0YWlscygpDQp7DQpnbG9iYWwgJG9zOw0KZWNobyAiPGRpdiBpZD1yZXN1bHQgc3R5bGU9J2NvbG9yOmdyZWVuOyc+PGNlbnRlcj4NCjxoMj5FeHBsb2l0IFNlcnZlciBEZXRhaWxzPC9oMj48aHIgLz48YnIgLz48YnIgLz48dGFibGUgY2xhc3M9dGFibGUgc3R5bGU9J2NvbG9yOmdyZWVuO3RleHQtYWxpZ246Y2VudGVyJz48dHI+PHRkPg0KT1M6IDxhIHN0eWxlPSdjb2xvcjo3MTcxQzY7dGV4dC1kZWNvcmF0aW9uOm5vbmU7JyB0YXJnZXQ9X2JsYW5rIGhyZWY9J2h0dHA6Ly93d3cuZXhwbG9pdC1kYi5jb20vc2VhcmNoLz9hY3Rpb249c2VhcmNoJmZpbHRlcl9wYWdlPTEmZmlsdGVyX2Rlc2NyaXB0aW9uPSIucGhwX3VuYW1lKHMpLiInPiIucGhwX3VuYW1lKHMpLiI8L3RkPjwvdHI+DQo8dHI+PHRkPlBIUCBWZXJzaW9uIDogPGEgc3R5bGU9J2NvbG9yOjcxNzFDNjt0ZXh0LWRlY29yYXRpb246bm9uZTsnIHRhcmdldD1fYmxhbmsgaHJlZj0nP3BocGluZm8nPiIucGhwdmVyc2lvbigpLiIuPC90ZD48L3RyPg0KPHRyPjx0ZD5LZXJuZWwgUmVsZWFzZSA6IDxmb250IGNvbG9yPTcxNzFDNj4iLnBocF91bmFtZShyKS4iPC9mb250PjwvdGQ+PC90cj4NCjx0cj48dGQ+S2VybmVsIFZlcnNpb24gOiA8Zm9udCBjb2xvcj03MTcxQzY+Ii5waHBfdW5hbWUodikuIjwvZm9udD48L3RkPjwvdGQ+DQo8dHI+PHRkPk1hY2hpbmUgOiA8Zm9udCBjb2xvcj03MTcxQzY+Ii5waHBfdW5hbWUobSkuIjwvZm9udD48L3RkPC90cj4NCjx0cj48dGQ+U2VydmVyIFNvZnR3YXJlIDogPGZvbnQgY29sb3I9NzE3MUM2PiIuJF9TRVJWRVJbJ1NFUlZFUl9TT0ZUV0FSRSddLiI8L2ZvbnQ+PC90ZDwvdHI+PHRyPiI7DQppZihmdW5jdGlvbl9leGlzdHMoJ2FwYWNoZV9nZXRfbW9kdWxlcycpKQ0Kew0KZWNobyAiPHRyPjx0ZCBzdHlsZT0ndGV4dC1hbGlnbjpsZWZ0Oyc+TG9hZGVkIEFwYWNoZSBtb2R1bGVzIDogPGJyIC8+PGJyIC8+PGZvbnQgY29sb3I9NzE3MUM2PiI7DQplY2hvIGltcGxvZGUoJywgJywgYXBhY2hlX2dldF9tb2R1bGVzKCkpOw0KZWNobyAiPC9mb250PjwvdHI+PC90ZD4iOw0KfQ0KaWYoJG9zPT0nd2luJykNCnsNCmVjaG8gIjx0cj48dGQgc3R5bGU9J3RleHQtYWxpZ246bGVmdDsnPkFjY291bnQgU2V0dGluZyA6IDxmb250IGNvbG9yPTcxNzFDNj48cHJlPiIuY21kKCduZXQgYWNjb3VudHMnKS4iPC9wcmU+PC90ZD48L3RyPg0KPHRyPjx0ZCBzdHlsZT0ndGV4dC1hbGlnbjpsZWZ0Jz5Vc2VyIEFjY291bnRzIDogPGZvbnQgY29sb3I9NzE3MUM2PjxwcmU+Ii5jbWQoJ25ldCB1c2VyJykuIjwvcHJlPjwvdGQ+PC90cj4NCiI7DQp9DQppZigkb3M9PSduaXgnKQ0Kew0KZWNobyAiPHRyPjx0ZCBzdHlsZT0ndGV4dC1hbGlnbjpsZWZ0Jz5EaXN0cm8gOiA8Zm9udCBjb2xvcj03MTcxQzY+PHByZT4iLmNtZCgnY2F0IC9ldGMvKi1yZWxlYXNlJykuIjwvcHJlPjwvZm9udD48L3RkPjwvdHI+DQo8dHI+PHRkIHN0eWxlPSd0ZXh0LWFsaWduOmxlZnQnPkRpc3RyIG5hbWUgOiA8Zm9udCBjb2xvcj03MTcxQzY+PHByZT4iLmNtZCgnY2F0IC9ldGMvaXNzdWUubmV0JykuIjwvcHJlPjwvZm9udD48L3RkPjwvdHI+DQo8dHI+PHRkIHN0eWxlPSd0ZXh0LWFsaWduOmxlZnQnPkdDQyA6IDxmb250IGNvbG9yPTcxNzFDNj48cHJlPiIuY21kKCd3aGVyZWlzIGdjYycpLiI8L3ByZT48L3RkPjwvdHI+DQo8dHI+PHRkIHN0eWxlPSd0ZXh0LWFsaWduOmxlZnQnPlBFUkwgOiA8Zm9udCBjb2xvcj03MTcxQzY+PHByZT4iLmNtZCgnd2hlcmVpcyBwZXJsJykuIjwvcHJlPjwvdGQ+PC90cj4NCjx0cj48dGQgc3R5bGU9J3RleHQtYWxpZ246bGVmdCc+UFlUSE9OIDogPGZvbnQgY29sb3I9NzE3MUM2PjxwcmU+Ii5jbWQoJ3doZXJlaXMgcHl0aG9uJykuIjwvcHJlPjwvdGQ+PC90cj4NCjx0cj48dGQgc3R5bGU9J3RleHQtYWxpZ246bGVmdCc+SkFWQSA6IDxmb250IGNvbG9yPTcxNzFDNj48cHJlPiIuY21kKCd3aGVyZWlzIGphdmEnKS4iPC9wcmU+PC90ZD48L3RyPg0KPHRyPjx0ZCBzdHlsZT0ndGV4dC1hbGlnbjpsZWZ0Jz5BUEFDSEUgOiA8Zm9udCBjb2xvcj03MTcxQzY+PHByZT4iLmNtZCgnd2hlcmVpcyBhcGFjaGUnKS4iPC9wcmU+PC90ZD48L3RyPg0KPHRyPjx0ZCBzdHlsZT0ndGV4dC1hbGlnbjpsZWZ0Oyc+Q1BVIDogPGJyIC8+PGJyIC8+PHByZT48Zm9udCBjb2xvcj03MTcxQzY+Ii5jbWQoJ2NhdCAvcHJvYy9jcHVpbmZvJykuIjwvZm9udD48L3ByZT48L3RkPjwvdHI+DQo8dHI+PHRkIHN0eWxlPSd0ZXh0LWFsaWduOmxlZnQnPlJBTSA6IDxmb250IGNvbG9yPTcxNzFDNj48cHJlPiIuY21kKCdmcmVlIC1tJykuIjwvcHJlPjwvdGQ+PC90cj4NCjx0cj48dGQgc3R5bGU9J3RleHQtYWxpZ246bGVmdCc+IFVzZXIgTGltaXRzIDogPGJyIC8+PGJyIC8+PGZvbnQgY29sb3I9NzE3MUM2PjxwcmU+Ii5jbWQoJ3VsaW1pdCAtYScpLiI8L3ByZT48L3RkPjwvdHI+IjsNCiR1c2VmdWwgPSBhcnJheSgnZ2NjJywnbGNjJywnY2MnLCdsZCcsJ21ha2UnLCdwaHAnLCdwZXJsJywncHl0aG9uJywncnVieScsJ3RhcicsJ2d6aXAnLCdiemlwJywnYnppcDInLCduYycsJ2xvY2F0ZScsJ3N1aWRwZXJsJyk7DQokdXplPWFycmF5KCk7DQpmb3JlYWNoKCR1c2VmdWwgYXMgJHV6ZWZ1bCkNCnsNCmlmKGNtZCgid2hpY2ggJHV6ZWZ1bCIpKQ0Kew0KJHV6ZVtdPSR1emVmdWw7DQp9DQp9DQplY2hvICI8dHI+PHRkIHN0eWxlPSd0ZXh0LWFsaWduOmxlZnQnPlVzZWZ1bCA6IDxiciAvPjxmb250IGNvbG9yPTcxNzFDNj48cHJlPiI7DQplY2hvIGltcGxvZGUoJywgJywkdXplKTsNCmVjaG8gIjwvcHJlPjwvdGQ+PC90cj4iOw0KJGRvd25sb2FkZXJzID0gYXJyYXkoJ3dnZXQnLCdmZXRjaCcsJ2x5bngnLCdsaW5rcycsJ2N1cmwnLCdnZXQnLCdsd3AtbWlycm9yJyk7DQokdXplPWFycmF5KCk7DQpmb3JlYWNoKCRkb3dubG9hZGVycyBhcyAkZG93bmxvYWRlcikNCnsNCmlmKGNtZCgid2hpY2ggJGRvd25sb2FkZXIiKSkNCnsNCiR1emVbXT0kZG93bmxvYWRlcjsNCn0NCn0NCmVjaG8gIjx0cj48dGQgc3R5bGU9J3RleHQtYWxpZ246bGVmdCc+RG93bmxvYWRlcnMgOiA8YnIgLz48Zm9udCBjb2xvcj03MTcxQzY+PHByZT4iOw0KZWNobyBpbXBsb2RlKCcsICcsJHV6ZSk7DQplY2hvICI8L3ByZT48L3RkPjwvdHI+IjsNCmVjaG8gIjx0cj48dGQgc3R5bGU9J3RleHQtYWxpZ246bGVmdCc+VXNlcnMgOiA8YnIgLz48Zm9udCBjb2xvcj03MTcxQzY+PHByZT4iLndvcmR3cmFwKGdldF91c2VycygpKS4iPC9wcmU8L2ZvbnQ+PjwvdGQ+PC90cj4NCjx0cj48dGQgc3R5bGU9J3RleHQtYWxpZ246bGVmdCc+SG9zdHMgOiA8YnIgLz48Zm9udCBjb2xvcj03MTcxQzY+PHByZT4iLmNtZCgnY2F0IC9ldGMvaG9zdHMnKS4iPC9wcmU+PC9mb250PjwvdGQ+PC90cj4iOw0KfQ0KZWNobyAiPC90YWJsZT48YnIgLz48YnIgLz48aHIgLz48YnIgLz48YnIgLz4iOw0KfQ0KDQpmdW5jdGlvbiByZW1vdGVfZmlsZV9jaGVja191aSgpDQp7DQplY2hvICI8ZGl2IGlkPXJlc3VsdD48Y2VudGVyPjxoMj5SZW1vdGUgRmlsZSBDaGVjazwvaDI+PGhyIC8+PGJyIC8+PGJyIC8+DQo8dGFibGUgY2xhc3M9dGJsPjxmb3JtIG1ldGhvZD0nUE9TVCc+PHRyPjx0ZD5VUkwgOiA8aW5wdXQgc2l6ZT01MCBuYW1lPSdyZW1fd2ViJyB2YWx1ZT0naHR0cDovL3d3dy5haml0aGtwNTYwLmhvc3RlaS5jb20vcGhwLyc+PC90ZD48L3RyPg0KPHRyPjx0ZD48Zm9udCBjb2xvcj1HcmVlbj5JbnB1dCBGaWxlJ3MgTmFtZXMgaW4gVGV4dEFyZWE8L2ZvbnQ+PC90cj48L3RkPjx0cj48dGQ+PHRleHRhcmVhIHNwZWxsY2hlY2s9J2ZhbHNlJyBjbGFzcz0ndGV4dGFyZWFfZWRpdCcgY29scz01MCByb3dzPTMwIG5hbWU9J3RyeXp6eic+VG94aWMucGhwDQphaml0aGtwNTYwLnBocA0KaW5kZXguaHRtbA0KcHJvZmlsZS5waHANCmM5OS5waHANCnI1Ny5waHA8L3RleHRhcmVhPjwvdGQ+PC90cj4NCjx0cj48dGQ+PGJyIC8+PGlucHV0IHR5cGU9J3N1Ym1pdCcgdmFsdWU9JyA+PiAnIGNsYXNzPSdpbnB1dF9iaWcnIC8+PGJyIC8+PGJyIC8+PC90ZD48L3RyPjwvZm9ybT48L3RhYmxlPjxiciAvPjxiciAvPjxociAvPjxiciAvPjxiciAvPiI7DQp9DQoNCmZ1bmN0aW9uIHJlbW90ZV9maWxlX2NoZWNrX2JnKCkNCnsNCnNldF90aW1lX2xpbWl0KDApOw0KJHJ0cj1hcnJheSgpOw0KZWNobyAiPGRpdiB

Price: £15.00

Size: Sorry no size information yet available for this artwork.

this image is © abelard. all rights reserved.


advertising
disclaimer

If you are interested in buying one of our artworks, commissioning a piece, or have any questions or comments regarding the art or for the artists, please email the gallery at abelard.org.


advertising disclaimer

© abelard.org 2007,2006,2005. all rights reserved.

the address for this page is https://www.abelard.org/gallery/work.php?id=124.