From 74577ade6b717fe7ec29c0c1325468e9b4f95e35 Mon Sep 17 00:00:00 2001 From: David R Newman Date: Fri, 24 Jan 2025 18:50:23 +0000 Subject: [PATCH] Ups epm/epmi files to 3.3.1 --- reports.epm | 434 +++++++++++++++++++++++++++------------------------ reports.epmi | 26 ++- 2 files changed, 248 insertions(+), 212 deletions(-) diff --git a/reports.epm b/reports.epm index e47b871..5da874f 100644 --- a/reports.epm +++ b/reports.epm @@ -134,9 +134,9 @@ ICAgIHNob3dfemVyb19yZXN1bHRzID0+IDEsCn07Cgo= lang/en/phrases/reports.xml text/xml - f344518160d45ccd1d1709a926d9e6d1 + 9c23d9b3d22356d0ff30793364082dbb MD5 - 2563 + 2685 PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjwh RE9DVFlQRSBwaHJhc2VzIFNZU1RFTSAiZW50aXRpZXMuZHRkIj4KPGVwcDpwaHJhc2VzIHhtbG5z PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiB4bWxuczplcHA9Imh0dHA6Ly9lcHJpbnRz @@ -181,7 +181,10 @@ ZXByaW50X3JlcG9ydDpncm91cDpkYXRlIj5EYXRlPC9lcHA6cGhyYXNlPgoKPCEtLSBVc2VyIFJl cG9ydCAtLT4KPGVwcDpwaHJhc2UgaWQ9IlBsdWdpbi9TY3JlZW4vUmVwb3J0L1VzZXI6dGl0bGUi PlVzZXJzPC9lcHA6cGhyYXNlPgo8ZXBwOnBocmFzZSBpZD0iZXhwb3J0ZmllbGRzOnVzZXJfcmVw b3J0X2NvcmUiPkV4cG9ydCBGaWVsZHM8L2VwcDpwaHJhc2U+CjxlcHA6cGhyYXNlIGlkPSJ1c2Vy -X3JlcG9ydDpzb3J0OmJ5bmFtZSI+TmFtZTwvZXBwOnBocmFzZT4KCjwvZXBwOnBocmFzZXM+Cg== +X3JlcG9ydDpzb3J0OmJ5bmFtZSI+TmFtZTwvZXBwOnBocmFzZT4KCjwhLS0gRml4IGZvciB0eXBv +LWVkIHBocmFzZSBuYW1lIGluIHByZS0zLjQuNiBFUHJpbnRzIC0tPgo8ZXBwOnBocmFzZSBpZD0i +VXBkYXRlL1ZpZXdzOmdyb3VwX3NlcGFyYXRvciI+IHwgPC9lcHA6cGhyYXNlPgoKPC9lcHA6cGhy +YXNlcz4K @@ -763,7 +766,7 @@ YWx1ZVwiIjsKCX0KCglyZXR1cm4gJHZhbHVlOwp9CgoKMTsK plugins/EPrints/Plugin/Screen/Report.pm text/plain - f39fb0deae29a19b89b66997340c3894 + 645bd1e2a38d975945e731b597c26f9d MD5 44087 cGFja2FnZSBFUHJpbnRzOjpQbHVnaW46OlNjcmVlbjo6UmVwb3J0OwoKIyBBYnN0cmFjdCBjbGFz @@ -1267,7 +1270,7 @@ ICAgICB7CgkJbXkgJHNvcnRfdmFsdWUgPSAkc29ydF9jb25mLT57JHNvcnRfbmFtZX07CgkJaWYo ICRmaXJzdCApCgkJewoJCQkkZm9ybS0+YXBwZW5kQ2hpbGQoICRyZXBvLT5yZW5kZXJfaGlkZGVu X2ZpZWxkKCAic29ydCIsICRzb3J0X3ZhbHVlKSApOwoJCX0KCgkJaWYoICEkZmlyc3QgKQogICAg ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgCSRzb3J0X2xpbmtzLT5hcHBlbmRDaGlsZCgg -JHJlcG8tPmh0bWxfcGhyYXNlKCAiVXBkYXRlL1ZpZXdzOmdyb3VwX3NlcGVyYXRvciIgKSApOwog +JHJlcG8tPmh0bWxfcGhyYXNlKCAiVXBkYXRlL1ZpZXdzOmdyb3VwX3NlcGFyYXRvciIgKSApOwog ICAgICAgICAgICAgICAgfQoJCQoJCWlmKCBkZWZpbmVkICRzZWxmLT57cHJvY2Vzc29yfS0+e3Nv cnR9ICYmICRzZWxmLT57cHJvY2Vzc29yfS0+e3NvcnR9IGVxICRzb3J0X3ZhbHVlICkKCQl7CgkJ CW15ICRzdHJvbmcgPSAkcmVwby0+bWFrZV9lbGVtZW50KCAic3Ryb25nIiApOwoJCQkkc3Ryb25n @@ -1301,7 +1304,7 @@ LCAkZ3JvdXBfdmFsdWUgKTsKCQlpZiggJGZpcnN0ICkKCQl7CgkJCSRmb3JtLT5hcHBlbmRDaGls ZCggJHJlcG8tPnJlbmRlcl9oaWRkZW5fZmllbGQoICJncm91cCIsICRncm91cF92YWx1ZSkgKTsK CQl9CgoJCWlmKCAhJGZpcnN0ICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIAkk Z3JvdXBfbGlua3MtPmFwcGVuZENoaWxkKCAkcmVwby0+aHRtbF9waHJhc2UoICJVcGRhdGUvVmll -d3M6Z3JvdXBfc2VwZXJhdG9yIiApICk7CiAgICAgICAgICAgICAgICB9CgkJCgkJaWYoIGRlZmlu +d3M6Z3JvdXBfc2VwYXJhdG9yIiApICk7CiAgICAgICAgICAgICAgICB9CgkJCgkJaWYoIGRlZmlu ZWQgJHNlbGYtPntwcm9jZXNzb3J9LT57Z3JvdXB9ICYmICRzZWxmLT57cHJvY2Vzc29yfS0+e2dy b3VwfSBlcSAkZ3JvdXBfZmllbGQgKQoJCXsKCQkJbXkgJHN0cm9uZyA9ICRyZXBvLT5tYWtlX2Vs ZW1lbnQoICJzdHJvbmciICk7CgkJCSRzdHJvbmctPmFwcGVuZENoaWxkKCAkcmVwby0+aHRtbF9w @@ -1313,7 +1316,7 @@ Pmh0bWxfcGhyYXNlKCAkc2VsZi0+e2dyb3VwX2NvbmZ9IC4gIjpncm91cDoiIC4gJGdyb3VwX2Zp ZWxkICkgKTsKCQkJJGdyb3VwX2xpbmtzLT5hcHBlbmRDaGlsZCggJGxpbmsgKTsKCQl9CgkJJGZp cnN0ID0gMDsKICAgICAgICB9ICAgICAgICAgICAKCQoJI25vIGdyb3VwaW5nIGxpbmsgYXQgdGhl IGVuZAoJJGdyb3VwX2xpbmtzLT5hcHBlbmRDaGlsZCggJHJlcG8tPmh0bWxfcGhyYXNlKCAiVXBk -YXRlL1ZpZXdzOmdyb3VwX3NlcGVyYXRvciIgKSApOwoJaWYoIGRlZmluZWQgJHNlbGYtPntwcm9j +YXRlL1ZpZXdzOmdyb3VwX3NlcGFyYXRvciIgKSApOwoJaWYoIGRlZmluZWQgJHNlbGYtPntwcm9j ZXNzb3J9LT57Z3JvdXB9ICYmICRzZWxmLT57cHJvY2Vzc29yfS0+e2dyb3VwfSBuZSAiIiApCgl7 CgkJbXkgJGxpbmsgPSAkcmVwby0+cmVuZGVyX2xpbmsoICdqYXZhc2NyaXB0Omdyb3VwX3JlcG9y dCgiIiknICk7CQoJCSRsaW5rLT5hcHBlbmRDaGlsZCggJHJlcG8tPmh0bWxfcGhyYXNlKCAicmVw @@ -1338,7 +1341,7 @@ X2FjdGlvbl9uZXdzZWFyY2g9MSIgKTsKCSAgIAkkbmV3X2xpbmstPmFwcGVuZENoaWxkKCAkcmVw by0+aHRtbF9waHJhc2UoICJsaWIvc2VhcmNoZXhwcmVzc2lvbjpuZXciICkgKTsKCQkkc2VhcmNo X2xpbmtzLT5hcHBlbmRDaGlsZCggJG5ld19saW5rICk7CgoJCSNhZGQgYSBzZXBhcmF0b3IuLi4K CQkkc2VhcmNoX2xpbmtzLT5hcHBlbmRDaGlsZCggJHJlcG8tPmh0bWxfcGhyYXNlKCAiVXBkYXRl -L1ZpZXdzOmdyb3VwX3NlcGVyYXRvciIgKSApOwoKCQkjc2V0IHVwIHJlZmluZSBzZWFyY2ggbGlu +L1ZpZXdzOmdyb3VwX3NlcGFyYXRvciIgKSApOwoKCQkjc2V0IHVwIHJlZmluZSBzZWFyY2ggbGlu awoJCW15ICRyZWZpbmVfYmFzZXVybCA9IFVSSS0+bmV3KCAkc2VsZi0+e3Nlc3Npb259LT5nZXRf dXJpICk7CiAgICAgICAgCSRyZWZpbmVfYmFzZXVybC0+cXVlcnlfZm9ybSgKCSAgICAgICAgCWNh Y2hlID0+ICRjYWNoZWlkLAoJICAgICAgICAgICAgICAgIGV4cCA9PiAkZXNjZXhwLAogICAgICAg @@ -2144,9 +2147,9 @@ mCeqVAAAAABJRU5ErkJggg== static/javascript/auto/reports.js text/plain - 399f9957d04d330098e2280f062661d9 + fb34e39d76dbc63ac1d052981fca063f MD5 - 12696 + 12978 dmFyIGluaXRSZXBvcnRGb3JtID0gZnVuY3Rpb24oKXsKCiAgICAgICAgLy9wb2x5ZmlsbCBmb3Ig SUUKICAgICAgICAoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgaWYgKCB0eXBlb2Ygd2lu ZG93LkN1c3RvbUV2ZW50ID09PSAiZnVuY3Rpb24iICkgcmV0dXJuIGZhbHNlOyAvL0lmIG5vdCBJ @@ -2170,206 +2173,211 @@ YnV0ZSgnZm9ybScpOwoJCgkvL2hpZGUgb3RoZXIgZm9ybXMKCSQkKCcuZXBfc2VhcmNoX2ZpZWxk cycpLmVhY2goZnVuY3Rpb24gKGVsZW0pIAoJewkKCQkvL2hpZGUgdGhlIGZvcm0KCQkkKGVsZW0p LmhpZGUoKTsKCQkkKGVsZW0pLnJlbW92ZUNsYXNzTmFtZSgic2VsZWN0ZWRfZm9ybSIpOwoJCSQo ZWxlbSkuc2VsZWN0KCdpbnB1dCcpLmVhY2goZnVuY3Rpb24gKGlucHV0KQoJCXsKCQkJJChpbnB1 -dCkuc2V0QXR0cmlidXRlKCJkaXNhYmxlZCIsICJkaXNhYmxlZCIpOwoJCX0pOwoJfSk7CgkJCgkv -L3Nob3cgdGhlIGZvcm0gd2Ugd2FudAoJJChmb3JtaWQpLnNob3coKTsKCSQoZm9ybWlkKS5hZGRD -bGFzc05hbWUoInNlbGVjdGVkX2Zvcm0iKTsKCgkvL2VuYWJsZSB0aGlzIGZvcm0ncyBpbnB1dCBl -bGVtZW50cwoJJChmb3JtaWQpLnNlbGVjdCgnaW5wdXQnKS5lYWNoKGZ1bmN0aW9uIChpbnB1dCkK -CXsKCQkkKGlucHV0KS5yZW1vdmVBdHRyaWJ1dGUoImRpc2FibGVkIik7Cgl9KTsKCn07CgovLyBV -c2VkIGJ5IHRoZSBTY3JlZW46OlJlcG9ydDo6cmVuZGVyIG1ldGhvZAoKdmFyIEVQcmludHNfU2Ny -ZWVuX1JlcG9ydF9Mb2FkZXIgPSBDbGFzcy5jcmVhdGUoewoJaGFzX3Byb2JsZW1zOiAwLAoJY291 -bnQ6IDAsCglydW5zOiAwLAoJcHJvZ3Jlc3M6IG51bGwsCglpZHM6IEFycmF5KCksCglzdGVwOiAy -MCwKCXByZWZpeDogJycsCglvblByb2JsZW1zOiBmdW5jdGlvbigpIHt9LAoJb25GaW5pc2g6IGZ1 -bmN0aW9uKCkge30sCgl1cmw6ICIiLAoJcGFyYW1ldGVyczogIiIsCgljb250YWluZXI6IG51bGws -CglzaG93X2NvbXBsaWFuY2U6IDEsCQoKCS8vIHRvIHNob3cgYSBwcmV0dHkgcHJvZ3Jlc3MgYmFy -ICglIGNvbXBsaWFuY2UpOgoJdG90YWxfZGF0YW9ianM6IDAsCgl0b3RhbF9ub25jb21wbGlhbnQ6 -IDAsCgoKCWluaXRpYWxpemU6IGZ1bmN0aW9uKG9wdHMpIHsKCQlpZiggb3B0cy5pZHMgKQoJCQl0 -aGlzLmlkcyA9IG9wdHMuaWRzOwoJCWlmKCBvcHRzLnN0ZXAgKQoJCQl0aGlzLnN0ZXAgPSBvcHRz -LnN0ZXA7CgkJaWYoIG9wdHMucHJlZml4ICkKCQkJdGhpcy5wcmVmaXggPSBvcHRzLnByZWZpeDsK -CQlpZiggb3B0cy5vbkZpbmlzaCApCgkJCXRoaXMub25GaW5pc2ggPSBvcHRzLm9uRmluaXNoOwoJ -CWlmKCBvcHRzLm9uUHJvYmxlbXMgKQoJCQl0aGlzLm9uUHJvYmxlbXMgPSBvcHRzLm9uUHJvYmxl -bXM7CgkJaWYoIG9wdHMudXJsICkKCQl7CgkJCXRoaXMudXJsID0gb3B0cy51cmw7CgkJfQoJCWlm -KCBvcHRzLnBhcmFtZXRlcnMgKQoJCQl0aGlzLnBhcmFtZXRlcnMgPSBvcHRzLnBhcmFtZXRlcnM7 -CgkJaWYoIG9wdHMuY29udGFpbmVyX2lkICkKCQkJdGhpcy5jb250YWluZXIgPSAkKCBvcHRzLmNv -bnRhaW5lcl9pZCApOwkvLyBzaG91bGQgZmFpbCBpZiBjb250YWluZXIgZG9lc24ndCBleGlzdC4u -LgoJCWlmKCBvcHRzLmhhc093blByb3BlcnR5KCdzaG93X2NvbXBsaWFuY2UnKSApCgkJewoJCQl0 -aGlzLnNob3dfY29tcGxpYW5jZSA9IG9wdHMuc2hvd19jb21wbGlhbmNlOwoJCX0KCQlpZiggb3B0 -cy5sYWJlbHMgKQoJCXsKCQkJdGhpcy5sYWJlbHMgPSBvcHRzLmxhYmVsczsKCQl9Cgl9LAoKCWV4 -ZWN1dGU6IGZ1bmN0aW9uKCkgewoJCS8vIHByb2dyZXNzLWJhcgoKCQl0aGlzLmNvbnRhaW5lci5p -bnNlcnQoIG5ldyBFbGVtZW50KCAnZGl2JywgeyAnY2xhc3MnOiAnZXBfcmVwb3J0X3Byb2dyZXNz -X2JhcicsICdpZCc6IHRoaXMucHJlZml4ICsgIl9wcm9ncmVzc19iYXIiIH0gKSApOwkKCgkJdmFy -IGN1cnJlbnRfZ3JvdXBpbmcgPSBudWxsOwkvLyBtaWdodCBub3QgYmUgc2V0IGluIHRoZSByZXR1 -cm5lZCB2YWx1ZSBidXQgdGhhdCdzIGFsbG93ZWQvT0sKCgkJdmFyIGRhdGFvYmpzID0ge307CgkJ -dmFyIGdyb3VwZWQgPSBmYWxzZTsKCQl2YXIgc2Vlbl9pZHMgPSB7fTsKCQl0aGlzLm5vX2l0ZW1z -ID0gdGhpcy5pZHMubGVuZ3RoOwoJCXRoaXMucmV0cmlldmVkID0gW107CgkJaWYoICFpc0ludGVn -ZXIodGhpcy5pZHNbMF0pICkgLy9pZHMgaGF2ZSBiZWVuIGdyb3VwZWQKCQl7CQoJCQlncm91cGVk -ID0gdHJ1ZTsKCQkJdGhpcy5ncm91cGVkX2lkcyA9IHRoaXMuaWRzOwoJCQl0aGlzLmlkcyA9IFtd -OwoJCQlmb3IoIHZhciBpID0gMDsgaSA8IHRoaXMuZ3JvdXBlZF9pZHMubGVuZ3RoOyBpKysgKQoJ -CQl7CgkJCQl0aGlzLmlkcyA9IHRoaXMuaWRzLmNvbmNhdCh0aGlzLmdyb3VwZWRfaWRzW2ldLmxp -c3QpOwoJCQl9CgkJCS8vdGhlIGdyb3VwaW5nIG1heSBoYXZlIGNyZWF0ZWQgZHVwbGljYXRlIHJl -Y29yZHMgKGkuZS4gYSByZWNvcmQgY2FuIGFwcGVhciBpbiBtb3JlIHRoYW4gb25lIGdyb3VwKSAt -IGl0J3MgaGFuZHkgdG8gaGF2ZSBhbiBhcnJheSBvZiBhbGwgdGhlIHVuaXF1ZSByZWNvcmRzCgkJ -CXRoaXMudW5pcXVlID0gdGhpcy5pZHMuZmlsdGVyKGZ1bmN0aW9uKGl0ZW0sIGksIGFyKXsgcmV0 -dXJuIGFyLmluZGV4T2YoaXRlbSkgPT09IGk7IH0pOwoJCQl0aGlzLm5vX2l0ZW1zID0gdGhpcy51 -bmlxdWUubGVuZ3RoOwoJCX0KCQlmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy5pZHMubGVuZ3RoOyBp -Kz10aGlzLnN0ZXApCgkJewoJCQkvLyBhcmd1bWVudHMgZm9yIEFqYXggcXVlcnkgQU5EIGNyZWF0 -ZXMgdGhlIEhUTUwgcGxhY2Vob2xkZXJzIDxkaXY+J3MgKHRoYXQgd2lsbCByZWNlaXZlIHRoZSBj -b250ZW50IG9mIHRoZSBBamF4IHF1ZXJ5Li4uKQkJCQkKCQkJdmFyIGFyZ3MgPSAnJmFqYXg9Jyt0 -aGlzLnByZWZpeDsKCQkJZm9yKHZhciBqID0gMDsgaiA8IHRoaXMuc3RlcCAmJiBpK2ogPCB0aGlz -Lmlkcy5sZW5ndGg7IGorKykKCQkJewoJCQkJYXJncyArPSAnJicgKyB0aGlzLnByZWZpeCArICc9 -JyArIHRoaXMuaWRzW2kral07CgkJCQl2YXIgaWQgPSB0aGlzLnByZWZpeCArICdfJyArIHRoaXMu -aWRzW2kral07CgkJCQl2YXIgdGFyZ2V0X2VsID0gJCggaWQgKTsKCQkJCWlmKCB0YXJnZXRfZWwg -IT0gbnVsbCApCgkJCQl7CgkJCQkJLy9zdG9yZSBhIHJlY29yZCBvZiB0aGlzIGluIHNlZW5faWRz -IHRvIGVuc3VyZSBlYWNoIHBsYWNlaG9sZGVyIGhhcyBhIHVuaXF1ZSBpZAoJCQkJCWlmKCAhKGlk -IGluIHNlZW5faWRzKSApCgkJCQkJewoJCQkJCQlzZWVuX2lkc1tpZF0gPSAxOwoJCQkJCX0KCQkJ -CQllbHNlCgkJCQkJewoJCQkJCQlzZWVuX2lkc1tpZF0gPSBzZWVuX2lkc1tpZF0gKyAxOwoJCQkJ -CX0KCQkJCQlpZCA9IGlkICsgIl8iICsgc2Vlbl9pZHNbaWRdOwoJCQkJfQoJCQkJCQoJCQkJdGhp -cy5jb250YWluZXIuaW5zZXJ0KCBuZXcgRWxlbWVudCggJ2RpdicsIHsgJ2NsYXNzJzogJ2VwX3Jl -cG9ydF9yb3cnLCAnaWQnOiBpZCwgJ3Bvc2l0aW9uJzogaStqIH0gKSwgeyAncG9zaXRpb24nOiAn -YWZ0ZXInIH0gKTsKCQkJfQoJCQluZXcgQWpheC5SZXF1ZXN0KCB0aGlzLnVybCwgewoJCQkJbWV0 -aG9kOiAnZ2V0JywKCQkJCXBhcmFtZXRlcnM6IHRoaXMucGFyYW1ldGVycyArIGFyZ3MsCgkJCQlv -blN1Y2Nlc3M6IChmdW5jdGlvbih0cmFuc3BvcnQpIHsKCgkJCQkJdmFyIGpzb24gPSB0cmFuc3Bv -cnQucmVzcG9uc2VUZXh0LmV2YWxKU09OKCk7CgkJCQkJdmFyIGRhdGEgPSBqc29uLmRhdGE7CgkK -CQkJCQlpZiggZGF0YSA9PSBudWxsICkKCQkJCQkJZGF0YSA9IG5ldyBBcnJheSgpOwoJCQkJCWZv -ciggdmFyIGk9MDsgaTxkYXRhLmxlbmd0aDsgaSsrICkKCQkJCQl7CgkJCQkJCXZhciBlbnRyeSA9 -IGRhdGFbaV07CgkJCQkKCQkJCQkJLy8gZW50cnkuZGF0YW9iamlkCgkJCQkJCS8vIGVudHJ5LnN1 -bW1hcnkKCQkJCQkJLy8gZW50cnkuZ3JvdXBpbmcKCQkJCQkJLy8gZW50cnkucHJvYmxlbXMKCgkJ -CQkJCWlmKCBlbnRyeSA9PSBudWxsICkKCQkJCQkJCWNvbnRpbnVlOwoJCQkJCQkKCQkJCQkJdmFy -IGRhdGFvYmppZCA9IGVudHJ5LmRhdGFvYmppZDsKCQkJCQkJaWYoIGRhdGFvYmppZCA9PSBudWxs -ICkKCQkJCQkJCWNvbnRpbnVlOwoJCQkJCQlpZiggIShkYXRhb2JqaWQgaW4gZGF0YW9ianMpICkK -CQkJCQkJewoJCQkJCQkJdGhpcy5jb3VudCsrOwoJCQkJCQkJZGF0YW9ianNbZGF0YW9iamlkXSA9 -IGVudHJ5OwoJCQkJCQl9CgkJCQkJfQoJCQkKCQkJCQkvLyB3ZSd2ZSByZXRyaWV2ZWQgYWxsIHRo -ZSByZWNvcmRzCQkJCQoJCQkJCWlmKCB0aGlzLmNvdW50ID09IHRoaXMubm9faXRlbXMgKQoJCQkJ -CXsKCQkJCQkJJCggdGhpcy5wcmVmaXggKyAnX3Byb2dyZXNzX2JhcicgKS5yZW1vdmUoKTsKCQkJ -CQkJaWYoIHRoaXMuaGFzX3Byb2JsZW1zICkKCQkJCQkJCXRoaXMub25Qcm9ibGVtcyh0aGlzKTsK -CQkJCQkJdGhpcy5vbkZpbmlzaCh0aGlzKTsKCQkJCQkJCQoJCQkJCQkvL2FkZCB0aGUgZ3JvdXAg -aGVhZGluZ3MKCQkJCQkJaWYoZ3JvdXBlZCkKCQkJCQkJewoJCQkJCQkJdmFyIHBvc2l0aW9uID0g -MDsKCQkJCQkJCWZvciggdmFyIGkgPSAwOyBpIDwgdGhpcy5ncm91cGVkX2lkcy5sZW5ndGg7IGkr -KyApCgkJCQkgICAgICAgICAgICAgICAgICAgICAgICB7CQoJCQkJCQkJCXZhciB0YXJnZXRfZWwg -PSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbcG9zaXRpb249IicgKyBwb3NpdGlvbiArICci -XScpWzBdOwoJCQkJCQkJCXBvc2l0aW9uID0gcG9zaXRpb24gKyB0aGlzLmdyb3VwZWRfaWRzW2ld -Lmxpc3QubGVuZ3RoOwkJCQoJCQkJCQkJCXZhciBncm91cGluZ19jb250YWluZXIgPSBuZXcgRWxl -bWVudCggJ2RpdicsIHsgJ2NsYXNzJzogJ2VwX3JlcG9ydF9ncm91cGluZycgfSApOwogICAgICAg +dCkuc2V0QXR0cmlidXRlKCJkaXNhYmxlZCIsICJkaXNhYmxlZCIpOwoJCX0pOwoJCSQoZWxlbSku +c2VsZWN0KCdzZWxlY3QnKS5lYWNoKGZ1bmN0aW9uIChzZWxlY3QpCiAgICAgICAgewogICAgICAg +ICAgICAkKHNlbGVjdCkuc2V0QXR0cmlidXRlKCJkaXNhYmxlZCIsICJkaXNhYmxlZCIpOwogICAg +ICAgIH0pOwoJfSk7CgkJCgkvL3Nob3cgdGhlIGZvcm0gd2Ugd2FudAoJJChmb3JtaWQpLnNob3co +KTsKCSQoZm9ybWlkKS5hZGRDbGFzc05hbWUoInNlbGVjdGVkX2Zvcm0iKTsKCgkvL2VuYWJsZSB0 +aGlzIGZvcm0ncyBpbnB1dCBlbGVtZW50cwoJJChmb3JtaWQpLnNlbGVjdCgnaW5wdXQnKS5lYWNo +KGZ1bmN0aW9uIChpbnB1dCkKCXsKCQkkKGlucHV0KS5yZW1vdmVBdHRyaWJ1dGUoImRpc2FibGVk +Iik7Cgl9KTsKCS8vZW5hYmxlIHRoaXMgZm9ybSdzIHNlbGVjdCBlbGVtZW50cwoJJChmb3JtaWQp +LnNlbGVjdCgnc2VsZWN0JykuZWFjaChmdW5jdGlvbiAoc2VsZWN0KQogICAgewogICAgICAgICQo +c2VsZWN0KS5yZW1vdmVBdHRyaWJ1dGUoImRpc2FibGVkIik7CiAgICB9KTsKCn07CgovLyBVc2Vk +IGJ5IHRoZSBTY3JlZW46OlJlcG9ydDo6cmVuZGVyIG1ldGhvZAoKdmFyIEVQcmludHNfU2NyZWVu +X1JlcG9ydF9Mb2FkZXIgPSBDbGFzcy5jcmVhdGUoewoJaGFzX3Byb2JsZW1zOiAwLAoJY291bnQ6 +IDAsCglydW5zOiAwLAoJcHJvZ3Jlc3M6IG51bGwsCglpZHM6IEFycmF5KCksCglzdGVwOiAyMCwK +CXByZWZpeDogJycsCglvblByb2JsZW1zOiBmdW5jdGlvbigpIHt9LAoJb25GaW5pc2g6IGZ1bmN0 +aW9uKCkge30sCgl1cmw6ICIiLAoJcGFyYW1ldGVyczogIiIsCgljb250YWluZXI6IG51bGwsCglz +aG93X2NvbXBsaWFuY2U6IDEsCQoKCS8vIHRvIHNob3cgYSBwcmV0dHkgcHJvZ3Jlc3MgYmFyICgl +IGNvbXBsaWFuY2UpOgoJdG90YWxfZGF0YW9ianM6IDAsCgl0b3RhbF9ub25jb21wbGlhbnQ6IDAs +CgoKCWluaXRpYWxpemU6IGZ1bmN0aW9uKG9wdHMpIHsKCQlpZiggb3B0cy5pZHMgKQoJCQl0aGlz +LmlkcyA9IG9wdHMuaWRzOwoJCWlmKCBvcHRzLnN0ZXAgKQoJCQl0aGlzLnN0ZXAgPSBvcHRzLnN0 +ZXA7CgkJaWYoIG9wdHMucHJlZml4ICkKCQkJdGhpcy5wcmVmaXggPSBvcHRzLnByZWZpeDsKCQlp +Ziggb3B0cy5vbkZpbmlzaCApCgkJCXRoaXMub25GaW5pc2ggPSBvcHRzLm9uRmluaXNoOwoJCWlm +KCBvcHRzLm9uUHJvYmxlbXMgKQoJCQl0aGlzLm9uUHJvYmxlbXMgPSBvcHRzLm9uUHJvYmxlbXM7 +CgkJaWYoIG9wdHMudXJsICkKCQl7CgkJCXRoaXMudXJsID0gb3B0cy51cmw7CgkJfQoJCWlmKCBv +cHRzLnBhcmFtZXRlcnMgKQoJCQl0aGlzLnBhcmFtZXRlcnMgPSBvcHRzLnBhcmFtZXRlcnM7CgkJ +aWYoIG9wdHMuY29udGFpbmVyX2lkICkKCQkJdGhpcy5jb250YWluZXIgPSAkKCBvcHRzLmNvbnRh +aW5lcl9pZCApOwkvLyBzaG91bGQgZmFpbCBpZiBjb250YWluZXIgZG9lc24ndCBleGlzdC4uLgoJ +CWlmKCBvcHRzLmhhc093blByb3BlcnR5KCdzaG93X2NvbXBsaWFuY2UnKSApCgkJewoJCQl0aGlz +LnNob3dfY29tcGxpYW5jZSA9IG9wdHMuc2hvd19jb21wbGlhbmNlOwoJCX0KCQlpZiggb3B0cy5s +YWJlbHMgKQoJCXsKCQkJdGhpcy5sYWJlbHMgPSBvcHRzLmxhYmVsczsKCQl9Cgl9LAoKCWV4ZWN1 +dGU6IGZ1bmN0aW9uKCkgewoJCS8vIHByb2dyZXNzLWJhcgoKCQl0aGlzLmNvbnRhaW5lci5pbnNl +cnQoIG5ldyBFbGVtZW50KCAnZGl2JywgeyAnY2xhc3MnOiAnZXBfcmVwb3J0X3Byb2dyZXNzX2Jh +cicsICdpZCc6IHRoaXMucHJlZml4ICsgIl9wcm9ncmVzc19iYXIiIH0gKSApOwkKCgkJdmFyIGN1 +cnJlbnRfZ3JvdXBpbmcgPSBudWxsOwkvLyBtaWdodCBub3QgYmUgc2V0IGluIHRoZSByZXR1cm5l +ZCB2YWx1ZSBidXQgdGhhdCdzIGFsbG93ZWQvT0sKCgkJdmFyIGRhdGFvYmpzID0ge307CgkJdmFy +IGdyb3VwZWQgPSBmYWxzZTsKCQl2YXIgc2Vlbl9pZHMgPSB7fTsKCQl0aGlzLm5vX2l0ZW1zID0g +dGhpcy5pZHMubGVuZ3RoOwoJCXRoaXMucmV0cmlldmVkID0gW107CgkJaWYoICFpc0ludGVnZXIo +dGhpcy5pZHNbMF0pICkgLy9pZHMgaGF2ZSBiZWVuIGdyb3VwZWQKCQl7CQoJCQlncm91cGVkID0g +dHJ1ZTsKCQkJdGhpcy5ncm91cGVkX2lkcyA9IHRoaXMuaWRzOwoJCQl0aGlzLmlkcyA9IFtdOwoJ +CQlmb3IoIHZhciBpID0gMDsgaSA8IHRoaXMuZ3JvdXBlZF9pZHMubGVuZ3RoOyBpKysgKQoJCQl7 +CgkJCQl0aGlzLmlkcyA9IHRoaXMuaWRzLmNvbmNhdCh0aGlzLmdyb3VwZWRfaWRzW2ldLmxpc3Qp +OwoJCQl9CgkJCS8vdGhlIGdyb3VwaW5nIG1heSBoYXZlIGNyZWF0ZWQgZHVwbGljYXRlIHJlY29y +ZHMgKGkuZS4gYSByZWNvcmQgY2FuIGFwcGVhciBpbiBtb3JlIHRoYW4gb25lIGdyb3VwKSAtIGl0 +J3MgaGFuZHkgdG8gaGF2ZSBhbiBhcnJheSBvZiBhbGwgdGhlIHVuaXF1ZSByZWNvcmRzCgkJCXRo +aXMudW5pcXVlID0gdGhpcy5pZHMuZmlsdGVyKGZ1bmN0aW9uKGl0ZW0sIGksIGFyKXsgcmV0dXJu +IGFyLmluZGV4T2YoaXRlbSkgPT09IGk7IH0pOwoJCQl0aGlzLm5vX2l0ZW1zID0gdGhpcy51bmlx +dWUubGVuZ3RoOwoJCX0KCQlmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy5pZHMubGVuZ3RoOyBpKz10 +aGlzLnN0ZXApCgkJewoJCQkvLyBhcmd1bWVudHMgZm9yIEFqYXggcXVlcnkgQU5EIGNyZWF0ZXMg +dGhlIEhUTUwgcGxhY2Vob2xkZXJzIDxkaXY+J3MgKHRoYXQgd2lsbCByZWNlaXZlIHRoZSBjb250 +ZW50IG9mIHRoZSBBamF4IHF1ZXJ5Li4uKQkJCQkKCQkJdmFyIGFyZ3MgPSAnJmFqYXg9Jyt0aGlz +LnByZWZpeDsKCQkJZm9yKHZhciBqID0gMDsgaiA8IHRoaXMuc3RlcCAmJiBpK2ogPCB0aGlzLmlk +cy5sZW5ndGg7IGorKykKCQkJewoJCQkJYXJncyArPSAnJicgKyB0aGlzLnByZWZpeCArICc9JyAr +IHRoaXMuaWRzW2kral07CgkJCQl2YXIgaWQgPSB0aGlzLnByZWZpeCArICdfJyArIHRoaXMuaWRz +W2kral07CgkJCQl2YXIgdGFyZ2V0X2VsID0gJCggaWQgKTsKCQkJCWlmKCB0YXJnZXRfZWwgIT0g +bnVsbCApCgkJCQl7CgkJCQkJLy9zdG9yZSBhIHJlY29yZCBvZiB0aGlzIGluIHNlZW5faWRzIHRv +IGVuc3VyZSBlYWNoIHBsYWNlaG9sZGVyIGhhcyBhIHVuaXF1ZSBpZAoJCQkJCWlmKCAhKGlkIGlu +IHNlZW5faWRzKSApCgkJCQkJewoJCQkJCQlzZWVuX2lkc1tpZF0gPSAxOwoJCQkJCX0KCQkJCQll +bHNlCgkJCQkJewoJCQkJCQlzZWVuX2lkc1tpZF0gPSBzZWVuX2lkc1tpZF0gKyAxOwoJCQkJCX0K +CQkJCQlpZCA9IGlkICsgIl8iICsgc2Vlbl9pZHNbaWRdOwoJCQkJfQoJCQkJCQoJCQkJdGhpcy5j +b250YWluZXIuaW5zZXJ0KCBuZXcgRWxlbWVudCggJ2RpdicsIHsgJ2NsYXNzJzogJ2VwX3JlcG9y +dF9yb3cnLCAnaWQnOiBpZCwgJ3Bvc2l0aW9uJzogaStqIH0gKSwgeyAncG9zaXRpb24nOiAnYWZ0 +ZXInIH0gKTsKCQkJfQoJCQluZXcgQWpheC5SZXF1ZXN0KCB0aGlzLnVybCwgewoJCQkJbWV0aG9k +OiAnZ2V0JywKCQkJCXBhcmFtZXRlcnM6IHRoaXMucGFyYW1ldGVycyArIGFyZ3MsCgkJCQlvblN1 +Y2Nlc3M6IChmdW5jdGlvbih0cmFuc3BvcnQpIHsKCgkJCQkJdmFyIGpzb24gPSB0cmFuc3BvcnQu +cmVzcG9uc2VUZXh0LmV2YWxKU09OKCk7CgkJCQkJdmFyIGRhdGEgPSBqc29uLmRhdGE7CgkKCQkJ +CQlpZiggZGF0YSA9PSBudWxsICkKCQkJCQkJZGF0YSA9IG5ldyBBcnJheSgpOwoJCQkJCWZvcigg +dmFyIGk9MDsgaTxkYXRhLmxlbmd0aDsgaSsrICkKCQkJCQl7CgkJCQkJCXZhciBlbnRyeSA9IGRh +dGFbaV07CgkJCQkKCQkJCQkJLy8gZW50cnkuZGF0YW9iamlkCgkJCQkJCS8vIGVudHJ5LnN1bW1h +cnkKCQkJCQkJLy8gZW50cnkuZ3JvdXBpbmcKCQkJCQkJLy8gZW50cnkucHJvYmxlbXMKCgkJCQkJ +CWlmKCBlbnRyeSA9PSBudWxsICkKCQkJCQkJCWNvbnRpbnVlOwoJCQkJCQkKCQkJCQkJdmFyIGRh +dGFvYmppZCA9IGVudHJ5LmRhdGFvYmppZDsKCQkJCQkJaWYoIGRhdGFvYmppZCA9PSBudWxsICkK +CQkJCQkJCWNvbnRpbnVlOwoJCQkJCQlpZiggIShkYXRhb2JqaWQgaW4gZGF0YW9ianMpICkKCQkJ +CQkJewoJCQkJCQkJdGhpcy5jb3VudCsrOwoJCQkJCQkJZGF0YW9ianNbZGF0YW9iamlkXSA9IGVu +dHJ5OwoJCQkJCQl9CgkJCQkJfQoJCQkKCQkJCQkvLyB3ZSd2ZSByZXRyaWV2ZWQgYWxsIHRoZSBy +ZWNvcmRzCQkJCQoJCQkJCWlmKCB0aGlzLmNvdW50ID09IHRoaXMubm9faXRlbXMgKQoJCQkJCXsK +CQkJCQkJJCggdGhpcy5wcmVmaXggKyAnX3Byb2dyZXNzX2JhcicgKS5yZW1vdmUoKTsKCQkJCQkJ +aWYoIHRoaXMuaGFzX3Byb2JsZW1zICkKCQkJCQkJCXRoaXMub25Qcm9ibGVtcyh0aGlzKTsKCQkJ +CQkJdGhpcy5vbkZpbmlzaCh0aGlzKTsKCQkJCQkJCQoJCQkJCQkvL2FkZCB0aGUgZ3JvdXAgaGVh +ZGluZ3MKCQkJCQkJaWYoZ3JvdXBlZCkKCQkJCQkJewoJCQkJCQkJdmFyIHBvc2l0aW9uID0gMDsK +CQkJCQkJCWZvciggdmFyIGkgPSAwOyBpIDwgdGhpcy5ncm91cGVkX2lkcy5sZW5ndGg7IGkrKyAp +CgkJCQkgICAgICAgICAgICAgICAgICAgICAgICB7CQoJCQkJCQkJCXZhciB0YXJnZXRfZWwgPSBk +b2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbcG9zaXRpb249IicgKyBwb3NpdGlvbiArICciXScp +WzBdOwoJCQkJCQkJCXBvc2l0aW9uID0gcG9zaXRpb24gKyB0aGlzLmdyb3VwZWRfaWRzW2ldLmxp +c3QubGVuZ3RoOwkJCQoJCQkJCQkJCXZhciBncm91cGluZ19jb250YWluZXIgPSBuZXcgRWxlbWVu +dCggJ2RpdicsIHsgJ2NsYXNzJzogJ2VwX3JlcG9ydF9ncm91cGluZycgfSApOwogICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFy +Z2V0X2VsLmluc2VydCggeyAnYmVmb3JlJyA6IGdyb3VwaW5nX2NvbnRhaW5lciB9ICk7CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -dGFyZ2V0X2VsLmluc2VydCggeyAnYmVmb3JlJyA6IGdyb3VwaW5nX2NvbnRhaW5lciB9ICk7CiAg +ICBncm91cGluZ19jb250YWluZXIudXBkYXRlKCB0aGlzLmdyb3VwZWRfaWRzW2ldLmxhYmVsICk7 +CgkJCQkgICAgICAgICAgICAgICAgICAgICAgICB9CgkJCQkJCX0KCgkJCQkJCS8vYWRkIHRoZSBl +cHJpbnQgc3VtbWFyaWVzCgkJCQkJCXZhciBhZGRlZF9pZHMgPSB7fTsKCQkJCQkJZm9yKCB2YXIg +YyA9IDA7IGMgPCB0aGlzLmlkcy5sZW5ndGg7IGMrKyApCgkJCQkJCXsKCQkJCQkJCXZhciBkYXRh +b2JqaWQgPSB0aGlzLmlkc1tjXTsKCQkJCQkJCXZhciBlbnRyeSA9IGRhdGFvYmpzW2RhdGFvYmpp +ZF07CgoJCQkJCQkJLy9zdG9yZSB0aGF0IHdlIGhhdmUgYWRkZWQgdGhpcyBvYmplY3RpZAoJCQkJ +CQkJaWYoICEoZGF0YW9iamlkIGluIGFkZGVkX2lkcykgKQoJCQkJCQkJewoJCQkJCQkJCWFkZGVk +X2lkc1tkYXRhb2JqaWRdID0gMDsKCQkJCQkJCX0KCQkJCQkJCWVsc2UKCQkJCQkJCXsKCQkJCQkJ +CQlhZGRlZF9pZHNbZGF0YW9iamlkXSA9IGFkZGVkX2lkc1tkYXRhb2JqaWRdICsgMTsKCQkJCQkJ +CX0KCQkJCQkJCXRoaXMudG90YWxfZGF0YW9ianMrKzsKCgkJCQkJCQl2YXIgc3VtbWFyeSA9IGVu +dHJ5LnN1bW1hcnk7CgoJCQkJCQkJdmFyIHRhcmdldF9pZCA9IHRoaXMucHJlZml4ICsgJ18nICsg +ZGF0YW9iamlkOwoJCQkJCQkJaWYoIGFkZGVkX2lkc1tkYXRhb2JqaWRdID4gMCApCgkJCQkJCQl7 +CgkJCQkJCQkJdGFyZ2V0X2lkID0gdGFyZ2V0X2lkICsgJ18nICsgYWRkZWRfaWRzW2RhdGFvYmpp +ZF07CgkJCQkJCQl9CgkJCQkJCQl2YXIgdGFyZ2V0X2VsID0gJCggdGFyZ2V0X2lkICk7CgoJCQkJ +CQkJaWYoIHRhcmdldF9lbCAhPSBudWxsICYmIHN1bW1hcnkgIT0gbnVsbCApCgkJCQkJCQl7CgkJ +CQkJCQkJdmFyIHN1bW1hcnlfZWwgPSB0YXJnZXRfZWwuYXBwZW5kQ2hpbGQoIG5ldyBFbGVtZW50 +KCAnZGl2JywgeyAnY2xhc3MnOiAnZXBfcmVwb3J0X3Jvd19zdW1tYXJ5JyB9ICkgKTsKCQkJCQkJ +CQlzdW1tYXJ5X2VsLnVwZGF0ZSggc3VtbWFyeSApOwoKCQkJCQkJCQkvL3RvdGFsIHVwIG5vbiBj +b21wbGlhbnQgcmVjb3JkcwoJCQkJCQkJCWlmKCBlbnRyeS5pc19jb21wbGlhbnQgPT0gbnVsbCAm +JiBlbnRyeS5wcm9ibGVtcyAmJiBlbnRyeS5wcm9ibGVtcy5sZW5ndGggKQoJCQkJCQkJCXsKCQkJ +CQkJCQkJdGhpcy50b3RhbF9ub25jb21wbGlhbnQrKzsKCQkJCQkJCQl9CgkJCQkJCQkJCgkJCQkJ +CQkJaWYoIGVudHJ5LnByb2JsZW1zICYmIGVudHJ5LnByb2JsZW1zLmxlbmd0aCApCgkJCQkJCQkJ +ewoJCQkJCQkJCQl2YXIgcHJvYmxlbXNfZWwgPSB0YXJnZXRfZWwuYXBwZW5kQ2hpbGQoIG5ldyBF +bGVtZW50KCAndWwnLCB7ICdjbGFzcyc6ICdlcF9yZXBvcnRfcm93X3Byb2JsZW1zJyB9ICkgKTsK +CgkJCQkJCQkJCWZvciggdmFyIHA9MDsgcDwgZW50cnkucHJvYmxlbXMubGVuZ3RoOyBwKysgKQoJ +CQkJCQkJCQl7CgkJCQkJCQkJCQl2YXIgbGkgPSBwcm9ibGVtc19lbC5hcHBlbmRDaGlsZCggbmV3 +IEVsZW1lbnQoICdsaScgKSk7CgkJCQkJCQkJCQlsaS51cGRhdGUoIGVudHJ5LnByb2JsZW1zW3Bd +ICk7CgkJCQkJCQkJCX0JCQkJCQkJCQoJCQkJCQkJCX0KCQkJCQkJCQllbHNlCgkJCQkJCQkJewoJ +CQkJCQkJCQkvL2FkZCBzdXBwb3J0IGZvciBjb21wbGlhbnQgaXRlbXMgdG8gaW5jbHVkZSBidWxs +ZXQgcG9pbnRzIHRvbwoJCQkJCQkJCQlpZiggZW50cnkuYnVsbGV0cyAmJiBlbnRyeS5idWxsZXRz +Lmxlbmd0aCApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYnVs +bGV0c19lbCA9IHRhcmdldF9lbC5hcHBlbmRDaGlsZCggbmV3IEVsZW1lbnQoICd1bCcsIHsgJ2Ns +YXNzJzogJ2VwX3JlcG9ydF9yb3dfYnVsbGV0cycgfSApICk7CgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICBncm91cGluZ19jb250YWluZXIudXBkYXRlKCB0aGlzLmdyb3VwZWRfaWRzW2ldLmxhYmVs -ICk7CgkJCQkgICAgICAgICAgICAgICAgICAgICAgICB9CgkJCQkJCX0KCgkJCQkJCS8vYWRkIHRo -ZSBlcHJpbnQgc3VtbWFyaWVzCgkJCQkJCXZhciBhZGRlZF9pZHMgPSB7fTsKCQkJCQkJZm9yKCB2 -YXIgYyA9IDA7IGMgPCB0aGlzLmlkcy5sZW5ndGg7IGMrKyApCgkJCQkJCXsKCQkJCQkJCXZhciBk -YXRhb2JqaWQgPSB0aGlzLmlkc1tjXTsKCQkJCQkJCXZhciBlbnRyeSA9IGRhdGFvYmpzW2RhdGFv -YmppZF07CgoJCQkJCQkJLy9zdG9yZSB0aGF0IHdlIGhhdmUgYWRkZWQgdGhpcyBvYmplY3RpZAoJ -CQkJCQkJaWYoICEoZGF0YW9iamlkIGluIGFkZGVkX2lkcykgKQoJCQkJCQkJewoJCQkJCQkJCWFk -ZGVkX2lkc1tkYXRhb2JqaWRdID0gMDsKCQkJCQkJCX0KCQkJCQkJCWVsc2UKCQkJCQkJCXsKCQkJ -CQkJCQlhZGRlZF9pZHNbZGF0YW9iamlkXSA9IGFkZGVkX2lkc1tkYXRhb2JqaWRdICsgMTsKCQkJ -CQkJCX0KCQkJCQkJCXRoaXMudG90YWxfZGF0YW9ianMrKzsKCgkJCQkJCQl2YXIgc3VtbWFyeSA9 -IGVudHJ5LnN1bW1hcnk7CgoJCQkJCQkJdmFyIHRhcmdldF9pZCA9IHRoaXMucHJlZml4ICsgJ18n -ICsgZGF0YW9iamlkOwoJCQkJCQkJaWYoIGFkZGVkX2lkc1tkYXRhb2JqaWRdID4gMCApCgkJCQkJ -CQl7CgkJCQkJCQkJdGFyZ2V0X2lkID0gdGFyZ2V0X2lkICsgJ18nICsgYWRkZWRfaWRzW2RhdGFv -YmppZF07CgkJCQkJCQl9CgkJCQkJCQl2YXIgdGFyZ2V0X2VsID0gJCggdGFyZ2V0X2lkICk7CgoJ -CQkJCQkJaWYoIHRhcmdldF9lbCAhPSBudWxsICYmIHN1bW1hcnkgIT0gbnVsbCApCgkJCQkJCQl7 -CgkJCQkJCQkJdmFyIHN1bW1hcnlfZWwgPSB0YXJnZXRfZWwuYXBwZW5kQ2hpbGQoIG5ldyBFbGVt -ZW50KCAnZGl2JywgeyAnY2xhc3MnOiAnZXBfcmVwb3J0X3Jvd19zdW1tYXJ5JyB9ICkgKTsKCQkJ -CQkJCQlzdW1tYXJ5X2VsLnVwZGF0ZSggc3VtbWFyeSApOwoKCQkJCQkJCQkvL3RvdGFsIHVwIG5v -biBjb21wbGlhbnQgcmVjb3JkcwoJCQkJCQkJCWlmKCBlbnRyeS5pc19jb21wbGlhbnQgPT0gbnVs -bCAmJiBlbnRyeS5wcm9ibGVtcyAmJiBlbnRyeS5wcm9ibGVtcy5sZW5ndGggKQoJCQkJCQkJCXsK -CQkJCQkJCQkJdGhpcy50b3RhbF9ub25jb21wbGlhbnQrKzsKCQkJCQkJCQl9CgkJCQkJCQkJCgkJ -CQkJCQkJaWYoIGVudHJ5LnByb2JsZW1zICYmIGVudHJ5LnByb2JsZW1zLmxlbmd0aCApCgkJCQkJ -CQkJewoJCQkJCQkJCQl2YXIgcHJvYmxlbXNfZWwgPSB0YXJnZXRfZWwuYXBwZW5kQ2hpbGQoIG5l -dyBFbGVtZW50KCAndWwnLCB7ICdjbGFzcyc6ICdlcF9yZXBvcnRfcm93X3Byb2JsZW1zJyB9ICkg -KTsKCgkJCQkJCQkJCWZvciggdmFyIHA9MDsgcDwgZW50cnkucHJvYmxlbXMubGVuZ3RoOyBwKysg -KQoJCQkJCQkJCQl7CgkJCQkJCQkJCQl2YXIgbGkgPSBwcm9ibGVtc19lbC5hcHBlbmRDaGlsZCgg -bmV3IEVsZW1lbnQoICdsaScgKSk7CgkJCQkJCQkJCQlsaS51cGRhdGUoIGVudHJ5LnByb2JsZW1z -W3BdICk7CgkJCQkJCQkJCX0JCQkJCQkJCQoJCQkJCQkJCX0KCQkJCQkJCQllbHNlCgkJCQkJCQkJ -ewoJCQkJCQkJCQkvL2FkZCBzdXBwb3J0IGZvciBjb21wbGlhbnQgaXRlbXMgdG8gaW5jbHVkZSBi -dWxsZXQgcG9pbnRzIHRvbwoJCQkJCQkJCQlpZiggZW50cnkuYnVsbGV0cyAmJiBlbnRyeS5idWxs -ZXRzLmxlbmd0aCApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIg -YnVsbGV0c19lbCA9IHRhcmdldF9lbC5hcHBlbmRDaGlsZCggbmV3IEVsZW1lbnQoICd1bCcsIHsg -J2NsYXNzJzogJ2VwX3JlcG9ydF9yb3dfYnVsbGV0cycgfSApICk7CgogICAgICAgICAgICAgICAg +ICAgIGZvciggdmFyIGI9MDsgYjwgZW50cnkuYnVsbGV0cy5sZW5ndGg7IGIrKyApCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgIGZvciggdmFyIGI9MDsgYjwgZW50cnkuYnVsbGV0cy5sZW5ndGg7IGIrKyApCiAgICAg +ICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxpID0g +YnVsbGV0c19lbC5hcHBlbmRDaGlsZCggbmV3IEVsZW1lbnQoICdsaScgKSk7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxp -ID0gYnVsbGV0c19lbC5hcHBlbmRDaGlsZCggbmV3IEVsZW1lbnQoICdsaScgKSk7CiAgICAgICAg +ICAgICAgICAgICAgICAgICAgICBsaS51cGRhdGUoIGVudHJ5LmJ1bGxldHNbYl0gKTsKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICBsaS51cGRhdGUoIGVudHJ5LmJ1bGxldHNbYl0gKTsKICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCQkJCQkJCQl9CgoJCQkJCQkJ -CS8vZGlzcGxheSBzdGF0ZQoJCQkJCQkJCXZhciByZSA9IG5ldyBSZWdFeHAoIl4jKD86WzAtOWEt -ZkEtRl17M30pezEsMn0kIik7CgkJCQkJCQkJaWYoIGVudHJ5LnN0YXRlICYmIHJlLnRlc3QoZW50 -cnkuc3RhdGUpICkKCQkJCQkJCQl7CgkJCQkJCQkJCXRhcmdldF9lbC5zdHlsZS5ib3JkZXJMZWZ0 -V2lkdGggPSAnN3B4JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X2VsLnN0eWxlLmJvcmRlckxlZnRT -dHlsZSA9ICdzb2xpZCc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF9lbC5zdHlsZS5ib3JkZXJMZWZ0 -Q29sb3IgPSBlbnRyeS5zdGF0ZTsKCQkJCQkJCQl9CgkJCQkJCQkJZWxzZSAvL25vIHN0YXRlIHBy -b3ZpZGVkLCBzbyBkZXJpdmUgb25lIGZyb20gZXhpc3RlbmNlIG9mIHByb2JsZW1zCgkJCQkJCQkJ -ewoJCQkJCQkJCQlpZiggZW50cnkucHJvYmxlbXMgJiYgZW50cnkucHJvYmxlbXMubGVuZ3RoICkK -CQkJCQkJCQkJewoJCQkJCQkJCQkJdGFyZ2V0X2VsLmFkZENsYXNzTmFtZSggJ2VwX3JlcG9ydF9y -b3dfcHJvYmxlbXMnICk7CgkJCQkJCQkJCX0KCQkJCQkJCQkJZWxzZQoJCQkJCQkJCQl7CgkJCQkJ -CQkJCQl0YXJnZXRfZWwuYWRkQ2xhc3NOYW1lKCAnZXBfcmVwb3J0X3Jvd19vaycgKTsKCQkJCQkJ -CQkJfQoKCQkJCQkJCQkJaWYoICF0aGlzLnNob3dfY29tcGxpYW5jZSApCgkJCQkJCQkJCXsKCQkJ -CQkJCQkJCXRhcmdldF9lbC5hZGRDbGFzc05hbWUoICdlcF9yZXBvcnRfcm93X25vX2NvbXBsaWFu -Y2UnICk7CgkJCQkJCQkJCX0KCQkJCQkJCQl9CQkJCQkJCQkKCQkJCQkJCQl0YXJnZXRfZWwuc2hv -dygpOwoKCQkJCQkJCQl2YXIgZ3JvdXBpbmcgPSBlbnRyeS5ncm91cGluZzsKCQkJCQkJCQlpZigg -Z3JvdXBpbmcgIT0gbnVsbCApCgkJCQkJCQkJewoJCQkJCQkJCQlpZiggY3VycmVudF9ncm91cGlu -ZyA9PSBudWxsIHx8IGN1cnJlbnRfZ3JvdXBpbmcgIT0gZ3JvdXBpbmcpCgkJCQkJCQkJCXsKCQkJ -CQkJCQkJCWN1cnJlbnRfZ3JvdXBpbmcgPSBncm91cGluZzsKCQkJCQkJCQkJCXZhciBncm91cGlu -Z19jb250YWluZXIgPSBuZXcgRWxlbWVudCggJ2RpdicsIHsgJ2NsYXNzJzogJ2VwX3JlcG9ydF9n -cm91cGluZycgfSApOwoJCQkJCQkJCQkJdGFyZ2V0X2VsLmluc2VydCggeyAnYmVmb3JlJyA6IGdy -b3VwaW5nX2NvbnRhaW5lciB9ICk7CgkJCQkJCQkJCQlncm91cGluZ19jb250YWluZXIudXBkYXRl -KCBjdXJyZW50X2dyb3VwaW5nICk7CgkJCQkJCQkJCX0KCQkJCQkJCQl9CgkJCQkJCQl9CgkJCQkJ -CX0KCgoJCQkJCQlpZiggdGhpcy50b3RhbF9kYXRhb2JqcyApCgkJCQkJCXsKCQkJCQkJCQoJCQkJ -CQkJdGhpcy5jb250YWluZXIuaW5zZXJ0QmVmb3JlKCBuZXcgRWxlbWVudCggJ2RpdicsIHsgJ2Ns -YXNzJzogJ2VwX3JlcG9ydF9jb21wbGlhbmNlX2NvbnRhaW5lcicsICdpZCc6IHRoaXMucHJlZml4 -ICsgIl9jb21wbGlhbmNlX2NvbnRhaW5lciIgfSApLCB0aGlzLmNvbnRhaW5lci5maXJzdENoaWxk -ICk7CgkJCQkJCQkvL3NldCB1cCB0ZXh0IGNvbnRhaW5lcgoJCQkJCQkJJCggdGhpcy5wcmVmaXgg -KyAiX2NvbXBsaWFuY2VfY29udGFpbmVyIiApLmFwcGVuZENoaWxkKCBuZXcgRWxlbWVudCggJ2Rp -dicsIHsgJ2NsYXNzJzogJ2VwX3JlcG9ydF9jb21wbGlhbmNlX3RleHQnLCAnaWQnOiB0aGlzLnBy -ZWZpeCArICJfY29tcGxpYW5jZV90ZXh0IiwgIH0gKSk7CgoJCQkJCQkJLy9zZXQgdXAgb3V0cHV0 -cyBsYWJlbAoJCQkJCQkJdmFyIG91dHB1dHM7CgkJCQkJCQlpZiggdGhpcy5sYWJlbHMgKQoJCQkJ -CQkJewoJCQkJCQkJCW91dHB1dHMgPSB0aGlzLmxhYmVscy5vdXRwdXRzOwoJCQkJCQkJfQoJCQkJ -CQkJZWxzZQoJCQkJCQkJewoJCQkJCQkJCW91dHB1dHMgPSAib3V0cHV0IjsKCQkJCQkJCQlpZigg -dGhpcy50b3RhbF9kYXRhb2JqcyA+IDEgKQoJCQkJCQkJCQlvdXRwdXRzID0gb3V0cHV0cyArICJz -IjsKCQkJCQkJCX0KCgkJCQkJCQlpZiggdGhpcy5zaG93X2NvbXBsaWFuY2UgKQoJCQkJCQkJewoJ -CQkJCQkJCXZhciByZWZfd2lkdGggPSAyMDA7CgkJCQkJCQkJdmFyIGNvbXBsaWFuY2UgPSAoIHRo -aXMudG90YWxfZGF0YW9ianMgLSB0aGlzLnRvdGFsX25vbmNvbXBsaWFudCApIC8gdGhpcy50b3Rh -bF9kYXRhb2JqczsKCgkJCQkJCQkJJCggdGhpcy5wcmVmaXggKyAiX2NvbXBsaWFuY2VfY29udGFp -bmVyIiApLmFwcGVuZENoaWxkKCBuZXcgRWxlbWVudCggJ2RpdicsIHsgJ2NsYXNzJzogJ2VwX3Jl -cG9ydF9jb21wbGlhbmNlX3dyYXBwZXInLCAnaWQnOiB0aGlzLnByZWZpeCArICJfY29tcGxpYW5j -ZSIsICdzdHlsZSc6ICd3aWR0aDogJytyZWZfd2lkdGggKyAncHgnIH0gKSApOwoKCQkJCQkJCQl2 -YXIgY29tcGxpYW5jZV93aWR0aCA9IE1hdGguZmxvb3IoIDIwMCAqIGNvbXBsaWFuY2UgKTsKCQoJ -CQkJCQkJCSQoIHRoaXMucHJlZml4ICsgIl9jb21wbGlhbmNlIiApLmFwcGVuZENoaWxkKCBuZXcg -RWxlbWVudCggJ2RpdicsIHsgJ2NsYXNzJzogJ2VwX3JlcG9ydF9jb21wbGlhbmNlJywgJ3N0eWxl -JzogJ3dpZHRoOicrY29tcGxpYW5jZV93aWR0aCArICdweCcgfSApICk7CgkKCQkJCQkJCQkkKCB0 -aGlzLnByZWZpeCArICJfY29tcGxpYW5jZV90ZXh0IiApLnVwZGF0ZSggdGhpcy50b3RhbF9kYXRh -b2JqcyArICIgIiArIG91dHB1dHMgKyAiIC0gIiArIE1hdGguZmxvb3IoIGNvbXBsaWFuY2UgKiAx -MDAgKSArICIlIGNvbXBsaWFuY2UiKTsKCQkJCQkJCX0KCQkJCQkJCWVsc2UKCQkJCQkJCXsKCQkJ -CQkJCQkkKCB0aGlzLnByZWZpeCArICJfY29tcGxpYW5jZV90ZXh0IiApLnVwZGF0ZSggdGhpcy50 -b3RhbF9kYXRhb2JqcyArICIgIiArIG91dHB1dHMgKTsKCQkJCQkJCX0KCQkJCQkJfQkKCgkJCQkJ -fQoJCQkJCWVsc2UKCQkJCQl7CgkJCQkJCXZhciB3aWR0aCA9IDIwMDsKCQkJCQkJJCggdGhpcy5w -cmVmaXggKyAnX3Byb2dyZXNzX2JhcicgKS5zdHlsZS5iYWNrZ3JvdW5kUG9zaXRpb24gPSBNYXRo -LnJvdW5kKC13aWR0aCArIHdpZHRoICogdGhpcy5jb3VudCAvIHRoaXMuaWRzLmxlbmd0aCkgKyAi -cHggMHB4IjsKCQkJCQl9CgoJCQkJCWlmKCB0aGlzLnJ1bnMgPT0gMCAmJiB0aGlzLmNvdW50ID09 -IDAgKQoJCQkJCXsKCQkJCQkJdmFyIHBOb2RlID0gJCggdGhpcy5wcmVmaXggKyAnX3Byb2dyZXNz -X2JhcicgKS5wYXJlbnROb2RlOwoJCQkJCQkkKHRoaXMucHJlZml4ICsgJ19wcm9ncmVzc19iYXIn -KS5yZW1vdmUoKTsKCQkJCQkJdmFyIHNwYW4gPSBuZXcgRWxlbWVudCggJ3NwYW4nLCB7ICdjbGFz -cyc6ICdlcF9yZWZfcmVwb3J0X2VtcHR5JyB9ICk7CgkJCQkJCXNwYW4udXBkYXRlKCAnUmVwb3J0 -IGVtcHR5JyApOwoJCQkJCQlwTm9kZS5pbnNlcnQoIHNwYW4gKTsKCQkJCQl9CgkJCQkJdGhpcy5y -dW5zKys7CgoJCQkJfSkuYmluZCh0aGlzKQoJCQl9KTsKCQl9CgkJaWYoIHRoaXMuaWRzID09IG51 -bGwgfHwgdGhpcy5pZHMubGVuZ3RoID09IDAgKQoJCXsKCQkJdmFyIHBOb2RlID0gJCh0aGlzLnBy -ZWZpeCArICdfcHJvZ3Jlc3NfYmFyJykucGFyZW50Tm9kZTsKCQkJJCh0aGlzLnByZWZpeCArICdf -cHJvZ3Jlc3NfYmFyJykuaGlkZSgpOwoJCQl2YXIgc3BhbiA9IG5ldyBFbGVtZW50KCAnc3Bhbics -IHsgJ2NsYXNzJzogJ2VwX3JlZl9yZXBvcnRfZW1wdHknIH0gKTsKCQkJc3Bhbi51cGRhdGUoICdS -ZXBvcnQgZW1wdHknICk7CgkJCXBOb2RlLmluc2VydCggc3BhbiApOwoJCX0KCX0KCgp9KTsKCmZ1 -bmN0aW9uIGdyb3VwX3JlcG9ydChncm91cCkKewoJZG9jdW1lbnQuZ3JvdXBfcmVwb3J0Lmdyb3Vw -LnZhbHVlID0gZ3JvdXA7Cglkb2N1bWVudC5ncm91cF9yZXBvcnQuc3VibWl0KCk7Cn0KCmZ1bmN0 -aW9uIHNvcnRfcmVwb3J0KHNvcnQpCnsKCWRvY3VtZW50LnNvcnRfcmVwb3J0LnNvcnQudmFsdWUg -PSBzb3J0OwoJZG9jdW1lbnQuc29ydF9yZXBvcnQuc3VibWl0KCk7Cn0KCmZ1bmN0aW9uIGlzSW50 -ZWdlcihudW0pIHsKICByZXR1cm4gKG51bSBeIDApID09PSBudW07Cn0K +ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCQkJCQkJCQl9CgoJCQkJCQkJCS8v +ZGlzcGxheSBzdGF0ZQoJCQkJCQkJCXZhciByZSA9IG5ldyBSZWdFeHAoIl4jKD86WzAtOWEtZkEt +Rl17M30pezEsMn0kIik7CgkJCQkJCQkJaWYoIGVudHJ5LnN0YXRlICYmIHJlLnRlc3QoZW50cnku +c3RhdGUpICkKCQkJCQkJCQl7CgkJCQkJCQkJCXRhcmdldF9lbC5zdHlsZS5ib3JkZXJMZWZ0V2lk +dGggPSAnN3B4JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X2VsLnN0eWxlLmJvcmRlckxlZnRTdHls +ZSA9ICdzb2xpZCc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF9lbC5zdHlsZS5ib3JkZXJMZWZ0Q29s +b3IgPSBlbnRyeS5zdGF0ZTsKCQkJCQkJCQl9CgkJCQkJCQkJZWxzZSAvL25vIHN0YXRlIHByb3Zp +ZGVkLCBzbyBkZXJpdmUgb25lIGZyb20gZXhpc3RlbmNlIG9mIHByb2JsZW1zCgkJCQkJCQkJewoJ +CQkJCQkJCQlpZiggZW50cnkucHJvYmxlbXMgJiYgZW50cnkucHJvYmxlbXMubGVuZ3RoICkKCQkJ +CQkJCQkJewoJCQkJCQkJCQkJdGFyZ2V0X2VsLmFkZENsYXNzTmFtZSggJ2VwX3JlcG9ydF9yb3df +cHJvYmxlbXMnICk7CgkJCQkJCQkJCX0KCQkJCQkJCQkJZWxzZQoJCQkJCQkJCQl7CgkJCQkJCQkJ +CQl0YXJnZXRfZWwuYWRkQ2xhc3NOYW1lKCAnZXBfcmVwb3J0X3Jvd19vaycgKTsKCQkJCQkJCQkJ +fQoKCQkJCQkJCQkJaWYoICF0aGlzLnNob3dfY29tcGxpYW5jZSApCgkJCQkJCQkJCXsKCQkJCQkJ +CQkJCXRhcmdldF9lbC5hZGRDbGFzc05hbWUoICdlcF9yZXBvcnRfcm93X25vX2NvbXBsaWFuY2Un +ICk7CgkJCQkJCQkJCX0KCQkJCQkJCQl9CQkJCQkJCQkKCQkJCQkJCQl0YXJnZXRfZWwuc2hvdygp +OwoKCQkJCQkJCQl2YXIgZ3JvdXBpbmcgPSBlbnRyeS5ncm91cGluZzsKCQkJCQkJCQlpZiggZ3Jv +dXBpbmcgIT0gbnVsbCApCgkJCQkJCQkJewoJCQkJCQkJCQlpZiggY3VycmVudF9ncm91cGluZyA9 +PSBudWxsIHx8IGN1cnJlbnRfZ3JvdXBpbmcgIT0gZ3JvdXBpbmcpCgkJCQkJCQkJCXsKCQkJCQkJ +CQkJCWN1cnJlbnRfZ3JvdXBpbmcgPSBncm91cGluZzsKCQkJCQkJCQkJCXZhciBncm91cGluZ19j +b250YWluZXIgPSBuZXcgRWxlbWVudCggJ2RpdicsIHsgJ2NsYXNzJzogJ2VwX3JlcG9ydF9ncm91 +cGluZycgfSApOwoJCQkJCQkJCQkJdGFyZ2V0X2VsLmluc2VydCggeyAnYmVmb3JlJyA6IGdyb3Vw +aW5nX2NvbnRhaW5lciB9ICk7CgkJCQkJCQkJCQlncm91cGluZ19jb250YWluZXIudXBkYXRlKCBj +dXJyZW50X2dyb3VwaW5nICk7CgkJCQkJCQkJCX0KCQkJCQkJCQl9CgkJCQkJCQl9CgkJCQkJCX0K +CgoJCQkJCQlpZiggdGhpcy50b3RhbF9kYXRhb2JqcyApCgkJCQkJCXsKCQkJCQkJCQoJCQkJCQkJ +dGhpcy5jb250YWluZXIuaW5zZXJ0QmVmb3JlKCBuZXcgRWxlbWVudCggJ2RpdicsIHsgJ2NsYXNz +JzogJ2VwX3JlcG9ydF9jb21wbGlhbmNlX2NvbnRhaW5lcicsICdpZCc6IHRoaXMucHJlZml4ICsg +Il9jb21wbGlhbmNlX2NvbnRhaW5lciIgfSApLCB0aGlzLmNvbnRhaW5lci5maXJzdENoaWxkICk7 +CgkJCQkJCQkvL3NldCB1cCB0ZXh0IGNvbnRhaW5lcgoJCQkJCQkJJCggdGhpcy5wcmVmaXggKyAi +X2NvbXBsaWFuY2VfY29udGFpbmVyIiApLmFwcGVuZENoaWxkKCBuZXcgRWxlbWVudCggJ2Rpdics +IHsgJ2NsYXNzJzogJ2VwX3JlcG9ydF9jb21wbGlhbmNlX3RleHQnLCAnaWQnOiB0aGlzLnByZWZp +eCArICJfY29tcGxpYW5jZV90ZXh0IiwgIH0gKSk7CgoJCQkJCQkJLy9zZXQgdXAgb3V0cHV0cyBs +YWJlbAoJCQkJCQkJdmFyIG91dHB1dHM7CgkJCQkJCQlpZiggdGhpcy5sYWJlbHMgKQoJCQkJCQkJ +ewoJCQkJCQkJCW91dHB1dHMgPSB0aGlzLmxhYmVscy5vdXRwdXRzOwoJCQkJCQkJfQoJCQkJCQkJ +ZWxzZQoJCQkJCQkJewoJCQkJCQkJCW91dHB1dHMgPSAib3V0cHV0IjsKCQkJCQkJCQlpZiggdGhp +cy50b3RhbF9kYXRhb2JqcyA+IDEgKQoJCQkJCQkJCQlvdXRwdXRzID0gb3V0cHV0cyArICJzIjsK +CQkJCQkJCX0KCgkJCQkJCQlpZiggdGhpcy5zaG93X2NvbXBsaWFuY2UgKQoJCQkJCQkJewoJCQkJ +CQkJCXZhciByZWZfd2lkdGggPSAyMDA7CgkJCQkJCQkJdmFyIGNvbXBsaWFuY2UgPSAoIHRoaXMu +dG90YWxfZGF0YW9ianMgLSB0aGlzLnRvdGFsX25vbmNvbXBsaWFudCApIC8gdGhpcy50b3RhbF9k +YXRhb2JqczsKCgkJCQkJCQkJJCggdGhpcy5wcmVmaXggKyAiX2NvbXBsaWFuY2VfY29udGFpbmVy +IiApLmFwcGVuZENoaWxkKCBuZXcgRWxlbWVudCggJ2RpdicsIHsgJ2NsYXNzJzogJ2VwX3JlcG9y +dF9jb21wbGlhbmNlX3dyYXBwZXInLCAnaWQnOiB0aGlzLnByZWZpeCArICJfY29tcGxpYW5jZSIs +ICdzdHlsZSc6ICd3aWR0aDogJytyZWZfd2lkdGggKyAncHgnIH0gKSApOwoKCQkJCQkJCQl2YXIg +Y29tcGxpYW5jZV93aWR0aCA9IE1hdGguZmxvb3IoIDIwMCAqIGNvbXBsaWFuY2UgKTsKCQoJCQkJ +CQkJCSQoIHRoaXMucHJlZml4ICsgIl9jb21wbGlhbmNlIiApLmFwcGVuZENoaWxkKCBuZXcgRWxl +bWVudCggJ2RpdicsIHsgJ2NsYXNzJzogJ2VwX3JlcG9ydF9jb21wbGlhbmNlJywgJ3N0eWxlJzog +J3dpZHRoOicrY29tcGxpYW5jZV93aWR0aCArICdweCcgfSApICk7CgkKCQkJCQkJCQkkKCB0aGlz +LnByZWZpeCArICJfY29tcGxpYW5jZV90ZXh0IiApLnVwZGF0ZSggdGhpcy50b3RhbF9kYXRhb2Jq +cyArICIgIiArIG91dHB1dHMgKyAiIC0gIiArIE1hdGguZmxvb3IoIGNvbXBsaWFuY2UgKiAxMDAg +KSArICIlIGNvbXBsaWFuY2UiKTsKCQkJCQkJCX0KCQkJCQkJCWVsc2UKCQkJCQkJCXsKCQkJCQkJ +CQkkKCB0aGlzLnByZWZpeCArICJfY29tcGxpYW5jZV90ZXh0IiApLnVwZGF0ZSggdGhpcy50b3Rh +bF9kYXRhb2JqcyArICIgIiArIG91dHB1dHMgKTsKCQkJCQkJCX0KCQkJCQkJfQkKCgkJCQkJfQoJ +CQkJCWVsc2UKCQkJCQl7CgkJCQkJCXZhciB3aWR0aCA9IDIwMDsKCQkJCQkJJCggdGhpcy5wcmVm +aXggKyAnX3Byb2dyZXNzX2JhcicgKS5zdHlsZS5iYWNrZ3JvdW5kUG9zaXRpb24gPSBNYXRoLnJv +dW5kKC13aWR0aCArIHdpZHRoICogdGhpcy5jb3VudCAvIHRoaXMuaWRzLmxlbmd0aCkgKyAicHgg +MHB4IjsKCQkJCQl9CgoJCQkJCWlmKCB0aGlzLnJ1bnMgPT0gMCAmJiB0aGlzLmNvdW50ID09IDAg +KQoJCQkJCXsKCQkJCQkJdmFyIHBOb2RlID0gJCggdGhpcy5wcmVmaXggKyAnX3Byb2dyZXNzX2Jh +cicgKS5wYXJlbnROb2RlOwoJCQkJCQkkKHRoaXMucHJlZml4ICsgJ19wcm9ncmVzc19iYXInKS5y +ZW1vdmUoKTsKCQkJCQkJdmFyIHNwYW4gPSBuZXcgRWxlbWVudCggJ3NwYW4nLCB7ICdjbGFzcyc6 +ICdlcF9yZWZfcmVwb3J0X2VtcHR5JyB9ICk7CgkJCQkJCXNwYW4udXBkYXRlKCAnUmVwb3J0IGVt +cHR5JyApOwoJCQkJCQlwTm9kZS5pbnNlcnQoIHNwYW4gKTsKCQkJCQl9CgkJCQkJdGhpcy5ydW5z +Kys7CgoJCQkJfSkuYmluZCh0aGlzKQoJCQl9KTsKCQl9CgkJaWYoIHRoaXMuaWRzID09IG51bGwg +fHwgdGhpcy5pZHMubGVuZ3RoID09IDAgKQoJCXsKCQkJdmFyIHBOb2RlID0gJCh0aGlzLnByZWZp +eCArICdfcHJvZ3Jlc3NfYmFyJykucGFyZW50Tm9kZTsKCQkJJCh0aGlzLnByZWZpeCArICdfcHJv +Z3Jlc3NfYmFyJykuaGlkZSgpOwoJCQl2YXIgc3BhbiA9IG5ldyBFbGVtZW50KCAnc3BhbicsIHsg +J2NsYXNzJzogJ2VwX3JlZl9yZXBvcnRfZW1wdHknIH0gKTsKCQkJc3Bhbi51cGRhdGUoICdSZXBv +cnQgZW1wdHknICk7CgkJCXBOb2RlLmluc2VydCggc3BhbiApOwoJCX0KCX0KCgp9KTsKCmZ1bmN0 +aW9uIGdyb3VwX3JlcG9ydChncm91cCkKewoJZG9jdW1lbnQuZ3JvdXBfcmVwb3J0Lmdyb3VwLnZh +bHVlID0gZ3JvdXA7Cglkb2N1bWVudC5ncm91cF9yZXBvcnQuc3VibWl0KCk7Cn0KCmZ1bmN0aW9u +IHNvcnRfcmVwb3J0KHNvcnQpCnsKCWRvY3VtZW50LnNvcnRfcmVwb3J0LnNvcnQudmFsdWUgPSBz +b3J0OwoJZG9jdW1lbnQuc29ydF9yZXBvcnQuc3VibWl0KCk7Cn0KCmZ1bmN0aW9uIGlzSW50ZWdl +cihudW0pIHsKICByZXR1cm4gKG51bSBeIDApID09PSBudW07Cn0K @@ -2870,7 +2878,7 @@ mCeqVAAAAABJRU5ErkJggg== coverimage - 3.3 + 3.3.1 @@ -2893,6 +2901,20 @@ mCeqVAAAAABJRU5ErkJggg== rwf1v07@soton.ac.uk + + + Oakley + Ed + + E.J.Oakley@soton.ac.uk + + + + Newman + David R + + drn@ecs.soton.ac.uk + 2017-06-14 15:21:27 Generic Reporting Framework diff --git a/reports.epmi b/reports.epmi index 5a473f9..017e64a 100644 --- a/reports.epmi +++ b/reports.epmi @@ -29,9 +29,9 @@ lang/en/phrases/reports.xml text/xml - f344518160d45ccd1d1709a926d9e6d1 + 9c23d9b3d22356d0ff30793364082dbb MD5 - 2563 + 2685 plugins/EPrints/Plugin/Export/Grid2.pm @@ -85,7 +85,7 @@ plugins/EPrints/Plugin/Screen/Report.pm text/plain - f39fb0deae29a19b89b66997340c3894 + 645bd1e2a38d975945e731b597c26f9d MD5 44087 @@ -134,9 +134,9 @@ static/javascript/auto/reports.js text/plain - 399f9957d04d330098e2280f062661d9 + fb34e39d76dbc63ac1d052981fca063f MD5 - 12696 + 12978 static/style/auto/reports.css @@ -166,7 +166,7 @@ coverimage - 3.3 + 3.3.1 @@ -189,6 +189,20 @@ rwf1v07@soton.ac.uk + + + Oakley + Ed + + E.J.Oakley@soton.ac.uk + + + + Newman + David R + + drn@ecs.soton.ac.uk + 2017-06-14 15:21:27 Generic Reporting Framework