{"id":54046,"date":"2022-07-21T11:57:01","date_gmt":"2022-07-21T09:57:01","guid":{"rendered":"https:\/\/www.graphistudio.com\/?page_id=54046"},"modified":"2022-08-11T12:56:20","modified_gmt":"2022-08-11T10:56:20","slug":"the-pursuit-of-excellence-workshop-2-2","status":"publish","type":"page","link":"https:\/\/www.graphistudio.com\/fr\/accademia-ceconi\/the-pursuit-of-excellence-workshop-2\/the-pursuit-of-excellence-workshop-2-2\/","title":{"rendered":"The pursuit of excellence &#8211; Workshop"},"content":{"rendered":"<div class=\"wpb-content-wrapper\"><p>[vc_row][vc_column width=\u00a0\u00bb1\/1&Prime;][vc_row_inner][vc_column_inner]<div class=\"spacer\" style=\"height: 40px;\"><\/div>[vc_column_text]<\/p>\n<h1 style=\"text-align: center; margin-bottom: 0;\">THE PURSUIT OF EXCELLENCE<\/h1>\n<h4 style=\"text-align: center;\">5 | 6 | 7 SEPTEMBER 2022<\/h4>\n<p>[\/vc_column_text]<div class=\"spacer\" style=\"height: 40px;\"><\/div>[\/vc_column_inner][\/vc_row_inner][\/vc_column][\/vc_row][vc_row type=\u00a0\u00bbfull_width_section\u00a0\u00bb bg_color=\u00a0\u00bb#eae6df\u00a0\u00bb text_align=\u00a0\u00bbcenter\u00a0\u00bb][vc_column text_align=\u00a0\u00bbcenter\u00a0\u00bb width=\u00a0\u00bb1\/1&Prime;]<div class=\"spacer\" style=\"height: 25px;\"><\/div>[vc_column_text]<\/p>\n<h2 style=\"text-align: center; font-size: 2em;\">The Masters<\/h2>\n<p>[\/vc_column_text][vc_row_inner][vc_column_inner el_class=\u00a0\u00bbht_photographer_photo\u00a0\u00bb width=\u00a0\u00bb1\/3&Prime;]<div class=\"imagebox wpb_content_element style-2\"><div class=\"imagebox-img\"><img decoding=\"async\" src=\"https:\/\/www.graphistudio.com\/wp-content\/uploads\/2022\/06\/adler_BW.jpg\" alt=\"\" \/><\/div>\n<div class=\"ht_photographer_photo_label\">LINDSAY ADLER<\/div>\n<\/div>[\/vc_column_inner][vc_column_inner el_class=\u00a0\u00bbht_photographer_photo\u00a0\u00bb width=\u00a0\u00bb1\/3&Prime;]<div class=\"imagebox wpb_content_element style-1\"><div class=\"imagebox-img\"><img decoding=\"async\" src=\"https:\/\/www.graphistudio.com\/wp-content\/uploads\/2022\/06\/knight_BW.jpg\" alt=\"\" \/><\/div>\n<div class=\"ht_photographer_photo_label\">CHRIS KNIGHT<\/div>\n<\/div>[\/vc_column_inner][vc_column_inner el_class=\u00a0\u00bbht_photographer_photo\u00a0\u00bb width=\u00a0\u00bb1\/3&Prime;]<div class=\"imagebox wpb_content_element style-1\"><div class=\"imagebox-img\"><img decoding=\"async\" src=\"https:\/\/www.graphistudio.com\/wp-content\/uploads\/2022\/06\/jerry_BW.jpg\" alt=\"\" \/><\/div>\n<div class=\"ht_photographer_photo_label\">JERRY GHIONIS<\/div>\n<\/div>[\/vc_column_inner][\/vc_row_inner][\/vc_column][\/vc_row][vc_row top_padding=\u00a0\u00bb60&Prime; bottom_padding=\u00a0\u00bb60&Prime;][vc_column width=\u00a0\u00bb1\/1&Prime;]<div class=\"spacer\" style=\"height: 40px;\"><\/div>[vc_column_text]<\/p>\n<h3 class=\"title_principal\" style=\"text-align: center;\">GRAPHISTUDIO<br \/>\nEDUCATIONAL PROGRAM 2022<\/h3>\n<p>[\/vc_column_text][vc_row_inner][vc_column_inner][vc_column_text][\/vc_column_text][vc_column_text el_id=\u00a0\u00bbif-sold-out\u00a0\u00bb]<\/p>\n<div class=\"disclaymer\" style=\"text-align: center;\" data-available=\"0\">\n<h3>Sold Out!<\/h3>\n<\/div>\n<p>[\/vc_column_text][vc_raw_html]ICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vdG9hc3RpZnktanMvc3JjL3RvYXN0aWZ5Lm1pbi5jc3MiPg0KPGRpdiBjbGFzcz0iY29udGFpbmVyIGRpc2FibGVkIiBkYXRhLXR5cGU9InBheS1mb3JtIiBkYXRhLWF2YWlsYWJsZT0iW2F2YWlsYWJsZV9zZWF0c19mb3JfZ3Nfd29ya3Nob3AgZXZlbnRfaWQ9MiBhbHJlYWR5X3NvbGQ9MTIgYXZhaWxhYmxlX3NlYXRzPTM1XVsvYXZhaWxhYmxlX3NlYXRzX2Zvcl9nc193b3Jrc2hvcF0iPg0KICAgICAgICA8aDQgY2xhc3M9InRpdGxlX3ByaW5jaXBhbCIgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsiPlJFU0VSVkUgWU9VUiBTRUFUPC9oND4NCiAgICAgICAgPGRpdiBjbGFzcz0icm93Ij4NCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC14cyI+DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2VudGVyZWQiIGRhdGEtdHlwZT0ib3V0cHV0Ij48L2Rpdj4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICA8L2Rpdj4NCg0KICAgICAgICA8ZGl2IGNsYXNzPSJyb3ciPg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXhzIj4NCiAgICAgICAgICAgICAgICA8bGFiZWw+Rmlyc3QgTmFtZSA8c3VwPio8L3N1cD48L2xhYmVsPg0KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBwbGFjZWhvbGRlcj0iZXguIE1hcmlvIiBuYW1lPSJuYW1lIiByZXF1aXJlZD0iIiBhdXRvY29tcGxldGU9Im9mZiI+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC14cyI+DQogICAgICAgICAgICAgICAgPGxhYmVsPkxhc3QgTmFtZSA8c3VwPio8L3N1cD48L2xhYmVsPg0KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBwbGFjZWhvbGRlcj0iZXguIFJvc3NpIiBuYW1lPSJzdXJuYW1lIiByZXF1aXJlZD0iIiBhdXRvY29tcGxldGU9Im9mZiI+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgPC9kaXY+DQoNCiAgICAgICAgPGRpdiBjbGFzcz0icm93Ij4NCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC14cyI+DQogICAgICAgICAgICAgICAgPGxhYmVsPkVtYWlsIDxzdXA+Kjwvc3VwPjwvbGFiZWw+DQogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImVtYWlsIiBwbGFjZWhvbGRlcj0iZXguIHlvdXJAZW1haWwuaXQiIG5hbWU9ImVtYWlsIiByZXF1aXJlZD0iIiBhdXRvY29tcGxldGU9Im9mZiI+DQogICAgICAgICAgICA8L2Rpdj4NCg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXhzIj4NCiAgICAgICAgICAgICAgICA8bGFiZWw+VGVsZXBob25lIDxzdXA+Kjwvc3VwPjwvbGFiZWw+DQogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIHBsYWNlaG9sZGVyPSJleC4gKzM5IDM0MCAxMjM0NTYiIG5hbWU9InRlbGVwaG9uZSIgcmVxdWlyZWQ9IiIgYXV0b2NvbXBsZXRlPSJvZmYiPg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgIDwvZGl2Pg0KDQogICAgICAgIDxkaXYgY2xhc3M9InJvdyI+DQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wteHMiPg0KICAgICAgICAgICAgICAgIDxsYWJlbD5Db3VudHJ5IDxzdXA+Kjwvc3VwPjwvbGFiZWw+DQogICAgICAgICAgICAgICAgPHNlbGVjdCBuYW1lPSJjb3VudHJ5X2NvZGUiIHJlcXVpcmVkPSIiPg0KICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIiPlNlbGVjdC4uLi48L29wdGlvbj4NCiAgICAgICAgICAgICAgICAgICAgPG9wdGdyb3VwIGxhYmVsPSIiPjxvcHRpb24gdmFsdWU9IkFVIj5BdXN0cmFsaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJERSI+R2VybWFueTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkVTIj5TcGFpbjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkZSIj5GcmFuY2U8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJHQiI+VW5pdGVkIEtpbmdkb208L29wdGlvbj48b3B0aW9uIHZhbHVlPSJJVCI+SXRhbGlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iVVMiPlVuaXRlZCBTdGF0ZXM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJDQSI+Q2FuYWRhPC9vcHRpb24+PC9vcHRncm91cD48b3B0Z3JvdXAgbGFiZWw9IiI+PG9wdGlvbiB2YWx1ZT0iQUYiPkFmZ2hhbmlzdGFuPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iQUwiPkFsYmFuaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJEWiI+QWxnZXJpYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkFTIj5BbWVyaWNhbiBTYW1vYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkFEIj5BbmRvcnJhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iQU8iPkFuZ29sYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkFJIj5Bbmd1aWxsYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkFRIj5BbnRhcmN0aWNhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iQUciPkFudGlndWEgYW5kIEJhcmJ1ZGE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJBUiI+QXJnZW50aW5hPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iQU0iPkFybWVuaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJBVyI+QXJ1YmE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJBVSI+QXVzdHJhbGlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iQVQiPkF1c3RyaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJBWiI+QXplcmJhaWphbjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkJTIj5CYWhhbWFzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iQkgiPkJhaHJhaW48L29wdGlvbj48b3B0aW9uIHZhbHVlPSJCRCI+QmFuZ2xhZGVzaDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkJCIj5CYXJiYWRvczwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkJZIj5CZWxhcnVzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iQkUiPkJlbGdpdW08L29wdGlvbj48b3B0aW9uIHZhbHVlPSJCWiI+QmVsaXplPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iQkoiPkJlbmluPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iQk0iPkJlcm11ZGE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJCVCI+Qmh1dGFuPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iQk8iPkJvbGl2aWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJCQSI+Qm9zbmlhIGFuZCBIZXJ6ZWdvdmluYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkJXIj5Cb3Rzd2FuYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkJWIj5Cb3V2ZXQgSXNsYW5kPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iQlIiPkJyYXppbDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IklPIj5Ccml0aXNoIEluZGlhbiBPY2VhbiBUZXJyaXRvcnk8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJCTiI+QnJ1bmVpIERhcnVzc2FsYW08L29wdGlvbj48b3B0aW9uIHZhbHVlPSJCRyI+QnVsZ2FyaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJCRiI+QnVya2luYSBGYXNvPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iQkkiPkJ1cnVuZGk8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJLSCI+Q2FtYm9kaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJDTSI+Q2FtZXJvb248L29wdGlvbj48b3B0aW9uIHZhbHVlPSJDViI+Q2FwZSBWZXJkZTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IktZIj5DYXltYW4gSXNsYW5kczwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkNGIj5DZW50cmFsIEFmcmljYW4gUmVwdWJsaWM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJURCI+Q2hhZDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkNMIj5DaGlsZTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkNOIj5DaGluYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkNYIj5DaHJpc3RtYXMgSXNsYW5kPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iQ0MiPkNvY29zIChLZWVsaW5nKSBJc2xhbmRzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iQ08iPkNvbG9tYmlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iS00iPkNvbW9yb3M8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJDRyI+Q29uZ288L29wdGlvbj48b3B0aW9uIHZhbHVlPSJDRCI+Q29uZ28sIHRoZSBEZW1vY3JhdGljIFJlcHVibGljIG9mIHRoZTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkNLIj5Db29rIElzbGFuZHM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJDUiI+Q29zdGEgUmljYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkNJIj5Db3RlIEQnSXZvaXJlPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iSFIiPkNyb2F0aWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJDVSI+Q3ViYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkNZIj5DeXBydXM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJDWiI+Q3plY2ggUmVwdWJsaWM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJESyI+RGVubWFyazwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkRKIj5Eamlib3V0aTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkRNIj5Eb21pbmljYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkRPIj5Eb21pbmljYW4gUmVwdWJsaWM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJFQyI+RWN1YWRvcjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkVHIj5FZ3lwdDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlNWIj5FbCBTYWx2YWRvcjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkdRIj5FcXVhdG9yaWFsIEd1aW5lYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkVSIj5Fcml0cmVhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iRUUiPkVzdG9uaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJFVCI+RXRoaW9waWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJGSyI+RmFsa2xhbmQgSXNsYW5kcyAoTWFsdmluYXMpPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iRk8iPkZhcm9lIElzbGFuZHM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJGSiI+RmlqaTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkZJIj5GaW5sYW5kPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iR0YiPkZyZW5jaCBHdWlhbmE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJQRiI+RnJlbmNoIFBvbHluZXNpYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlRGIj5GcmVuY2ggU291dGhlcm4gVGVycml0b3JpZXM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJHQSI+R2Fib248L29wdGlvbj48b3B0aW9uIHZhbHVlPSJHTSI+R2FtYmlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iR0UiPkdlb3JnaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJERSI+R2VybWFueTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkdIIj5HaGFuYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkdJIj5HaWJyYWx0YXI8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJHUiI+R3JlZWNlPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iR0wiPkdyZWVubGFuZDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkdEIj5HcmVuYWRhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iR1AiPkd1YWRlbG91cGU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJHVSI+R3VhbTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkdUIj5HdWF0ZW1hbGE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJHTiI+R3VpbmVhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iR1ciPkd1aW5lYS1CaXNzYXU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJHWSI+R3V5YW5hPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iSFQiPkhhaXRpPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iSE0iPkhlYXJkIElzbGFuZCBhbmQgTWNkb25hbGQgSXNsYW5kczwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlZBIj5Ib2x5IFNlZSAoVmF0aWNhbiBDaXR5IFN0YXRlKTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkhOIj5Ib25kdXJhczwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkhLIj5Ib25nIEtvbmc8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJIVSI+SHVuZ2FyeTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IklTIj5JY2VsYW5kPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iSU4iPkluZGlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iSUQiPkluZG9uZXNpYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IklSIj5JcmFuLCBJc2xhbWljIFJlcHVibGljIG9mPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iSVEiPklyYXE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJJRSI+SXJlbGFuZDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IklMIj5Jc3JhZWw8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJKTSI+SmFtYWljYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkpQIj5KYXBhbjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkpPIj5Kb3JkYW48L29wdGlvbj48b3B0aW9uIHZhbHVlPSJLWiI+S2F6YWtoc3Rhbjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IktFIj5LZW55YTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IktJIj5LaXJpYmF0aTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IktQIj5Lb3JlYSwgRGVtb2NyYXRpYyBQZW9wbGUncyBSZXB1YmxpYyBvZjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IktSIj5Lb3JlYSwgUmVwdWJsaWMgb2Y8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJLVyI+S3V3YWl0PC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iS0ciPkt5cmd5enN0YW48L29wdGlvbj48b3B0aW9uIHZhbHVlPSJMQSI+TGFvIFBlb3BsZSdzIERlbW9jcmF0aWMgUmVwdWJsaWM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJMViI+TGF0dmlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iTEIiPkxlYmFub248L29wdGlvbj48b3B0aW9uIHZhbHVlPSJMUyI+TGVzb3Robzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkxSIj5MaWJlcmlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iTFkiPkxpYnlhbiBBcmFiIEphbWFoaXJpeWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJMSSI+TGllY2h0ZW5zdGVpbjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkxUIj5MaXRodWFuaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJMVSI+THV4ZW1ib3VyZzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Ik1PIj5NYWNhbzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Ik1LIj5NYWNlZG9uaWEsIHRoZSBGb3JtZXIgWXVnb3NsYXYgUmVwdWJsaWMgb2Y8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJNRyI+TWFkYWdhc2Nhcjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Ik1XIj5NYWxhd2k8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJNWSI+TWFsYXlzaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJNViI+TWFsZGl2ZXM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJNTCI+TWFsaTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Ik1UIj5NYWx0YTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Ik1IIj5NYXJzaGFsbCBJc2xhbmRzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iTVEiPk1hcnRpbmlxdWU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJNUiI+TWF1cml0YW5pYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Ik1VIj5NYXVyaXRpdXM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJZVCI+TWF5b3R0ZTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Ik1YIj5NZXhpY288L29wdGlvbj48b3B0aW9uIHZhbHVlPSJGTSI+TWljcm9uZXNpYSwgRmVkZXJhdGVkIFN0YXRlcyBvZjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Ik1EIj5Nb2xkb3ZhLCBSZXB1YmxpYyBvZjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Ik1DIj5Nb25hY288L29wdGlvbj48b3B0aW9uIHZhbHVlPSJNTiI+TW9uZ29saWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJNUyI+TW9udHNlcnJhdDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Ik1BIj5Nb3JvY2NvPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iTVoiPk1vemFtYmlxdWU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJNTSI+TXlhbm1hcjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Ik5BIj5OYW1pYmlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iTlIiPk5hdXJ1PC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iTlAiPk5lcGFsPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iTkwiPk5ldGhlcmxhbmRzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iQU4iPk5ldGhlcmxhbmRzIEFudGlsbGVzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iTkMiPk5ldyBDYWxlZG9uaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJOWiI+TmV3IFplYWxhbmQ8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJOSSI+TmljYXJhZ3VhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iTkUiPk5pZ2VyPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iTkciPk5pZ2VyaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJOVSI+Tml1ZTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Ik5GIj5Ob3Jmb2xrIElzbGFuZDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Ik1QIj5Ob3J0aGVybiBNYXJpYW5hIElzbGFuZHM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJOTyI+Tm9yd2F5PC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iT00iPk9tYW48L29wdGlvbj48b3B0aW9uIHZhbHVlPSJQSyI+UGFraXN0YW48L29wdGlvbj48b3B0aW9uIHZhbHVlPSJQVyI+UGFsYXU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJQUyI+UGFsZXN0aW5pYW4gVGVycml0b3J5LCBPY2N1cGllZDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlBBIj5QYW5hbWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJQRyI+UGFwdWEgTmV3IEd1aW5lYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlBZIj5QYXJhZ3VheTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlBFIj5QZXJ1PC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iUEgiPlBoaWxpcHBpbmVzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iUE4iPlBpdGNhaXJuPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iUEwiPlBvbGFuZDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlBUIj5Qb3J0dWdhbDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlBSIj5QdWVydG8gUmljbzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlFBIj5RYXRhcjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlJFIj5SZXVuaW9uPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iUk8iPlJvbWFuaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJSVSI+UnVzc2lhbiBGZWRlcmF0aW9uPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iUlciPlJ3YW5kYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlNIIj5TYWludCBIZWxlbmE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJLTiI+U2FpbnQgS2l0dHMgYW5kIE5ldmlzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iTEMiPlNhaW50IEx1Y2lhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iUE0iPlNhaW50IFBpZXJyZSBhbmQgTWlxdWVsb248L29wdGlvbj48b3B0aW9uIHZhbHVlPSJWQyI+U2FpbnQgVmluY2VudCBhbmQgdGhlIEdyZW5hZGluZXM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJXUyI+U2Ftb2E8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJTTSI+U2FuIE1hcmlubzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlNUIj5TYW8gVG9tZSBhbmQgUHJpbmNpcGU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJTQSI+U2F1ZGkgQXJhYmlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iU04iPlNlbmVnYWw8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJDUyI+U2VyYmlhIGFuZCBNb250ZW5lZ3JvPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iU0MiPlNleWNoZWxsZXM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJTTCI+U2llcnJhIExlb25lPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iU0ciPlNpbmdhcG9yZTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlNLIj5TbG92YWtpYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlNJIj5TbG92ZW5pYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlNCIj5Tb2xvbW9uIElzbGFuZHM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJTTyI+U29tYWxpYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlpBIj5Tb3V0aCBBZnJpY2E8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJHUyI+U291dGggR2VvcmdpYSBhbmQgdGhlIFNvdXRoIFNhbmR3aWNoIElzbGFuZHM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJFUyI+U3BhaW48L29wdGlvbj48b3B0aW9uIHZhbHVlPSJMSyI+U3JpIExhbmthPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iU0QiPlN1ZGFuPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iU1IiPlN1cmluYW1lPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iU0oiPlN2YWxiYXJkIGFuZCBKYW4gTWF5ZW48L29wdGlvbj48b3B0aW9uIHZhbHVlPSJTWiI+U3dhemlsYW5kPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iU0UiPlN3ZWRlbjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkNIIj5Td2l0emVybGFuZDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlNZIj5TeXJpYW4gQXJhYiBSZXB1YmxpYzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlRXIj5UYWl3YW4sIFByb3ZpbmNlIG9mIENoaW5hPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iVEoiPlRhamlraXN0YW48L29wdGlvbj48b3B0aW9uIHZhbHVlPSJUWiI+VGFuemFuaWEsIFVuaXRlZCBSZXB1YmxpYyBvZjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlRIIj5UaGFpbGFuZDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlRMIj5UaW1vci1MZXN0ZTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlRHIj5Ub2dvPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iVEsiPlRva2VsYXU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJUTyI+VG9uZ2E8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJUVCI+VHJpbmlkYWQgYW5kIFRvYmFnbzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlROIj5UdW5pc2lhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iVFIiPlR1cmtleTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlRNIj5UdXJrbWVuaXN0YW48L29wdGlvbj48b3B0aW9uIHZhbHVlPSJUQyI+VHVya3MgYW5kIENhaWNvcyBJc2xhbmRzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iVFYiPlR1dmFsdTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlVHIj5VZ2FuZGE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJVQSI+VWtyYWluZTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkFFIj5Vbml0ZWQgQXJhYiBFbWlyYXRlczwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlVNIj5Vbml0ZWQgU3RhdGVzIE1pbm9yIE91dGx5aW5nIElzbGFuZHM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJVWSI+VXJ1Z3VheTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlVaIj5VemJla2lzdGFuPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iVlUiPlZhbnVhdHU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJWRSI+VmVuZXp1ZWxhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iVk4iPlZpZXQgTmFtPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iVkciPlZpcmdpbiBJc2xhbmRzLCBCcml0aXNoPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iVkkiPlZpcmdpbiBJc2xhbmRzLCBVLnMuPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iV0YiPldhbGxpcyBhbmQgRnV0dW5hPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iRUgiPldlc3Rlcm4gU2FoYXJhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iWUUiPlllbWVuPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iWk0iPlphbWJpYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlpXIj5aaW1iYWJ3ZTwvb3B0aW9uPjwvb3B0Z3JvdXA+ICAgICAgICAgICAgICAgIDwvc2VsZWN0Pg0KICAgICAgICAgICAgPC9kaXY+DQoNCiAgICAgICAgICAgIDxkaXYgZGF0YS10eXBlPSJzdGF0ZSIgY2xhc3M9ImNvbC14cyBjb2wteHMtMiBzdGF0ZXMtY29sIj4NCiAgICAgICAgICAgICAgICA8bGFiZWw+U3RhdGUgPHN1cD4qPC9zdXA+PC9sYWJlbD4NCiAgICAgICAgICAgICAgICA8c2VsZWN0IGRhdGEtZm9yPSJ1c2EiIG5hbWU9InN0YXRlIiBkaXNhYmxlZD0iIj4NCiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iIj5TZWxlY3QuLi4uPC9vcHRpb24+DQogICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkFMIj5BbGFiYW1hPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iQUsiPkFsYXNrYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkFaIj5Bcml6b25hPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iQVIiPkFya2Fuc2FzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iQ0EiPkNhbGlmb3JuaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJDTyI+Q29sb3JhZG88L29wdGlvbj48b3B0aW9uIHZhbHVlPSJDVCI+Q29ubmVjdGljdXQ8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJERSI+RGVsYXdhcmU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJEQyI+RGlzdHJpY3QgT2YgQ29sdW1iaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJGTCI+RmxvcmlkYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkdBIj5HZW9yZ2lhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iSEkiPkhhd2FpaTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IklEIj5JZGFobzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IklMIj5JbGxpbm9pczwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IklOIj5JbmRpYW5hPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iSUEiPklvd2E8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJLUyI+S2Fuc2FzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iS1kiPktlbnR1Y2t5PC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iTEEiPkxvdWlzaWFuYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Ik1FIj5NYWluZTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Ik1EIj5NYXJ5bGFuZDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Ik1BIj5NYXNzYWNodXNldHRzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iTUkiPk1pY2hpZ2FuPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iTU4iPk1pbm5lc290YTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Ik1TIj5NaXNzaXNzaXBwaTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Ik1PIj5NaXNzb3VyaTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Ik1UIj5Nb250YW5hPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iTkUiPk5lYnJhc2thPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iTlYiPk5ldmFkYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Ik5IIj5OZXcgSGFtcHNoaXJlPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iTkoiPk5ldyBKZXJzZXk8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJOTSI+TmV3IE1leGljbzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Ik5ZIj5OZXcgWW9yazwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Ik5DIj5Ob3J0aCBDYXJvbGluYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Ik5EIj5Ob3J0aCBEYWtvdGE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJPSCI+T2hpbzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Ik9LIj5Pa2xhaG9tYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Ik9SIj5PcmVnb248L29wdGlvbj48b3B0aW9uIHZhbHVlPSJQQSI+UGVubnN5bHZhbmlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iUkkiPlJob2RlIElzbGFuZDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlNDIj5Tb3V0aCBDYXJvbGluYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlNEIj5Tb3V0aCBEYWtvdGE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJUTiI+VGVubmVzc2VlPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iVFgiPlRleGFzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iVVQiPlV0YWg8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJWVCI+VmVybW9udDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlZBIj5WaXJnaW5pYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IldBIj5XYXNoaW5ndG9uPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iV1YiPldlc3QgVmlyZ2luaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJXSSI+V2lzY29uc2luPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iV1kiPld5b21pbmc8L29wdGlvbj4gICAgICAgICAgICAgICAgPC9zZWxlY3Q+DQogICAgICAgICAgICAgICAgPHNlbGVjdCBkYXRhLWZvcj0iY2FuYWRhIiBuYW1lPSJzdGF0ZSIgZGlzYWJsZWQ9IiI+DQogICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IiI+U2VsZWN0Li4uLjwvb3B0aW9uPg0KICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJCQyI+QnJpdGlzaCBDb2x1bWJpYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Ik9OIj5PbnRhcmlvPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iTkwiPk5ld2ZvdW5kbGFuZCBhbmQgTGFicmFkb3I8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJOUyI+Tm92YSBTY290aWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJQRSI+UHJpbmNlIEVkd2FyZCBJc2xhbmQ8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJOQiI+TmV3IEJydW5zd2ljazwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlFDIj5RdWViZWM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJNQiI+TWFuaXRvYmE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJTSyI+U2Fza2F0Y2hld2FuPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iQUIiPkFsYmVydGE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJOVCI+Tm9ydGh3ZXN0IFRlcnJpdG9yaWVzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iTlUiPk51bmF2dXQ8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJZVCI+WXVrb24gVGVycml0b3J5PC9vcHRpb24+ICAgICAgICAgICAgICAgIDwvc2VsZWN0Pg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgIDwvZGl2Pg0KDQogICAgICAgIDxkaXYgY2xhc3M9InJvdyIgZGF0YS10eXBlPSJhZGRyZXNzLWJsb2NrIj4NCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC14cyI+DQogICAgICAgICAgICAgICAgPGxhYmVsPkNpdHkgPHN1cD4qPC9zdXA+PC9sYWJlbD4NCiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgcGxhY2Vob2xkZXI9ImV4LiBBcmJhIiBuYW1lPSJjaXR5IiByZXF1aXJlZD0iIiBhdXRvY29tcGxldGU9Im9mZiI+DQogICAgICAgICAgICA8L2Rpdj4NCg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXhzIGNvbC14cy0yIj4NCiAgICAgICAgICAgICAgICA8bGFiZWw+QWRkcmVzcyA8c3VwPio8L3N1cD48L2xhYmVsPg0KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBwbGFjZWhvbGRlcj0iZXguIE1vbnRlIFJhdXQsIDEiIG5hbWU9InN0cmVldCIgcmVxdWlyZWQ9IiIgYXV0b2NvbXBsZXRlPSJvZmYiPg0KICAgICAgICAgICAgPC9kaXY+DQoNCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC14cyI+DQogICAgICAgICAgICAgICAgPGxhYmVsPlppcCA8c3VwPio8L3N1cD48L2xhYmVsPg0KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBtaW49IjUiIHBsYWNlaG9sZGVyPSJleC4gMzMwODAiIG5hbWU9InppcCIgcmVxdWlyZWQ9IiIgYXV0b2NvbXBsZXRlPSJvZmYiPg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgIDwvZGl2Pg0KICAgICAgIA0KICAgICAgICA8ZGl2IGRhdGEtdHlwZT0idmF0LWJsb2NrIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPg0KICAgICAgICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBjbGFzcz0iYXBwbGUtc3dpdGNoIiBpZD0iaGF2ZV9hX2NvbXBhbnkiIG5hbWU9ImhhdmVfYV9jb21wYW55IiB2YWx1ZT0iMSIgYXV0b2NvbXBsZXRlPSJvZmYiPg0KICAgICAgICAgICAgPGxhYmVsIGZvcj0iaGF2ZV9hX2NvbXBhbnkiPkkgaGF2ZSBhIHZhbGlkIFZBVCBOdW1iZXI8L2xhYmVsPg0KDQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ciIGRhdGEtdHlwZT0iZm9yLWNvbXBhbnkiPg0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC14cyI+DQogICAgICAgICAgICAgICAgICAgIDxsYWJlbD5Db21wYW55IE5hbWUgPHN1cD4qPC9zdXA+PC9sYWJlbD4NCiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIHBsYWNlaG9sZGVyPSJleC4gR3JhcGhpc3R1ZGlvIiBuYW1lPSJjb21wYW55IiBhdXRvY29tcGxldGU9Im9mZiI+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXhzIj4NCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlZhdCA8c3VwPio8L3N1cD48L2xhYmVsPg0KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgcGxhY2Vob2xkZXI9ImV4LiAwMTIzNDU2ODciIG5hbWU9InZhdCIgYXV0b2NvbXBsZXRlPSJvZmYiPg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgPC9kaXY+DQoNCiAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyIgZGF0YS10eXBlPSJmb3ItY29tcGFueSI+DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXhzIj4NCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsPkNvbXBhbnkgQWRkcmVzcyA8c3VwPio8L3N1cD48L2xhYmVsPg0KICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgcGxhY2Vob2xkZXI9IllvdXIgY29tcGFueSBmdWxsIGFkZHJlc3MuLi4iIG5hbWU9ImFkZHJlc3MiIHJvd3M9IjQiIGNvbHM9IjUwIiBhdXRvY29tcGxldGU9Im9mZiI+PC90ZXh0YXJlYT4NCiAgICAgICAgICAgICAgICAgICAgPGRldGFpbHM+DQogICAgICAgICAgICAgICAgICAgICAgICA8c3VtbWFyeT5OZWVkIGhlbHAgd2l0aCB0aGlzIGZpZWxkPzwvc3VtbWFyeT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz5BIGZ1bGwgYWRkcmVzcyBleGFtcGxlOjwvc3Ryb25nPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxicj48YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlZXQgbmFtZSwgbnVtYmVyPGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6aXAgLSBjaXR5IChzdGF0ZSk8YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lbT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICA8L2RldGFpbHM+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICA8L2Rpdj4NCg0KICAgICAgICAgICAgPGRpdiBkYXRhLXN1YnR5cGU9ImRpc2NsYWltZXIiPg0KICAgICAgICAgICAgICAgICAgICBJZiB0aGUgVkFUIG51bWJlciBwcm92aWRlZCBpcyB2YWxpZCwgR3JhcGhpc3R1ZGlvIHdpbGwgcmVmdW5kIHlvdSB0aGUgZnVsbCBWQVQgYW1vdW50IQ0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgIDwvZGl2Pg0KDQogICAgICAgIDxkaXYgY2xhc3M9InJvdyIgZGF0YS10eXBlPSJzcGxpdC1wYXltZW50Ij4NCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC14cyI+DQogICAgICAgICAgICAgICAgPGxhYmVsPlBheW1lbnQgT3B0aW9uIDxzdXA+Kjwvc3VwPjwvbGFiZWw+DQogICAgICAgICAgICAgICAgPHNlbGVjdCBuYW1lPSJwYXltZW50LXR5cGUiIHJlcXVpcmVkPg0KICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJmdWxsIiBjaGVja2VkPkkgd2FudCB0byBwYXkgdGhlIGZ1bGwgYW1vdW50IGltbWVkaWF0ZWx5PC9vcHRpb24+DQogICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9ImhhbGYiPkkgcHJlZmVyIHRvIHBheSBoYWxmIG5vdyBhbmQgdGhlIHJlbWFpbmluZyBoYWxmIDIgd2Vla3MgYmVmb3JlIHRoZSBldmVudDwvb3B0aW9uPg0KICAgICAgICAgICAgICAgIDwvc2VsZWN0Pg0KICAgICAgICAgICAgICAgIDxwPg0KICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGNob29zZSB0byBwYXkgdGhlIHdob2xlIGFtb3VudCBpbW1lZGlhdGVseSBvciByZXNlcnZlIHlvdXIgc2VhdCBieSBwYXlpbmcgaGFsZiBhbW91bnQgbm93DQogICAgICAgICAgICAgICAgICAgIGFuZCB0aGUgcmVtYWluaW5nIGhhbGYgMiB3ZWVrcyBiZWZvcmUgdGhlIGV2ZW50IQ0KICAgICAgICAgICAgICAgIDwvcD4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICA8L2Rpdj4NCg0KICAgICAgICA8ZGl2IGNsYXNzPSJyb3ciPg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXhzIiBkYXRhLXR5cGU9ImNvdXBvbi1jb2RlIj4NCiAgICAgICAgICAgICAgICA8cD5EbyB5b3UgaGF2ZSBhIERpc2NvdW50IENvZGU\/IEFwcGx5IGhlcmUhPC9wPg0KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJzZWFyY2giIG5hbWU9InByb21vLWNvZGUiIGF1dG9jb21wbGV0ZT0ib2ZmIj4NCiAgICAgICAgICAgICAgICA8cCBkYXRhLXR5cGU9ImFwcGxpZWQtY291cG9uIj48L3A+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgPC9kaXY+DQoNCiAgICAgICAgPGRpdiBjbGFzcz0icm93Ij4NCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC14cyIgZGF0YS10eXBlPSJwcml2YWN5Ij4NCiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIGNsYXNzPSJhcHBsZS1zd2l0Y2giIGlkPSJwcml2YWN5IiBuYW1lPSJwcml2YWN5IiB2YWx1ZT0iMSIgcmVxdWlyZWQ9IiIgYXV0b2NvbXBsZXRlPSJvZmYiPg0KICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9InByaXZhY3kiPkNvbnNlbnQgdG8gdGhlIHByb2Nlc3Npbmcgb2YgcGVyc29uYWwgZGF0YSA8c3VwPio8L3N1cD48L2xhYmVsPg0KICAgICAgICAgICAgICAgIDxwPg0KICAgICAgICAgICAgICAgICAgICBJIGhhdmUgcmVhZCB0aGUgPGEgaHJlZj0iaHR0cHM6Ly93d3cuZ3JhcGhpc3R1ZGlvLmNvbS9mci9wcml2YWN5LyIgdGFyZ2V0PSJfYmxhbmsiPnByaXZhY3kgcG9saWN5PC9hPiBhbmQgSSBhdXRob3Jpc2UgdGhlIHRyZWF0bWVudCBvZiBteSBwZXJzb25hbCBkYXRhIGhlcmUgcHJvdmlkZWQuDQogICAgICAgICAgICAgICAgPC9wPg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgIDwvZGl2Pg0KICAgICAgICA8ZGl2IGNsYXNzPSJyb3ciPg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXhzIiBkYXRhLXR5cGU9InRlcm1zIiBkYXRhLWZvcj0iYWxsIj4NCiAgICAgICAgICAgICAgICA8ZGl2Pg0KICAgICAgICAgICAgICAgICAgICA8aDM+VGVybXMgJiBDb25kaXRpb25zPC9oMz4NCiAgICAgICAgICAgICAgICAgICAgPHVsPg0KICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICA8bGk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsIHRpY2tldHMgZm9yIHRoZSB3b3Jrc2hvcCBzaGFsbCBiZSBub24tcmVmdW5kYWJsZSDigJMgaWYgeW91IGhhdmUgYSBzdWJzdGl0dXRlIHRvIGF0dGVuZCB0aGUgd29ya3Nob3AsIHBsZWFzZSBjb250YWN0IHlvdXIgR3JhcGhpc3R1ZGlvIHNhbGVzIHJlcHJlc2VudGF0aXZlIHdpdGggdGhlIGRldGFpbHMuDQogICAgICAgICAgICAgICAgICAgICAgICA8L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+Q2FuY2VsbGF0aW9uIFBvbGljeTo8L3N0cm9uZz48YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgdGhlIHdvcmtzaG9wIGlzIGNhbmNlbGxlZCBmb3IgcmVhc29ucyBvdXIgb2Ygb3VyIGNvbnRyb2wgeW91IHdpbGwgYmUgcHJvdmlkZWQgd2l0aCBhIGZ1bGwgcmVmdW5kLg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPlByb21vdGlvbmFsOjwvc3Ryb25nPjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgYWdyZWUgdGhhdCB3ZSBtYXkgaW5jbHVkZSB5b3VyIGRldGFpbHMgaW4gYW55IHByb21vdGlvbmFsIG1hdGVyaWFscyByZWxhdGluZyB0byB0aGUgd29ya3Nob3AgYW5kIG9yIG1hdGVyaWFscyB1c2VkIGF0IHRoZSB3b3Jrc2hvcC4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+DQogICAgICAgICAgICAgICAgICAgICAgICA8bGk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz5QaG90b3RvZ3JhcGh5ICYgZmlsbWluZyAvIG1vZGVsIHJlbGVhc2U6PC9zdHJvbmc+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlIG1heSBwaG90b2dyYXBoIG9yIGZpbG0gdGhlIHdvcmtzaG9wIGFuZCByZXNlcnZlIHRoZSByaWdodCB0byBkbyBzbyBmb3IgcHVycG9zZXMgb2YgcHJvbW90aW5nIGZ1dHVyZSB3b3Jrc2hvcHMgb3Igb3RoZXJ3aXNlLiAgWW91IGNvbnNlbnQgdG8gdXMgcGhvdG9ncmFwaGluZyBvciBmaWxtaW5nIHlvdSBhbmQgYW55IGF0dGVuZGVlIGF0dGVuZGluZyB0aGUgd29ya3Nob3AuDQogICAgICAgICAgICAgICAgICAgICAgICA8L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+VHJhdmVsICYgYWNjb21tb2RhdGlvbnM6PC9zdHJvbmc+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBzaGFsbCBiZSByZXNwb25zaWJsZSBmb3IgbWFraW5nIGFuZCBwYXlpbmcgeW91ciBhaXJmYXJlIGFuZCBob3RlbCBhY2NvbW1vZGF0aW9ucyBmb3IgdGhlIHdvcmtzaG9wLiBJZiB5b3UgYXJyaXZlIGF0IGEgZGVzaWduZWQgdGltZSBvdXRzaWRlIG9mIHRoZSBwcmUtYXJyYW5nZWQgcGljayB1cCB0aW1lcywgeW91IHdpbGwgYmUgcmVzcG9uc2libGUgZm9yIHlvdXIgb3duIHRyYW5zcG9ydGF0aW9uLg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPkZhbWlseSBtZW1iZXJzOjwvc3Ryb25nPjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgd29ya3Nob3AsIHRyYW5zcG9ydGF0aW9uLCBhbmQgbWVhbCBzZXJ2aWNlcyBhcmUgcHJvdmlkZWQgZm9yIHBhaWQgYXR0ZW5kZWVzIG9ubHksIHRoaXMgaXMgbm90IGV4dGVuZGVkIHRvIGFuZCBmb3IgYXR0ZW5kZWUgZmFtaWx5IG1lbWJlcnMuDQogICAgICAgICAgICAgICAgICAgICAgICA8L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+VHJhbnNsYXRpb246PC9zdHJvbmc+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vIHRyYW5zbGF0aW9uIHdpbGwgYmUgcHJvdmlkZWQsIHRoZSB3b3Jrc2hvcCB3aWxsIGJlIGluIEVuZ2xpc2guDQogICAgICAgICAgICAgICAgICAgICAgICA8L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+VHJhdmVsIEluc3VyYW5jZTo8L3N0cm9uZz48YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgRWFjaCBwYXJ0aWNpcGFudCBjb25maXJtcyB0aGV5IHVuZGVyc3RhbmQgYW5kIGFncmVlIHRvIHB1cmNoYXNlIHRoZSByZXF1aXJlZCBpbnN1cmFuY2UgdGhhdCBpcyB2YWxpZCBpbnRlcm5hdGlvbmFsbHkuIFN1Z2dlc3RlZCBpbnN1cmFuY2UgaW5jbHVkZXM6IEFjY2lkZW50ICYgU2lja25lc3MgTWVkaWNhbCBFeHBlbnNlIENvdmVyYWdlLiBTdG9sZW4sIGxvc3Qgb3IgZGFtYWdlZCBwcm9wZXJ0eSBjb3ZlcmFnZS4gVHJpcCBjYW5jZWxsYXRpb24gY292ZXJhZ2UuDQogICAgICAgICAgICAgICAgICAgICAgICA8L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+QXNzdW1wdGlvbiBvZiBSaXNrOjwvc3Ryb25nPjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGwgYXR0ZW5kZWVzIHVuZGVyc3RhbmQgYW5kIGFyZSBpbiBmdWxsIGF3YXJlbmVzcyBhbmQgYXNzdW1lIGZ1bGwgYW5kIGNvbXBsZXRlIHJlc3BvbnNpYmlsaXR5IGZvciBhbGwgcmlza3MgaW5oZXJlbnQgaW4gdHJhdmVsIGFuZCBhdHRlbmRlZSB0aGUgd29ya3Nob3Agd291bGQgY291bGQgaW5jbHVkZSBpbmp1cnksIGNvdmlkLCBwcm9wZXJ0eSBkYW1hZ2UsIGFuZCBvciBhbnkgb3RoZXIga2luZCBvZiBsaWFiaWxpdHkuDQogICAgICAgICAgICAgICAgICAgICAgICA8L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+VHJhbnNwb3J0YXRpb246PC9zdHJvbmc+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIGF0dGVuZGVlcyBuZWVkIHRvIGxlYXZlIHByaW9yIHRvIHRoZSBmYWN0b3J5IHRvdXIsIHRoZXkgd2lsbCBiZSByZXNwb25zaWJsZSBmb3IgYXJyYW5naW5nIHRoZWlyIHRyYW5zcG9ydGF0aW9uIHRvIHRoZSBWZW5pY2UgYWlycG9ydC4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+DQogICAgICAgICAgICAgICAgICAgICAgICA8bGk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz5Gb29kIHJlc3RyaWN0aW9uczo8L3N0cm9uZz48YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgQXR0ZW5kZWVzIHdpdGggZm9vZCByZXN0cmljdGlvbnMsIHdlIHdpbGwgaGF2ZSBnbHV0ZW4gZnJlZSBhbmQgdmVnYW4vdmVnZXRhcmlhbiBvcHRpb25zICBmb3IgbHVuY2ggYW5kIGRpbm5lcg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0ib25seS1mb3ItZXUiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+VkFUIElORk86PC9zdHJvbmc+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0YWxpYW4gVkFUIHdpbGwgYmUgY2hhcmdlZCBvbiByZXNlcnZhdGlvbnMgcGxhY2VkIGJ5IGNsaWVudHMgZnJvbSBFdXJvcGVhbiBVbmlvbi4gDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJub3QtZm9yLUlUIj4sIGJ1dCBpZiB0aGUgVkFUIG51bWJlciBwcm92aWRlZCBpcyB2YWxpZCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgdGhlIFZBVCBudW1iZXIgcHJvdmlkZWQgaXMgdmFsaWQsIEdyYXBoaXN0dWRpbyB3aWxsIGxhdGVyIHJlZnVuZCB5b3UgdGhlIGZ1bGwgVkFUIGFtb3VudC4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4NCiAgICAgICAgICAgICAgICAgICAgPC91bD4NCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIGNsYXNzPSJhcHBsZS1zd2l0Y2giIGlkPSJ0ZXJtcyIgbmFtZT0idGVybXMiIHZhbHVlPSIxIiByZXF1aXJlZCBhdXRvY29tcGxldGU9Im9mZiI+DQogICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0idGVybXMiPkkgYWNjZXB0IHRoZSBUZXJtcyAmIENvbmRpdGlvbnMgPHN1cD4qPC9zdXA+PC9sYWJlbD4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICA8L2Rpdj4NCg0KICAgICAgICA8ZGl2IGNsYXNzPSJyb3ciPg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXhzIiBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyIj4NCiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJwYXlwYWwtYnV0dG9uLWNvbnRhaW5lciI+PC9kaXY+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgPC9kaXY+DQogICAgPC9kaXY+DQoNCg0KDQoNCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vdG9hc3RpZnktanMiPjwvc2NyaXB0Pg0KPCEtLVsgUFJPRFVDVElPTiBdIC0tPg0KPHNjcmlwdCBzcmM9Imh0dHBzOi8vd3d3LnBheXBhbC5jb20vc2RrL2pzP2NsaWVudC1pZD1BVG1kWlpuWl9WTl9yc0Q0amVFcmd4T205YU81MHlkVmZ0U2R2WF9DdWl2UzNqRGxTTVhOS1YyS2VpZ0hsajloNXpFOXpNM3dRUU42Q25DNSZjdXJyZW5jeT1VU0QmaW50ZW50PWNhcHR1cmUmbG9jYWxlPWVuX1VTIj48L3NjcmlwdD4NCjwhLS1bIEVORCBQUk9EVUNUSU9OIF0gLS0+DQo8IS0tWyBTQU5EQk9YIF0gLS0+DQo8IS0tPHNjcmlwdCBzcmM9Imh0dHBzOi8vd3d3LnBheXBhbC5jb20vc2RrL2pzP2NsaWVudC1pZD1BVTdyZ0hfclJnY3VaWDNMdWg0NUtIQ2lJRFhYbWhBYUpLcm5JbTh2SDFoV1dTc2xscThyZkNYelFYelhhR1BZNG5CclVEN0t5WGxoVFozdyZjdXJyZW5jeT1VU0QmaW50ZW50PWNhcHR1cmUmbG9jYWxlPWVuX1VTIj48L3NjcmlwdD4tLT4NCjwhLS1bIEVORCBTQU5EQk9YIF0gLS0+DQo8c2NyaXB0Pg0KICAgIC8vIE9SREVSIERBVEEuLi4uDQogICAgdmFyIGVudiA9ICdwcm9kdWN0aW9uJzsNCiAgICB2YXIgZXZlbnRfaWQgPSAyOyAvL1JFUVVJUkVEOw0KICAgIHZhciBldmVudE5hbWUgPSAnR1JBUEhJU1RVRElPIEVEVUNBVElPTkFMIFBST0dSQU0gMjAyMicNCiAgICB2YXIgY3VycmVuY3kgPSAnVVNEJzsNCiAgICB2YXIgY3VycmVuY3lfc3ltYm9sID0gJyQnOw0KICAgIHZhciBwcmljZSA9IDM5OTA7DQogICAgdmFyIGJhc2VfcHJpY2UgPSAzOTkwOw0KICAgIHZhciB2YXQgPSAwLjIyOw0KICAgIHZhciBza3UgPSAnR1MtUFNFWENXUy0yMDIyJzsNCiAgICB2YXIgcHJvZHVjdF9uYW1lID0gJ0dSQVBISVNUVURJTyBFRFVDQVRJT05BTCBQUk9HUkFNIDIwMjInDQogICAgdmFyIHByb2R1Y3RfZGVzY3JpcHRpb24gPSAnJzsNCiAgICB2YXIgb3JkZXJEYXRhID0gew0KICAgICAgICByZWZlcmVuY2VfaWQ6ICJHUy1FRFVQUk8tU0VQLTIwMjIiLCAvL0RFRkFVTFQgUkVGRVJFTkNFIElEIQ0KICAgICAgICBhbW91bnQ6IHsNCiAgICAgICAgICAgIHZhbHVlOiBwcmljZSwNCiAgICAgICAgICAgIGN1cnJlbmN5X2NvZGU6IGN1cnJlbmN5LA0KICAgICAgICAgICAgYnJlYWtkb3duOiB7DQogICAgICAgICAgICAgICAgaXRlbV90b3RhbDogeyB2YWx1ZTogcHJpY2UsIGN1cnJlbmN5X2NvZGU6IGN1cnJlbmN5IH0sDQogICAgICAgICAgICAgICAgdGF4X3RvdGFsOiB7IHZhbHVlOiAwLCBjdXJyZW5jeV9jb2RlOiBjdXJyZW5jeSB9LA0KICAgICAgICAgICAgICAgIHNoaXBwaW5nOiB7IHZhbHVlOiAwLCBjdXJyZW5jeV9jb2RlOiBjdXJyZW5jeSB9LA0KICAgICAgICAgICAgICAgIGRpc2NvdW50OiB7IHZhbHVlOiAwLCBjdXJyZW5jeV9jb2RlOiBjdXJyZW5jeSB9DQogICAgICAgICAgICB9DQogICAgICAgIH0sDQogICAgICAgIGludm9pY2VfaWQ6ICdHUy1QU0VYQ1dTLTIwMjInLCAvL0RFRkFVTFQgSU5WT0lDRSBJRCENCiAgICAgICAgaXRlbXM6IFsgeyBuYW1lOiBwcm9kdWN0X25hbWUsIHF1YW50aXR5OiAxLCAnc2t1Jzogc2t1LCBkZXNjcmlwdGlvbjogcHJvZHVjdF9kZXNjcmlwdGlvbiwgdW5pdF9hbW91bnQ6IHsgY3VycmVuY3lfY29kZTogY3VycmVuY3ksIHZhbHVlOiBwcmljZSB9IH0gXQ0KICAgIH07DQoNCg0KICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgZnVuY3Rpb24oKXsNCiAgICAgICAgInVzZSBzdHJpY3QiOw0KDQogICAgICAgZnVuY3Rpb24gX3NlbmREYXRhKGRhdGEsIHRyYW5zYWN0aW9uX2lkKXsNCiAgICAgICAgICAgIFRvYXN0aWZ5KHsNCiAgICAgICAgICAgICAgICB0ZXh0OiBwcm9jZXNzaW5nWW91ckRhdGEsDQogICAgICAgICAgICAgICAgZHVyYXRpb246IDEwMDAwLA0KICAgICAgICAgICAgICAgIGNsb3NlOiB0cnVlLA0KICAgICAgICAgICAgICAgIGdyYXZpdHk6ICJib3R0b20iLA0KICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAicmlnaHQiLA0KICAgICAgICAgICAgICAgIHN0b3BPbkZvY3VzOiB0cnVlLA0KICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N1Y2Nlc3MnLA0KICAgICAgICAgICAgICAgIGVzY2FwZU1hcmt1cDogZmFsc2UsDQogICAgICAgICAgICAgICAgb25DbGljazogZnVuY3Rpb24oKXt9IC8vIENhbGxiYWNrIGFmdGVyIGNsaWNrDQogICAgICAgICAgICB9KS5zaG93VG9hc3QoKTsNCiAgICAgICAgICAgIGxldCBwLCByZXF1ZXN0LCBmZCA9IG5ldyBGb3JtRGF0YSgpOw0KICAgICAgICAgICAgZm9yKHAgaW4gZGF0YSl7DQogICAgICAgICAgICAgICAgaWYoIWRhdGEuaGFzT3duUHJvcGVydHkocCkpIGNvbnRpbnVlOw0KICAgICAgICAgICAgICAgIGlmKHAgPT09ICdwcm9tby1jb2RlJyl7DQogICAgICAgICAgICAgICAgICAgIGZkLmFwcGVuZCgnY291cG9uJywgZGF0YVtwXS5jb3Vwb24ubGFiZWwpOw0KICAgICAgICAgICAgICAgICAgICBmZC5hcHBlbmQoJ2NvdXBvbi12YWx1ZScsIE1hdGguYWJzKGRhdGFbcF0uY291cG9uLnZhbHVlKSk7DQogICAgICAgICAgICAgICAgICAgIGZkLmFwcGVuZCgnY291cG9uLWxhYmVsJywgYENvdXBvbiBhcHBsaWVkICR7ZGF0YVtwXS5jb3Vwb24ubGFiZWx9OiAke2N1cnJlbmN5fSAke01hdGguYWJzKGRhdGFbcF0uY291cG9uLnZhbHVlKX1gKTsNCiAgICAgICAgICAgICAgICB9ZWxzZXsNCiAgICAgICAgICAgICAgICAgICAgZmQuYXBwZW5kKHAsIGRhdGFbcF0pOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBmZC5hcHBlbmQoJ2V2ZW50X2lkJywgZXZlbnRfaWQpOw0KICAgICAgICAgICAgZmQuYXBwZW5kKCd0cmFuc2FjdGlvbl9pZCcsIHRyYW5zYWN0aW9uX2lkKTsNCiAgICAgICAgICAgIGZkLmFwcGVuZCgnYW1vdW50JywgYCR7b3JkZXJEYXRhLmFtb3VudC5icmVha2Rvd24uaXRlbV90b3RhbC52YWx1ZX0gJHtjdXJyZW5jeX1gKTsNCiAgICAgICAgICAgIGlmKGRhdGFbJ2hhdmVfYV9jb21wYW55J10gfHwgY291bnRyaWVzX3dpdGhfdmF0LmluZGV4T2YoZGF0YVsnY291bnRyeV9jb2RlJ10pICE9PSAtMSl7DQogICAgICAgICAgICAgICAgZmQuYXBwZW5kKCd0YXgnLCBgJHtvcmRlckRhdGEuYW1vdW50LmJyZWFrZG93bi50YXhfdG90YWwudmFsdWV9ICR7Y3VycmVuY3l9YCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBmZC5hcHBlbmQoJ2V2ZW50X25hbWUnLCBldmVudE5hbWUpOw0KICAgICAgICAgICAgZmQuYXBwZW5kKCd0YXNrJywncmVjZWlwdCcpOw0KICAgICAgICAgICAgcmV0dXJuIGZldGNoKCJodHRwczovL3d3dy5ncmFwaGlzdHVkaW8uY29tL1RyYWRlTmV3L2FwaS9zZW5kX2VtYWlsLnBocCIsIHsNCiAgICAgICAgICAgICAgICBtZXRob2Q6ICdwb3N0JywNCiAgICAgICAgICAgICAgICBib2R5OiBmZCwNCiAgICAgICAgICAgIH0pDQoNCiAgICAgICAgICAgIC8vcmVxdWVzdCA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOw0KICAgICAgICAgICAgLy9yZXF1ZXN0Lm9wZW4oIlBPU1QiLCAiaHR0cHM6Ly93d3cuZ3JhcGhpc3R1ZGlvLmNvbS9UcmFkZU5ldy9hcGkvc2VuZF9lbWFpbC5waHAiLCBmYWxzZSk7IC8vU1lOQyBSRVFVRVNULi4uLg0KICAgICAgICAgICAgLy9yZXF1ZXN0LnNlbmQoZmQpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gX3VwZGF0ZVByaWNlKHZhdCl7DQogICAgICAgICAgICBsZXQgdXNlX3ByaWNlOw0KICAgICAgICAgICAgaWYoX2RhdGFbJ3Byb21vLWNvZGUnXSkgew0KICAgICAgICAgICAgICAgIC8vb3JkZXJEYXRhLmFtb3VudC5icmVha2Rvd24uZGlzY291bnQudmFsdWUgPSBNYXRoLmFicyhfZGF0YVsncHJvbW8tY29kZSddLmNvdXBvbi52YWx1ZSk7DQogICAgICAgICAgICAgICAgb3JkZXJEYXRhLmFtb3VudC5icmVha2Rvd24uZGlzY291bnQudmFsdWUgPSAwOw0KICAgICAgICAgICAgICAgIHVzZV9wcmljZSA9IGJhc2VfcHJpY2UgLSBNYXRoLmFicyhfZGF0YVsncHJvbW8tY29kZSddLmNvdXBvbi52YWx1ZSkgLSAgb3JkZXJEYXRhLmFtb3VudC5icmVha2Rvd24uZGlzY291bnQudmFsdWU7DQogICAgICAgICAgICAgICAgaWYoX2RhdGFbJ3BheW1lbnQtdHlwZSddID09PSAnaGFsZicpIHVzZV9wcmljZSAqPSAwLjU7DQogICAgICAgICAgICB9ZWxzZXsNCiAgICAgICAgICAgICAgICBvcmRlckRhdGEuYW1vdW50LmJyZWFrZG93bi5kaXNjb3VudC52YWx1ZSA9IDA7DQogICAgICAgICAgICAgICAgdXNlX3ByaWNlID0gYmFzZV9wcmljZSAtIG9yZGVyRGF0YS5hbW91bnQuYnJlYWtkb3duLmRpc2NvdW50LnZhbHVlOw0KICAgICAgICAgICAgfQ0KDQoNCiAgICAgICAgICAgIGlmKHZhdCl7DQogICAgICAgICAgICAgICAgb3JkZXJEYXRhLmFtb3VudC52YWx1ZSA9IE51bWJlcih1c2VfcHJpY2UgKyAodXNlX3ByaWNlICogdmF0KSkudG9GaXhlZCgyKTsNCiAgICAgICAgICAgICAgICBvcmRlckRhdGEuYW1vdW50LmJyZWFrZG93bi50YXhfdG90YWwudmFsdWUgPSBOdW1iZXIodXNlX3ByaWNlICogdmF0KS50b0ZpeGVkKDIpOw0KICAgICAgICAgICAgICAgIG9yZGVyRGF0YS5hbW91bnQuYnJlYWtkb3duLml0ZW1fdG90YWwudmFsdWUgPSBOdW1iZXIodXNlX3ByaWNlKS50b0ZpeGVkKDIpOw0KICAgICAgICAgICAgfWVsc2V7DQogICAgICAgICAgICAgICAgb3JkZXJEYXRhLmFtb3VudC52YWx1ZSA9IE51bWJlcih1c2VfcHJpY2UudG9GaXhlZCgyKSk7DQogICAgICAgICAgICAgICAgb3JkZXJEYXRhLmFtb3VudC5icmVha2Rvd24udGF4X3RvdGFsLnZhbHVlID0gMDsNCiAgICAgICAgICAgICAgICBvcmRlckRhdGEuYW1vdW50LmJyZWFrZG93bi5pdGVtX3RvdGFsLnZhbHVlID0gTnVtYmVyKHVzZV9wcmljZS50b0ZpeGVkKDIpKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgb3JkZXJEYXRhLml0ZW1zWzBdLnVuaXRfYW1vdW50LnZhbHVlID0gTnVtYmVyKHVzZV9wcmljZS50b0ZpeGVkKDIpKTsNCiAgICAgICAgICAgIGNvbnNvbGUud2FybihvcmRlckRhdGEsIG9yZGVyRGF0YS5hbW91bnQpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8gVkFMSURBVElORyBUSEUgVVNFUiBEQVRBIEJFRk9SRSBJTklUIFRIRSBQQVlNRU5UIFBST0NFU1MhDQogICAgICAgIGZ1bmN0aW9uIF92YWxpZGF0ZURhdGEoZGF0YSwgY2hlY2tzKXsNCiAgICAgICAgICAgIGlmKCFhdmFpbGFibGVfc2VhdHMpIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIGxldCBpbnZhbGlkID0gY2hlY2tzLnNvbWUoZnVuY3Rpb24ocCl7DQogICAgICAgICAgICAgICAgcmV0dXJuICFkYXRhW3BdOw0KICAgICAgICAgICAgfSkNCiAgICAgICAgICAgIGlmKGRhdGFbJ2hhdmVfYV9jb21wYW55J10pew0KICAgICAgICAgICAgICAgIGlmKCFkYXRhWyd2YXQnXSB8fCAhZGF0YVsnY29tcGFueSddIHx8ICFkYXRhWydhZGRyZXNzJ10pIGludmFsaWQgPSB0cnVlOw0KICAgICAgICAgICAgICAgIC8vX3VwZGF0ZVByaWNlKHZhdCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgIA0KICAgICAgICAgICAgX3VwZGF0ZVByaWNlKChjb3VudHJpZXNfd2l0aF92YXQuaW5kZXhPZihkYXRhWydjb3VudHJ5X2NvZGUnXSkgIT09IC0xKSA\/IHZhdCA6IG51bGwpOw0KICAgICAgICAgICAgcmV0dXJuICFpbnZhbGlkOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8gR0VORVJBVElORyBBTiBVTklRVUUgSU5WT0lDRSBJRCBGT1IgVEhFIENVUlJFTlQgUEFZTUVOVCBTRVNTSU9OL0ZMT1chDQogICAgICAgIGZ1bmN0aW9uIGdldFJlY2VpcHRVSUQoKSB7DQogICAgICAgICAgICBsZXQgYSA9IG5ldyBVaW50MzJBcnJheSgzKTsNCiAgICAgICAgICAgIHdpbmRvdy5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKGEpOw0KICAgICAgICAgICAgcmV0dXJuICJHUy1QU0VYQ1dTLTIwMjItIisocGVyZm9ybWFuY2Uubm93KCkudG9TdHJpbmcoMzYpK0FycmF5LmZyb20oYSkubWFwKA0KICAgICAgICAgICAgICAgIGZ1bmN0aW9uKEEpIHsgcmV0dXJuIEEudG9TdHJpbmcoMzYpOyB9DQogICAgICAgICAgICApLmpvaW4oIiIpKS5yZXBsYWNlKC9cLi9nLCIiKS50b1VwcGVyQ2FzZSgpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8gQ0hFQ0sgSU4gQkFOTkVEIExJU1QhDQogICAgICAgIGZ1bmN0aW9uIF9jaGVja0Jhbkxpc3QoZGF0YSl7DQogICAgICAgICAgICBpZihbImhhdXNvZmphaUBnbWFpbC5jb20iLCJpbmZvQGhhdXNvZmphaS5jb20iXS5pbmRleE9mKGRhdGFbJ2VtYWlsJ10udG9Mb3dlckNhc2UoKS50cmltKCkpICE9PSAtMSkgcmV0dXJuIHRydWU7DQogICAgICAgICAgICBpZihbImthcGFkaWEiXS5pbmRleE9mKGRhdGFbJ3N1cm5hbWUnXS50b0xvd2VyQ2FzZSgpLnRyaW0oKSkgIT09IC0xKSByZXR1cm4gdHJ1ZTsNCiAgICAgICAgICAgIGlmKFsiamFpIiwiamFncnV0aSJdLmluZGV4T2YoZGF0YVsnbmFtZSddLnRvTG93ZXJDYXNlKCkudHJpbSgpKSAhPT0gLTEpIHJldHVybiB0cnVlOw0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICAvLyBSRVBPUlQgQkFOTkVEIQ0KICAgICAgICBmdW5jdGlvbiBfbG9nQmFubmVkKGRhdGEpew0KICAgICAgICAgICAgbGV0IHAsIGZkID0gbmV3IEZvcm1EYXRhKCk7DQogICAgICAgICAgICBmb3IocCBpbiBkYXRhKXsNCiAgICAgICAgICAgICAgICBpZighZGF0YS5oYXNPd25Qcm9wZXJ0eShwKSkgY29udGludWU7DQogICAgICAgICAgICAgICAgZmQuYXBwZW5kKHAsIGRhdGFbcF0pOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZmQuYXBwZW5kKCdldmVudF9pZCcsIGV2ZW50X2lkKTsNCiAgICAgICAgICAgIGZkLmFwcGVuZCgnZXZlbnRfbmFtZScsIGV2ZW50TmFtZSk7DQogICAgICAgICAgICBmZC5hcHBlbmQoJ3Rhc2snLCdiYW5uZWQnKTsNCiAgICAgICAgICAgIHJldHVybiBmZXRjaCgiaHR0cHM6Ly93d3cuZ3JhcGhpc3R1ZGlvLmNvbS9UcmFkZU5ldy9hcGkvc2VuZF9lbWFpbC5waHAiLCB7DQogICAgICAgICAgICAgICAgbWV0aG9kOiAncG9zdCcsDQogICAgICAgICAgICAgICAgYm9keTogZmQsDQogICAgICAgICAgICB9KQ0KDQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBfdXNlckZlZWRiYWNrKHR5cGUsIG1lc3NhZ2Upew0KICAgICAgICAgICAgaWYod2luZG93LlRvYXN0aWZ5ICYmIG1lc3NhZ2UpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gVG9hc3RpZnkoew0KICAgICAgICAgICAgICAgICAgICB0ZXh0OiBtZXNzYWdlLA0KICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbjogNTAwMCwNCiAgICAgICAgICAgICAgICAgICAgY2xvc2U6IHRydWUsDQogICAgICAgICAgICAgICAgICAgIGdyYXZpdHk6ICJib3R0b20iLA0KICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogInJpZ2h0IiwNCiAgICAgICAgICAgICAgICAgICAgc3RvcE9uRm9jdXM6IHRydWUsDQogICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogdHlwZSwNCiAgICAgICAgICAgICAgICAgICAgZXNjYXBlTWFya3VwOiBmYWxzZSwNCiAgICAgICAgICAgICAgICAgICAgb25DbGljazogZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICB9IC8vIENhbGxiYWNrIGFmdGVyIGNsaWNrDQogICAgICAgICAgICAgICAgfSkuc2hvd1RvYXN0KCk7DQogICAgICAgICAgICB9ZWxzZXsNCiAgICAgICAgICAgICAgICBpZihvdXRwdXQpIG91dHB1dC5pbm5lckhUTUwgPSBtZXNzYWdlOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gX3ZhbGlkYXRlUHJvbW9Db2RlKHZhbHVlKXsNCg0KICAgICAgICAgICAgY29uc29sZS53YXJuKCdWQUxJREFUSU5HIENPVVBPTjogIiVzIicsIHZhbHVlKTsNCiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihmdWxsZmlsbCwgcmVqZWN0KXsNCiAgICAgICAgICAgICAgICBsZXQgdWYsIHZhbGlkLCB3VUlEOw0KICAgICAgICAgICAgICAgIGlmKHZhbHVlLnRyaW0oKSA9PT0gJycgfHwgIXZhbHVlKSB7DQogICAgICAgICAgICAgICAgICAgIGZ1bGxmaWxsKG51bGwpOw0KICAgICAgICAgICAgICAgICAgICByZXR1cm47DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGlmKHBheUNhcmQpIHBheUNhcmQuY2xhc3NMaXN0LmFkZCgnbG9hZGluZycpOw0KICAgICAgICAgICAgICAgIHdVSUQgPSB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpew0KICAgICAgICAgICAgICAgICAgICAgdWwgPSBfdXNlckZlZWRiYWNrKCd3YXJuJywgY2hlY2tpbmdZb3VyQ291cG9uKTsNCiAgICAgICAgICAgICAgICB9LDUwMCk7DQogICAgICAgICAgICAgICAgZmV0Y2goImh0dHBzOi8vYXBpLmdyYXBoaXN0dWRpby5jb20vYXBpL3dvcmtzaG9wL3ZhbGlkYXRlLWNvdXBvbi8iK3ZhbHVlLCB7DQogICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ2dldCcNCiAgICAgICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKXsNCiAgICAgICAgICAgICAgICAgICAgaWYocmVzcG9uc2Uuc3RhdHVzID09PSAyMDApew0KICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWQgPSB0cnVlOw0KICAgICAgICAgICAgICAgICAgICAgICAgZnVsbGZpbGwocmVzcG9uc2UuanNvbigpKQ0KICAgICAgICAgICAgICAgICAgICB9ZWxzZXsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdCgpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24oZXJyKXsNCiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KCk7DQogICAgICAgICAgICAgICAgfSkuZmluYWxseShmdW5jdGlvbigpew0KICAgICAgICAgICAgICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHdVSUQpOw0KICAgICAgICAgICAgICAgICAgICBpZih1ZikgdWYuaGlkZVRvYXN0KCk7DQogICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7DQogICAgICAgICAgICAgICAgICAgICAgICBfdXNlckZlZWRiYWNrKHZhbGlkID8gJ3N1Y2Nlc3MnIDogJ2Vycm9yJywgdmFsaWQgPyB2YWxpZENvdXBvbiA6IGludmFsaWRDb3Vwb24pOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYocGF5Q2FyZCkgcGF5Q2FyZC5jbGFzc0xpc3QucmVtb3ZlKCdsb2FkaW5nJyk7DQogICAgICAgICAgICAgICAgICAgIH0sIDEwMDApOw0KICAgICAgICAgICAgICAgIH0pDQoNCiAgICAgICAgICAgIH0pDQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBfY2hlY2tGb3JtKF9kYXRhLCBfY2hlY2tzLCBhY3Rpb25zKXsNCiAgICAgICAgICAgIGlmKF92YWxpZGF0ZURhdGEoX2RhdGEsIF9jaGVja3MpKXsNCiAgICAgICAgICAgICAgICBwYXlDYXJkLmNsYXNzTGlzdC5yZW1vdmUoJ2Rpc2FibGVkJyk7DQogICAgICAgICAgICAgICAgYWN0aW9ucy5lbmFibGUoKTsNCiAgICAgICAgICAgIH1lbHNlew0KICAgICAgICAgICAgICAgIHBheUNhcmQuY2xhc3NMaXN0LmFkZCgnZGlzYWJsZWQnKTsNCiAgICAgICAgICAgICAgICBhY3Rpb25zLmRpc2FibGUoKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIG9yZGVyRGF0YS5pbnZvaWNlX2lkID0gZ2V0UmVjZWlwdFVJRCgpOw0KICAgICAgICBpZih3aW5kb3cuY29uc29sZSAmJiB3aW5kb3cuY29uc29sZS5pbmZvKSB7DQogICAgICAgICAgICAgY29uc29sZS5pbmZvKCdTRVNTSU9OIElOVk9JQ0UgSUQ6ICVzJywgIG9yZGVyRGF0YS5pbnZvaWNlX2lkKTsNCg0KICAgICAgICB9DQoNCiAgICAgICAgLy8gTEVYSUNPIEZPUiBBTEVSVFMgQkFER0UuLi4NCiAgICAgICAgbGV0IHN1Y2Nlc3NNZXNzYWdlID0gJzxzdHJvbmc+UEFZTUVOVCBET05FITwvc3Ryb25nPjxicj5UaGFuayB5b3UgZm9yIHlvdXIgcGF5bWVudCEnOw0KICAgICAgICBsZXQgY2FuY2VsTWVzc2FnZSA9ICc8c3Ryb25nPlBBWU1FTlQgQ0FOQ0VMTEVEITwvc3Ryb25nPjxicj5ObyB0cmFuc2FjdGlvbiBtYWRlISc7DQogICAgICAgIGxldCBlcnJvck1lc3NhZ2UgPSAnPHN0cm9uZz5VTkFCTEUgVE8gUFJPQ0VTUyBZT1VSIFBBWU1FTlQhPC9zdHJvbmc+PGJyPldlIGFyZSBzb3JyeSwgYnV0IHdlIGNhblwndCBwcm9jZXNzIHlvdXIgcGF5bWVudCBhdCB0aGlzIHRpbWUhJzsNCiAgICAgICAgbGV0IGVycm9yU29sZE91dE1lc3NhZ2UgPSAnPHN0cm9uZz5FVkVOVCBTT0xEIE9VVCE8L3N0cm9uZz48YnI+V2UgYXJlIHNvcnJ5LCBidXQgYWxsIGF2YWlsYWJsZSBzZWF0cyBhcmUgc29sZCBvdXQuISc7DQogICAgICAgIGxldCBwcm9jZXNzaW5nWW91ckRhdGEgPSAnPHN0cm9uZz5QUk9DRVNTSU5HIFlPVVIgREFUQSE8L3N0cm9uZz48YnI+UGxlYXNlIHdhaXQhJzsNCg0KICAgICAgICBsZXQgY2hlY2tpbmdZb3VyQ291cG9uID0gJzxzdHJvbmc+VkFMSURBVElORyBZT1VSIENPREUhPC9zdHJvbmc+PGJyPlBsZWFzZSB3YWl0ISc7DQogICAgICAgIGxldCB2YWxpZENvdXBvbiA9ICc8c3Ryb25nPllPVVIgQ09VUE9OIENPREUgSVMgVkFMSUQhPC9zdHJvbmc+PGJyPldlIHdpbGwgYXBwbHkgdGhlIGRpc2NvdW50ISc7DQogICAgICAgIGxldCBpbnZhbGlkQ291cG9uID0gJzxzdHJvbmc+WU9VUiBDT1VQT04gQ09ERSBJUyBJTlZBTElEITwvc3Ryb25nPjxicj5QbGVhc2UgZG91YmxlIGNoZWNrIHlvdXIgY291cG9uIGNvZGUhJzsNCg0KICAgICAgICAvLyBFTEVNRU5UUyAuLi4NCiAgICAgICAgbGV0IHBheUNhcmQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbZGF0YS10eXBlPSJwYXktZm9ybSJdJyk7DQogICAgICAgIGxldCBvdXRwdXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbZGF0YS10eXBlPSJvdXRwdXQiXScpOw0KICAgICAgICBsZXQgdmF0QmxvY2sgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbZGF0YS10eXBlPSJ2YXQtYmxvY2siXScpOw0KICAgICAgICBsZXQgc3RhdGVCbG9jayA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLXR5cGU9InN0YXRlIl0nKTsNCiAgICAgICAgbGV0IGFkZHJlc3NCbG9jayA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLXR5cGU9ImFkZHJlc3MtYmxvY2siXScpOw0KICAgICAgICBsZXQgdGVybXNCbG9jayA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLXR5cGU9InRlcm1zIl0nKTsNCiAgICAgICAgbGV0IGFwcGxpZWRDb3Vwb24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbZGF0YS10eXBlPSJhcHBsaWVkLWNvdXBvbiJdJyk7DQogICAgICAgIGxldCBwYXlwYWxCdXR0b25Db250YWluZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjcGF5cGFsLWJ1dHRvbi1jb250YWluZXInKTsNCiAgICAgICAgbGV0IF9kYXRhOw0KICAgICAgICBsZXQgY291bnRyaWVzX3dpdGhfdmF0ID0gWydJVCcsJ0FUJywnQkUnLCdCRycsJ0hSJywnQ1knLCdDWicsJ0RLJywnRUUnLCdGSScsJ0ZSJywnREUnLCdFTCcsJ0hVJywnSUUnLCdMVicsJ0xUJywnTFUnLCdNVCcsJ05MJywnUEwnLCdQVCcsJ1JPJywnU0snLCdTSScsJ0VTJywnU0UnXTsNCiAgICAgICAgbGV0IHZhdElucDsNCiAgICAgICAgbGV0IGlzQUNvbXBhbnksIHVzYVN0YXRlcywgY2FuU3RhdGVzLCBvdGhlclN0YXRlczsNCiAgICAgICAgbGV0IGF2YWlsYWJsZV9zZWF0cyA9IE51bWJlcihwYXlDYXJkLmRhdGFzZXQuYXZhaWxhYmxlIHx8IDApOw0KDQogICAgICAgIGNvbnNvbGUuaW5mbygnQ09VTlRSSUVTIFdJVEggVkFUOiAlcycsIGNvdW50cmllc193aXRoX3ZhdC5sZW5ndGgsIG9yZGVyRGF0YSk7DQogICAgICAgIGNvbnNvbGUuaW5mbygnQVZBSUxBQkxFIFNFQVRTIEFSRTogJXMnLCBhdmFpbGFibGVfc2VhdHMpOw0KDQogICAgICAgaWYoIWF2YWlsYWJsZV9zZWF0cyl7DQogICAgICAgICAgICBpZih3aW5kb3cuVG9hc3RpZnkpew0KICAgICAgICAgICAgICAgIFRvYXN0aWZ5KHsNCiAgICAgICAgICAgICAgICAgICAgdGV4dDogZXJyb3JTb2xkT3V0TWVzc2FnZSwNCiAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246IDEwMDAwLA0KICAgICAgICAgICAgICAgICAgICBjbG9zZTogdHJ1ZSwNCiAgICAgICAgICAgICAgICAgICAgZ3Jhdml0eTogImJvdHRvbSIsDQogICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAicmlnaHQiLA0KICAgICAgICAgICAgICAgICAgICBzdG9wT25Gb2N1czogdHJ1ZSwNCiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnZXJyb3InLA0KICAgICAgICAgICAgICAgICAgICBlc2NhcGVNYXJrdXA6IGZhbHNlLA0KICAgICAgICAgICAgICAgICAgICBvbkNsaWNrOiBmdW5jdGlvbigpe30gLy8gQ2FsbGJhY2sgYWZ0ZXIgY2xpY2sNCiAgICAgICAgICAgICAgICB9KS5zaG93VG9hc3QoKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgfQ0KDQogICAgICAgIHBheXBhbC5CdXR0b25zKHsNCiAgICAgICAgICAgIGVudjogZW52LA0KICAgICAgICAgICAgbG9jYWxlOiAnZW5fVVMnLA0KICAgICAgICAgICAgc3R5bGU6IHsNCiAgICAgICAgICAgICAgICBsYXlvdXQ6ICdob3Jpem9udGFsJywNCiAgICAgICAgICAgICAgICBzaXplOiAncmVzcG9uc2l2ZScsDQogICAgICAgICAgICAgICAgY29sb3I6ICdnb2xkJywNCiAgICAgICAgICAgICAgICBzaGFwZTogJ3BpbGwnLA0KICAgICAgICAgICAgICAgIGxhYmVsOiAnYnV5bm93JywNCiAgICAgICAgICAgICAgICB0YWdsaW5lOiAnZmFsc2UnLA0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIC8vIFdIRU4gVEhFIFBBWVBBTCBMSUJSQVJZIElOSVQsIFdFIERJU0FCTEUgVEhFIFBBWU1FTlQgQlVUVE9OIC4uLi4NCiAgICAgICAgICAgIG9uSW5pdDogZnVuY3Rpb24oZGF0YSwgYWN0aW9ucykgIHsNCiAgICAgICAgICAgICAgICBsZXQgX2NoZWNrcywgaW5wdXRzOw0KICAgICAgICAgICAgICAgIC8vIERJU0FCTEUgVEhFIEJVVFRPTihTKQ0KICAgICAgICAgICAgICAgIHBheUNhcmQuY2xhc3NMaXN0LmFkZCgnZGlzYWJsZWQnKTsNCg0KDQogICAgICAgICAgICAgICAgYWN0aW9ucy5kaXNhYmxlKCk7DQogICAgICAgICAgICAgICAgX2RhdGEgPSB7fTsNCiAgICAgICAgICAgICAgICBfY2hlY2tzID0gW107DQogICAgICAgICAgICAgICAgLy9pZihfcHJlZmlsbE9uVGVzdCApIF9kYXRhID0gX3ByZWZpbGxPblRlc3Q7DQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgaW5wdXRzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCAoJ1tkYXRhLXR5cGU9InBheS1mb3JtIl0gaW5wdXQsIFtkYXRhLXR5cGU9InBheS1mb3JtIl0gc2VsZWN0LCAgW2RhdGEtdHlwZT0icGF5LWZvcm0iXSB0ZXh0YXJlYScpOw0KICAgICAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5tYXAuY2FsbChpbnB1dHMsIGZ1bmN0aW9uKGlucHV0KXsNCg0KICAgICAgICAgICAgICAgICAgICAvL2lmKF9wcmVmaWxsT25UZXN0ICYmIF9wcmVmaWxsT25UZXN0W2lucHV0Lm5hbWVdKSBpbnB1dC52YWx1ZSA9IF9wcmVmaWxsT25UZXN0W2lucHV0Lm5hbWVdOw0KICAgICAgICAgICAgICAgICAgICBpZihpbnB1dC5yZXF1aXJlZCkgX2NoZWNrcy5wdXNoKGlucHV0Lm5hbWUpOw0KICAgICAgICAgICAgICAgICAgICBpZihpbnB1dC5uYW1lID09PSAnaGF2ZV9hX2NvbXBhbnknKSBpc0FDb21wYW55ID0gaW5wdXQ7DQogICAgICAgICAgICAgICAgICAgIGlmKGlucHV0Lm5hbWUgPT09ICdzdGF0ZScpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGlucHV0LmRhdGFzZXQuZm9yID09PSAndXNhJykgdXNhU3RhdGVzID0gaW5wdXQ7DQogICAgICAgICAgICAgICAgICAgICAgICBpZihpbnB1dC5kYXRhc2V0LmZvciA9PT0gJ2NhbmFkYScpIGNhblN0YXRlcyA9IGlucHV0Ow0KICAgICAgICAgICAgICAgICAgICAgICAgaWYoaW5wdXQuZGF0YXNldC5mb3IgPT09ICdvdGhlcnMnKSBvdGhlclN0YXRlcyA9IGlucHV0Ow0KICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgaWYoaW5wdXQubmFtZSA9PT0gJ3BheW1lbnQtdHlwZScpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIF9kYXRhW2lucHV0Lm5hbWVdID0gWydmdWxsJywnaGFsZiddLmluZGV4T2YoaW5wdXQudmFsdWUpICE9PSAtMSA\/IGlucHV0LnZhbHVlIDogJ2Z1bGwnOw0KICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgaWYoaW5wdXQubmFtZSA9PT0gJ3Byb21vLWNvZGUnKSBpbnB1dC52YWx1ZSA9ICcnOw0KDQogICAgICAgICAgICAgICAgICAgIGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGZ1bmN0aW9uKGUpew0KICAgICAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaChlLmN1cnJlbnRUYXJnZXQubmFtZSl7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICduYW1lJzoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzdXJuYW1lJzoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjb3VudHJ5JzoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjb3VudHJ5X2NvZGUnOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZGF0YVtlLmN1cnJlbnRUYXJnZXQubmFtZV0gPSAvXlxzKlx3ezIsfVxzKi4qJC8udGVzdChlLmN1cnJlbnRUYXJnZXQudmFsdWUpID8gZS5jdXJyZW50VGFyZ2V0LnZhbHVlLnRyaW0oKSA6IG51bGw7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGUuY3VycmVudFRhcmdldC5uYW1lID09PSAnY291bnRyeV9jb2RlJyl7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihpc0FDb21wYW55KSBpc0FDb21wYW55LmNoZWNrZWQgPSBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHVzYVN0YXRlcykgdXNhU3RhdGVzLmRpc2FibGVkID0gdHJ1ZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGNhblN0YXRlcykgY2FuU3RhdGVzLmRpc2FibGVkID0gdHJ1ZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKG90aGVyU3RhdGVzKSBvdGhlclN0YXRlcy5kaXNhYmxlZCA9IHRydWU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZGF0YVsnaGF2ZV9hX2NvbXBhbnknXSA9IGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YXRJbnAuZGlzYWJsZWQgPSAhKGNvdW50cmllc193aXRoX3ZhdC5pbmRleE9mKF9kYXRhW2UuY3VycmVudFRhcmdldC5uYW1lXSkgIT09IC0xKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHN0YXRlQmxvY2spIHN0YXRlQmxvY2suZGF0YXNldC5jb3VudHJ5ID0gX2RhdGFbZS5jdXJyZW50VGFyZ2V0Lm5hbWVdOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYodmF0QmxvY2spIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXRCbG9jay5kYXRhc2V0LmNvdW50cnkgPSBfZGF0YVtlLmN1cnJlbnRUYXJnZXQubmFtZV07DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmF0QmxvY2suc3R5bGUuZGlzcGxheSA9IChjb3VudHJpZXNfd2l0aF92YXQuaW5kZXhPZihfZGF0YVtlLmN1cnJlbnRUYXJnZXQubmFtZV0pICE9PSAtMSkgPyAnYmxvY2snIDogJ25vbmUnOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih0ZXJtc0Jsb2NrKXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXJtc0Jsb2NrLmRhdGFzZXQuZm9yID0gKGNvdW50cmllc193aXRoX3ZhdC5pbmRleE9mKF9kYXRhW2UuY3VycmVudFRhcmdldC5uYW1lXSkgIT09IC0xKSA\/ICd1ZScgOiAnYWxsJzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXJtc0Jsb2NrLmRhdGFzZXQuY291bnRyeSA9IF9kYXRhW2UuY3VycmVudFRhcmdldC5uYW1lXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3VwZGF0ZVByaWNlKGNvdW50cmllc193aXRoX3ZhdC5pbmRleE9mKF9kYXRhW2UuY3VycmVudFRhcmdldC5uYW1lXSkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoX2RhdGFbZS5jdXJyZW50VGFyZ2V0Lm5hbWVdID09PSAnVVMnICYmIHVzYVN0YXRlcykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzYVN0YXRlcy5kaXNhYmxlZCA9IGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzYVN0YXRlcy5zZWxlY3RlZEluZGV4ID0gMDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKF9kYXRhW2UuY3VycmVudFRhcmdldC5uYW1lXSA9PT0gJ0NBJyAmJiBjYW5TdGF0ZXMpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5TdGF0ZXMuZGlzYWJsZWQgPSBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5TdGF0ZXMuc2VsZWN0ZWRJbmRleCA9IDA7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihbIlVTIiwiQ0EiXS5pbmRleE9mKF9kYXRhW2UuY3VycmVudFRhcmdldC5uYW1lXSkgPT09IC0xICYmIG90aGVyU3RhdGVzKSBvdGhlclN0YXRlcy5kaXNhYmxlZCA9IGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoWyJVUyIsIkNBIl0uaW5kZXhPZihfZGF0YVtlLmN1cnJlbnRUYXJnZXQubmFtZV0pICE9PSAtMSl7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2NoZWNrcy5wdXNoKCdzdGF0ZScpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jaGVja3MuZmlsdGVyKGZ1bmN0aW9uKHByb3AsIGluZHgpew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2NoZWNrcy5pbmRleE9mKHByb3ApID09PSBpbmR4DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY2hlY2tzID0gX2NoZWNrcy5maWx0ZXIoZnVuY3Rpb24ocHJvcCwgaW5keCl7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9wICE9PSAnc3RhdGUnOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZGF0YVsnc3RhdGUnXSA9IG51bGw7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgX2RhdGFbJ3N0YXRlJ107DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihhZGRyZXNzQmxvY2spIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzQmxvY2suZGF0YXNldC5mb3I9X2RhdGFbZS5jdXJyZW50VGFyZ2V0Lm5hbWVdOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWRkcmVzc0Jsb2NrLnN0eWxlLmRpc3BsYXkgPSBfZGF0YVtlLmN1cnJlbnRUYXJnZXQubmFtZV0gPyAnYmxvY2snIDogJ25vbmUnOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnY2l0eSc6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9kYXRhW2UuY3VycmVudFRhcmdldC5uYW1lXSA9IC9eXHMqXHd7Myx9XHMqLiokLy50ZXN0KGUuY3VycmVudFRhcmdldC52YWx1ZSkgPyBlLmN1cnJlbnRUYXJnZXQudmFsdWUudHJpbSgpIDogbnVsbDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjb21wYW55JzoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2RhdGFbZS5jdXJyZW50VGFyZ2V0Lm5hbWVdID0gL15ccyouezUsfSQvLnRlc3QoZS5jdXJyZW50VGFyZ2V0LnZhbHVlKSA\/IGUuY3VycmVudFRhcmdldC52YWx1ZS50cmltKCkgOiBudWxsOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd0ZWxlcGhvbmUnOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZGF0YVtlLmN1cnJlbnRUYXJnZXQubmFtZV0gPSAvXlxzKi57NSx9JC9tLnRlc3QoZS5jdXJyZW50VGFyZ2V0LnZhbHVlKSA\/IGUuY3VycmVudFRhcmdldC52YWx1ZS50cmltKCkgOiBudWxsOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzdHJlZXQnOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZGF0YVtlLmN1cnJlbnRUYXJnZXQubmFtZV0gPSAvXlxzKi57NSx9JC9tLnRlc3QoZS5jdXJyZW50VGFyZ2V0LnZhbHVlKSA\/IGUuY3VycmVudFRhcmdldC52YWx1ZS50cmltKCkgOiBudWxsOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd6aXAnOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZGF0YVtlLmN1cnJlbnRUYXJnZXQubmFtZV0gPSAvXlxzKi57NCx9JC9tLnRlc3QoZS5jdXJyZW50VGFyZ2V0LnZhbHVlKSA\/IGUuY3VycmVudFRhcmdldC52YWx1ZS50cmltKCkgOiBudWxsOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdhZGRyZXNzJzoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2RhdGFbZS5jdXJyZW50VGFyZ2V0Lm5hbWVdID0gL15ccyouezUsfSQvbS50ZXN0KGUuY3VycmVudFRhcmdldC52YWx1ZSkgPyBlLmN1cnJlbnRUYXJnZXQudmFsdWUudHJpbSgpIDogbnVsbDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAndGVybXMnOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3ByaXZhY3knOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2hhdmVfYV9jb21wYW55JzoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2RhdGFbZS5jdXJyZW50VGFyZ2V0Lm5hbWVdID0gZS5jdXJyZW50VGFyZ2V0LmNoZWNrZWQ7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3ZhdCc6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9kYXRhW2UuY3VycmVudFRhcmdldC5uYW1lXSA9IC9eXHMqW2EtekEtWjAtOV17Nix9XHMqJC8udGVzdChlLmN1cnJlbnRUYXJnZXQudmFsdWUpID8gZS5jdXJyZW50VGFyZ2V0LnZhbHVlLnRyaW0oKSA6IG51bGw7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2VtYWlsJzoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2RhdGFbZS5jdXJyZW50VGFyZ2V0Lm5hbWVdID0gL15cdysoW1wuLV0\/XHcrKSpAXHcrKFtcLi1dP1x3KykqKFwuXHd7MiwzfSkrJC8udGVzdChlLmN1cnJlbnRUYXJnZXQudmFsdWUpID8gZS5jdXJyZW50VGFyZ2V0LnZhbHVlIDogbnVsbDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc3RhdGUnOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZGF0YVtlLmN1cnJlbnRUYXJnZXQubmFtZV0gPSBlLmN1cnJlbnRUYXJnZXQudmFsdWUgIT09ICcnID8gZS5jdXJyZW50VGFyZ2V0LnZhbHVlIDogbnVsbDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAncGF5bWVudC10eXBlJzoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2RhdGFbZS5jdXJyZW50VGFyZ2V0Lm5hbWVdID0gWydmdWxsJywnaGFsZiddLmluZGV4T2YoZS5jdXJyZW50VGFyZ2V0LnZhbHVlKSAhPT0gLTEgPyBlLmN1cnJlbnRUYXJnZXQudmFsdWUgOiAnZnVsbCc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKF9kYXRhW2UuY3VycmVudFRhcmdldC5uYW1lXSA9PT0gJ2hhbGYnKXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaWNlID0gTnVtYmVyKChiYXNlX3ByaWNlKi41KS50b0ZpeGVkKDApKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpY2UgPSBiYXNlX3ByaWNlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdwcm9tby1jb2RlJzoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2RhdGFbZS5jdXJyZW50VGFyZ2V0Lm5hbWVdID0gbnVsbDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2NoZWNrcy5wdXNoKGUuY3VycmVudFRhcmdldC5uYW1lKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoZS5jdXJyZW50VGFyZ2V0LnZhbHVlLnRyaW0oKSA9PT0gJycpew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIF9kYXRhW2UuY3VycmVudFRhcmdldC5uYW1lXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGFwcGxpZWRDb3Vwb24pIGFwcGxpZWRDb3Vwb24uaW5uZXJIVE1MID0gJyc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY2hlY2tzID0gX2NoZWNrcy5maWx0ZXIoZnVuY3Rpb24ocHJvcCl7IHJldHVybiBwcm9wICE9PSBlLmN1cnJlbnRUYXJnZXQubmFtZX0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBfcmVzdWx0ID0gZS5jdXJyZW50VGFyZ2V0Lm5leHRFbGVtZW50U2libGluZzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92YWxpZGF0ZVByb21vQ29kZShlLmN1cnJlbnRUYXJnZXQudmFsdWUpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbihyZXN1bHQpew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5pbmZvKCdWQUxJREFUSU9OIFJFU1VMVCcsIHJlc3VsdCwgX2NoZWNrcyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2RhdGFbJ3Byb21vLWNvZGUnXSA9IHJlc3VsdDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbmV3UHJpY2UgPSBiYXNlX3ByaWNlICsgcmVzdWx0LmNvdXBvbi52YWx1ZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihhcHBsaWVkQ291cG9uKSBhcHBsaWVkQ291cG9uLmlubmVySFRNTCA9IGA8c3RyaWtlPiR7YmFzZV9wcmljZX0gJHtjdXJyZW5jeX08L3N0cmlrZT4gJHtuZXdQcmljZX0gJHtjdXJyZW5jeX1gOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jaGVja0Zvcm0oX2RhdGEsIF9jaGVja3MsIGFjdGlvbnMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24oKXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUud2FybignVkFMSURBVElPTiBFUlJPUiEnLCBfY2hlY2tzKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZGF0YVsncHJvbW8tY29kZSddID0gbnVsbDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihhcHBsaWVkQ291cG9uKSBhcHBsaWVkQ291cG9uLmlubmVySFRNTCA9ICcnOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jaGVja0Zvcm0oX2RhdGEsIF9jaGVja3MsIGFjdGlvbnMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgaWYoZS5jdXJyZW50VGFyZ2V0Lm5hbWUgPT09ICdwcm9tby1jb2RlJyB8fCBfZGF0YVtlLmN1cnJlbnRUYXJnZXQubmFtZV0pew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuY3VycmVudFRhcmdldC5jbGFzc0xpc3QucmVtb3ZlKCdpbnZhbGlkJyk7DQogICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmN1cnJlbnRUYXJnZXQuY2xhc3NMaXN0LmFkZCgnaW52YWxpZCcpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgICAgICBfY2hlY2tGb3JtKF9kYXRhLCBfY2hlY2tzLCBhY3Rpb25zKTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5pbmZvKF9kYXRhKTsNCiAgICAgICAgICAgICAgICAgICAgfSkNCiAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICBwYXlDYXJkLmNsYXNzTGlzdC5yZW1vdmUoJ2xvYWRpbmcnKTsNCiAgICAgICAgICAgIH0sDQoNCiAgICAgICAgICAgIC8vIFNFVFMgVVAgVEhFIFRSQU5TQUNUSU9OIFdIRU4gQSBQQVlNRU5UIEJVVFRPTiBJUyBDTElDS0VEIC4uLg0KICAgICAgICAgICAgY3JlYXRlT3JkZXI6IGZ1bmN0aW9uKGRhdGEsIGFjdGlvbnMpIHsNCiAgICAgICAgICAgICAgICBpZihvdXRwdXQpIG91dHB1dC5pbm5lckhUTUwgPSAnJzsNCiAgICAgICAgICAgICAgICBpZihwYXlDYXJkKSBwYXlDYXJkLmNsYXNzTGlzdC5hZGQoJ3Byb2Nlc3NpbmcnKTsNCiAgICAgICAgICAgICAgICBpZihfY2hlY2tCYW5MaXN0KF9kYXRhKSkgew0KICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUuZXJyb3IoJ0JBTk5FRCEnKTsNCiAgICAgICAgICAgICAgICAgICAgX2xvZ0Jhbm5lZChfZGF0YSk7DQogICAgICAgICAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgcmV0dXJuIGFjdGlvbnMub3JkZXIuY3JlYXRlKHsNCiAgICAgICAgICAgICAgICAgICAgcHVyY2hhc2VfdW5pdHM6IFsgb3JkZXJEYXRhIF0sDQogICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uX2NvbnRleHQ6IHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGJyYW5kX25hbWU6ICdHcmFwaGlzdHVkaW8gLSBJdGFseScsDQogICAgICAgICAgICAgICAgICAgICAgICBzaGlwcGluZ19wcmVmZXJlbmNlOiAnTk9fU0hJUFBJTkcnDQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgIH0sDQoNCiAgICAgICAgICAgIC8vIEZJTkFMSVpFIFRIRSBUUkFOU0FDVElPTiAuLi4NCiAgICAgICAgICAgIG9uQXBwcm92ZTogZnVuY3Rpb24oZGF0YSwgYWN0aW9ucykgew0KICAgICAgICAgICAgICAgIG91dHB1dC5jbGFzc0xpc3QucmVtb3ZlKCdlcnJvcicpOw0KICAgICAgICAgICAgICAgIGlmKHBheUNhcmQpIHBheUNhcmQuY2xhc3NMaXN0LmFkZCgncHJvY2Vzc2luZycpOw0KICAgICAgICAgICAgICAgIHJldHVybiBhY3Rpb25zLm9yZGVyLmNhcHR1cmUoKS50aGVuKGZ1bmN0aW9uKG9yZGVyRGF0YSkgew0KICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnQ0FQVFVSRSBQQVlNRU5UIFJFU1VMVCcsIG9yZGVyRGF0YSwgSlNPTi5zdHJpbmdpZnkob3JkZXJEYXRhLCBudWxsLCAyKSk7DQogICAgICAgICAgICAgICAgICAgIGxldCB0cmFuc2FjdGlvbiA9IG9yZGVyRGF0YS5wdXJjaGFzZV91bml0c1swXS5wYXltZW50cy5jYXB0dXJlc1swXTsNCiAgICAgICAgICAgICAgICAgICAgb3V0cHV0LmNsYXNzTGlzdC5hZGQoJ3N1Y2Nlc3MnKTsNCg0KDQogICAgICAgICAgICAgICAgICAgIF9zZW5kRGF0YShfZGF0YSwgdHJhbnNhY3Rpb24uaWQpDQogICAgICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uKCl7DQogICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ0RBVEEgUFJPQ0VTU0VEIScpOw0KICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9ucy5yZWRpcmVjdCgnaHR0cHM6Ly93d3cuZ3JhcGhpc3R1ZGlvLmNvbS9lbi9hY2NhZGVtaWEvdGhlLXB1cnN1aXQtb2YtZXhjZWxsZW5jZS13b3Jrc2hvcC90YW5rcy8nKTsNCiAgICAgICAgICAgICAgICAgICAgfSk7DQoNCiAgICAgICAgICAgICAgICAgICAgX3VzZXJGZWVkYmFjaygnc3VjY2VzcycsIHN1Y2Nlc3NNZXNzYWdlKTsNCiAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgIH0sDQoNCg0KICAgICAgICAgICAgLy8gSEFORExFIFBBWU1FTlQgQ0FOQ0VMIEVWRU5UIC4uLi4NCiAgICAgICAgICAgIG9uQ2FuY2VsOiBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgaWYocGF5Q2FyZCkgcGF5Q2FyZC5jbGFzc0xpc3QucmVtb3ZlKCdwcm9jZXNzaW5nJyk7DQogICAgICAgICAgICAgICAgX3VzZXJGZWVkYmFjaygnd2FybicsIGNhbmNlbE1lc3NhZ2UpOw0KICAgICAgICAgICAgICAgIGlmKG91dHB1dCkgIG91dHB1dC5jbGFzc0xpc3QucmVtb3ZlKCdlcnJvcicpOw0KICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignT1BFUkFUSU9OIENBTkNFTExFRCBCWSBVU0VSJykNCiAgICAgICAgICAgICAgICAvLyB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICIveW91ci1lcnJvci1wYWdlLWhlcmUiOw0KICAgICAgICAgICAgfSwNCg0KICAgICAgICAgICAgLy8gUFJPQ0VTUyBQQVlNRU5UIEVSUk9SUy4uLi4NCiAgICAgICAgICAgIG9uRXJyb3I6IGZ1bmN0aW9uIChlcnIpIHsNCiAgICAgICAgICAgICAgICBpZihwYXlDYXJkKSBwYXlDYXJkLmNsYXNzTGlzdC5yZW1vdmUoJ3Byb2Nlc3NpbmcnKTsNCiAgICAgICAgICAgICAgICBfdXNlckZlZWRiYWNrKCdlcnJvcicsIGVycm9yTWVzc2FnZSk7DQogICAgICAgICAgICAgICAgaWYob3V0cHV0KXsNCiAgICAgICAgICAgICAgICAgICAgb3V0cHV0LmNsYXNzTGlzdC5hZGQoJ2Vycm9yJyk7DQogICAgICAgICAgICAgICAgICAgIG91dHB1dC5pbm5lckhUTUwgPSBlcnJvck1lc3NhZ2U7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0VSUk9SIERVUklORyBQQVlNRU5UIEZMT1cnLCBlcnIpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9KS5yZW5kZXIocGF5cGFsQnV0dG9uQ29udGFpbmVyKTsNCiAgICB9KTsNCg0KDQo8L3NjcmlwdD4=[\/vc_raw_html][\/vc_column_inner][\/vc_row_inner][\/vc_column][\/vc_row]<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>[vc_row][vc_column width=\u00a0\u00bb1\/1&Prime;][vc_row_inner][vc_column_inner][vc_column_text] THE PURSUIT OF EXCELLENCE 5 | 6 | 7 SEPTEMBER 2022 [\/vc_column_text][\/vc_column_inner][\/vc_row_inner][\/vc_column][\/vc_row][vc_row type=\u00a0\u00bbfull_width_section\u00a0\u00bb bg_color=\u00a0\u00bb#eae6df\u00a0\u00bb text_align=\u00a0\u00bbcenter\u00a0\u00bb][vc_column text_align=\u00a0\u00bbcenter\u00a0\u00bb width=\u00a0\u00bb1\/1&Prime;][vc_column_text] The Masters [\/vc_column_text][vc_row_inner][vc_column_inner el_class=\u00a0\u00bbht_photographer_photo\u00a0\u00bb width=\u00a0\u00bb1\/3&Prime;][\/vc_column_inner][vc_column_inner el_class=\u00a0\u00bbht_photographer_photo\u00a0\u00bb width=\u00a0\u00bb1\/3&Prime;][\/vc_column_inner][vc_column_inner el_class=\u00a0\u00bbht_photographer_photo\u00a0\u00bb width=\u00a0\u00bb1\/3&Prime;][\/vc_column_inner][\/vc_row_inner][\/vc_column][\/vc_row][vc_row top_padding=\u00a0\u00bb60&Prime; bottom_padding=\u00a0\u00bb60&Prime;][vc_column width=\u00a0\u00bb1\/1&Prime;][vc_column_text] GRAPHISTUDIO EDUCATIONAL PROGRAM 2022 [\/vc_column_text][vc_row_inner][vc_column_inner][vc_column_text][\/vc_column_text][vc_column_text el_id=\u00a0\u00bbif-sold-out\u00a0\u00bb] Sold Out! [\/vc_column_text][vc_raw_html]ICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vdG9hc3RpZnktanMvc3JjL3RvYXN0aWZ5Lm1pbi5jc3MiPg0KPGRpdiBjbGFzcz0iY29udGFpbmVyIGRpc2FibGVkIiBkYXRhLXR5cGU9InBheS1mb3JtIiBkYXRhLWF2YWlsYWJsZT0iW2F2YWlsYWJsZV9zZWF0c19mb3JfZ3Nfd29ya3Nob3AgZXZlbnRfaWQ9MiBhbHJlYWR5X3NvbGQ9MTIgYXZhaWxhYmxlX3NlYXRzPTM1XVsvYXZhaWxhYmxlX3NlYXRzX2Zvcl9nc193b3Jrc2hvcF0iPg0KICAgICAgICA8aDQgY2xhc3M9InRpdGxlX3ByaW5jaXBhbCIgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsiPlJFU0VSVkUgWU9VUiBTRUFUPC9oND4NCiAgICAgICAgPGRpdiBjbGFzcz0icm93Ij4NCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC14cyI+DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2VudGVyZWQiIGRhdGEtdHlwZT0ib3V0cHV0Ij48L2Rpdj4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICA8L2Rpdj4NCg0KICAgICAgICA8ZGl2IGNsYXNzPSJyb3ciPg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXhzIj4NCiAgICAgICAgICAgICAgICA8bGFiZWw+Rmlyc3QgTmFtZSA8c3VwPio8L3N1cD48L2xhYmVsPg0KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBwbGFjZWhvbGRlcj0iZXguIE1hcmlvIiBuYW1lPSJuYW1lIiByZXF1aXJlZD0iIiBhdXRvY29tcGxldGU9Im9mZiI+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC14cyI+DQogICAgICAgICAgICAgICAgPGxhYmVsPkxhc3QgTmFtZSA8c3VwPio8L3N1cD48L2xhYmVsPg0KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBwbGFjZWhvbGRlcj0iZXguIFJvc3NpIiBuYW1lPSJzdXJuYW1lIiByZXF1aXJlZD0iIiBhdXRvY29tcGxldGU9Im9mZiI+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgPC9kaXY+DQoNCiAgICAgICAgPGRpdiBjbGFzcz0icm93Ij4NCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC14cyI+DQogICAgICAgICAgICAgICAgPGxhYmVsPkVtYWlsIDxzdXA+Kjwvc3VwPjwvbGFiZWw+DQogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImVtYWlsIiBwbGFjZWhvbGRlcj0iZXguIHlvdXJAZW1haWwuaXQiIG5hbWU9ImVtYWlsIiByZXF1aXJlZD0iIiBhdXRvY29tcGxldGU9Im9mZiI+DQogICAgICAgICAgICA8L2Rpdj4NCg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXhzIj4NCiAgICAgICAgICAgICAgICA8bGFiZWw+VGVsZXBob25lIDxzdXA+Kjwvc3VwPjwvbGFiZWw+DQogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIHBsYWNlaG9sZGVyPSJleC4gKzM5IDM0MCAxMjM0NTYiIG5hbWU9InRlbGVwaG9uZSIgcmVxdWlyZWQ9IiIgYXV0b2NvbXBsZXRlPSJvZmYiPg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgIDwvZGl2Pg0KDQogICAgICAgIDxkaXYgY2xhc3M9InJvdyI+DQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wteHMiPg0KICAgICAgICAgICAgICAgIDxsYWJlbD5Db3VudHJ5IDxzdXA+Kjwvc3VwPjwvbGFiZWw+DQogICAgICAgICAgICAgICAgPHNlbGVjdCBuYW1lPSJjb3VudHJ5X2NvZGUiIHJlcXVpcmVkPSIiPg0KICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIiPlNlbGVjdC4uLi48L29wdGlvbj4NCiAgICAgICAgICAgICAgICAgICAgPG9wdGdyb3VwIGxhYmVsPSIiPjxvcHRpb24gdmFsdWU9IkFVIj5BdXN0cmFsaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJERSI+R2VybWFueTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkVTIj5TcGFpbjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkZSIj5GcmFuY2U8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJHQiI+VW5pdGVkIEtpbmdkb208L29wdGlvbj48b3B0aW9uIHZhbHVlPSJJVCI+SXRhbGlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iVVMiPlVuaXRlZCBTdGF0ZXM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJDQSI+Q2FuYWRhPC9vcHRpb24+PC9vcHRncm91cD48b3B0Z3JvdXAgbGFiZWw9IiI+PG9wdGlvbiB2YWx1ZT0iQUYiPkFmZ2hhbmlzdGFuPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iQUwiPkFsYmFuaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJEWiI+QWxnZXJpYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkFTIj5BbWVyaWNhbiBTYW1vYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkFEIj5BbmRvcnJhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iQU8iPkFuZ29sYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkFJIj5Bbmd1aWxsYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkFRIj5BbnRhcmN0aWNhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iQUciPkFudGlndWEgYW5kIEJhcmJ1ZGE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJBUiI+QXJnZW50aW5hPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iQU0iPkFybWVuaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJBVyI+QXJ1YmE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJBVSI+QXVzdHJhbGlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iQVQiPkF1c3RyaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJBWiI+QXplcmJhaWphbjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkJTIj5CYWhhbWFzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iQkgiPkJhaHJhaW48L29wdGlvbj48b3B0aW9uIHZhbHVlPSJCRCI+QmFuZ2xhZGVzaDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkJCIj5CYXJiYWRvczwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkJZIj5CZWxhcnVzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iQkUiPkJlbGdpdW08L29wdGlvbj48b3B0aW9uIHZhbHVlPSJCWiI+QmVsaXplPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iQkoiPkJlbmluPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iQk0iPkJlcm11ZGE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJCVCI+Qmh1dGFuPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iQk8iPkJvbGl2aWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJCQSI+Qm9zbmlhIGFuZCBIZXJ6ZWdvdmluYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkJXIj5Cb3Rzd2FuYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkJWIj5Cb3V2ZXQgSXNsYW5kPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iQlIiPkJyYXppbDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IklPIj5Ccml0aXNoIEluZGlhbiBPY2VhbiBUZXJyaXRvcnk8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJCTiI+QnJ1bmVpIERhcnVzc2FsYW08L29wdGlvbj48b3B0aW9uIHZhbHVlPSJCRyI+QnVsZ2FyaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJCRiI+QnVya2luYSBGYXNvPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iQkkiPkJ1cnVuZGk8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJLSCI+Q2FtYm9kaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJDTSI+Q2FtZXJvb248L29wdGlvbj48b3B0aW9uIHZhbHVlPSJDViI+Q2FwZSBWZXJkZTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IktZIj5DYXltYW4gSXNsYW5kczwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkNGIj5DZW50cmFsIEFmcmljYW4gUmVwdWJsaWM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJURCI+Q2hhZDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkNMIj5DaGlsZTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkNOIj5DaGluYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkNYIj5DaHJpc3RtYXMgSXNsYW5kPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iQ0MiPkNvY29zIChLZWVsaW5nKSBJc2xhbmRzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iQ08iPkNvbG9tYmlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iS00iPkNvbW9yb3M8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJDRyI+Q29uZ288L29wdGlvbj48b3B0aW9uIHZhbHVlPSJDRCI+Q29uZ28sIHRoZSBEZW1vY3JhdGljIFJlcHVibGljIG9mIHRoZTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkNLIj5Db29rIElzbGFuZHM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJDUiI+Q29zdGEgUmljYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkNJIj5Db3RlIEQnSXZvaXJlPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iSFIiPkNyb2F0aWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJDVSI+Q3ViYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkNZIj5DeXBydXM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJDWiI+Q3plY2ggUmVwdWJsaWM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJESyI+RGVubWFyazwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkRKIj5Eamlib3V0aTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkRNIj5Eb21pbmljYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkRPIj5Eb21pbmljYW4gUmVwdWJsaWM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJFQyI+RWN1YWRvcjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkVHIj5FZ3lwdDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlNWIj5FbCBTYWx2YWRvcjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkdRIj5FcXVhdG9yaWFsIEd1aW5lYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkVSIj5Fcml0cmVhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iRUUiPkVzdG9uaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJFVCI+RXRoaW9waWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJGSyI+RmFsa2xhbmQgSXNsYW5kcyAoTWFsdmluYXMpPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iRk8iPkZhcm9lIElzbGFuZHM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJGSiI+RmlqaTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkZJIj5GaW5sYW5kPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iR0YiPkZyZW5jaCBHdWlhbmE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJQRiI+RnJlbmNoIFBvbHluZXNpYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlRGIj5GcmVuY2ggU291dGhlcm4gVGVycml0b3JpZXM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJHQSI+R2Fib248L29wdGlvbj48b3B0aW9uIHZhbHVlPSJHTSI+R2FtYmlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iR0UiPkdlb3JnaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJERSI+R2VybWFueTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkdIIj5HaGFuYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkdJIj5HaWJyYWx0YXI8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJHUiI+R3JlZWNlPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iR0wiPkdyZWVubGFuZDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkdEIj5HcmVuYWRhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iR1AiPkd1YWRlbG91cGU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJHVSI+R3VhbTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkdUIj5HdWF0ZW1hbGE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJHTiI+R3VpbmVhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iR1ciPkd1aW5lYS1CaXNzYXU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJHWSI+R3V5YW5hPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iSFQiPkhhaXRpPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iSE0iPkhlYXJkIElzbGFuZCBhbmQgTWNkb25hbGQgSXNsYW5kczwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlZBIj5Ib2x5IFNlZSAoVmF0aWNhbiBDaXR5IFN0YXRlKTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkhOIj5Ib25kdXJhczwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkhLIj5Ib25nIEtvbmc8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJIVSI+SHVuZ2FyeTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IklTIj5JY2VsYW5kPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iSU4iPkluZGlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iSUQiPkluZG9uZXNpYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IklSIj5JcmFuLCBJc2xhbWljIFJlcHVibGljIG9mPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iSVEiPklyYXE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJJRSI+SXJlbGFuZDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IklMIj5Jc3JhZWw8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJKTSI+SmFtYWljYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkpQIj5KYXBhbjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkpPIj5Kb3JkYW48L29wdGlvbj48b3B0aW9uIHZhbHVlPSJLWiI+S2F6YWtoc3Rhbjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IktFIj5LZW55YTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IktJIj5LaXJpYmF0aTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IktQIj5Lb3JlYSwgRGVtb2NyYXRpYyBQZW9wbGUncyBSZXB1YmxpYyBvZjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IktSIj5Lb3JlYSwgUmVwdWJsaWMgb2Y8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJLVyI+S3V3YWl0PC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iS0ciPkt5cmd5enN0YW48L29wdGlvbj48b3B0aW9uIHZhbHVlPSJMQSI+TGFvIFBlb3BsZSdzIERlbW9jcmF0aWMgUmVwdWJsaWM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJMViI+TGF0dmlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iTEIiPkxlYmFub248L29wdGlvbj48b3B0aW9uIHZhbHVlPSJMUyI+TGVzb3Robzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkxSIj5MaWJlcmlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iTFkiPkxpYnlhbiBBcmFiIEphbWFoaXJpeWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJMSSI+TGllY2h0ZW5zdGVpbjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkxUIj5MaXRodWFuaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJMVSI+THV4ZW1ib3VyZzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Ik1PIj5NYWNhbzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Ik1LIj5NYWNlZG9uaWEsIHRoZSBGb3JtZXIgWXVnb3NsYXYgUmVwdWJsaWMgb2Y8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJNRyI+TWFkYWdhc2Nhcjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Ik1XIj5NYWxhd2k8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJNWSI+TWFsYXlzaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJNViI+TWFsZGl2ZXM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJNTCI+TWFsaTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Ik1UIj5NYWx0YTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Ik1IIj5NYXJzaGFsbCBJc2xhbmRzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iTVEiPk1hcnRpbmlxdWU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJNUiI+TWF1cml0YW5pYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Ik1VIj5NYXVyaXRpdXM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJZVCI+TWF5b3R0ZTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Ik1YIj5NZXhpY288L29wdGlvbj48b3B0aW9uIHZhbHVlPSJGTSI+TWljcm9uZXNpYSwgRmVkZXJhdGVkIFN0YXRlcyBvZjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Ik1EIj5Nb2xkb3ZhLCBSZXB1YmxpYyBvZjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Ik1DIj5Nb25hY288L29wdGlvbj48b3B0aW9uIHZhbHVlPSJNTiI+TW9uZ29saWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJNUyI+TW9udHNlcnJhdDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Ik1BIj5Nb3JvY2NvPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iTVoiPk1vemFtYmlxdWU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJNTSI+TXlhbm1hcjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Ik5BIj5OYW1pYmlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iTlIiPk5hdXJ1PC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iTlAiPk5lcGFsPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iTkwiPk5ldGhlcmxhbmRzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iQU4iPk5ldGhlcmxhbmRzIEFudGlsbGVzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iTkMiPk5ldyBDYWxlZG9uaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJOWiI+TmV3IFplYWxhbmQ8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJOSSI+TmljYXJhZ3VhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iTkUiPk5pZ2VyPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iTkciPk5pZ2VyaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJOVSI+Tml1ZTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Ik5GIj5Ob3Jmb2xrIElzbGFuZDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Ik1QIj5Ob3J0aGVybiBNYXJpYW5hIElzbGFuZHM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJOTyI+Tm9yd2F5PC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iT00iPk9tYW48L29wdGlvbj48b3B0aW9uIHZhbHVlPSJQSyI+UGFraXN0YW48L29wdGlvbj48b3B0aW9uIHZhbHVlPSJQVyI+UGFsYXU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJQUyI+UGFsZXN0aW5pYW4gVGVycml0b3J5LCBPY2N1cGllZDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlBBIj5QYW5hbWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJQRyI+UGFwdWEgTmV3IEd1aW5lYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlBZIj5QYXJhZ3VheTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlBFIj5QZXJ1PC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iUEgiPlBoaWxpcHBpbmVzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iUE4iPlBpdGNhaXJuPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iUEwiPlBvbGFuZDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlBUIj5Qb3J0dWdhbDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlBSIj5QdWVydG8gUmljbzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlFBIj5RYXRhcjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlJFIj5SZXVuaW9uPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iUk8iPlJvbWFuaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJSVSI+UnVzc2lhbiBGZWRlcmF0aW9uPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iUlciPlJ3YW5kYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlNIIj5TYWludCBIZWxlbmE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJLTiI+U2FpbnQgS2l0dHMgYW5kIE5ldmlzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iTEMiPlNhaW50IEx1Y2lhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iUE0iPlNhaW50IFBpZXJyZSBhbmQgTWlxdWVsb248L29wdGlvbj48b3B0aW9uIHZhbHVlPSJWQyI+U2FpbnQgVmluY2VudCBhbmQgdGhlIEdyZW5hZGluZXM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJXUyI+U2Ftb2E8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJTTSI+U2FuIE1hcmlubzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlNUIj5TYW8gVG9tZSBhbmQgUHJpbmNpcGU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJTQSI+U2F1ZGkgQXJhYmlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iU04iPlNlbmVnYWw8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJDUyI+U2VyYmlhIGFuZCBNb250ZW5lZ3JvPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iU0MiPlNleWNoZWxsZXM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJTTCI+U2llcnJhIExlb25lPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iU0ciPlNpbmdhcG9yZTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlNLIj5TbG92YWtpYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlNJIj5TbG92ZW5pYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlNCIj5Tb2xvbW9uIElzbGFuZHM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJTTyI+U29tYWxpYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlpBIj5Tb3V0aCBBZnJpY2E8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJHUyI+U291dGggR2VvcmdpYSBhbmQgdGhlIFNvdXRoIFNhbmR3aWNoIElzbGFuZHM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJFUyI+U3BhaW48L29wdGlvbj48b3B0aW9uIHZhbHVlPSJMSyI+U3JpIExhbmthPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iU0QiPlN1ZGFuPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iU1IiPlN1cmluYW1lPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iU0oiPlN2YWxiYXJkIGFuZCBKYW4gTWF5ZW48L29wdGlvbj48b3B0aW9uIHZhbHVlPSJTWiI+U3dhemlsYW5kPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iU0UiPlN3ZWRlbjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkNIIj5Td2l0emVybGFuZDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlNZIj5TeXJpYW4gQXJhYiBSZXB1YmxpYzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlRXIj5UYWl3YW4sIFByb3ZpbmNlIG9mIENoaW5hPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iVEoiPlRhamlraXN0YW48L29wdGlvbj48b3B0aW9uIHZhbHVlPSJUWiI+VGFuemFuaWEsIFVuaXRlZCBSZXB1YmxpYyBvZjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlRIIj5UaGFpbGFuZDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlRMIj5UaW1vci1MZXN0ZTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlRHIj5Ub2dvPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iVEsiPlRva2VsYXU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJUTyI+VG9uZ2E8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJUVCI+VHJpbmlkYWQgYW5kIFRvYmFnbzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlROIj5UdW5pc2lhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iVFIiPlR1cmtleTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlRNIj5UdXJrbWVuaXN0YW48L29wdGlvbj48b3B0aW9uIHZhbHVlPSJUQyI+VHVya3MgYW5kIENhaWNvcyBJc2xhbmRzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iVFYiPlR1dmFsdTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlVHIj5VZ2FuZGE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJVQSI+VWtyYWluZTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkFFIj5Vbml0ZWQgQXJhYiBFbWlyYXRlczwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlVNIj5Vbml0ZWQgU3RhdGVzIE1pbm9yIE91dGx5aW5nIElzbGFuZHM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJVWSI+VXJ1Z3VheTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlVaIj5VemJla2lzdGFuPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iVlUiPlZhbnVhdHU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJWRSI+VmVuZXp1ZWxhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iVk4iPlZpZXQgTmFtPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iVkciPlZpcmdpbiBJc2xhbmRzLCBCcml0aXNoPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iVkkiPlZpcmdpbiBJc2xhbmRzLCBVLnMuPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iV0YiPldhbGxpcyBhbmQgRnV0dW5hPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iRUgiPldlc3Rlcm4gU2FoYXJhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iWUUiPlllbWVuPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iWk0iPlphbWJpYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlpXIj5aaW1iYWJ3ZTwvb3B0aW9uPjwvb3B0Z3JvdXA+ICAgICAgICAgICAgICAgIDwvc2VsZWN0Pg0KICAgICAgICAgICAgPC9kaXY+DQoNCiAgICAgICAgICAgIDxkaXYgZGF0YS10eXBlPSJzdGF0ZSIgY2xhc3M9ImNvbC14cyBjb2wteHMtMiBzdGF0ZXMtY29sIj4NCiAgICAgICAgICAgICAgICA8bGFiZWw+U3RhdGUgPHN1cD4qPC9zdXA+PC9sYWJlbD4NCiAgICAgICAgICAgICAgICA8c2VsZWN0IGRhdGEtZm9yPSJ1c2EiIG5hbWU9InN0YXRlIiBkaXNhYmxlZD0iIj4NCiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iIj5TZWxlY3QuLi4uPC9vcHRpb24+DQogICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkFMIj5BbGFiYW1hPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iQUsiPkFsYXNrYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkFaIj5Bcml6b25hPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iQVIiPkFya2Fuc2FzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iQ0EiPkNhbGlmb3JuaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJDTyI+Q29sb3JhZG88L29wdGlvbj48b3B0aW9uIHZhbHVlPSJDVCI+Q29ubmVjdGljdXQ8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJERSI+RGVsYXdhcmU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJEQyI+RGlzdHJpY3QgT2YgQ29sdW1iaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJGTCI+RmxvcmlkYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkdBIj5HZW9yZ2lhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iSEkiPkhhd2FpaTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IklEIj5JZGFobzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IklMIj5JbGxpbm9pczwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IklOIj5JbmRpYW5hPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iSUEiPklvd2E8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJLUyI+S2Fuc2FzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iS1kiPktlbnR1Y2t5PC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iTEEiPkxvdWlzaWFuYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Ik1FIj5NYWluZTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Ik1EIj5NYXJ5bGFuZDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Ik1BIj5NYXNzYWNodXNldHRzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iTUkiPk1pY2hpZ2FuPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iTU4iPk1pbm5lc290YTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Ik1TIj5NaXNzaXNzaXBwaTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Ik1PIj5NaXNzb3VyaTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Ik1UIj5Nb250YW5hPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iTkUiPk5lYnJhc2thPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iTlYiPk5ldmFkYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Ik5IIj5OZXcgSGFtcHNoaXJlPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iTkoiPk5ldyBKZXJzZXk8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJOTSI+TmV3IE1leGljbzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Ik5ZIj5OZXcgWW9yazwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Ik5DIj5Ob3J0aCBDYXJvbGluYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Ik5EIj5Ob3J0aCBEYWtvdGE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJPSCI+T2hpbzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Ik9LIj5Pa2xhaG9tYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Ik9SIj5PcmVnb248L29wdGlvbj48b3B0aW9uIHZhbHVlPSJQQSI+UGVubnN5bHZhbmlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iUkkiPlJob2RlIElzbGFuZDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlNDIj5Tb3V0aCBDYXJvbGluYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlNEIj5Tb3V0aCBEYWtvdGE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJUTiI+VGVubmVzc2VlPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iVFgiPlRleGFzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iVVQiPlV0YWg8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJWVCI+VmVybW9udDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlZBIj5WaXJnaW5pYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IldBIj5XYXNoaW5ndG9uPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iV1YiPldlc3QgVmlyZ2luaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJXSSI+V2lzY29uc2luPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iV1kiPld5b21pbmc8L29wdGlvbj4gICAgICAgICAgICAgICAgPC9zZWxlY3Q+DQogICAgICAgICAgICAgICAgPHNlbGVjdCBkYXRhLWZvcj0iY2FuYWRhIiBuYW1lPSJzdGF0ZSIgZGlzYWJsZWQ9IiI+DQogICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IiI+U2VsZWN0Li4uLjwvb3B0aW9uPg0KICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJCQyI+QnJpdGlzaCBDb2x1bWJpYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Ik9OIj5PbnRhcmlvPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iTkwiPk5ld2ZvdW5kbGFuZCBhbmQgTGFicmFkb3I8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJOUyI+Tm92YSBTY290aWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJQRSI+UHJpbmNlIEVkd2FyZCBJc2xhbmQ8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJOQiI+TmV3IEJydW5zd2ljazwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlFDIj5RdWViZWM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJNQiI+TWFuaXRvYmE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJTSyI+U2Fza2F0Y2hld2FuPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iQUIiPkFsYmVydGE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJOVCI+Tm9ydGh3ZXN0IFRlcnJpdG9yaWVzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iTlUiPk51bmF2dXQ8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJZVCI+WXVrb24gVGVycml0b3J5PC9vcHRpb24+ICAgICAgICAgICAgICAgIDwvc2VsZWN0Pg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgIDwvZGl2Pg0KDQogICAgICAgIDxkaXYgY2xhc3M9InJvdyIgZGF0YS10eXBlPSJhZGRyZXNzLWJsb2NrIj4NCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC14cyI+DQogICAgICAgICAgICAgICAgPGxhYmVsPkNpdHkgPHN1cD4qPC9zdXA+PC9sYWJlbD4NCiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgcGxhY2Vob2xkZXI9ImV4LiBBcmJhIiBuYW1lPSJjaXR5IiByZXF1aXJlZD0iIiBhdXRvY29tcGxldGU9Im9mZiI+DQogICAgICAgICAgICA8L2Rpdj4NCg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXhzIGNvbC14cy0yIj4NCiAgICAgICAgICAgICAgICA8bGFiZWw+QWRkcmVzcyA8c3VwPio8L3N1cD48L2xhYmVsPg0KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBwbGFjZWhvbGRlcj0iZXguIE1vbnRlIFJhdXQsIDEiIG5hbWU9InN0cmVldCIgcmVxdWlyZWQ9IiIgYXV0b2NvbXBsZXRlPSJvZmYiPg0KICAgICAgICAgICAgPC9kaXY+DQoNCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC14cyI+DQogICAgICAgICAgICAgICAgPGxhYmVsPlppcCA8c3VwPio8L3N1cD48L2xhYmVsPg0KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBtaW49IjUiIHBsYWNlaG9sZGVyPSJleC4gMzMwODAiIG5hbWU9InppcCIgcmVxdWlyZWQ9IiIgYXV0b2NvbXBsZXRlPSJvZmYiPg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgIDwvZGl2Pg0KICAgICAgIA0KICAgICAgICA8ZGl2IGRhdGEtdHlwZT0idmF0LWJsb2NrIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPg0KICAgICAgICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBjbGFzcz0iYXBwbGUtc3dpdGNoIiBpZD0iaGF2ZV9hX2NvbXBhbnkiIG5hbWU9ImhhdmVfYV9jb21wYW55IiB2YWx1ZT0iMSIgYXV0b2NvbXBsZXRlPSJvZmYiPg0KICAgICAgICAgICAgPGxhYmVsIGZvcj0iaGF2ZV9hX2NvbXBhbnkiPkkgaGF2ZSBhIHZhbGlkIFZBVCBOdW1iZXI8L2xhYmVsPg0KDQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ciIGRhdGEtdHlwZT0iZm9yLWNvbXBhbnkiPg0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC14cyI+DQogICAgICAgICAgICAgICAgICAgIDxsYWJlbD5Db21wYW55IE5hbWUgPHN1cD4qPC9zdXA+PC9sYWJlbD4NCiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIHBsYWNlaG9sZGVyPSJleC4gR3JhcGhpc3R1ZGlvIiBuYW1lPSJjb21wYW55IiBhdXRvY29tcGxldGU9Im9mZiI+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXhzIj4NCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlZhdCA8c3VwPio8L3N1cD48L2xhYmVsPg0KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgcGxhY2Vob2xkZXI9ImV4LiAwMTIzNDU2ODciIG5hbWU9InZhdCIgYXV0b2NvbXBsZXRlPSJvZmYiPg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgPC9kaXY+DQoNCiAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyIgZGF0YS10eXBlPSJmb3ItY29tcGFueSI+DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXhzIj4NCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsPkNvbXBhbnkgQWRkcmVzcyA8c3VwPio8L3N1cD48L2xhYmVsPg0KICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgcGxhY2Vob2xkZXI9IllvdXIgY29tcGFueSBmdWxsIGFkZHJlc3MuLi4iIG5hbWU9ImFkZHJlc3MiIHJvd3M9IjQiIGNvbHM9IjUwIiBhdXRvY29tcGxldGU9Im9mZiI+PC90ZXh0YXJlYT4NCiAgICAgICAgICAgICAgICAgICAgPGRldGFpbHM+DQogICAgICAgICAgICAgICAgICAgICAgICA8c3VtbWFyeT5OZWVkIGhlbHAgd2l0aCB0aGlzIGZpZWxkPzwvc3VtbWFyeT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz5BIGZ1bGwgYWRkcmVzcyBleGFtcGxlOjwvc3Ryb25nPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxicj48YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlZXQgbmFtZSwgbnVtYmVyPGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6aXAgLSBjaXR5IChzdGF0ZSk8YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lbT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICA8L2RldGFpbHM+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICA8L2Rpdj4NCg0KICAgICAgICAgICAgPGRpdiBkYXRhLXN1YnR5cGU9ImRpc2NsYWltZXIiPg0KICAgICAgICAgICAgICAgICAgICBJZiB0aGUgVkFUIG51bWJlciBwcm92aWRlZCBpcyB2YWxpZCwgR3JhcGhpc3R1ZGlvIHdpbGwgcmVmdW5kIHlvdSB0aGUgZnVsbCBWQVQgYW1vdW50IQ0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgIDwvZGl2Pg0KDQogICAgICAgIDxkaXYgY2xhc3M9InJvdyIgZGF0YS10eXBlPSJzcGxpdC1wYXltZW50Ij4NCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC14cyI+DQogICAgICAgICAgICAgICAgPGxhYmVsPlBheW1lbnQgT3B0aW9uIDxzdXA+Kjwvc3VwPjwvbGFiZWw+DQogICAgICAgICAgICAgICAgPHNlbGVjdCBuYW1lPSJwYXltZW50LXR5cGUiIHJlcXVpcmVkPg0KICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJmdWxsIiBjaGVja2VkPkkgd2FudCB0byBwYXkgdGhlIGZ1bGwgYW1vdW50IGltbWVkaWF0ZWx5PC9vcHRpb24+DQogICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9ImhhbGYiPkkgcHJlZmVyIHRvIHBheSBoYWxmIG5vdyBhbmQgdGhlIHJlbWFpbmluZyBoYWxmIDIgd2Vla3MgYmVmb3JlIHRoZSBldmVudDwvb3B0aW9uPg0KICAgICAgICAgICAgICAgIDwvc2VsZWN0Pg0KICAgICAgICAgICAgICAgIDxwPg0KICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGNob29zZSB0byBwYXkgdGhlIHdob2xlIGFtb3VudCBpbW1lZGlhdGVseSBvciByZXNlcnZlIHlvdXIgc2VhdCBieSBwYXlpbmcgaGFsZiBhbW91bnQgbm93DQogICAgICAgICAgICAgICAgICAgIGFuZCB0aGUgcmVtYWluaW5nIGhhbGYgMiB3ZWVrcyBiZWZvcmUgdGhlIGV2ZW50IQ0KICAgICAgICAgICAgICAgIDwvcD4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICA8L2Rpdj4NCg0KICAgICAgICA8ZGl2IGNsYXNzPSJyb3ciPg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXhzIiBkYXRhLXR5cGU9ImNvdXBvbi1jb2RlIj4NCiAgICAgICAgICAgICAgICA8cD5EbyB5b3UgaGF2ZSBhIERpc2NvdW50IENvZGU\/IEFwcGx5IGhlcmUhPC9wPg0KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJzZWFyY2giIG5hbWU9InByb21vLWNvZGUiIGF1dG9jb21wbGV0ZT0ib2ZmIj4NCiAgICAgICAgICAgICAgICA8cCBkYXRhLXR5cGU9ImFwcGxpZWQtY291cG9uIj48L3A+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgPC9kaXY+DQoNCiAgICAgICAgPGRpdiBjbGFzcz0icm93Ij4NCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC14cyIgZGF0YS10eXBlPSJwcml2YWN5Ij4NCiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIGNsYXNzPSJhcHBsZS1zd2l0Y2giIGlkPSJwcml2YWN5IiBuYW1lPSJwcml2YWN5IiB2YWx1ZT0iMSIgcmVxdWlyZWQ9IiIgYXV0b2NvbXBsZXRlPSJvZmYiPg0KICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9InByaXZhY3kiPkNvbnNlbnQgdG8gdGhlIHByb2Nlc3Npbmcgb2YgcGVyc29uYWwgZGF0YSA8c3VwPio8L3N1cD48L2xhYmVsPg0KICAgICAgICAgICAgICAgIDxwPg0KICAgICAgICAgICAgICAgICAgICBJIGhhdmUgcmVhZCB0aGUgPGEgaHJlZj0iaHR0cHM6Ly93d3cuZ3JhcGhpc3R1ZGlvLmNvbS9mci9wcml2YWN5LyIgdGFyZ2V0PSJfYmxhbmsiPnByaXZhY3kgcG9saWN5PC9hPiBhbmQgSSBhdXRob3Jpc2UgdGhlIHRyZWF0bWVudCBvZiBteSBwZXJzb25hbCBkYXRhIGhlcmUgcHJvdmlkZWQuDQogICAgICAgICAgICAgICAgPC9wPg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgIDwvZGl2Pg0KICAgICAgICA8ZGl2IGNsYXNzPSJyb3ciPg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXhzIiBkYXRhLXR5cGU9InRlcm1zIiBkYXRhLWZvcj0iYWxsIj4NCiAgICAgICAgICAgICAgICA8ZGl2Pg0KICAgICAgICAgICAgICAgICAgICA8aDM+VGVybXMgJiBDb25kaXRpb25zPC9oMz4NCiAgICAgICAgICAgICAgICAgICAgPHVsPg0KICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICA8bGk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsIHRpY2tldHMgZm9yIHRoZSB3b3Jrc2hvcCBzaGFsbCBiZSBub24tcmVmdW5kYWJsZSDigJMgaWYgeW91IGhhdmUgYSBzdWJzdGl0dXRlIHRvIGF0dGVuZCB0aGUgd29ya3Nob3AsIHBsZWFzZSBjb250YWN0IHlvdXIgR3JhcGhpc3R1ZGlvIHNhbGVzIHJlcHJlc2VudGF0aXZlIHdpdGggdGhlIGRldGFpbHMuDQogICAgICAgICAgICAgICAgICAgICAgICA8L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+Q2FuY2VsbGF0aW9uIFBvbGljeTo8L3N0cm9uZz48YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgdGhlIHdvcmtzaG9wIGlzIGNhbmNlbGxlZCBmb3IgcmVhc29ucyBvdXIgb2Ygb3VyIGNvbnRyb2wgeW91IHdpbGwgYmUgcHJvdmlkZWQgd2l0aCBhIGZ1bGwgcmVmdW5kLg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPlByb21vdGlvbmFsOjwvc3Ryb25nPjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgYWdyZWUgdGhhdCB3ZSBtYXkgaW5jbHVkZSB5b3VyIGRldGFpbHMgaW4gYW55IHByb21vdGlvbmFsIG1hdGVyaWFscyByZWxhdGluZyB0byB0aGUgd29ya3Nob3AgYW5kIG9yIG1hdGVyaWFscyB1c2VkIGF0IHRoZSB3b3Jrc2hvcC4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+DQogICAgICAgICAgICAgICAgICAgICAgICA8bGk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz5QaG90b3RvZ3JhcGh5ICYgZmlsbWluZyAvIG1vZGVsIHJlbGVhc2U6PC9zdHJvbmc+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlIG1heSBwaG90b2dyYXBoIG9yIGZpbG0gdGhlIHdvcmtzaG9wIGFuZCByZXNlcnZlIHRoZSByaWdodCB0byBkbyBzbyBmb3IgcHVycG9zZXMgb2YgcHJvbW90aW5nIGZ1dHVyZSB3b3Jrc2hvcHMgb3Igb3RoZXJ3aXNlLiAgWW91IGNvbnNlbnQgdG8gdXMgcGhvdG9ncmFwaGluZyBvciBmaWxtaW5nIHlvdSBhbmQgYW55IGF0dGVuZGVlIGF0dGVuZGluZyB0aGUgd29ya3Nob3AuDQogICAgICAgICAgICAgICAgICAgICAgICA8L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+VHJhdmVsICYgYWNjb21tb2RhdGlvbnM6PC9zdHJvbmc+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBzaGFsbCBiZSByZXNwb25zaWJsZSBmb3IgbWFraW5nIGFuZCBwYXlpbmcgeW91ciBhaXJmYXJlIGFuZCBob3RlbCBhY2NvbW1vZGF0aW9ucyBmb3IgdGhlIHdvcmtzaG9wLiBJZiB5b3UgYXJyaXZlIGF0IGEgZGVzaWduZWQgdGltZSBvdXRzaWRlIG9mIHRoZSBwcmUtYXJyYW5nZWQgcGljayB1cCB0aW1lcywgeW91IHdpbGwgYmUgcmVzcG9uc2libGUgZm9yIHlvdXIgb3duIHRyYW5zcG9ydGF0aW9uLg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPkZhbWlseSBtZW1iZXJzOjwvc3Ryb25nPjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgd29ya3Nob3AsIHRyYW5zcG9ydGF0aW9uLCBhbmQgbWVhbCBzZXJ2aWNlcyBhcmUgcHJvdmlkZWQgZm9yIHBhaWQgYXR0ZW5kZWVzIG9ubHksIHRoaXMgaXMgbm90IGV4dGVuZGVkIHRvIGFuZCBmb3IgYXR0ZW5kZWUgZmFtaWx5IG1lbWJlcnMuDQogICAgICAgICAgICAgICAgICAgICAgICA8L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+VHJhbnNsYXRpb246PC9zdHJvbmc+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vIHRyYW5zbGF0aW9uIHdpbGwgYmUgcHJvdmlkZWQsIHRoZSB3b3Jrc2hvcCB3aWxsIGJlIGluIEVuZ2xpc2guDQogICAgICAgICAgICAgICAgICAgICAgICA8L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+VHJhdmVsIEluc3VyYW5jZTo8L3N0cm9uZz48YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgRWFjaCBwYXJ0aWNpcGFudCBjb25maXJtcyB0aGV5IHVuZGVyc3RhbmQgYW5kIGFncmVlIHRvIHB1cmNoYXNlIHRoZSByZXF1aXJlZCBpbnN1cmFuY2UgdGhhdCBpcyB2YWxpZCBpbnRlcm5hdGlvbmFsbHkuIFN1Z2dlc3RlZCBpbnN1cmFuY2UgaW5jbHVkZXM6IEFjY2lkZW50ICYgU2lja25lc3MgTWVkaWNhbCBFeHBlbnNlIENvdmVyYWdlLiBTdG9sZW4sIGxvc3Qgb3IgZGFtYWdlZCBwcm9wZXJ0eSBjb3ZlcmFnZS4gVHJpcCBjYW5jZWxsYXRpb24gY292ZXJhZ2UuDQogICAgICAgICAgICAgICAgICAgICAgICA8L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+QXNzdW1wdGlvbiBvZiBSaXNrOjwvc3Ryb25nPjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGwgYXR0ZW5kZWVzIHVuZGVyc3RhbmQgYW5kIGFyZSBpbiBmdWxsIGF3YXJlbmVzcyBhbmQgYXNzdW1lIGZ1bGwgYW5kIGNvbXBsZXRlIHJlc3BvbnNpYmlsaXR5IGZvciBhbGwgcmlza3MgaW5oZXJlbnQgaW4gdHJhdmVsIGFuZCBhdHRlbmRlZSB0aGUgd29ya3Nob3Agd291bGQgY291bGQgaW5jbHVkZSBpbmp1cnksIGNvdmlkLCBwcm9wZXJ0eSBkYW1hZ2UsIGFuZCBvciBhbnkgb3RoZXIga2luZCBvZiBsaWFiaWxpdHkuDQogICAgICAgICAgICAgICAgICAgICAgICA8L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+VHJhbnNwb3J0YXRpb246PC9zdHJvbmc+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIGF0dGVuZGVlcyBuZWVkIHRvIGxlYXZlIHByaW9yIHRvIHRoZSBmYWN0b3J5IHRvdXIsIHRoZXkgd2lsbCBiZSByZXNwb25zaWJsZSBmb3IgYXJyYW5naW5nIHRoZWlyIHRyYW5zcG9ydGF0aW9uIHRvIHRoZSBWZW5pY2UgYWlycG9ydC4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+DQogICAgICAgICAgICAgICAgICAgICAgICA8bGk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz5Gb29kIHJlc3RyaWN0aW9uczo8L3N0cm9uZz48YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgQXR0ZW5kZWVzIHdpdGggZm9vZCByZXN0cmljdGlvbnMsIHdlIHdpbGwgaGF2ZSBnbHV0ZW4gZnJlZSBhbmQgdmVnYW4vdmVnZXRhcmlhbiBvcHRpb25zICBmb3IgbHVuY2ggYW5kIGRpbm5lcg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0ib25seS1mb3ItZXUiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+VkFUIElORk86PC9zdHJvbmc+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0YWxpYW4gVkFUIHdpbGwgYmUgY2hhcmdlZCBvbiByZXNlcnZhdGlvbnMgcGxhY2VkIGJ5IGNsaWVudHMgZnJvbSBFdXJvcGVhbiBVbmlvbi4gDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJub3QtZm9yLUlUIj4sIGJ1dCBpZiB0aGUgVkFUIG51bWJlciBwcm92aWRlZCBpcyB2YWxpZCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgdGhlIFZBVCBudW1iZXIgcHJvdmlkZWQgaXMgdmFsaWQsIEdyYXBoaXN0dWRpbyB3aWxsIGxhdGVyIHJlZnVuZCB5b3UgdGhlIGZ1bGwgVkFUIGFtb3VudC4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4NCiAgICAgICAgICAgICAgICAgICAgPC91bD4NCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIGNsYXNzPSJhcHBsZS1zd2l0Y2giIGlkPSJ0ZXJtcyIgbmFtZT0idGVybXMiIHZhbHVlPSIxIiByZXF1aXJlZCBhdXRvY29tcGxldGU9Im9mZiI+DQogICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0idGVybXMiPkkgYWNjZXB0IHRoZSBUZXJtcyAmIENvbmRpdGlvbnMgPHN1cD4qPC9zdXA+PC9sYWJlbD4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICA8L2Rpdj4NCg0KICAgICAgICA8ZGl2IGNsYXNzPSJyb3ciPg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXhzIiBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyIj4NCiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJwYXlwYWwtYnV0dG9uLWNvbnRhaW5lciI+PC9kaXY+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgPC9kaXY+DQogICAgPC9kaXY+DQoNCg0KDQoNCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vdG9hc3RpZnktanMiPjwvc2NyaXB0Pg0KPCEtLVsgUFJPRFVDVElPTiBdIC0tPg0KPHNjcmlwdCBzcmM9Imh0dHBzOi8vd3d3LnBheXBhbC5jb20vc2RrL2pzP2NsaWVudC1pZD1BVG1kWlpuWl9WTl9yc0Q0amVFcmd4T205YU81MHlkVmZ0U2R2WF9DdWl2UzNqRGxTTVhOS1YyS2VpZ0hsajloNXpFOXpNM3dRUU42Q25DNSZjdXJyZW5jeT1VU0QmaW50ZW50PWNhcHR1cmUmbG9jYWxlPWVuX1VTIj48L3NjcmlwdD4NCjwhLS1bIEVORCBQUk9EVUNUSU9OIF0gLS0+DQo8IS0tWyBTQU5EQk9YIF0gLS0+DQo8IS0tPHNjcmlwdCBzcmM9Imh0dHBzOi8vd3d3LnBheXBhbC5jb20vc2RrL2pzP2NsaWVudC1pZD1BVTdyZ0hfclJnY3VaWDNMdWg0NUtIQ2lJRFhYbWhBYUpLcm5JbTh2SDFoV1dTc2xscThyZkNYelFYelhhR1BZNG5CclVEN0t5WGxoVFozdyZjdXJyZW5jeT1VU0QmaW50ZW50PWNhcHR1cmUmbG9jYWxlPWVuX1VTIj48L3NjcmlwdD4tLT4NCjwhLS1bIEVORCBTQU5EQk9YIF0gLS0+DQo8c2NyaXB0Pg0KICAgIC8vIE9SREVSIERBVEEuLi4uDQogICAgdmFyIGVudiA9ICdwcm9kdWN0aW9uJzsNCiAgICB2YXIgZXZlbnRfaWQgPSAyOyAvL1JFUVVJUkVEOw0KICAgIHZhciBldmVudE5hbWUgPSAnR1JBUEhJU1RVRElPIEVEVUNBVElPTkFMIFBST0dSQU0gMjAyMicNCiAgICB2YXIgY3VycmVuY3kgPSAnVVNEJzsNCiAgICB2YXIgY3VycmVuY3lfc3ltYm9sID0gJyQnOw0KICAgIHZhciBwcmljZSA9IDM5OTA7DQogICAgdmFyIGJhc2VfcHJpY2UgPSAzOTkwOw0KICAgIHZhciB2YXQgPSAwLjIyOw0KICAgIHZhciBza3UgPSAnR1MtUFNFWENXUy0yMDIyJzsNCiAgICB2YXIgcHJvZHVjdF9uYW1lID0gJ0dSQVBISVNUVURJTyBFRFVDQVRJT05BTCBQUk9HUkFNIDIwMjInDQogICAgdmFyIHByb2R1Y3RfZGVzY3JpcHRpb24gPSAnJzsNCiAgICB2YXIgb3JkZXJEYXRhID0gew0KICAgICAgICByZWZlcmVuY2VfaWQ6ICJHUy1FRFVQUk8tU0VQLTIwMjIiLCAvL0RFRkFVTFQgUkVGRVJFTkNFIElEIQ0KICAgICAgICBhbW91bnQ6IHsNCiAgICAgICAgICAgIHZhbHVlOiBwcmljZSwNCiAgICAgICAgICAgIGN1cnJlbmN5X2NvZGU6IGN1cnJlbmN5LA0KICAgICAgICAgICAgYnJlYWtkb3duOiB7DQogICAgICAgICAgICAgICAgaXRlbV90b3RhbDogeyB2YWx1ZTogcHJpY2UsIGN1cnJlbmN5X2NvZGU6IGN1cnJlbmN5IH0sDQogICAgICAgICAgICAgICAgdGF4X3RvdGFsOiB7IHZhbHVlOiAwLCBjdXJyZW5jeV9jb2RlOiBjdXJyZW5jeSB9LA0KICAgICAgICAgICAgICAgIHNoaXBwaW5nOiB7IHZhbHVlOiAwLCBjdXJyZW5jeV9jb2RlOiBjdXJyZW5jeSB9LA0KICAgICAgICAgICAgICAgIGRpc2NvdW50OiB7IHZhbHVlOiAwLCBjdXJyZW5jeV9jb2RlOiBjdXJyZW5jeSB9DQogICAgICAgICAgICB9DQogICAgICAgIH0sDQogICAgICAgIGludm9pY2VfaWQ6ICdHUy1QU0VYQ1dTLTIwMjInLCAvL0RFRkFVTFQgSU5WT0lDRSBJRCENCiAgICAgICAgaXRlbXM6IFsgeyBuYW1lOiBwcm9kdWN0X25hbWUsIHF1YW50aXR5OiAxLCAnc2t1Jzogc2t1LCBkZXNjcmlwdGlvbjogcHJvZHVjdF9kZXNjcmlwdGlvbiwgdW5pdF9hbW91bnQ6IHsgY3VycmVuY3lfY29kZTogY3VycmVuY3ksIHZhbHVlOiBwcmljZSB9IH0gXQ0KICAgIH07DQoNCg0KICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgZnVuY3Rpb24oKXsNCiAgICAgICAgInVzZSBzdHJpY3QiOw0KDQogICAgICAgZnVuY3Rpb24gX3NlbmREYXRhKGRhdGEsIHRyYW5zYWN0aW9uX2lkKXsNCiAgICAgICAgICAgIFRvYXN0aWZ5KHsNCiAgICAgICAgICAgICAgICB0ZXh0OiBwcm9jZXNzaW5nWW91ckRhdGEsDQogICAgICAgICAgICAgICAgZHVyYXRpb246IDEwMDAwLA0KICAgICAgICAgICAgICAgIGNsb3NlOiB0cnVlLA0KICAgICAgICAgICAgICAgIGdyYXZpdHk6ICJib3R0b20iLA0KICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAicmlnaHQiLA0KICAgICAgICAgICAgICAgIHN0b3BPbkZvY3VzOiB0cnVlLA0KICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N1Y2Nlc3MnLA0KICAgICAgICAgICAgICAgIGVzY2FwZU1hcmt1cDogZmFsc2UsDQogICAgICAgICAgICAgICAgb25DbGljazogZnVuY3Rpb24oKXt9IC8vIENhbGxiYWNrIGFmdGVyIGNsaWNrDQogICAgICAgICAgICB9KS5zaG93VG9hc3QoKTsNCiAgICAgICAgICAgIGxldCBwLCByZXF1ZXN0LCBmZCA9IG5ldyBGb3JtRGF0YSgpOw0KICAgICAgICAgICAgZm9yKHAgaW4gZGF0YSl7DQogICAgICAgICAgICAgICAgaWYoIWRhdGEuaGFzT3duUHJvcGVydHkocCkpIGNvbnRpbnVlOw0KICAgICAgICAgICAgICAgIGlmKHAgPT09ICdwcm9tby1jb2RlJyl7DQogICAgICAgICAgICAgICAgICAgIGZkLmFwcGVuZCgnY291cG9uJywgZGF0YVtwXS5jb3Vwb24ubGFiZWwpOw0KICAgICAgICAgICAgICAgICAgICBmZC5hcHBlbmQoJ2NvdXBvbi12YWx1ZScsIE1hdGguYWJzKGRhdGFbcF0uY291cG9uLnZhbHVlKSk7DQogICAgICAgICAgICAgICAgICAgIGZkLmFwcGVuZCgnY291cG9uLWxhYmVsJywgYENvdXBvbiBhcHBsaWVkICR7ZGF0YVtwXS5jb3Vwb24ubGFiZWx9OiAke2N1cnJlbmN5fSAke01hdGguYWJzKGRhdGFbcF0uY291cG9uLnZhbHVlKX1gKTsNCiAgICAgICAgICAgICAgICB9ZWxzZXsNCiAgICAgICAgICAgICAgICAgICAgZmQuYXBwZW5kKHAsIGRhdGFbcF0pOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBmZC5hcHBlbmQoJ2V2ZW50X2lkJywgZXZlbnRfaWQpOw0KICAgICAgICAgICAgZmQuYXBwZW5kKCd0cmFuc2FjdGlvbl9pZCcsIHRyYW5zYWN0aW9uX2lkKTsNCiAgICAgICAgICAgIGZkLmFwcGVuZCgnYW1vdW50JywgYCR7b3JkZXJEYXRhLmFtb3VudC5icmVha2Rvd24uaXRlbV90b3RhbC52YWx1ZX0gJHtjdXJyZW5jeX1gKTsNCiAgICAgICAgICAgIGlmKGRhdGFbJ2hhdmVfYV9jb21wYW55J10gfHwgY291bnRyaWVzX3dpdGhfdmF0LmluZGV4T2YoZGF0YVsnY291bnRyeV9jb2RlJ10pICE9PSAtMSl7DQogICAgICAgICAgICAgICAgZmQuYXBwZW5kKCd0YXgnLCBgJHtvcmRlckRhdGEuYW1vdW50LmJyZWFrZG93bi50YXhfdG90YWwudmFsdWV9ICR7Y3VycmVuY3l9YCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBmZC5hcHBlbmQoJ2V2ZW50X25hbWUnLCBldmVudE5hbWUpOw0KICAgICAgICAgICAgZmQuYXBwZW5kKCd0YXNrJywncmVjZWlwdCcpOw0KICAgICAgICAgICAgcmV0dXJuIGZldGNoKCJodHRwczovL3d3dy5ncmFwaGlzdHVkaW8uY29tL1RyYWRlTmV3L2FwaS9zZW5kX2VtYWlsLnBocCIsIHsNCiAgICAgICAgICAgICAgICBtZXRob2Q6ICdwb3N0JywNCiAgICAgICAgICAgICAgICBib2R5OiBmZCwNCiAgICAgICAgICAgIH0pDQoNCiAgICAgICAgICAgIC8vcmVxdWVzdCA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOw0KICAgICAgICAgICAgLy9yZXF1ZXN0Lm9wZW4oIlBPU1QiLCAiaHR0cHM6Ly93d3cuZ3JhcGhpc3R1ZGlvLmNvbS9UcmFkZU5ldy9hcGkvc2VuZF9lbWFpbC5waHAiLCBmYWxzZSk7IC8vU1lOQyBSRVFVRVNULi4uLg0KICAgICAgICAgICAgLy9yZXF1ZXN0LnNlbmQoZmQpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gX3VwZGF0ZVByaWNlKHZhdCl7DQogICAgICAgICAgICBsZXQgdXNlX3ByaWNlOw0KICAgICAgICAgICAgaWYoX2RhdGFbJ3Byb21vLWNvZGUnXSkgew0KICAgICAgICAgICAgICAgIC8vb3JkZXJEYXRhLmFtb3VudC5icmVha2Rvd24uZGlzY291bnQudmFsdWUgPSBNYXRoLmFicyhfZGF0YVsncHJvbW8tY29kZSddLmNvdXBvbi52YWx1ZSk7DQogICAgICAgICAgICAgICAgb3JkZXJEYXRhLmFtb3VudC5icmVha2Rvd24uZGlzY291bnQudmFsdWUgPSAwOw0KICAgICAgICAgICAgICAgIHVzZV9wcmljZSA9IGJhc2VfcHJpY2UgLSBNYXRoLmFicyhfZGF0YVsncHJvbW8tY29kZSddLmNvdXBvbi52YWx1ZSkgLSAgb3JkZXJEYXRhLmFtb3VudC5icmVha2Rvd24uZGlzY291bnQudmFsdWU7DQogICAgICAgICAgICAgICAgaWYoX2RhdGFbJ3BheW1lbnQtdHlwZSddID09PSAnaGFsZicpIHVzZV9wcmljZSAqPSAwLjU7DQogICAgICAgICAgICB9ZWxzZXsNCiAgICAgICAgICAgICAgICBvcmRlckRhdGEuYW1vdW50LmJyZWFrZG93bi5kaXNjb3VudC52YWx1ZSA9IDA7DQogICAgICAgICAgICAgICAgdXNlX3ByaWNlID0gYmFzZV9wcmljZSAtIG9yZGVyRGF0YS5hbW91bnQuYnJlYWtkb3duLmRpc2NvdW50LnZhbHVlOw0KICAgICAgICAgICAgfQ0KDQoNCiAgICAgICAgICAgIGlmKHZhdCl7DQogICAgICAgICAgICAgICAgb3JkZXJEYXRhLmFtb3VudC52YWx1ZSA9IE51bWJlcih1c2VfcHJpY2UgKyAodXNlX3ByaWNlICogdmF0KSkudG9GaXhlZCgyKTsNCiAgICAgICAgICAgICAgICBvcmRlckRhdGEuYW1vdW50LmJyZWFrZG93bi50YXhfdG90YWwudmFsdWUgPSBOdW1iZXIodXNlX3ByaWNlICogdmF0KS50b0ZpeGVkKDIpOw0KICAgICAgICAgICAgICAgIG9yZGVyRGF0YS5hbW91bnQuYnJlYWtkb3duLml0ZW1fdG90YWwudmFsdWUgPSBOdW1iZXIodXNlX3ByaWNlKS50b0ZpeGVkKDIpOw0KICAgICAgICAgICAgfWVsc2V7DQogICAgICAgICAgICAgICAgb3JkZXJEYXRhLmFtb3VudC52YWx1ZSA9IE51bWJlcih1c2VfcHJpY2UudG9GaXhlZCgyKSk7DQogICAgICAgICAgICAgICAgb3JkZXJEYXRhLmFtb3VudC5icmVha2Rvd24udGF4X3RvdGFsLnZhbHVlID0gMDsNCiAgICAgICAgICAgICAgICBvcmRlckRhdGEuYW1vdW50LmJyZWFrZG93bi5pdGVtX3RvdGFsLnZhbHVlID0gTnVtYmVyKHVzZV9wcmljZS50b0ZpeGVkKDIpKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgb3JkZXJEYXRhLml0ZW1zWzBdLnVuaXRfYW1vdW50LnZhbHVlID0gTnVtYmVyKHVzZV9wcmljZS50b0ZpeGVkKDIpKTsNCiAgICAgICAgICAgIGNvbnNvbGUud2FybihvcmRlckRhdGEsIG9yZGVyRGF0YS5hbW91bnQpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8gVkFMSURBVElORyBUSEUgVVNFUiBEQVRBIEJFRk9SRSBJTklUIFRIRSBQQVlNRU5UIFBST0NFU1MhDQogICAgICAgIGZ1bmN0aW9uIF92YWxpZGF0ZURhdGEoZGF0YSwgY2hlY2tzKXsNCiAgICAgICAgICAgIGlmKCFhdmFpbGFibGVfc2VhdHMpIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIGxldCBpbnZhbGlkID0gY2hlY2tzLnNvbWUoZnVuY3Rpb24ocCl7DQogICAgICAgICAgICAgICAgcmV0dXJuICFkYXRhW3BdOw0KICAgICAgICAgICAgfSkNCiAgICAgICAgICAgIGlmKGRhdGFbJ2hhdmVfYV9jb21wYW55J10pew0KICAgICAgICAgICAgICAgIGlmKCFkYXRhWyd2YXQnXSB8fCAhZGF0YVsnY29tcGFueSddIHx8ICFkYXRhWydhZGRyZXNzJ10pIGludmFsaWQgPSB0cnVlOw0KICAgICAgICAgICAgICAgIC8vX3VwZGF0ZVByaWNlKHZhdCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgIA0KICAgICAgICAgICAgX3VwZGF0ZVByaWNlKChjb3VudHJpZXNfd2l0aF92YXQuaW5kZXhPZihkYXRhWydjb3VudHJ5X2NvZGUnXSkgIT09IC0xKSA\/IHZhdCA6IG51bGwpOw0KICAgICAgICAgICAgcmV0dXJuICFpbnZhbGlkOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8gR0VORVJBVElORyBBTiBVTklRVUUgSU5WT0lDRSBJRCBGT1IgVEhFIENVUlJFTlQgUEFZTUVOVCBTRVNTSU9OL0ZMT1chDQogICAgICAgIGZ1bmN0aW9uIGdldFJlY2VpcHRVSUQoKSB7DQogICAgICAgICAgICBsZXQgYSA9IG5ldyBVaW50MzJBcnJheSgzKTsNCiAgICAgICAgICAgIHdpbmRvdy5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKGEpOw0KICAgICAgICAgICAgcmV0dXJuICJHUy1QU0VYQ1dTLTIwMjItIisocGVyZm9ybWFuY2Uubm93KCkudG9TdHJpbmcoMzYpK0FycmF5LmZyb20oYSkubWFwKA0KICAgICAgICAgICAgICAgIGZ1bmN0aW9uKEEpIHsgcmV0dXJuIEEudG9TdHJpbmcoMzYpOyB9DQogICAgICAgICAgICApLmpvaW4oIiIpKS5yZXBsYWNlKC9cLi9nLCIiKS50b1VwcGVyQ2FzZSgpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8gQ0hFQ0sgSU4gQkFOTkVEIExJU1QhDQogICAgICAgIGZ1bmN0aW9uIF9jaGVja0Jhbkxpc3QoZGF0YSl7DQogICAgICAgICAgICBpZihbImhhdXNvZmphaUBnbWFpbC5jb20iLCJpbmZvQGhhdXNvZmphaS5jb20iXS5pbmRleE9mKGRhdGFbJ2VtYWlsJ10udG9Mb3dlckNhc2UoKS50cmltKCkpICE9PSAtMSkgcmV0dXJuIHRydWU7DQogICAgICAgICAgICBpZihbImthcGFkaWEiXS5pbmRleE9mKGRhdGFbJ3N1cm5hbWUnXS50b0xvd2VyQ2FzZSgpLnRyaW0oKSkgIT09IC0xKSByZXR1cm4gdHJ1ZTsNCiAgICAgICAgICAgIGlmKFsiamFpIiwiamFncnV0aSJdLmluZGV4T2YoZGF0YVsnbmFtZSddLnRvTG93ZXJDYXNlKCkudHJpbSgpKSAhPT0gLTEpIHJldHVybiB0cnVlOw0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICAvLyBSRVBPUlQgQkFOTkVEIQ0KICAgICAgICBmdW5jdGlvbiBfbG9nQmFubmVkKGRhdGEpew0KICAgICAgICAgICAgbGV0IHAsIGZkID0gbmV3IEZvcm1EYXRhKCk7DQogICAgICAgICAgICBmb3IocCBpbiBkYXRhKXsNCiAgICAgICAgICAgICAgICBpZighZGF0YS5oYXNPd25Qcm9wZXJ0eShwKSkgY29udGludWU7DQogICAgICAgICAgICAgICAgZmQuYXBwZW5kKHAsIGRhdGFbcF0pOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZmQuYXBwZW5kKCdldmVudF9pZCcsIGV2ZW50X2lkKTsNCiAgICAgICAgICAgIGZkLmFwcGVuZCgnZXZlbnRfbmFtZScsIGV2ZW50TmFtZSk7DQogICAgICAgICAgICBmZC5hcHBlbmQoJ3Rhc2snLCdiYW5uZWQnKTsNCiAgICAgICAgICAgIHJldHVybiBmZXRjaCgiaHR0cHM6Ly93d3cuZ3JhcGhpc3R1ZGlvLmNvbS9UcmFkZU5ldy9hcGkvc2VuZF9lbWFpbC5waHAiLCB7DQogICAgICAgICAgICAgICAgbWV0aG9kOiAncG9zdCcsDQogICAgICAgICAgICAgICAgYm9keTogZmQsDQogICAgICAgICAgICB9KQ0KDQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBfdXNlckZlZWRiYWNrKHR5cGUsIG1lc3NhZ2Upew0KICAgICAgICAgICAgaWYod2luZG93LlRvYXN0aWZ5ICYmIG1lc3NhZ2UpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gVG9hc3RpZnkoew0KICAgICAgICAgICAgICAgICAgICB0ZXh0OiBtZXNzYWdlLA0KICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbjogNTAwMCwNCiAgICAgICAgICAgICAgICAgICAgY2xvc2U6IHRydWUsDQogICAgICAgICAgICAgICAgICAgIGdyYXZpdHk6ICJib3R0b20iLA0KICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogInJpZ2h0IiwNCiAgICAgICAgICAgICAgICAgICAgc3RvcE9uRm9jdXM6IHRydWUsDQogICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogdHlwZSwNCiAgICAgICAgICAgICAgICAgICAgZXNjYXBlTWFya3VwOiBmYWxzZSwNCiAgICAgICAgICAgICAgICAgICAgb25DbGljazogZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICB9IC8vIENhbGxiYWNrIGFmdGVyIGNsaWNrDQogICAgICAgICAgICAgICAgfSkuc2hvd1RvYXN0KCk7DQogICAgICAgICAgICB9ZWxzZXsNCiAgICAgICAgICAgICAgICBpZihvdXRwdXQpIG91dHB1dC5pbm5lckhUTUwgPSBtZXNzYWdlOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gX3ZhbGlkYXRlUHJvbW9Db2RlKHZhbHVlKXsNCg0KICAgICAgICAgICAgY29uc29sZS53YXJuKCdWQUxJREFUSU5HIENPVVBPTjogIiVzIicsIHZhbHVlKTsNCiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihmdWxsZmlsbCwgcmVqZWN0KXsNCiAgICAgICAgICAgICAgICBsZXQgdWYsIHZhbGlkLCB3VUlEOw0KICAgICAgICAgICAgICAgIGlmKHZhbHVlLnRyaW0oKSA9PT0gJycgfHwgIXZhbHVlKSB7DQogICAgICAgICAgICAgICAgICAgIGZ1bGxmaWxsKG51bGwpOw0KICAgICAgICAgICAgICAgICAgICByZXR1cm47DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGlmKHBheUNhcmQpIHBheUNhcmQuY2xhc3NMaXN0LmFkZCgnbG9hZGluZycpOw0KICAgICAgICAgICAgICAgIHdVSUQgPSB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpew0KICAgICAgICAgICAgICAgICAgICAgdWwgPSBfdXNlckZlZWRiYWNrKCd3YXJuJywgY2hlY2tpbmdZb3VyQ291cG9uKTsNCiAgICAgICAgICAgICAgICB9LDUwMCk7DQogICAgICAgICAgICAgICAgZmV0Y2goImh0dHBzOi8vYXBpLmdyYXBoaXN0dWRpby5jb20vYXBpL3dvcmtzaG9wL3ZhbGlkYXRlLWNvdXBvbi8iK3ZhbHVlLCB7DQogICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ2dldCcNCiAgICAgICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKXsNCiAgICAgICAgICAgICAgICAgICAgaWYocmVzcG9uc2Uuc3RhdHVzID09PSAyMDApew0KICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWQgPSB0cnVlOw0KICAgICAgICAgICAgICAgICAgICAgICAgZnVsbGZpbGwocmVzcG9uc2UuanNvbigpKQ0KICAgICAgICAgICAgICAgICAgICB9ZWxzZXsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdCgpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24oZXJyKXsNCiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KCk7DQogICAgICAgICAgICAgICAgfSkuZmluYWxseShmdW5jdGlvbigpew0KICAgICAgICAgICAgICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHdVSUQpOw0KICAgICAgICAgICAgICAgICAgICBpZih1ZikgdWYuaGlkZVRvYXN0KCk7DQogICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7DQogICAgICAgICAgICAgICAgICAgICAgICBfdXNlckZlZWRiYWNrKHZhbGlkID8gJ3N1Y2Nlc3MnIDogJ2Vycm9yJywgdmFsaWQgPyB2YWxpZENvdXBvbiA6IGludmFsaWRDb3Vwb24pOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYocGF5Q2FyZCkgcGF5Q2FyZC5jbGFzc0xpc3QucmVtb3ZlKCdsb2FkaW5nJyk7DQogICAgICAgICAgICAgICAgICAgIH0sIDEwMDApOw0KICAgICAgICAgICAgICAgIH0pDQoNCiAgICAgICAgICAgIH0pDQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBfY2hlY2tGb3JtKF9kYXRhLCBfY2hlY2tzLCBhY3Rpb25zKXsNCiAgICAgICAgICAgIGlmKF92YWxpZGF0ZURhdGEoX2RhdGEsIF9jaGVja3MpKXsNCiAgICAgICAgICAgICAgICBwYXlDYXJkLmNsYXNzTGlzdC5yZW1vdmUoJ2Rpc2FibGVkJyk7DQogICAgICAgICAgICAgICAgYWN0aW9ucy5lbmFibGUoKTsNCiAgICAgICAgICAgIH1lbHNlew0KICAgICAgICAgICAgICAgIHBheUNhcmQuY2xhc3NMaXN0LmFkZCgnZGlzYWJsZWQnKTsNCiAgICAgICAgICAgICAgICBhY3Rpb25zLmRpc2FibGUoKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIG9yZGVyRGF0YS5pbnZvaWNlX2lkID0gZ2V0UmVjZWlwdFVJRCgpOw0KICAgICAgICBpZih3aW5kb3cuY29uc29sZSAmJiB3aW5kb3cuY29uc29sZS5pbmZvKSB7DQogICAgICAgICAgICAgY29uc29sZS5pbmZvKCdTRVNTSU9OIElOVk9JQ0UgSUQ6ICVzJywgIG9yZGVyRGF0YS5pbnZvaWNlX2lkKTsNCg0KICAgICAgICB9DQoNCiAgICAgICAgLy8gTEVYSUNPIEZPUiBBTEVSVFMgQkFER0UuLi4NCiAgICAgICAgbGV0IHN1Y2Nlc3NNZXNzYWdlID0gJzxzdHJvbmc+UEFZTUVOVCBET05FITwvc3Ryb25nPjxicj5UaGFuayB5b3UgZm9yIHlvdXIgcGF5bWVudCEnOw0KICAgICAgICBsZXQgY2FuY2VsTWVzc2FnZSA9ICc8c3Ryb25nPlBBWU1FTlQgQ0FOQ0VMTEVEITwvc3Ryb25nPjxicj5ObyB0cmFuc2FjdGlvbiBtYWRlISc7DQogICAgICAgIGxldCBlcnJvck1lc3NhZ2UgPSAnPHN0cm9uZz5VTkFCTEUgVE8gUFJPQ0VTUyBZT1VSIFBBWU1FTlQhPC9zdHJvbmc+PGJyPldlIGFyZSBzb3JyeSwgYnV0IHdlIGNhblwndCBwcm9jZXNzIHlvdXIgcGF5bWVudCBhdCB0aGlzIHRpbWUhJzsNCiAgICAgICAgbGV0IGVycm9yU29sZE91dE1lc3NhZ2UgPSAnPHN0cm9uZz5FVkVOVCBTT0xEIE9VVCE8L3N0cm9uZz48YnI+V2UgYXJlIHNvcnJ5LCBidXQgYWxsIGF2YWlsYWJsZSBzZWF0cyBhcmUgc29sZCBvdXQuISc7DQogICAgICAgIGxldCBwcm9jZXNzaW5nWW91ckRhdGEgPSAnPHN0cm9uZz5QUk9DRVNTSU5HIFlPVVIgREFUQSE8L3N0cm9uZz48YnI+UGxlYXNlIHdhaXQhJzsNCg0KICAgICAgICBsZXQgY2hlY2tpbmdZb3VyQ291cG9uID0gJzxzdHJvbmc+VkFMSURBVElORyBZT1VSIENPREUhPC9zdHJvbmc+PGJyPlBsZWFzZSB3YWl0ISc7DQogICAgICAgIGxldCB2YWxpZENvdXBvbiA9ICc8c3Ryb25nPllPVVIgQ09VUE9OIENPREUgSVMgVkFMSUQhPC9zdHJvbmc+PGJyPldlIHdpbGwgYXBwbHkgdGhlIGRpc2NvdW50ISc7DQogICAgICAgIGxldCBpbnZhbGlkQ291cG9uID0gJzxzdHJvbmc+WU9VUiBDT1VQT04gQ09ERSBJUyBJTlZBTElEITwvc3Ryb25nPjxicj5QbGVhc2UgZG91YmxlIGNoZWNrIHlvdXIgY291cG9uIGNvZGUhJzsNCg0KICAgICAgICAvLyBFTEVNRU5UUyAuLi4NCiAgICAgICAgbGV0IHBheUNhcmQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbZGF0YS10eXBlPSJwYXktZm9ybSJdJyk7DQogICAgICAgIGxldCBvdXRwdXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbZGF0YS10eXBlPSJvdXRwdXQiXScpOw0KICAgICAgICBsZXQgdmF0QmxvY2sgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbZGF0YS10eXBlPSJ2YXQtYmxvY2siXScpOw0KICAgICAgICBsZXQgc3RhdGVCbG9jayA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLXR5cGU9InN0YXRlIl0nKTsNCiAgICAgICAgbGV0IGFkZHJlc3NCbG9jayA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLXR5cGU9ImFkZHJlc3MtYmxvY2siXScpOw0KICAgICAgICBsZXQgdGVybXNCbG9jayA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLXR5cGU9InRlcm1zIl0nKTsNCiAgICAgICAgbGV0IGFwcGxpZWRDb3Vwb24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbZGF0YS10eXBlPSJhcHBsaWVkLWNvdXBvbiJdJyk7DQogICAgICAgIGxldCBwYXlwYWxCdXR0b25Db250YWluZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjcGF5cGFsLWJ1dHRvbi1jb250YWluZXInKTsNCiAgICAgICAgbGV0IF9kYXRhOw0KICAgICAgICBsZXQgY291bnRyaWVzX3dpdGhfdmF0ID0gWydJVCcsJ0FUJywnQkUnLCdCRycsJ0hSJywnQ1knLCdDWicsJ0RLJywnRUUnLCdGSScsJ0ZSJywnREUnLCdFTCcsJ0hVJywnSUUnLCdMVicsJ0xUJywnTFUnLCdNVCcsJ05MJywnUEwnLCdQVCcsJ1JPJywnU0snLCdTSScsJ0VTJywnU0UnXTsNCiAgICAgICAgbGV0IHZhdElucDsNCiAgICAgICAgbGV0IGlzQUNvbXBhbnksIHVzYVN0YXRlcywgY2FuU3RhdGVzLCBvdGhlclN0YXRlczsNCiAgICAgICAgbGV0IGF2YWlsYWJsZV9zZWF0cyA9IE51bWJlcihwYXlDYXJkLmRhdGFzZXQuYXZhaWxhYmxlIHx8IDApOw0KDQogICAgICAgIGNvbnNvbGUuaW5mbygnQ09VTlRSSUVTIFdJVEggVkFUOiAlcycsIGNvdW50cmllc193aXRoX3ZhdC5sZW5ndGgsIG9yZGVyRGF0YSk7DQogICAgICAgIGNvbnNvbGUuaW5mbygnQVZBSUxBQkxFIFNFQVRTIEFSRTogJXMnLCBhdmFpbGFibGVfc2VhdHMpOw0KDQogICAgICAgaWYoIWF2YWlsYWJsZV9zZWF0cyl7DQogICAgICAgICAgICBpZih3aW5kb3cuVG9hc3RpZnkpew0KICAgICAgICAgICAgICAgIFRvYXN0aWZ5KHsNCiAgICAgICAgICAgICAgICAgICAgdGV4dDogZXJyb3JTb2xkT3V0TWVzc2FnZSwNCiAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246IDEwMDAwLA0KICAgICAgICAgICAgICAgICAgICBjbG9zZTogdHJ1ZSwNCiAgICAgICAgICAgICAgICAgICAgZ3Jhdml0eTogImJvdHRvbSIsDQogICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAicmlnaHQiLA0KICAgICAgICAgICAgICAgICAgICBzdG9wT25Gb2N1czogdHJ1ZSwNCiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnZXJyb3InLA0KICAgICAgICAgICAgICAgICAgICBlc2NhcGVNYXJrdXA6IGZhbHNlLA0KICAgICAgICAgICAgICAgICAgICBvbkNsaWNrOiBmdW5jdGlvbigpe30gLy8gQ2FsbGJhY2sgYWZ0ZXIgY2xpY2sNCiAgICAgICAgICAgICAgICB9KS5zaG93VG9hc3QoKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgfQ0KDQogICAgICAgIHBheXBhbC5CdXR0b25zKHsNCiAgICAgICAgICAgIGVudjogZW52LA0KICAgICAgICAgICAgbG9jYWxlOiAnZW5fVVMnLA0KICAgICAgICAgICAgc3R5bGU6IHsNCiAgICAgICAgICAgICAgICBsYXlvdXQ6ICdob3Jpem9udGFsJywNCiAgICAgICAgICAgICAgICBzaXplOiAncmVzcG9uc2l2ZScsDQogICAgICAgICAgICAgICAgY29sb3I6ICdnb2xkJywNCiAgICAgICAgICAgICAgICBzaGFwZTogJ3BpbGwnLA0KICAgICAgICAgICAgICAgIGxhYmVsOiAnYnV5bm93JywNCiAgICAgICAgICAgICAgICB0YWdsaW5lOiAnZmFsc2UnLA0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIC8vIFdIRU4gVEhFIFBBWVBBTCBMSUJSQVJZIElOSVQsIFdFIERJU0FCTEUgVEhFIFBBWU1FTlQgQlVUVE9OIC4uLi4NCiAgICAgICAgICAgIG9uSW5pdDogZnVuY3Rpb24oZGF0YSwgYWN0aW9ucykgIHsNCiAgICAgICAgICAgICAgICBsZXQgX2NoZWNrcywgaW5wdXRzOw0KICAgICAgICAgICAgICAgIC8vIERJU0FCTEUgVEhFIEJVVFRPTihTKQ0KICAgICAgICAgICAgICAgIHBheUNhcmQuY2xhc3NMaXN0LmFkZCgnZGlzYWJsZWQnKTsNCg0KDQogICAgICAgICAgICAgICAgYWN0aW9ucy5kaXNhYmxlKCk7DQogICAgICAgICAgICAgICAgX2RhdGEgPSB7fTsNCiAgICAgICAgICAgICAgICBfY2hlY2tzID0gW107DQogICAgICAgICAgICAgICAgLy9pZihfcHJlZmlsbE9uVGVzdCApIF9kYXRhID0gX3ByZWZpbGxPblRlc3Q7DQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgaW5wdXRzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCAoJ1tkYXRhLXR5cGU9InBheS1mb3JtIl0gaW5wdXQsIFtkYXRhLXR5cGU9InBheS1mb3JtIl0gc2VsZWN0LCAgW2RhdGEtdHlwZT0icGF5LWZvcm0iXSB0ZXh0YXJlYScpOw0KICAgICAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5tYXAuY2FsbChpbnB1dHMsIGZ1bmN0aW9uKGlucHV0KXsNCg0KICAgICAgICAgICAgICAgICAgICAvL2lmKF9wcmVmaWxsT25UZXN0ICYmIF9wcmVmaWxsT25UZXN0W2lucHV0Lm5hbWVdKSBpbnB1dC52YWx1ZSA9IF9wcmVmaWxsT25UZXN0W2lucHV0Lm5hbWVdOw0KICAgICAgICAgICAgICAgICAgICBpZihpbnB1dC5yZXF1aXJlZCkgX2NoZWNrcy5wdXNoKGlucHV0Lm5hbWUpOw0KICAgICAgICAgICAgICAgICAgICBpZihpbnB1dC5uYW1lID09PSAnaGF2ZV9hX2NvbXBhbnknKSBpc0FDb21wYW55ID0gaW5wdXQ7DQogICAgICAgICAgICAgICAgICAgIGlmKGlucHV0Lm5hbWUgPT09ICdzdGF0ZScpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGlucHV0LmRhdGFzZXQuZm9yID09PSAndXNhJykgdXNhU3RhdGVzID0gaW5wdXQ7DQogICAgICAgICAgICAgICAgICAgICAgICBpZihpbnB1dC5kYXRhc2V0LmZvciA9PT0gJ2NhbmFkYScpIGNhblN0YXRlcyA9IGlucHV0Ow0KICAgICAgICAgICAgICAgICAgICAgICAgaWYoaW5wdXQuZGF0YXNldC5mb3IgPT09ICdvdGhlcnMnKSBvdGhlclN0YXRlcyA9IGlucHV0Ow0KICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgaWYoaW5wdXQubmFtZSA9PT0gJ3BheW1lbnQtdHlwZScpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIF9kYXRhW2lucHV0Lm5hbWVdID0gWydmdWxsJywnaGFsZiddLmluZGV4T2YoaW5wdXQudmFsdWUpICE9PSAtMSA\/IGlucHV0LnZhbHVlIDogJ2Z1bGwnOw0KICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgaWYoaW5wdXQubmFtZSA9PT0gJ3Byb21vLWNvZGUnKSBpbnB1dC52YWx1ZSA9ICcnOw0KDQogICAgICAgICAgICAgICAgICAgIGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGZ1bmN0aW9uKGUpew0KICAgICAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaChlLmN1cnJlbnRUYXJnZXQubmFtZSl7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICduYW1lJzoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzdXJuYW1lJzoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjb3VudHJ5JzoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjb3VudHJ5X2NvZGUnOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZGF0YVtlLmN1cnJlbnRUYXJnZXQubmFtZV0gPSAvXlxzKlx3ezIsfVxzKi4qJC8udGVzdChlLmN1cnJlbnRUYXJnZXQudmFsdWUpID8gZS5jdXJyZW50VGFyZ2V0LnZhbHVlLnRyaW0oKSA6IG51bGw7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGUuY3VycmVudFRhcmdldC5uYW1lID09PSAnY291bnRyeV9jb2RlJyl7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihpc0FDb21wYW55KSBpc0FDb21wYW55LmNoZWNrZWQgPSBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHVzYVN0YXRlcykgdXNhU3RhdGVzLmRpc2FibGVkID0gdHJ1ZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGNhblN0YXRlcykgY2FuU3RhdGVzLmRpc2FibGVkID0gdHJ1ZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKG90aGVyU3RhdGVzKSBvdGhlclN0YXRlcy5kaXNhYmxlZCA9IHRydWU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZGF0YVsnaGF2ZV9hX2NvbXBhbnknXSA9IGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YXRJbnAuZGlzYWJsZWQgPSAhKGNvdW50cmllc193aXRoX3ZhdC5pbmRleE9mKF9kYXRhW2UuY3VycmVudFRhcmdldC5uYW1lXSkgIT09IC0xKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHN0YXRlQmxvY2spIHN0YXRlQmxvY2suZGF0YXNldC5jb3VudHJ5ID0gX2RhdGFbZS5jdXJyZW50VGFyZ2V0Lm5hbWVdOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYodmF0QmxvY2spIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXRCbG9jay5kYXRhc2V0LmNvdW50cnkgPSBfZGF0YVtlLmN1cnJlbnRUYXJnZXQubmFtZV07DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmF0QmxvY2suc3R5bGUuZGlzcGxheSA9IChjb3VudHJpZXNfd2l0aF92YXQuaW5kZXhPZihfZGF0YVtlLmN1cnJlbnRUYXJnZXQubmFtZV0pICE9PSAtMSkgPyAnYmxvY2snIDogJ25vbmUnOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih0ZXJtc0Jsb2NrKXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXJtc0Jsb2NrLmRhdGFzZXQuZm9yID0gKGNvdW50cmllc193aXRoX3ZhdC5pbmRleE9mKF9kYXRhW2UuY3VycmVudFRhcmdldC5uYW1lXSkgIT09IC0xKSA\/ICd1ZScgOiAnYWxsJzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXJtc0Jsb2NrLmRhdGFzZXQuY291bnRyeSA9IF9kYXRhW2UuY3VycmVudFRhcmdldC5uYW1lXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3VwZGF0ZVByaWNlKGNvdW50cmllc193aXRoX3ZhdC5pbmRleE9mKF9kYXRhW2UuY3VycmVudFRhcmdldC5uYW1lXSkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoX2RhdGFbZS5jdXJyZW50VGFyZ2V0Lm5hbWVdID09PSAnVVMnICYmIHVzYVN0YXRlcykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzYVN0YXRlcy5kaXNhYmxlZCA9IGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzYVN0YXRlcy5zZWxlY3RlZEluZGV4ID0gMDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKF9kYXRhW2UuY3VycmVudFRhcmdldC5uYW1lXSA9PT0gJ0NBJyAmJiBjYW5TdGF0ZXMpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5TdGF0ZXMuZGlzYWJsZWQgPSBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5TdGF0ZXMuc2VsZWN0ZWRJbmRleCA9IDA7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihbIlVTIiwiQ0EiXS5pbmRleE9mKF9kYXRhW2UuY3VycmVudFRhcmdldC5uYW1lXSkgPT09IC0xICYmIG90aGVyU3RhdGVzKSBvdGhlclN0YXRlcy5kaXNhYmxlZCA9IGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoWyJVUyIsIkNBIl0uaW5kZXhPZihfZGF0YVtlLmN1cnJlbnRUYXJnZXQubmFtZV0pICE9PSAtMSl7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2NoZWNrcy5wdXNoKCdzdGF0ZScpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jaGVja3MuZmlsdGVyKGZ1bmN0aW9uKHByb3AsIGluZHgpew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2NoZWNrcy5pbmRleE9mKHByb3ApID09PSBpbmR4DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY2hlY2tzID0gX2NoZWNrcy5maWx0ZXIoZnVuY3Rpb24ocHJvcCwgaW5keCl7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9wICE9PSAnc3RhdGUnOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZGF0YVsnc3RhdGUnXSA9IG51bGw7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgX2RhdGFbJ3N0YXRlJ107DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihhZGRyZXNzQmxvY2spIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzQmxvY2suZGF0YXNldC5mb3I9X2RhdGFbZS5jdXJyZW50VGFyZ2V0Lm5hbWVdOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWRkcmVzc0Jsb2NrLnN0eWxlLmRpc3BsYXkgPSBfZGF0YVtlLmN1cnJlbnRUYXJnZXQubmFtZV0gPyAnYmxvY2snIDogJ25vbmUnOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnY2l0eSc6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9kYXRhW2UuY3VycmVudFRhcmdldC5uYW1lXSA9IC9eXHMqXHd7Myx9XHMqLiokLy50ZXN0KGUuY3VycmVudFRhcmdldC52YWx1ZSkgPyBlLmN1cnJlbnRUYXJnZXQudmFsdWUudHJpbSgpIDogbnVsbDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjb21wYW55JzoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2RhdGFbZS5jdXJyZW50VGFyZ2V0Lm5hbWVdID0gL15ccyouezUsfSQvLnRlc3QoZS5jdXJyZW50VGFyZ2V0LnZhbHVlKSA\/IGUuY3VycmVudFRhcmdldC52YWx1ZS50cmltKCkgOiBudWxsOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd0ZWxlcGhvbmUnOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZGF0YVtlLmN1cnJlbnRUYXJnZXQubmFtZV0gPSAvXlxzKi57NSx9JC9tLnRlc3QoZS5jdXJyZW50VGFyZ2V0LnZhbHVlKSA\/IGUuY3VycmVudFRhcmdldC52YWx1ZS50cmltKCkgOiBudWxsOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzdHJlZXQnOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZGF0YVtlLmN1cnJlbnRUYXJnZXQubmFtZV0gPSAvXlxzKi57NSx9JC9tLnRlc3QoZS5jdXJyZW50VGFyZ2V0LnZhbHVlKSA\/IGUuY3VycmVudFRhcmdldC52YWx1ZS50cmltKCkgOiBudWxsOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd6aXAnOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZGF0YVtlLmN1cnJlbnRUYXJnZXQubmFtZV0gPSAvXlxzKi57NCx9JC9tLnRlc3QoZS5jdXJyZW50VGFyZ2V0LnZhbHVlKSA\/IGUuY3VycmVudFRhcmdldC52YWx1ZS50cmltKCkgOiBudWxsOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdhZGRyZXNzJzoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2RhdGFbZS5jdXJyZW50VGFyZ2V0Lm5hbWVdID0gL15ccyouezUsfSQvbS50ZXN0KGUuY3VycmVudFRhcmdldC52YWx1ZSkgPyBlLmN1cnJlbnRUYXJnZXQudmFsdWUudHJpbSgpIDogbnVsbDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAndGVybXMnOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3ByaXZhY3knOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2hhdmVfYV9jb21wYW55JzoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2RhdGFbZS5jdXJyZW50VGFyZ2V0Lm5hbWVdID0gZS5jdXJyZW50VGFyZ2V0LmNoZWNrZWQ7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3ZhdCc6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9kYXRhW2UuY3VycmVudFRhcmdldC5uYW1lXSA9IC9eXHMqW2EtekEtWjAtOV17Nix9XHMqJC8udGVzdChlLmN1cnJlbnRUYXJnZXQudmFsdWUpID8gZS5jdXJyZW50VGFyZ2V0LnZhbHVlLnRyaW0oKSA6IG51bGw7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2VtYWlsJzoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2RhdGFbZS5jdXJyZW50VGFyZ2V0Lm5hbWVdID0gL15cdysoW1wuLV0\/XHcrKSpAXHcrKFtcLi1dP1x3KykqKFwuXHd7MiwzfSkrJC8udGVzdChlLmN1cnJlbnRUYXJnZXQudmFsdWUpID8gZS5jdXJyZW50VGFyZ2V0LnZhbHVlIDogbnVsbDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc3RhdGUnOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZGF0YVtlLmN1cnJlbnRUYXJnZXQubmFtZV0gPSBlLmN1cnJlbnRUYXJnZXQudmFsdWUgIT09ICcnID8gZS5jdXJyZW50VGFyZ2V0LnZhbHVlIDogbnVsbDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAncGF5bWVudC10eXBlJzoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2RhdGFbZS5jdXJyZW50VGFyZ2V0Lm5hbWVdID0gWydmdWxsJywnaGFsZiddLmluZGV4T2YoZS5jdXJyZW50VGFyZ2V0LnZhbHVlKSAhPT0gLTEgPyBlLmN1cnJlbnRUYXJnZXQudmFsdWUgOiAnZnVsbCc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKF9kYXRhW2UuY3VycmVudFRhcmdldC5uYW1lXSA9PT0gJ2hhbGYnKXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaWNlID0gTnVtYmVyKChiYXNlX3ByaWNlKi41KS50b0ZpeGVkKDApKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpY2UgPSBiYXNlX3ByaWNlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdwcm9tby1jb2RlJzoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2RhdGFbZS5jdXJyZW50VGFyZ2V0Lm5hbWVdID0gbnVsbDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2NoZWNrcy5wdXNoKGUuY3VycmVudFRhcmdldC5uYW1lKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoZS5jdXJyZW50VGFyZ2V0LnZhbHVlLnRyaW0oKSA9PT0gJycpew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIF9kYXRhW2UuY3VycmVudFRhcmdldC5uYW1lXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGFwcGxpZWRDb3Vwb24pIGFwcGxpZWRDb3Vwb24uaW5uZXJIVE1MID0gJyc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY2hlY2tzID0gX2NoZWNrcy5maWx0ZXIoZnVuY3Rpb24ocHJvcCl7IHJldHVybiBwcm9wICE9PSBlLmN1cnJlbnRUYXJnZXQubmFtZX0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBfcmVzdWx0ID0gZS5jdXJyZW50VGFyZ2V0Lm5leHRFbGVtZW50U2libGluZzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92YWxpZGF0ZVByb21vQ29kZShlLmN1cnJlbnRUYXJnZXQudmFsdWUpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbihyZXN1bHQpew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5pbmZvKCdWQUxJREFUSU9OIFJFU1VMVCcsIHJlc3VsdCwgX2NoZWNrcyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2RhdGFbJ3Byb21vLWNvZGUnXSA9IHJlc3VsdDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbmV3UHJpY2UgPSBiYXNlX3ByaWNlICsgcmVzdWx0LmNvdXBvbi52YWx1ZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihhcHBsaWVkQ291cG9uKSBhcHBsaWVkQ291cG9uLmlubmVySFRNTCA9IGA8c3RyaWtlPiR7YmFzZV9wcmljZX0gJHtjdXJyZW5jeX08L3N0cmlrZT4gJHtuZXdQcmljZX0gJHtjdXJyZW5jeX1gOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jaGVja0Zvcm0oX2RhdGEsIF9jaGVja3MsIGFjdGlvbnMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24oKXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUud2FybignVkFMSURBVElPTiBFUlJPUiEnLCBfY2hlY2tzKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZGF0YVsncHJvbW8tY29kZSddID0gbnVsbDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihhcHBsaWVkQ291cG9uKSBhcHBsaWVkQ291cG9uLmlubmVySFRNTCA9ICcnOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jaGVja0Zvcm0oX2RhdGEsIF9jaGVja3MsIGFjdGlvbnMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgaWYoZS5jdXJyZW50VGFyZ2V0Lm5hbWUgPT09ICdwcm9tby1jb2RlJyB8fCBfZGF0YVtlLmN1cnJlbnRUYXJnZXQubmFtZV0pew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuY3VycmVudFRhcmdldC5jbGFzc0xpc3QucmVtb3ZlKCdpbnZhbGlkJyk7DQogICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmN1cnJlbnRUYXJnZXQuY2xhc3NMaXN0LmFkZCgnaW52YWxpZCcpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgICAgICBfY2hlY2tGb3JtKF9kYXRhLCBfY2hlY2tzLCBhY3Rpb25zKTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5pbmZvKF9kYXRhKTsNCiAgICAgICAgICAgICAgICAgICAgfSkNCiAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICBwYXlDYXJkLmNsYXNzTGlzdC5yZW1vdmUoJ2xvYWRpbmcnKTsNCiAgICAgICAgICAgIH0sDQoNCiAgICAgICAgICAgIC8vIFNFVFMgVVAgVEhFIFRSQU5TQUNUSU9OIFdIRU4gQSBQQVlNRU5UIEJVVFRPTiBJUyBDTElDS0VEIC4uLg0KICAgICAgICAgICAgY3JlYXRlT3JkZXI6IGZ1bmN0aW9uKGRhdGEsIGFjdGlvbnMpIHsNCiAgICAgICAgICAgICAgICBpZihvdXRwdXQpIG91dHB1dC5pbm5lckhUTUwgPSAnJzsNCiAgICAgICAgICAgICAgICBpZihwYXlDYXJkKSBwYXlDYXJkLmNsYXNzTGlzdC5hZGQoJ3Byb2Nlc3NpbmcnKTsNCiAgICAgICAgICAgICAgICBpZihfY2hlY2tCYW5MaXN0KF9kYXRhKSkgew0KICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUuZXJyb3IoJ0JBTk5FRCEnKTsNCiAgICAgICAgICAgICAgICAgICAgX2xvZ0Jhbm5lZChfZGF0YSk7DQogICAgICAgICAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgcmV0dXJuIGFjdGlvbnMub3JkZXIuY3JlYXRlKHsNCiAgICAgICAgICAgICAgICAgICAgcHVyY2hhc2VfdW5pdHM6IFsgb3JkZXJEYXRhIF0sDQogICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uX2NvbnRleHQ6IHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGJyYW5kX25hbWU6ICdHcmFwaGlzdHVkaW8gLSBJdGFseScsDQogICAgICAgICAgICAgICAgICAgICAgICBzaGlwcGluZ19wcmVmZXJlbmNlOiAnTk9fU0hJUFBJTkcnDQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgIH0sDQoNCiAgICAgICAgICAgIC8vIEZJTkFMSVpFIFRIRSBUUkFOU0FDVElPTiAuLi4NCiAgICAgICAgICAgIG9uQXBwcm92ZTogZnVuY3Rpb24oZGF0YSwgYWN0aW9ucykgew0KICAgICAgICAgICAgICAgIG91dHB1dC5jbGFzc0xpc3QucmVtb3ZlKCdlcnJvcicpOw0KICAgICAgICAgICAgICAgIGlmKHBheUNhcmQpIHBheUNhcmQuY2xhc3NMaXN0LmFkZCgncHJvY2Vzc2luZycpOw0KICAgICAgICAgICAgICAgIHJldHVybiBhY3Rpb25zLm9yZGVyLmNhcHR1cmUoKS50aGVuKGZ1bmN0aW9uKG9yZGVyRGF0YSkgew0KICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnQ0FQVFVSRSBQQVlNRU5UIFJFU1VMVCcsIG9yZGVyRGF0YSwgSlNPTi5zdHJpbmdpZnkob3JkZXJEYXRhLCBudWxsLCAyKSk7DQogICAgICAgICAgICAgICAgICAgIGxldCB0cmFuc2FjdGlvbiA9IG9yZGVyRGF0YS5wdXJjaGFzZV91bml0c1swXS5wYXltZW50cy5jYXB0dXJlc1swXTsNCiAgICAgICAgICAgICAgICAgICAgb3V0cHV0LmNsYXNzTGlzdC5hZGQoJ3N1Y2Nlc3MnKTsNCg0KDQogICAgICAgICAgICAgICAgICAgIF9zZW5kRGF0YShfZGF0YSwgdHJhbnNhY3Rpb24uaWQpDQogICAgICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uKCl7DQogICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ0RBVEEgUFJPQ0VTU0VEIScpOw0KICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9ucy5yZWRpcmVjdCgnaHR0cHM6Ly93d3cuZ3JhcGhpc3R1ZGlvLmNvbS9lbi9hY2NhZGVtaWEvdGhlLXB1cnN1aXQtb2YtZXhjZWxsZW5jZS13b3Jrc2hvcC90YW5rcy8nKTsNCiAgICAgICAgICAgICAgICAgICAgfSk7DQoNCiAgICAgICAgICAgICAgICAgICAgX3VzZXJGZWVkYmFjaygnc3VjY2VzcycsIHN1Y2Nlc3NNZXNzYWdlKTsNCiAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgIH0sDQoNCg0KICAgICAgICAgICAgLy8gSEFORExFIFBBWU1FTlQgQ0FOQ0VMIEVWRU5UIC4uLi4NCiAgICAgICAgICAgIG9uQ2FuY2VsOiBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgaWYocGF5Q2FyZCkgcGF5Q2FyZC5jbGFzc0xpc3QucmVtb3ZlKCdwcm9jZXNzaW5nJyk7DQogICAgICAgICAgICAgICAgX3VzZXJGZWVkYmFjaygnd2FybicsIGNhbmNlbE1lc3NhZ2UpOw0KICAgICAgICAgICAgICAgIGlmKG91dHB1dCkgIG91dHB1dC5jbGFzc0xpc3QucmVtb3ZlKCdlcnJvcicpOw0KICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignT1BFUkFUSU9OIENBTkNFTExFRCBCWSBVU0VSJykNCiAgICAgICAgICAgICAgICAvLyB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICIveW91ci1lcnJvci1wYWdlLWhlcmUiOw0KICAgICAgICAgICAgfSwNCg0KICAgICAgICAgICAgLy8gUFJPQ0VTUyBQQVlNRU5UIEVSUk9SUy4uLi4NCiAgICAgICAgICAgIG9uRXJyb3I6IGZ1bmN0aW9uIChlcnIpIHsNCiAgICAgICAgICAgICAgICBpZihwYXlDYXJkKSBwYXlDYXJkLmNsYXNzTGlzdC5yZW1vdmUoJ3Byb2Nlc3NpbmcnKTsNCiAgICAgICAgICAgICAgICBfdXNlckZlZWRiYWNrKCdlcnJvcicsIGVycm9yTWVzc2FnZSk7DQogICAgICAgICAgICAgICAgaWYob3V0cHV0KXsNCiAgICAgICAgICAgICAgICAgICAgb3V0cHV0LmNsYXNzTGlzdC5hZGQoJ2Vycm9yJyk7DQogICAgICAgICAgICAgICAgICAgIG91dHB1dC5pbm5lckhUTUwgPSBlcnJvck1lc3NhZ2U7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0VSUk9SIERVUklORyBQQVlNRU5UIEZMT1cnLCBlcnIpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9KS5yZW5kZXIocGF5cGFsQnV0dG9uQ29udGFpbmVyKTsNCiAgICB9KTsNCg0KDQo8L3NjcmlwdD4=[\/vc_raw_html][\/vc_column_inner][\/vc_row_inner][\/vc_column][\/vc_row]<\/p>\n","protected":false},"author":11,"featured_media":0,"parent":53427,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"cybocfi_hide_featured_image":"","footnotes":""},"class_list":["post-54046","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>The pursuit of excellence - Workshop - Graphistudio<\/title>\n<meta name=\"description\" content=\"Graphistudio Workshop with Lindsay Adler, Chris Knight and Jerry Ghionis in the amazing setting of Castle Ceconi, Italy.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.graphistudio.com\/fr\/accademia-ceconi\/the-pursuit-of-excellence-workshop-2\/the-pursuit-of-excellence-workshop-2-2\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"The-pursuit of excellence - workshop\" \/>\n<meta property=\"og:description\" content=\"Graphistudio Workshop with Lindsay Adler, Chris Knight and Jerry Ghionis in the amazing setting of Castle Ceconi, Italy.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.graphistudio.com\/fr\/accademia-ceconi\/the-pursuit-of-excellence-workshop-2\/the-pursuit-of-excellence-workshop-2-2\/\" \/>\n<meta property=\"og:site_name\" content=\"Graphistudio\" \/>\n<meta property=\"article:modified_time\" content=\"2022-08-11T10:56:20+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.graphistudio.com\/wp-content\/uploads\/2022\/06\/upcoming-1795x1024.jpg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"The-pursuit of excellence - workshop\" \/>\n<meta name=\"twitter:description\" content=\"Graphistudio Workshop with Lindsay Adler, Chris Knight and Jerry Ghionis in the amazing setting of Castle Ceconi, Italy.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/www.graphistudio.com\/wp-content\/uploads\/2022\/06\/upcoming-1795x1024.jpg\" \/>\n<meta name=\"twitter:label1\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data1\" content=\"33 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.graphistudio.com\/fr\/accademia-ceconi\/the-pursuit-of-excellence-workshop-2\/the-pursuit-of-excellence-workshop-2-2\/\",\"url\":\"https:\/\/www.graphistudio.com\/fr\/accademia-ceconi\/the-pursuit-of-excellence-workshop-2\/the-pursuit-of-excellence-workshop-2-2\/\",\"name\":\"The pursuit of excellence - Workshop - Graphistudio\",\"isPartOf\":{\"@id\":\"https:\/\/www.graphistudio.com\/it\/#website\"},\"datePublished\":\"2022-07-21T09:57:01+00:00\",\"dateModified\":\"2022-08-11T10:56:20+00:00\",\"description\":\"Graphistudio Workshop with Lindsay Adler, Chris Knight and Jerry Ghionis in the amazing setting of Castle Ceconi, Italy.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.graphistudio.com\/fr\/accademia-ceconi\/the-pursuit-of-excellence-workshop-2\/the-pursuit-of-excellence-workshop-2-2\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.graphistudio.com\/fr\/accademia-ceconi\/the-pursuit-of-excellence-workshop-2\/the-pursuit-of-excellence-workshop-2-2\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.graphistudio.com\/fr\/accademia-ceconi\/the-pursuit-of-excellence-workshop-2\/the-pursuit-of-excellence-workshop-2-2\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.graphistudio.com\/fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Accademia Ceconi\",\"item\":\"https:\/\/www.graphistudio.com\/fr\/accademia-ceconi\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"The pursuit of excellence &#8211; Workshop\",\"item\":\"https:\/\/www.graphistudio.com\/fr\/accademia-ceconi\/the-pursuit-of-excellence-workshop-2\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"The pursuit of excellence &#8211; Workshop\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.graphistudio.com\/it\/#website\",\"url\":\"https:\/\/www.graphistudio.com\/it\/\",\"name\":\"Graphistudio\",\"description\":\"Handmade books made in Italy\",\"publisher\":{\"@id\":\"https:\/\/www.graphistudio.com\/it\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.graphistudio.com\/it\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.graphistudio.com\/it\/#organization\",\"name\":\"Graphistudio\",\"url\":\"https:\/\/www.graphistudio.com\/it\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/www.graphistudio.com\/it\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.graphistudio.com\/wp-content\/uploads\/2018\/01\/Logo_nero.png\",\"contentUrl\":\"https:\/\/www.graphistudio.com\/wp-content\/uploads\/2018\/01\/Logo_nero.png\",\"width\":160,\"height\":34,\"caption\":\"Graphistudio\"},\"image\":{\"@id\":\"https:\/\/www.graphistudio.com\/it\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"The pursuit of excellence - Workshop - Graphistudio","description":"Graphistudio Workshop with Lindsay Adler, Chris Knight and Jerry Ghionis in the amazing setting of Castle Ceconi, Italy.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.graphistudio.com\/fr\/accademia-ceconi\/the-pursuit-of-excellence-workshop-2\/the-pursuit-of-excellence-workshop-2-2\/","og_locale":"fr_FR","og_type":"article","og_title":"The-pursuit of excellence - workshop","og_description":"Graphistudio Workshop with Lindsay Adler, Chris Knight and Jerry Ghionis in the amazing setting of Castle Ceconi, Italy.","og_url":"https:\/\/www.graphistudio.com\/fr\/accademia-ceconi\/the-pursuit-of-excellence-workshop-2\/the-pursuit-of-excellence-workshop-2-2\/","og_site_name":"Graphistudio","article_modified_time":"2022-08-11T10:56:20+00:00","og_image":[{"url":"https:\/\/www.graphistudio.com\/wp-content\/uploads\/2022\/06\/upcoming-1795x1024.jpg","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_title":"The-pursuit of excellence - workshop","twitter_description":"Graphistudio Workshop with Lindsay Adler, Chris Knight and Jerry Ghionis in the amazing setting of Castle Ceconi, Italy.","twitter_image":"https:\/\/www.graphistudio.com\/wp-content\/uploads\/2022\/06\/upcoming-1795x1024.jpg","twitter_misc":{"Dur\u00e9e de lecture estim\u00e9e":"33 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.graphistudio.com\/fr\/accademia-ceconi\/the-pursuit-of-excellence-workshop-2\/the-pursuit-of-excellence-workshop-2-2\/","url":"https:\/\/www.graphistudio.com\/fr\/accademia-ceconi\/the-pursuit-of-excellence-workshop-2\/the-pursuit-of-excellence-workshop-2-2\/","name":"The pursuit of excellence - Workshop - Graphistudio","isPartOf":{"@id":"https:\/\/www.graphistudio.com\/it\/#website"},"datePublished":"2022-07-21T09:57:01+00:00","dateModified":"2022-08-11T10:56:20+00:00","description":"Graphistudio Workshop with Lindsay Adler, Chris Knight and Jerry Ghionis in the amazing setting of Castle Ceconi, Italy.","breadcrumb":{"@id":"https:\/\/www.graphistudio.com\/fr\/accademia-ceconi\/the-pursuit-of-excellence-workshop-2\/the-pursuit-of-excellence-workshop-2-2\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.graphistudio.com\/fr\/accademia-ceconi\/the-pursuit-of-excellence-workshop-2\/the-pursuit-of-excellence-workshop-2-2\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.graphistudio.com\/fr\/accademia-ceconi\/the-pursuit-of-excellence-workshop-2\/the-pursuit-of-excellence-workshop-2-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.graphistudio.com\/fr\/"},{"@type":"ListItem","position":2,"name":"Accademia Ceconi","item":"https:\/\/www.graphistudio.com\/fr\/accademia-ceconi\/"},{"@type":"ListItem","position":3,"name":"The pursuit of excellence &#8211; Workshop","item":"https:\/\/www.graphistudio.com\/fr\/accademia-ceconi\/the-pursuit-of-excellence-workshop-2\/"},{"@type":"ListItem","position":4,"name":"The pursuit of excellence &#8211; Workshop"}]},{"@type":"WebSite","@id":"https:\/\/www.graphistudio.com\/it\/#website","url":"https:\/\/www.graphistudio.com\/it\/","name":"Graphistudio","description":"Handmade books made in Italy","publisher":{"@id":"https:\/\/www.graphistudio.com\/it\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.graphistudio.com\/it\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/www.graphistudio.com\/it\/#organization","name":"Graphistudio","url":"https:\/\/www.graphistudio.com\/it\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.graphistudio.com\/it\/#\/schema\/logo\/image\/","url":"https:\/\/www.graphistudio.com\/wp-content\/uploads\/2018\/01\/Logo_nero.png","contentUrl":"https:\/\/www.graphistudio.com\/wp-content\/uploads\/2018\/01\/Logo_nero.png","width":160,"height":34,"caption":"Graphistudio"},"image":{"@id":"https:\/\/www.graphistudio.com\/it\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/www.graphistudio.com\/fr\/wp-json\/wp\/v2\/pages\/54046","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.graphistudio.com\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.graphistudio.com\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.graphistudio.com\/fr\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/www.graphistudio.com\/fr\/wp-json\/wp\/v2\/comments?post=54046"}],"version-history":[{"count":8,"href":"https:\/\/www.graphistudio.com\/fr\/wp-json\/wp\/v2\/pages\/54046\/revisions"}],"predecessor-version":[{"id":55066,"href":"https:\/\/www.graphistudio.com\/fr\/wp-json\/wp\/v2\/pages\/54046\/revisions\/55066"}],"up":[{"embeddable":true,"href":"https:\/\/www.graphistudio.com\/fr\/wp-json\/wp\/v2\/pages\/53427"}],"wp:attachment":[{"href":"https:\/\/www.graphistudio.com\/fr\/wp-json\/wp\/v2\/media?parent=54046"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}