diff --git a/cfg/cfg.d/z_oai_uketd_dc.pl b/cfg/cfg.d/z_oai_uketd_dc.pl index 5d6a609..e7e99fd 100644 --- a/cfg/cfg.d/z_oai_uketd_dc.pl +++ b/cfg/cfg.d/z_oai_uketd_dc.pl @@ -36,11 +36,16 @@ ################################################################################### #$c->{plugins}->{"Export::OAI_UKETD_DC_2017"}->{params}->{thesis_type_to_qualname} = { -# phd => "Ph.D.", -# engd => "Eng.D.", -# edd => "Ed.D", -# dclinpsy => "D.Clin.Psy", -# mphil => "M.Phil.", +# phd => "Ph.D.", +# engd => "Eng.D.", +# edd => "Ed.D.", +# dclinpsy => "D.Clin.Psy.", +# md => "M.D.", +# mphil => "M.Phil.", +# mres => "M.Res.", +# ma => "M.A.", +# msc => "M.Sc.", +# llm => "L.L.M.", #}; ################################################################################### @@ -51,14 +56,16 @@ ################################################################################### #$c->{plugins}->{"Export::OAI_UKETD_DC_2017"}->{params}->{thesis_type_to_quallevel} = { -# phd => "doctoral", -# engd => "doctoral", -# mphil => "doctoral", -# edd => "doctoral", +# phd => "doctoral", +# engd => "doctoral", +# edd => "doctoral", # dclinpsy => "doctoral", -# mphil => "doctoral", -# ### example for 'masters' level ### -# meng => "masters", +# md => "doctoral", +# mphil => "masters", +# mres => 'masters', +# ma => 'masters', +# msc => 'masters', +# llm => 'masters', #}; diff --git a/lib/plugins/EPrints/Plugin/Export/OAI_UKETD_DC_2017.pm b/lib/plugins/EPrints/Plugin/Export/OAI_UKETD_DC_2017.pm index b1c804c..10c62c0 100644 --- a/lib/plugins/EPrints/Plugin/Export/OAI_UKETD_DC_2017.pm +++ b/lib/plugins/EPrints/Plugin/Export/OAI_UKETD_DC_2017.pm @@ -79,13 +79,13 @@ $DEFAULT{thesis_type_to_qualname} = { phd => "Ph.D.", engd => "Eng.D.", edd => "Ed.D.", - dclinpsy => "D.Clin.Psy", + dclinpsy => "D.Clin.Psy.", md => "M.D.", - mphil => "M.Phil", - mres => "M.Res", - ma => "M.A", - msc => "M.Sc", - llm => "L.L.M", + mphil => "M.Phil.", + mres => "M.Res.", + ma => "M.A.", + msc => "M.Sc.", + llm => "L.L.M.", }; diff --git a/oai_uketd_dc.epm b/oai_uketd_dc.epm index a65262d..4ab6e6d 100644 --- a/oai_uketd_dc.epm +++ b/oai_uketd_dc.epm @@ -7,9 +7,9 @@ epm/oai_uketd_dc/cfg/cfg.d/z_oai_uketd_dc.pl - 9e16c009e9d47bae94ecf0d597394e17 + d60147e1e65a45c4119e69910c920461 MD5 - 8367 + 8551 IyBDb25maWcgZmlsZSAoZWRpdGFibGUgYnkgRVBNQyBzY3JlZW4pCgojIEZpcnN0bHksIGVuYWJs ZSB0aGlzIHBsdWdpbi4KJGMtPntwbHVnaW5zfS0+eyJFeHBvcnQ6Ok9BSV9VS0VURF9EQ18yMDE3 In0tPntwYXJhbXN9LT57ZGlzYWJsZX0gPSAwOwoKIyBNYXAgdGhpcyBwbHVnaW4gb3ZlciB0aGUg @@ -44,126 +44,130 @@ aGQnIGlzIG1hcHBlZCB0byAnUGguRC4nLCBhbmQgJ2VuZ2QnIGlzIG1hcHBlZCB0byAnRW5nLkQu Jy4KIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKIyRjLT57cGx1Z2luc30tPnsiRXhwb3J0 OjpPQUlfVUtFVERfRENfMjAxNyJ9LT57cGFyYW1zfS0+e3RoZXNpc190eXBlX3RvX3F1YWxuYW1l -fSA9ICB7CiMJcGhkICAgPT4gIlBoLkQuIiwKIwllbmdkICA9PiAiRW5nLkQuIiwKIwllZGQgICA9 -PiAiRWQuRCIsCiMJZGNsaW5wc3kgPT4gIkQuQ2xpbi5Qc3kiLAojCW1waGlsID0+ICJNLlBoaWwu -IiwKI307CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj -IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIAojIHRoZXNpc190eXBlX3RvX3F1 -YWxsZXZlbAojIE1hcCB0aGUgdGhlc2lzIHR5cGVzIHRvIGUuZy4gJ2RvY3RvcmFsJyBvciAnbWFz -dGVycycKIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj -IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKIyRjLT57cGx1Z2luc30tPnsiRXhw -b3J0OjpPQUlfVUtFVERfRENfMjAxNyJ9LT57cGFyYW1zfS0+e3RoZXNpc190eXBlX3RvX3F1YWxs -ZXZlbH0gPSAgewojCXBoZCAgID0+ICJkb2N0b3JhbCIsCiMJZW5nZCAgPT4gImRvY3RvcmFsIiwK -IwltcGhpbCA9PiAiZG9jdG9yYWwiLAojCWVkZCAgID0+ICJkb2N0b3JhbCIsCiMJZGNsaW5wc3kg -PT4gImRvY3RvcmFsIiwKIwltcGhpbCA9PiAiZG9jdG9yYWwiLAojCSMjIyBleGFtcGxlIGZvciAn -bWFzdGVycycgbGV2ZWwgIyMjCiMJbWVuZyA9PiAibWFzdGVycyIsCiN9OwoKCiMjIyMjIyMjIyMj +fSA9ICB7CiMJcGhkICAgICAgPT4gIlBoLkQuIiwKIwllbmdkICAgICA9PiAiRW5nLkQuIiwKIwll +ZGQgICAgICA9PiAiRWQuRC4iLAojCWRjbGlucHN5ID0+ICJELkNsaW4uUHN5LiIsCiMJbWQgICAg +ICAgPT4gIk0uRC4iLAojCW1waGlsICAgID0+ICJNLlBoaWwuIiwKIwltcmVzICAgICA9PiAiTS5S +ZXMuIiwKIwltYSAgICAgICA9PiAiTS5BLiIsCiMJbXNjICAgICAgPT4gIk0uU2MuIiwKIwlsbG0g +ICAgICA9PiAiTC5MLk0uIiwKI307CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj +IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIAojIHRo +ZXNpc190eXBlX3RvX3F1YWxsZXZlbAojIE1hcCB0aGUgdGhlc2lzIHR5cGVzIHRvIGUuZy4gJ2Rv +Y3RvcmFsJyBvciAnbWFzdGVycycKIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj +IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKIyRjLT57 +cGx1Z2luc30tPnsiRXhwb3J0OjpPQUlfVUtFVERfRENfMjAxNyJ9LT57cGFyYW1zfS0+e3RoZXNp +c190eXBlX3RvX3F1YWxsZXZlbH0gPSAgewojCXBoZCAgICAgID0+ICJkb2N0b3JhbCIsCiMJZW5n +ZCAgICAgPT4gImRvY3RvcmFsIiwKIwllZGQgICAgICA9PiAiZG9jdG9yYWwiLAojCWRjbGlucHN5 +ID0+ICJkb2N0b3JhbCIsCiMJbWQgICAgICAgPT4gImRvY3RvcmFsIiwKIwltcGhpbCAgICA9PiAi +bWFzdGVycyIsCiMJbXJlcyAgICAgPT4gJ21hc3RlcnMnLAojCW1hICAgICAgID0+ICdtYXN0ZXJz +JywKIwltc2MgICAgICA9PiAnbWFzdGVycycsCiMJbGxtICAgICAgPT4gJ21hc3RlcnMnLAojfTsK +CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj +IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojCiMgbGFuZ190b18zY2hhcgojIE1heSBhbnkg +bGFuZ3VhZ2UgdmFsdWVzIHVzZWQgKEVQcmludHMgbm9ybWFsbHkgdXNlcyAyLWNoYXJhY3RlciBj +b2RlcywgYnV0IGEgCiMgbGFuZ3VhZ2UgZmllbGQgY291bGQgYWxzbyB1c2UgdmFsdWVzIHN1Y2gg +YXMgJ0VuZ2xpc2gnLCBvciBGcmVuY2gnLgojIFRoZXNlIHNob3VsZCBiZSBjb252ZXJ0ZWQgdG8g +My1jaGFyYWN0ZXIgY29kZXMgaW4gbGluZSB3aXRoIHRoaXMgZG9jdW1lbnRhdGlvbjoKIyAgaHR0 +cDovL3d3dy5sb2MuZ292L21hcmMvbGFuZ3VhZ2VzL2xhbmd1YWdlX2NvZGUuaHRtbAojIFZhbHVl +cyB0aGF0IGFyZW4ndCBtYXBwZWQgd2lsbCBiZSBjb3BpZWQgYXMtaXMgaW50byB0aGUgcmVzcG9u +c2UsIGJ1dCB3aXRob3V0IAojIHRoZSBJU082MzktMiBhdHRyaWJ1dGUuCiMKIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj -IyMjIyMjIyMjIyMjIyMjCiMKIyBsYW5nX3RvXzNjaGFyCiMgTWF5IGFueSBsYW5ndWFnZSB2YWx1 -ZXMgdXNlZCAoRVByaW50cyBub3JtYWxseSB1c2VzIDItY2hhcmFjdGVyIGNvZGVzLCBidXQgYSAK -IyBsYW5ndWFnZSBmaWVsZCBjb3VsZCBhbHNvIHVzZSB2YWx1ZXMgc3VjaCBhcyAnRW5nbGlzaCcs -IG9yIEZyZW5jaCcuCiMgVGhlc2Ugc2hvdWxkIGJlIGNvbnZlcnRlZCB0byAzLWNoYXJhY3RlciBj -b2RlcyBpbiBsaW5lIHdpdGggdGhpcyBkb2N1bWVudGF0aW9uOgojICBodHRwOi8vd3d3LmxvYy5n -b3YvbWFyYy9sYW5ndWFnZXMvbGFuZ3VhZ2VfY29kZS5odG1sCiMgVmFsdWVzIHRoYXQgYXJlbid0 -IG1hcHBlZCB3aWxsIGJlIGNvcGllZCBhcy1pcyBpbnRvIHRoZSByZXNwb25zZSwgYnV0IHdpdGhv -dXQgCiMgdGhlIElTTzYzOS0yIGF0dHJpYnV0ZS4KIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj +IyMjIyMjIyMjIyMjIyMKCiMkYy0+e3BsdWdpbnN9LT57IkV4cG9ydDo6T0FJX1VLRVREX0RDXzIw +MTcifS0+e3BhcmFtc30tPntsYW5nX3RvXzNjaGFyfSA9IHsKIwllbiA9PiAiZW5nIiwKIwlmciA9 +PiAiZnJlIiwKIwknRW5nbGlzaCcgPT4gJ2VuZycsCiN9OwoKCiMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj -IwoKIyRjLT57cGx1Z2luc30tPnsiRXhwb3J0OjpPQUlfVUtFVERfRENfMjAxNyJ9LT57cGFyYW1z -fS0+e2xhbmdfdG9fM2NoYXJ9ID0gewojCWVuID0+ICJlbmciLAojCWZyID0+ICJmcmUiLAojCSdF -bmdsaXNoJyA9PiAnZW5nJywKI307CgoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj -IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAKIyBj -b250cmlidXRvcl90eXBlX3RoZXNpc19hZHZpc29yCiMgVGhlIGNvbnRyaWJ1dG9yIHR5cGUgdG8g -aW5jbHVkZSBhcyBhIHN1cGVydmlzb3IgCiMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj -IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiMg -JGMtPntwbHVnaW5zfS0+eyJFeHBvcnQ6Ok9BSV9VS0VURF9EQ18yMDE3In0tPntwYXJhbXN9LT57 -Y29udHJpYnV0b3JfdHlwZV90aGVzaXNfYWR2aXNvcn0gPSAiaHR0cDovL3d3dy5sb2MuZ292L2xv -Yy50ZXJtcy9yZWxhdG9ycy9USFMiOwoKCgoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj -IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCgoj +IyMjIyMjCiMgCiMgY29udHJpYnV0b3JfdHlwZV90aGVzaXNfYWR2aXNvcgojIFRoZSBjb250cmli +dXRvciB0eXBlIHRvIGluY2x1ZGUgYXMgYSBzdXBlcnZpc29yIAojCiMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj -IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIyMKIyMjICBUaGUgZm9sbG93aW5nIGZ1bmN0aW9u -cyBjYW4gYmUgb3ZlcndyaXR0ZW4gdG8gc3VpdCByZXBvc2l0b3J5IGNvbmZpZ3VyYXRpb24KIyMj -ICAgIGJ1dCB3aWxsIHJlcXVpcmUgc29tZSBwcm9ncmFtbWluZyBrbm93bGVkZ2UgdG8gZ2V0IHRo -ZW0gd29ya2luZwojIyMKIyMjIC0gY3JlYXRvcl9hbmRfb3JjaWQKIyMjIC0gYWR2aXNvcl9hbmRf -b3JjaWQKIyMjIC0gZnVuZGVyX2FuZF9wcm9qZWN0CiMjIyAtIGRvaQojIyMgLSBkZXBhcnRtZW50 -cwojIyMKIyMjIFRoZSBvdXRsaW5lIGJlbG93IGNhbiBiZSB1c2VkIGFzIGEgc3RhcnRpbmcgcG9p -bnQgdG8gd3JpdGUgYW55IG1hcHBpbmdzCiMjIyB5b3VyIHJlcG9zaXRvcnkgbWF5IG5lZWQuCiMj -IyBJdCBtYXkgYmUgdXNlZnVsIHRvIHJlZmVyIHRvIHRoZSBkZWZhdWx0IG1ldGhvZHMgaW4gCiMj -IyBFUHJpbnRzOjpQbHVnaW46OkV4cG9ydDo6T0FJX1VLRVREX0RDXzIwMTcgCiMjIwojIyMgVGhl -cmUgYXJlIHR3byAnaW50ZXJuYWwnIG1ldGhvZHMgdGhhdCBmb3JtYXQgRE9JcywgT1JDSURzIGlu -IHRoZSB3YXkgRVRoT1MKIyMjIHdvdWxkIGxpa2UgdG8gcmVjZWl2ZSB0aGVtOgojIyMgbXkgJG9y -Y2lkID0gJHBsdWdpbi0+X2Zvcm1hdF9vcmNpZCggJGNyZWF0b3ItPntvcmNpZH0gKTsKIyMjIG15 -ICRkb2kgPSAkcGx1Z2luLT5fZm9ybWF0X2RvaSggJGVwcmludC0+dmFsdWUoICJkb2kiICkgKTsK -IyMjIElmIHRoZSB2YWx1ZSBwYXNzZWQgdG8gdGhlIF9mb3JtYXRfb3JjaWQgbWV0aG9kIGRvZXNu -J3QgbG9vayBsaWtlIGFuIG9yY2lkLCBpdCAKIyMjIGlzIHJldHVybmVkIGFzLWlzIHdoZXJlYXMg -aWYgdGhlIHZhbHVlIHBhc3NlZCB0byBfZm9ybWF0X2RvaSBkb2Vzbid0IG1hdGNoIHRoZSAKIyMj -IGV4cGVjdGVkIGZvcm1hdCwgbm90aGluZyBpcyByZXR1cm5lZC4KIyMjCiMjIyMjIyMjIyMjIyMj +IyMjIyMjIyMjCgojICRjLT57cGx1Z2luc30tPnsiRXhwb3J0OjpPQUlfVUtFVERfRENfMjAxNyJ9 +LT57cGFyYW1zfS0+e2NvbnRyaWJ1dG9yX3R5cGVfdGhlc2lzX2Fkdmlzb3J9ID0gImh0dHA6Ly93 +d3cubG9jLmdvdi9sb2MudGVybXMvcmVsYXRvcnMvVEhTIjsKCgoKCiMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj -IyMjIyMjIyMjIyMjCgojJGMtPntwbHVnaW5zfS0+eyJFeHBvcnQ6Ok9BSV9VS0VURF9EQ18yMDE3 -In0tPntwYXJhbXN9LT57Y3JlYXRvcl9hbmRfb3JjaWR9ID0gc3ViIHsKIwlteSggJHBsdWdpbiwg -JGVwcmludCApID0gQF87CiMKIwlteSBAcmV0dXJucyA9ICgpOwojCSMgZG8gc29tZXRoaW5nIHRv -IGdldCB2YWx1ZXMKIwkjIHB1c2ggQHJldHVybnMsIFsgImVsZW1lbnROYW1lIiwgInZhbHVlIiwg -Im5hbWVzcGFjZSIsIHsgImF0dHIxIiA9PiAidmFsdWUxIiwgImF0dHIyIiA9PiAidmFsdWUyIiwg -fSBdOwojCXJldHVybiBAcmV0dXJuczsKI307CgoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj -IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK -CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj -IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIyMKIyMjIFRoZSBmb2xsb3dpbmcgc2V0dGlu -ZyBoYXMgYmVlbiBhZGRlZCB0byBhbGxvdyBhbiBleHRyYSBhdHRyaWJ1dGUgdG8gYmUgYWRkZWQK -IyMjIHRvIHNvbWUgYXV0aG9yIGlkZW50aWZpZXIgZWxlbWVudHMgLSB3aGljaCBjYW4gYmUgdXNl -ZCBmb3IgYm90aCB0aGUgYXV0aG9yLCAKIyMjIGFuZCB0aGUgc3VwZXJ2aXNvcidzIE9SQ0lEIChv -ciBJU05JKS4KIyMjCiMjIyBUaGUgQkwgbWF5IGNob29zZSB0byB1c2UgdGhpcyBpbiB0aGUgZnV0 -dXJlLCB1bnRpbCB0aGVuLCBpdCdzIHByb2JhYmx5IGJlc3QKIyMjIHRvIGxlYXZlIGl0IHR1cm5l -ZCBvZmYhCiMjIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj -IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojCiMgJGMtPntwbHVnaW5zfS0+ -eyJFeHBvcnQ6Ok9BSV9VS0VURF9EQ18yMDE3In0tPntwYXJhbXN9LT57YWRkX2F0dHJpYnV0ZXNf -dG9fYWR2aXNvcl9hdXRob3JpZGVudGlmaWVyfSA9IDA7CiMgJGMtPntwbHVnaW5zfS0+eyJFeHBv -cnQ6Ok9BSV9VS0VURF9EQ18yMDE3In0tPntwYXJhbXN9LT57YWR2aXNvcl9hdXRob3JpZGVudGlm -aWVyX2F0dHJpYnV0ZXN9ID0gewojCXJlbCA9PiAiYWR2aXNvciIsCiMgfTsKIwojIyMjIyMjIyMj +IyMjIyMjIyMjCgoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj +IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyMjCiMjIyAgVGhlIGZvbGxv +d2luZyBmdW5jdGlvbnMgY2FuIGJlIG92ZXJ3cml0dGVuIHRvIHN1aXQgcmVwb3NpdG9yeSBjb25m +aWd1cmF0aW9uCiMjIyAgICBidXQgd2lsbCByZXF1aXJlIHNvbWUgcHJvZ3JhbW1pbmcga25vd2xl +ZGdlIHRvIGdldCB0aGVtIHdvcmtpbmcKIyMjCiMjIyAtIGNyZWF0b3JfYW5kX29yY2lkCiMjIyAt +IGFkdmlzb3JfYW5kX29yY2lkCiMjIyAtIGZ1bmRlcl9hbmRfcHJvamVjdAojIyMgLSBkb2kKIyMj +IC0gZGVwYXJ0bWVudHMKIyMjCiMjIyBUaGUgb3V0bGluZSBiZWxvdyBjYW4gYmUgdXNlZCBhcyBh +IHN0YXJ0aW5nIHBvaW50IHRvIHdyaXRlIGFueSBtYXBwaW5ncwojIyMgeW91ciByZXBvc2l0b3J5 +IG1heSBuZWVkLgojIyMgSXQgbWF5IGJlIHVzZWZ1bCB0byByZWZlciB0byB0aGUgZGVmYXVsdCBt +ZXRob2RzIGluIAojIyMgRVByaW50czo6UGx1Z2luOjpFeHBvcnQ6Ok9BSV9VS0VURF9EQ18yMDE3 +IAojIyMKIyMjIFRoZXJlIGFyZSB0d28gJ2ludGVybmFsJyBtZXRob2RzIHRoYXQgZm9ybWF0IERP +SXMsIE9SQ0lEcyBpbiB0aGUgd2F5IEVUaE9TCiMjIyB3b3VsZCBsaWtlIHRvIHJlY2VpdmUgdGhl +bToKIyMjIG15ICRvcmNpZCA9ICRwbHVnaW4tPl9mb3JtYXRfb3JjaWQoICRjcmVhdG9yLT57b3Jj +aWR9ICk7CiMjIyBteSAkZG9pID0gJHBsdWdpbi0+X2Zvcm1hdF9kb2koICRlcHJpbnQtPnZhbHVl +KCAiZG9pIiApICk7CiMjIyBJZiB0aGUgdmFsdWUgcGFzc2VkIHRvIHRoZSBfZm9ybWF0X29yY2lk +IG1ldGhvZCBkb2Vzbid0IGxvb2sgbGlrZSBhbiBvcmNpZCwgaXQgCiMjIyBpcyByZXR1cm5lZCBh +cy1pcyB3aGVyZWFzIGlmIHRoZSB2YWx1ZSBwYXNzZWQgdG8gX2Zvcm1hdF9kb2kgZG9lc24ndCBt +YXRjaCB0aGUgCiMjIyBleHBlY3RlZCBmb3JtYXQsIG5vdGhpbmcgaXMgcmV0dXJuZWQuCiMjIwoj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj -IyMjIyMjIyMjIyMjIyMjIwoKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj -IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMjIwojIyMgQnkg -ZGVmYXVsdCBhbGwgZXByaW50cyBvZiB0eXBlPSd0aGVzaXMnIGFyZSByZXByZXNlbnRlZCBpbiB0 -aGUgdWtldGRfZGMgCiMjIyBtZXRhZGF0YSBwcm9maWxlLgojIyMgVGhpcyBmdW5jdGlvbiAoaWYg -ZGVmaW5lZCkgYWxsb3dzIHlvdSB0byBwcmV2ZW50IGFuIGVwcmludHMgYmVpbmcgaW5jbHVkZWQg -aW4KIyMjIHRoZSB1a2V0ZF9kYyByZXNwb25zZS4KIyMjIFJldHVybiBhIDEgdG8gc2tpcCB0aGUg -ZXByaW50LgojIyMgUmV0dXJuIGEgMCAob3IganVzdCBsZXQgdGhlIGZ1bmN0aW9uIGV4aXQpIHRv -IGtlZXAgdGhlIGVwcmludCByZXByZXNlbnRhdGlvbi4KIyMjCiMjIyMjIyMjIyMjIyMjIyMjIyMj +IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKIyRjLT57cGx1Z2luc30tPnsiRXhwb3J0OjpPQUlf +VUtFVERfRENfMjAxNyJ9LT57cGFyYW1zfS0+e2NyZWF0b3JfYW5kX29yY2lkfSA9IHN1YiB7CiMJ +bXkoICRwbHVnaW4sICRlcHJpbnQgKSA9IEBfOwojCiMJbXkgQHJldHVybnMgPSAoKTsKIwkjIGRv +IHNvbWV0aGluZyB0byBnZXQgdmFsdWVzCiMJIyBwdXNoIEByZXR1cm5zLCBbICJlbGVtZW50TmFt +ZSIsICJ2YWx1ZSIsICJuYW1lc3BhY2UiLCB7ICJhdHRyMSIgPT4gInZhbHVlMSIsICJhdHRyMiIg +PT4gInZhbHVlMiIsIH0gXTsKIwlyZXR1cm4gQHJldHVybnM7CiN9OwoKCiMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj -IyMjIyMjCiMkYy0+eydvYWlfdWtldGRfZGNfc2tpcF9lcHJpbnQnfSA9IHN1YgojewojCW15KCAk -ZXByaW50ICkgPSBAXzsKIwojCSMgcnVuIHNvbWUgdGVzdHMgb24gdGhlIGVwcmludAojCSMgcmV0 -dXJuIDEgaWYgeW91IHdhbnQgdG8gc2tpcCB0aGlzIGVwcmludCAoZS5nLiBub3QgcmVuZGVyIGlu -Zm9ybWF0aW9uIGFib3V0IGl0IGluIHRoZSB1a2V0ZF9kYyBwcm9maWxlKQojCSMgcmV0dXJuIDAg -KG9yIGp1c3QgbGV0IHRoZSBmdW5jdGlvbiBleGl0KSB0byByZWRuZXIgaW5mb3JtYXRpb24gaW4g -dGhlIHByb2ZpbGUKIwkjIGUuZy4gaWYgeW91IGhhdmUgYSBmaWVsZCBpbmRpY2F0aW5nIHRvcCBz -ZWNyZXQgcmVzZWFyY2ggCiMJaWYoICRlcHJpbnQtPmV4aXN0c19hbmRfc2V0KCAidG9wX3NlY3Jl -dF9yZXNlYXJjaCIgKSAmJiAkZXByaW50LT5nZXRfdmFsdWUoICJ0b3Bfc2VjcmV0X3Jlc2VhcmNo -IiApIGVxICJUUlVFIiApewojCQlyZXR1cm4gMTsKIwl9CiMJIyBvciBpZiB5b3UgaGF2ZSBzb21l -IGVwcmludHMgZnJvbSBlbHNld2hlcmUgdGhhdCBzaG91bGRuJ3QgYmUgaW5jbHVkZWQKIwlpZigg -JGVwcmludC0+ZXhpc3RzX2FuZF9zZXQoICJpbnN0aXR1dGlvbiIgKSAmJiAkZXByaW50LT5nZXRf -dmFsdWUoICJpbnN0aXR1dGlvbiIgKSBlcSAiVW5pdmVyc2l0eSBvZiBCbGFoIiApewojCQlyZXR1 -cm4gMTsKIwl9CiN9OwoKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj -IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMjIwojIyMgQnkgZGVm -YXVsdCBhbGwgZG9jdW1lbnRzIGFyZSByZW5kZXJlZCBpbiB0aGUgdWtldGRfZGMgbWV0YWRhdGEg -cHJvZmlsZS4KIyMjIFRoaXMgZnVuY3Rpb24gKGlmIGRlZmluZWQpIGFsbG93cyB5b3UgdG8gZXhj -bHVkZSBhIGRvY3VtZW50IGZyb20gYmVpbmcKIyMjIHJlbmRlcmVkLgojIyMgUmV0dXJuIGEgMSB0 -byBza2lwIHRoZSBkb2N1bWVudC4KIyMjIFJldHVybiBhIDAgKG9yIGp1c3QgbGV0IHRoZSBmdW5j -dGlvbiBleGl0KSB0byBrZWVwIHRoZSBkb2N1bWVudCByZXByZXNlbnRhdGlvbi4KIyMjCiMjIyMj +IyMjIyMjIyMjIyMjCgoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj +IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyMjCiMjIyBUaGUgZm9s +bG93aW5nIHNldHRpbmcgaGFzIGJlZW4gYWRkZWQgdG8gYWxsb3cgYW4gZXh0cmEgYXR0cmlidXRl +IHRvIGJlIGFkZGVkCiMjIyB0byBzb21lIGF1dGhvciBpZGVudGlmaWVyIGVsZW1lbnRzIC0gd2hp +Y2ggY2FuIGJlIHVzZWQgZm9yIGJvdGggdGhlIGF1dGhvciwgCiMjIyBhbmQgdGhlIHN1cGVydmlz +b3IncyBPUkNJRCAob3IgSVNOSSkuCiMjIwojIyMgVGhlIEJMIG1heSBjaG9vc2UgdG8gdXNlIHRo +aXMgaW4gdGhlIGZ1dHVyZSwgdW50aWwgdGhlbiwgaXQncyBwcm9iYWJseSBiZXN0CiMjIyB0byBs +ZWF2ZSBpdCB0dXJuZWQgb2ZmIQojIyMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj +IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIwojICRj +LT57cGx1Z2luc30tPnsiRXhwb3J0OjpPQUlfVUtFVERfRENfMjAxNyJ9LT57cGFyYW1zfS0+e2Fk +ZF9hdHRyaWJ1dGVzX3RvX2Fkdmlzb3JfYXV0aG9yaWRlbnRpZmllcn0gPSAwOwojICRjLT57cGx1 +Z2luc30tPnsiRXhwb3J0OjpPQUlfVUtFVERfRENfMjAxNyJ9LT57cGFyYW1zfS0+e2Fkdmlzb3Jf +YXV0aG9yaWRlbnRpZmllcl9hdHRyaWJ1dGVzfSA9IHsKIwlyZWwgPT4gImFkdmlzb3IiLAojIH07 +CiMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj +IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj -IyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMkYy0+eydvYWlfdWtldGRfZGNfc2tpcF9kb2N1bWVudCd9 -ID0gc3ViCiN7CiMJbXkoICRkb2N1bWVudCApID0gQF87CiMKIwkjIHJ1biBzb21lIHRlc3RzIG9u -IHRoZSBkb2N1bWVudAojCSMgcmV0dXJuIDEgaWYgeW91IHdhbnQgdG8gc2tpcCB0aGlzIGRvY3Vt -ZW50IChlLmcuIG5vdCByZW5kZXIgaW5mb3JtYXRpb24gYWJvdXQgaXQgaW4gdGhlIFVLRVREX0RD -IHByb2ZpbGUpCiMJIyByZXR1cm4gMCAob3IganVzdCBsZXQgdGhlIGZ1bmN0aW9uIGV4aXQpIHRv -IHJlZG5lciBpbmZvcm1hdGlvbiBpbiB0aGUgcHJvZmlsZQojCSMgZS5nLiBpZiB5b3UgaGF2ZSBh -biBleHRyYSBzZWN1cml0eSBvcHRpb24gb2YgJ2hpZGRlbicsIAojCWlmKCAkZG9jdW1lbnQtPmV4 -aXN0c19hbmRfc2V0KCAic2VjdXJpdHkiICkgJiYgJGRvY3VtZW50LT5nZXRfdmFsdWUoICJzZWN1 -cml0eSIgKSBlcSAiaGlkZGVuIiApewojCQlyZXR1cm4gMTsKIwl9CiMJaWYoICRkb2N1bWVudC0+ -ZXhpc3RzX2FuZF9zZXQoICJtYWluIiApICYmICRkb2N1bWVudC0+Z2V0X3ZhbHVlKCAibWFpbiIg -KSBlcSAic2VjcmV0LnBkZiIgKXsKIwkJcmV0dXJuIDE7CiMJfQojCiN9OwoK +IwojIyMKIyMjIEJ5IGRlZmF1bHQgYWxsIGVwcmludHMgb2YgdHlwZT0ndGhlc2lzJyBhcmUgcmVw +cmVzZW50ZWQgaW4gdGhlIHVrZXRkX2RjIAojIyMgbWV0YWRhdGEgcHJvZmlsZS4KIyMjIFRoaXMg +ZnVuY3Rpb24gKGlmIGRlZmluZWQpIGFsbG93cyB5b3UgdG8gcHJldmVudCBhbiBlcHJpbnRzIGJl +aW5nIGluY2x1ZGVkIGluCiMjIyB0aGUgdWtldGRfZGMgcmVzcG9uc2UuCiMjIyBSZXR1cm4gYSAx +IHRvIHNraXAgdGhlIGVwcmludC4KIyMjIFJldHVybiBhIDAgKG9yIGp1c3QgbGV0IHRoZSBmdW5j +dGlvbiBleGl0KSB0byBrZWVwIHRoZSBlcHJpbnQgcmVwcmVzZW50YXRpb24uCiMjIwojIyMjIyMj +IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj +IyMjIyMjIyMjIyMjIyMjIyMjIwojJGMtPnsnb2FpX3VrZXRkX2RjX3NraXBfZXByaW50J30gPSBz +dWIKI3sKIwlteSggJGVwcmludCApID0gQF87CiMKIwkjIHJ1biBzb21lIHRlc3RzIG9uIHRoZSBl +cHJpbnQKIwkjIHJldHVybiAxIGlmIHlvdSB3YW50IHRvIHNraXAgdGhpcyBlcHJpbnQgKGUuZy4g +bm90IHJlbmRlciBpbmZvcm1hdGlvbiBhYm91dCBpdCBpbiB0aGUgdWtldGRfZGMgcHJvZmlsZSkK +IwkjIHJldHVybiAwIChvciBqdXN0IGxldCB0aGUgZnVuY3Rpb24gZXhpdCkgdG8gcmVkbmVyIGlu +Zm9ybWF0aW9uIGluIHRoZSBwcm9maWxlCiMJIyBlLmcuIGlmIHlvdSBoYXZlIGEgZmllbGQgaW5k +aWNhdGluZyB0b3Agc2VjcmV0IHJlc2VhcmNoIAojCWlmKCAkZXByaW50LT5leGlzdHNfYW5kX3Nl +dCggInRvcF9zZWNyZXRfcmVzZWFyY2giICkgJiYgJGVwcmludC0+Z2V0X3ZhbHVlKCAidG9wX3Nl +Y3JldF9yZXNlYXJjaCIgKSBlcSAiVFJVRSIgKXsKIwkJcmV0dXJuIDE7CiMJfQojCSMgb3IgaWYg +eW91IGhhdmUgc29tZSBlcHJpbnRzIGZyb20gZWxzZXdoZXJlIHRoYXQgc2hvdWxkbid0IGJlIGlu +Y2x1ZGVkCiMJaWYoICRlcHJpbnQtPmV4aXN0c19hbmRfc2V0KCAiaW5zdGl0dXRpb24iICkgJiYg +JGVwcmludC0+Z2V0X3ZhbHVlKCAiaW5zdGl0dXRpb24iICkgZXEgIlVuaXZlcnNpdHkgb2YgQmxh +aCIgKXsKIwkJcmV0dXJuIDE7CiMJfQojfTsKCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj +IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoj +IyMKIyMjIEJ5IGRlZmF1bHQgYWxsIGRvY3VtZW50cyBhcmUgcmVuZGVyZWQgaW4gdGhlIHVrZXRk +X2RjIG1ldGFkYXRhIHByb2ZpbGUuCiMjIyBUaGlzIGZ1bmN0aW9uIChpZiBkZWZpbmVkKSBhbGxv +d3MgeW91IHRvIGV4Y2x1ZGUgYSBkb2N1bWVudCBmcm9tIGJlaW5nCiMjIyByZW5kZXJlZC4KIyMj +IFJldHVybiBhIDEgdG8gc2tpcCB0aGUgZG9jdW1lbnQuCiMjIyBSZXR1cm4gYSAwIChvciBqdXN0 +IGxldCB0aGUgZnVuY3Rpb24gZXhpdCkgdG8ga2VlcCB0aGUgZG9jdW1lbnQgcmVwcmVzZW50YXRp +b24uCiMjIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj +IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojJGMtPnsnb2FpX3VrZXRkX2RjX3Nr +aXBfZG9jdW1lbnQnfSA9IHN1YgojewojCW15KCAkZG9jdW1lbnQgKSA9IEBfOwojCiMJIyBydW4g +c29tZSB0ZXN0cyBvbiB0aGUgZG9jdW1lbnQKIwkjIHJldHVybiAxIGlmIHlvdSB3YW50IHRvIHNr +aXAgdGhpcyBkb2N1bWVudCAoZS5nLiBub3QgcmVuZGVyIGluZm9ybWF0aW9uIGFib3V0IGl0IGlu +IHRoZSBVS0VURF9EQyBwcm9maWxlKQojCSMgcmV0dXJuIDAgKG9yIGp1c3QgbGV0IHRoZSBmdW5j +dGlvbiBleGl0KSB0byByZWRuZXIgaW5mb3JtYXRpb24gaW4gdGhlIHByb2ZpbGUKIwkjIGUuZy4g +aWYgeW91IGhhdmUgYW4gZXh0cmEgc2VjdXJpdHkgb3B0aW9uIG9mICdoaWRkZW4nLCAKIwlpZigg +JGRvY3VtZW50LT5leGlzdHNfYW5kX3NldCggInNlY3VyaXR5IiApICYmICRkb2N1bWVudC0+Z2V0 +X3ZhbHVlKCAic2VjdXJpdHkiICkgZXEgImhpZGRlbiIgKXsKIwkJcmV0dXJuIDE7CiMJfQojCWlm +KCAkZG9jdW1lbnQtPmV4aXN0c19hbmRfc2V0KCAibWFpbiIgKSAmJiAkZG9jdW1lbnQtPmdldF92 +YWx1ZSggIm1haW4iICkgZXEgInNlY3JldC5wZGYiICl7CiMJCXJldHVybiAxOwojCX0KIwojfTsK +Cg== plugins/EPrints/Plugin/Export/OAI_UKETD_DC_2017.pm - c1a85437c4b7e7d7ba01d79fe7421767 + 97ebdec2a51937cb056aa8cbf68ffb42 MD5 - 27941 + 27947 PWhlYWQxIE5BTUUKCkVQcmludHM6OlBsdWdpbjo6RXhwb3J0OjpPQUlfVUtFVERfRENfMjAxNwoK PWN1dAoKcGFja2FnZSBFUHJpbnRzOjpQbHVnaW46OkV4cG9ydDo6T0FJX1VLRVREX0RDXzIwMTc7 CgoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj @@ -205,456 +209,456 @@ bWUKIyBjYW4gYmUgb3ZlcnJpZGRlbiBhdCBhcmNoaXZlIGxldmVsIGVnLgojICRjLT57cGx1Z2lu c30tPnsiRXhwb3J0OjpPQUlfVUtFVERfRENfMjAxNyJ9LT57cGFyYW1zfS0+e3RoZXNpc190eXBl X3RvX3F1YWxuYW1lfSA9IHsgLi4gfTsKJERFRkFVTFR7dGhlc2lzX3R5cGVfdG9fcXVhbG5hbWV9 ID0gewoJcGhkICAgICAgPT4gIlBoLkQuIiwKCWVuZ2QgICAgID0+ICJFbmcuRC4iLAoJZWRkICAg -ICAgPT4gIkVkLkQuIiwKCWRjbGlucHN5ID0+ICJELkNsaW4uUHN5IiwKCW1kICAgICAgID0+ICJN -LkQuIiwKCW1waGlsICAgID0+ICJNLlBoaWwiLAoJbXJlcyAgICAgPT4gIk0uUmVzIiwKCW1hICAg -ICAgID0+ICJNLkEiLAoJbXNjICAgICAgPT4gIk0uU2MiLAoJbGxtICAgICAgPT4gIkwuTC5NIiwK -fTsKCgo9aXRlbSB0aGVzaXNfdHlwZV90b19xdWFsbGV2ZWwKCk1hcHMgdGhlc2lzIHR5cGUgdG8g -YSBsZXZlbCAnTWFzdGVycycgb3IgJ0RvY3RvcmFsJy4KSW4gbW9yZSByZWNlbnQgRVByaW50cyBj -b25maWd1cmF0aW9uIHRoZXJlIGFyZSB0d28gZmllbGRzLCAndGhlc2lzX25hbWUnIChlLmcuIHBo -ZCwgZW5kLmQpIAphbmQgJ3RoZXNpc190eXBlJyAobWFzdGVycywgZG9jdG9yYWwpLiBJZiBib3Ro -IGZpZWxkcyBleGlzdCwgdGhpcyBpcyBub3QgdXNlZC4KCj1jdXQKCiMgbWFwIGRlZmF1bHQgdGhl -c2lzX3R5cGUgdmFsdWVzIHRvIGFwcHJvcHJpYXRlCiMgcXVhbGlmaWNhdGlvbmxldmVsCiMgY2Fu -IGJlIG92ZXJyaWRkZW4gYXQgYXJjaGl2ZSBsZXZlbCBlZy4KIyAkYy0+e3BsdWdpbnN9LT57IkV4 -cG9ydDo6T0FJX1VLRVREX0RDXzIwMTcifS0+e3BhcmFtc30tPnt0aGVzaXNfdHlwZV90b19xdWFs -bGV2ZWx9ID0geyAuLiB9OwokREVGQVVMVHt0aGVzaXNfdHlwZV90b19xdWFsbGV2ZWx9ID0gewoJ -cGhkICAgICAgPT4gImRvY3RvcmFsIiwKCWVuZ2QgICAgID0+ICJkb2N0b3JhbCIsCgllZGQgICAg -ICA9PiAiZG9jdG9yYWwiLAoJZGNsaW5wc3kgPT4gImRvY3RvcmFsIiwKCW1kICAgICAgID0+ICJk -b2N0b3JhbCIsCgltcGhpbCAgICA9PiAibWFzdGVycyIsCgltcmVzICAgICA9PiAnbWFzdGVycycs -CgltYSAgICAgICA9PiAnbWFzdGVycycsCgltc2MgICAgICA9PiAnbWFzdGVycycsCglsbG0gICAg -ICA9PiAnbWFzdGVycycsCn07CgoKPWl0ZW0gY29udHJpYnV0b3JfdHlwZV90aGVzaXNfYWR2aXNv -cgoKSWYgdGhlICdjb250cmlidXRvcicgZmllbGQgaXMgYmVpbmcgdXNlZCwgd2hpY2ggY29udHJp -YnV0b3JfdHlwZSBzaG91bGQgYmUgdXNlZCB0byBtYXRjaAp0aGVzaXMgYWR2aXNvcnMuCgo9Y3V0 -CgojIGRlZmF1bHQgY29udHJpYnV0b3JfdHlwZSB0aGF0IGlkZW50aWZpZXMgYSB0aGVzaXMgYWR2 -aXNvcgojIGNhbiBiZSBvdmVycmlkZGVuIGF0IGFyY2hpdmUgbGV2ZWwgZWcuCiMgJGMtPntwbHVn -aW5zfS0+eyJFeHBvcnQ6Ok9BSV9VS0VURF9EQ18yMDE3In0tPntwYXJhbXN9LT57Y29udHJpYnV0 -b3JfdHlwZV90aGVzaXNfYWR2aXNvcn0gPSAiYWR2aXNvciI7CiRERUZBVUxUe2NvbnRyaWJ1dG9y -X3R5cGVfdGhlc2lzX2Fkdmlzb3J9ID0gImh0dHA6Ly93d3cubG9jLmdvdi9sb2MudGVybXMvcmVs -YXRvcnMvVEhTIjsKCj1pdGVtIGNyZWF0b3JfYW5kX29yY2lkIChmdW5jdGlvbikKCkxvb2tzIGZv -ciBvcmNpZHMgaW4gYSBzdWJmaWVsZCBjYWxsZWQgJ29yY2lkJyBieSBkZWZhdWx0LgpSZXR1cm5z -IGFycmF5cyBmb3IgYXV0aG9yIGFuZCBvcmNpZCBpZiBwcmVzZW50LgoKPWl0ZW0gYWR2aXNvcl9h -bmRfb3JjaWQgKGZ1bmN0aW9uKQoKTG9va3MgZm9yIGFkdmlzb3JzIGluICdhZHZpc29yJyBhbmQg -J2NvbnRyaWJ1dG9yJyBmaWVsZHMuCkxvb2tzIGZvciBvcmNpZHMgaW4gY29udHJpYnV0b3Igc3Vi -ZmllbGQgJ29yY2lkJyBieSBkZWZhdWx0LgoKCj1pdGVtIGZ1bmRlcl9hbmRfcHJvamVjdCAoZnVu -Y3Rpb24pCgpJZiB0aGUgUklPWFgyIHBsdWdpbiBpcyBpbnN0YWxsZWQgaXQgd2lsbCByZXR1cm4g -dGhlICdyaW94eDJfcHJvamVjdCcgdmFsdWUuCklmIHRoaXMgcGx1Z2luIGlzIG5vdCBwcmVzZW50 -LCBpdCB3aWxsIGxvb2sgaW4gdGhlIHByb2plY3QgYW5kIGZ1bmRlciBmaWVsZHMgZnJvbSB0aGUg -ZXByaW50LgoKPWl0ZW0gZG9pIChmdW5jdGlvbikKClJlZmVyZW5jZXMgdGhlIGRvaSBvciBpZF9u -dW1iZXIgZmllbGQgdG8gZmluZCBhIERPSSBmb3IgdGhpcyB0aGVzaXMuCgo9aXRlbSBkZXBhcnRt -ZW50cyAoZnVuY3Rpb24pCgpMb29rcyBpbiB0aGUgZGVmYXVsdCAnZGl2aXNpb25zJyBmaWVsZCBm -b3IgZGVwYXJ0bWVudC9mYWN1bHR5LiBDYW4gYmUgb3ZlcndyaXR0ZW4gaWYgZGF0YSBpcyBzdG9y -ZWQgaW4gYW5vdGhlcgpmaWVsZCwgb3IgaWYgc29tZSBsZXZlbHMgb2YgZmFjdWx0eS9kZXBhcnRt -ZW50L3NjaG9vbCBzaG91bGRuJ3QgYmUgcmVwcmVzZW50ZWQuCgo9Y3V0CgokREVGQVVMVHtjcmVh -dG9yX2FuZF9vcmNpZH0gID0gXCZjcmVhdG9yX2FuZF9vcmNpZDsKJERFRkFVTFR7YWR2aXNvcl9h -bmRfb3JjaWR9ICA9IFwmYWR2aXNvcl9hbmRfb3JjaWQ7CiRERUZBVUxUe2Z1bmRlcl9hbmRfcHJv -amVjdH0gPSBcJmZ1bmRlcl9hbmRfcHJvamVjdDsKJERFRkFVTFR7ZG9pfSA9IFwmZG9pOwokREVG -QVVMVHtkZXBhcnRtZW50c30gPSBcJmRlcGFydG1lbnRzOwoKPWl0ZW0gYWRkX2F0dHJpYnV0ZXNf -dG9fYWR2aXNvcl9hdXRob3JpZGVudGlmaWVyCgpNYXkgYmUgdXNlZCBpbiB0aGUgZnV0dXJlIHRv -IGFkZCBhbiBhZGRpdGlvbmFsIGF0dHJpYnV0ZSB0byBPUkNJRCBmaWVsZHMgdG8gZGlzdGluZ3Vp -c2ggYmV0d2VlbgphdXRob3IgYW5kIHN1cGVydmlzb3IgT1JDSWRzLgpJdCBpcyBwcm92aWRlZCBh -cyBhIHNpbXBsZSAwIG9yIDEgb3B0aW9uIHRvIGNoYW5nZSBpbiB0aGUgY29uZmlndXJhdGlvbi4K -Cj1pdGVtIGFkdmlzb3JfYXV0aG9yaWRlbnRpZmllcl9hdHRyaWJ1dGVzCgpBIGhhc2ggb2YgdGhl -IGFkZGl0aW9uYWwgYXR0cmlidXRlcyB0byBhZGQgd2hlbiB0aGUgYWJvdmUgdmFsdWUgaXMgZW5h -YmxlZAoKPWN1dAoKIyBhZnRlciBkaXNjdXNzaW9ucyBhYm91dCBsaW5raW5nIGF1dGhvcnMvc3Vw -ZXJ2aXNvcnMgdG8gdGhlaXIgc3BlY2lmaWMgT1JDSURzLCB0aGlzIHJvdXRlIHdhcyBkZWNpZGVk -OgojIDEuIEluaXRpYWxseSwgZG8gbm8gdXNlIGFueSBub24tZGVmaW5lZCAoaS5lLiBub3QgZGVm -aW5lZCBpbiB0aGUgVUtFVERfREMgcHJvZmlsZSkgYXR0cmlidXRlcy4KIyAyLiBBZGQgY29kZSB0 -byB0aGUgcGx1Z2luIHNvIHRoYXQgdXNlIG9mIHRoZSBhdHRyaWJ1dGUgY291bGQgZWFzaWx5IGJl -IGVuYWJsZWQuCiMKIyBUaGUgc29sdXRpb24gZm9yIHRoaXMgaXM6CiMgaSkgYSBmbGFnIHRvIHNh -eSB3aGV0aGVyIHRvIHVzZSB0aGUgYXR0cmlidXRlcyBvciBub3QgLSBhbmQgY29tbWVudC9pbmNs -dWRlIHRoaXMgaW4gdGhlIGNvbmZpZyBmaWxlCiRERUZBVUxUe2FkZF9hdHRyaWJ1dGVzX3RvX2Fk -dmlzb3JfYXV0aG9yaWRlbnRpZmllcn0gPSAwOwojYW5kCiMgaWkpIGEgZGVmYXVsdCBzZXQgb2Yg -YXR0cmlidXRlcyAtIHdoaWNoIGFyZSBvdmVycmlkYWJsZSBpZiBuZWNlc3NhcnkKJERFRkFVTFR7 -YWR2aXNvcl9hdXRob3JpZGVudGlmaWVyX2F0dHJpYnV0ZXN9ID0gewoJcmVsID0+ICJhZHZpc29y -IiwKfTsKCj1pdGVtIGxhbmdfdG9fM2NoYXIKCkEgbWFwIG9mIGxhbmd1YWdlIHZhbHVlcyAobm9y -bWFsbHkgdHdvLWNoYXJhY3RlcnMpIHRvIHRocmVlLWNoYXJhY3RlciBjb3VudHJ5IGNvZGVzLiBC -eSBkZWZhdWx0IEVQcmludHMgdXNlcyBJU082MzktMSAoMi1jaGFyYWN0ZXIpIApjb2RlIGUuZy4g -J2VuJywgYnV0IHRoZSBCTCBzcGVjaWZpY2F0aW9uIGFza3MgZm9yIElTTzYzOS0yIGUuZy4gJ2Vu -ZycuCkEgdmFsdWUgdGhhdCBpcyBub3QgbWFwcGVkIHdpbGwgYmUgYWRkZWQgdmVyYmF0aW0gdG8g -dGhlIG91dHB1dC4KQW55IHZhbHVlcyB0aGF0IGNvdWxkIGJlIHVzZWQgYXQgdGhlIGVwcmludCBv -ciBkb2N1bWVudCBsZXZlbCBjb3VsZCBiZSB1c2VkIGUuZy4gdG8gbWFwICdFbmdsaXNoJyB0byAn -ZW5nJy4KRVByaW50cyBpbmNsdWRlcyB0aGUgZm9sbG93aW5nIG9wdGlvbnMgYmUgZGVmYXVsdDog -Cmh0dHBzOi8vZ2l0aHViLmNvbS9lcHJpbnRzL2VwcmludHMvYmxvYi8zLjMvbGliL2RlZmF1bHRj -ZmcvbmFtZWRzZXRzL2xhbmd1YWdlcwoKU2VlOiBodHRwOi8vd3d3LmxvYy5nb3YvbWFyYy9sYW5n -dWFnZXMvbGFuZ3VhZ2VfY29kZS5odG1sCgo9Y3V0CgoKJERFRkFVTFR7bGFuZ190b18zY2hhcn0g -PSB7CgkiYWEiID0+ICJhYXIiLAkiYWIiID0+ICJhYmsiLAkiYWUiID0+ICJhdmUiLAkiYWYiID0+ -ICJhZnIiLAkiYWsiID0+ICJha2EiLAkiYW0iID0+ICJhbWgiLAoJImFuIiA9PiAiYXJnIiwJImFy -IiA9PiAiYXJhIiwJImFzIiA9PiAiYXNtIiwJImF2IiA9PiAiYXZhIiwJImF5IiA9PiAiYXltIiwJ -ImF6IiA9PiAiYXplIiwKCSJiYSIgPT4gImJhayIsCSJiZSIgPT4gImJlbCIsCSJiZyIgPT4gImJ1 -bCIsCSJiaCIgPT4gImJpaCIsCSJiaSIgPT4gImJpcyIsCSJibSIgPT4gImJhbSIsCgkiYm4iID0+ -ICJiZW4iLAkiYm8iID0+ICJ0aWIiLAkiYnIiID0+ICJicmUiLAkiYnMiID0+ICJib3MiLAkiY2Ei -ID0+ICJjYXQiLAkiY2UiID0+ICJjaGUiLAoJImNoIiA9PiAiY2hhIiwJImNvIiA9PiAiY29zIiwJ -ImNyIiA9PiAiY3JlIiwJImNzIiA9PiAiY3plIiwJImN1IiA9PiAiY2h1IiwJImN2IiA9PiAiY2h2 -IiwJImN5IiA9PiAid2VsIiwKCSJkYSIgPT4gImRhbiIsCSJkZSIgPT4gImdlciIsCSJkdiIgPT4g -ImRpdiIsCSJkeiIgPT4gImR6byIsCgkiZWUiID0+ICJld2UiLAkiZWwiID0+ICJncmUiLAkiZW4i -ID0+ICJlbmciLAkiZW8iID0+ICJlcG8iLAkiZXMiID0+ICJzcGEiLAkiZXQiID0+ICJlc3QiLAki -ZXUiID0+ICJiYXEiLAoJImZhIiA9PiAicGVyIiwJImZmIiA9PiAiZnVsIiwJImZpIiA9PiAiZmlu -IiwJImZqIiA9PiAiZmlqIiwJImZvIiA9PiAiZmFvIiwJImZyIiA9PiAiZnJlIiwJImZ5IiA9PiAi -ZnJ5IiwKCSJnYSIgPT4gImdsZSIsCSJnZCIgPT4gImdsYSIsCSJnbCIgPT4gImdsZyIsCSJnbiIg -PT4gImdybiIsCSJndSIgPT4gImd1aiIsCSJndiIgPT4gImdsdiIsCgkiaGEiID0+ICJoYXUiLAki -aGUiID0+ICJoZWIiLAkiaGkiID0+ICJoaW4iLAkiaG8iID0+ICJobW8iLAkiaHIiID0+ICJocnYi -LAkiaHQiID0+ICJoYXQiLAoJImh1IiA9PiAiaHVuIiwJImh5IiA9PiAiYXJtIiwJImh6IiA9PiAi -aGVyIiwKCSJpYSIgPT4gImluYSIsCSJpZCIgPT4gImluZCIsCSJpZSIgPT4gImlsZSIsCSJpZyIg -PT4gImlibyIsCSJpaSIgPT4gImlpaSIsCSJpayIgPT4gImlwayIsCgkiaW8iID0+ICJpZG8iLAki -aXMiID0+ICJpY2UiLAkiaXQiID0+ICJpdGEiLAkiaXUiID0+ICJpa3UiLAoJImphIiA9PiAianBu -IiwJImp2IiA9PiAiamF2IiwKCSJrYSIgPT4gImdlbyIsCSJrZyIgPT4gImtvbiIsCSJraSIgPT4g -ImtpayIsCSJraiIgPT4gImt1YSIsCSJrayIgPT4gImtheiIsCSJrbCIgPT4gImthbCIsCgkia20i -ID0+ICJraG0iLAkia24iID0+ICJrYW4iLAkia28iID0+ICJrb3IiLAkia3IiID0+ICJrYXUiLAki -a3MiID0+ICJrYXMiLAkia3UiID0+ICJrdXIiLAoJImt2IiA9PiAia29tIiwJImt3IiA9PiAiY29y -IiwJImt5IiA9PiAia2lyIiwKCSJsYSIgPT4gImxhdCIsCSJsYiIgPT4gImx0eiIsCSJsZyIgPT4g -Imx1ZyIsCSJsaSIgPT4gImxpbSIsCSJsbiIgPT4gImxpbiIsCSJsbyIgPT4gImxhbyIsCgkibHQi -ID0+ICJsaXQiLAkibHUiID0+ICJsdWIiLAkibHYiID0+ICJsYXYiLAoJIm1nIiA9PiAibWxnIiwJ -Im1oIiA9PiAibWFoIiwJIm1pIiA9PiAibWFvIiwJIm1rIiA9PiAibWFjIiwJIm1sIiA9PiAibWFs -IiwJIm1uIiA9PiAibW9uIiwKCSJtciIgPT4gIm1hciIsCSJtcyIgPT4gIm1heSIsCSJtdCIgPT4g -Im1sdCIsCSJteSIgPT4gImJ1ciIsCgkibmEiID0+ICJuYXUiLAkibmIiID0+ICJub2IiLAkibmQi -ID0+ICJuZGUiLAkibmUiID0+ICJuZXAiLAkibmciID0+ICJuZG8iLAkibmwiID0+ICJkdXQiLAoJ -Im5uIiA9PiAibm5vIiwJIm5vIiA9PiAibm9yIiwJIm5yIiA9PiAibmJsIiwJIm52IiA9PiAibmF2 -IiwJIm55IiA9PiAibnlhIiwKCSJvYyIgPT4gIm9jaSIsCSJvaiIgPT4gIm9qaSIsCSJvbSIgPT4g -Im9ybSIsCSJvciIgPT4gIm9yaSIsCSJvcyIgPT4gIm9zcyIsCgkicGEiID0+ICJwYW4iLAkicGki -ID0+ICJwbGkiLAkicGwiID0+ICJwb2wiLAkicHMiID0+ICJwdXMiLAkicHQiID0+ICJwb3IiLAoJ -InF1IiA9PiAicXVlIiwKCSJybSIgPT4gInJvaCIsCSJybiIgPT4gInJ1biIsCSJybyIgPT4gInJ1 -bSIsCSJydSIgPT4gInJ1cyIsCSJydyIgPT4gImtpbiIsCgkic2EiID0+ICJzYW4iLAkic2MiID0+ -ICJzcmQiLAkic2QiID0+ICJzbmQiLAkic2UiID0+ICJzbWUiLAkic2ciID0+ICJzYWciLAkic2ki -ID0+ICJzaW4iLAoJInNrIiA9PiAic2xvIiwJInNsIiA9PiAic2x2IiwJInNtIiA9PiAic21vIiwJ -InNuIiA9PiAic25hIiwJInNvIiA9PiAic29tIiwJInNxIiA9PiAiYWxiIiwKCSJzciIgPT4gInNy -cCIsCSJzcyIgPT4gInNzdyIsCSJzdCIgPT4gInNvdCIsCSJzdSIgPT4gInN1biIsCSJzdiIgPT4g -InN3ZSIsCSJzdyIgPT4gInN3YSIsCgkidGEiID0+ICJ0YW0iLAkidGUiID0+ICJ0ZWwiLAkidGci -ID0+ICJ0Z2siLAkidGgiID0+ICJ0aGEiLAkidGkiID0+ICJ0aXIiLAkidGsiID0+ICJ0dWsiLAoJ -InRsIiA9PiAidGdsIiwJInRuIiA9PiAidHNuIiwJInRvIiA9PiAidG9uIiwJInRyIiA9PiAidHVy -IiwJInRzIiA9PiAidHNvIiwJInR0IiA9PiAidGF0IiwKCSJ0dyIgPT4gInR3aSIsCSJ0eSIgPT4g -InRhaCIsCgkidWciID0+ICJ1aWciLAkidWsiID0+ICJ1a3IiLAkidXIiID0+ICJ1cmQiLAkidXoi -ID0+ICJ1emIiLAoJInZlIiA9PiAidmVuIiwJInZpIiA9PiAidmllIiwJInZvIiA9PiAidm9sIiwK -CSJ3YSIgPT4gIndsbiIsCSJ3byIgPT4gIndvbCIsCgkieGgiID0+ICJ4aG8iLAoJInlpIiA9PiAi -eWlkIiwJInlvIiA9PiAieW9yIiwKCSJ6YSIgPT4gInpoYSIsCSJ6aCIgPT4gImNoaSIsCSJ6aCIg -PT4gImNoaSIsCSJ6dSIgPT4gInp1bCIKfTsKCgo9aXRlbSBtZXRhZGF0YVByZWZpeAoKVGhpcyBw -bHVnaW4gaXMgZGVzaWduZWQgdG8gcmVwbGFjZSAodXNpbmcgYSBwbHVnaW4gYWxpYXMpIHRoZSBl -eGlzdGluZyBleHBvcnQgcGx1Z2luLgpCeSBzZXR0aW5nIHRoaXMgdmFsdWUgdG8gc29tZXRoaW5n -IG90aGVyIHRoYXQgJ3VrZXRkX2RjJywgYW5kIG5vdCBhbGlhc2luZyB0aGUgcGx1Z2luLCB5b3Ug -Y2FuIGV4cG9zZSB0aGUKZGF0YSBpbiB0aGUgbmV3IGZvcm1hdCBpbiB0aGUgT0FJLVBNSCBpbnRl -cmZhY2UuIFRoaXMgY2FuIGJlIHVzZWZ1bCBmb3IgdGVzdGluZy4gSWYgdGhlIHZhbHVlIGlzIHNl -dCBpbiBhCmNvbmZpZyBmaWxlIHVzaW5nOgogICRjLT57cGx1Z2luc30tPnsiRXhwb3J0OjpPQUlf -VUtFVERfRENfMjAxNyJ9LT57cGFyYW1zfS0+e21ldGFkYXRhUHJlZml4fSA9ICJ1a2V0ZF9kY18y -MDE3IjsKdGhlbiBhIFVSTCBvZgogIGh0dHA6Ly9TRVJWRVJfTkFNRS9jZ2kvb2FpMj92ZXJiPUdl -dFJlY29yZHMmbWV0YWRhdGFQcmVmaXg9dWtldGRfZGNfMjAxNyAKd2lsbCB1c2UgdGhpcyBleHBv -cnQgZm9ybWF0LgoKPWN1dAoKJERFRkFVTFR7bWV0YWRhdGFQcmVmaXh9ID0gJ3VrZXRkX2RjJzsK -Cj1iYWNrCgo9Y3V0CgoKc3ViIG5ldwp7CglteSggJGNsYXNzLCAlb3B0cyApID0gQF87CgoJbXkg -JHNlbGYgPSAkY2xhc3MtPlNVUEVSOjpuZXcoICVvcHRzICk7CgoJJHNlbGYtPntuYW1lfSA9ICJV -SyBFVEQgREMgT0FJIFNjaGVtYSI7Cgkkc2VsZi0+e2FjY2VwdH0gPSBbICdkYXRhb2JqL2Vwcmlu -dCcgXTsKCSRzZWxmLT57dmlzaWJsZX0gPSAiIjsKCSRzZWxmLT57c3VmZml4fSA9ICIueG1sIjsK -CSRzZWxmLT57bWltZXR5cGV9ID0gInRleHQveG1sIjsKCgkjIG1ldGFkYXRhUHJlZml4IGlzIG92 -ZXJyaWRhYmxlIC0gc28gdGhlIHByb2ZpbGUgY291bGQgYmUgZW5hYmxlZCBhbG9uZ3NpZGUgdGhl -IGV4aXN0aW5nIHVrZXRkX2RjIHByb2ZpbGUsIHVuZGVyIGEgZGlmZmVyZW50IG5hbWUJCgkjJHNl -bGYtPnttZXRhZGF0YVByZWZpeH0gPSAidWtldGRfZGMiOwoJIwoJJHNlbGYtPnt4bWxuc30gPSAi -aHR0cDovL25hY2EuY2VudHJhbC5jcmFuZmllbGQuYWMudWsvZXRob3Mtb2FpLzIuMC8iOwoJJHNl -bGYtPntzY2hlbWFMb2NhdGlvbn0gPSAiaHR0cDovL25hY2EuY2VudHJhbC5jcmFuZmllbGQuYWMu -dWsvZXRob3Mtb2FpLzIuMC91a2V0ZF9kYy54c2QiOwoKCWZvcihxdyggdGhlc2lzX3R5cGVfdG9f -cXVhbG5hbWUgCgkJdGhlc2lzX3R5cGVfdG9fcXVhbGxldmVsCgkJY29udHJpYnV0b3JfdHlwZV90 -aGVzaXNfYWR2aXNvcgoJCWNyZWF0b3JfYW5kX29yY2lkCgkJYWR2aXNvcl9hbmRfb3JjaWQKCQlm -dW5kZXJfYW5kX3Byb2plY3QKCQlkZXBhcnRtZW50cwoJCWRvaQoJCWxhbmdfdG9fM2NoYXIKCQlh -ZGRfYXR0cmlidXRlc190b19hZHZpc29yX2F1dGhvcmlkZW50aWZpZXIKCQlhZHZpc29yX2F1dGhv -cmlkZW50aWZpZXJfYXR0cmlidXRlcwoJCW1ldGFkYXRhUHJlZml4CgkpKQoJewoJCWlmKCBkZWZp -bmVkICRzZWxmLT57c2Vzc2lvbn0gKQoJCXsKCQkJJHNlbGYtPnskX30gPSAkc2VsZi0+cGFyYW0o -ICRfICk7CgkJfQoJCSRzZWxmLT57JF99ID0gJERFRkFVTFR7JF99IGlmICFkZWZpbmVkICRzZWxm -LT57JF99OwoJfQoKCXJldHVybiAkc2VsZjsKfQoKCnN1YiBvdXRwdXRfZGF0YW9iagp7CglteSgg -JHBsdWdpbiwgJGRhdGFvYmogKSA9IEBfOwoKCW15ICR4bWwgPSAkcGx1Z2luLT54bWxfZGF0YW9i -aiggJGRhdGFvYmogKTsKCglyZXR1cm4gRVByaW50czo6WE1MOjp0b19zdHJpbmcoICR4bWwgKTsK -fQoKCgoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj -IyMjIyMjIyMjIyMjIyMjIyMjIyMKIwojIFN0ZXZlIENhcnIgLSBlcHJpbnRzIHJldmlzaW9uIChz -dGFuZGFyZCByZXZpc2lvbiBpbiBvcmRlciB0byBvZmZlcgojIHNvbWV0aGluZyBvdGhlciB0aGFu -IGJhc2ljIGR1YmxpbiBjb3JlIC0gd2hpY2ggaXNuJ3QgZ29pbmcgdG8gYmUgZW5vdWdoCiMgdG8g -ZW5jb2RlIHRoZSBjb21wbGV4IGRhdGEgdGhhdCB3ZSBhcmUgZGVhbGluZyB3aXRoIGZvciBlLXRo -ZXNlcykKIyBUaGlzIHN1YnJvdXRpbmUgdGFrZXMgYW4gZXByaW50IG9iamVjdCBhbmQgcmVuZGVy -cyB0aGUgWE1MIERPTQojIHRvIGV4cG9ydCBhcyB0aGUgdWtldGRfZGMgZGVmYXVsdCBmb3JtYXQg -aW4gT0FJLgojCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj -IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCnN1YiB4bWxfZGF0YW9iagp7CglteSggJHBsdWdpbiwg -JGVwcmludCApID0gQF87CgoJIyB3ZSBoYXZlIGEgdmFyaWV0eSBvZiBuYW1lc3BhY2VzIHNpbmNl -IHdlJ3JlIGRvaW5nIHF1YWxpZmllZCBkdWJsaW4gY29yZSwgc28gd2UgbmVlZCBhbgoJIyBhcnJh -eSBvZiByZWZlcmVuY2VzIHRvIHRocmVlIGVsZW1lbnQgYXJyYXlzIGluIG91ciBkYXRhIHN0cnVj -dHVyZQoJbXkgQGV0ZERhdGEgPSAkcGx1Z2luLT5lcHJpbnRfdG9fdWtldGRfZGMoICRlcHJpbnQg -KTsKCglteSAkbmFtZXNwYWNlID0gJHBsdWdpbi0+e3htbG5zfTsKCW15ICRzY2hlbWEgPSAkcGx1 -Z2luLT57c2NoZW1hTG9jYXRpb259OwoKCSMgdGhlIGVwcmludCBtYXkgd2VsbCBiZSBudWxsIHNp -bmNlIGl0IG1heSBub3QgYmUgYSB0aGVzaXMgYnV0IGFuIGFydGljbGUKCW15ICR1a2V0ZF9kYyA9 -ICRwbHVnaW4tPntzZXNzaW9ufS0+bWFrZV9lbGVtZW50KAoJCSJ1a2V0ZF9kYzp1a2V0ZGRjIiwK -CQkieG1sbnM6ZGMiID0+ICJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIsCgkJInht -bG5zOnhzaSIgPT4gImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiwK -CQkjIFRPIERPIGNoZWNrIG91dCB0aGF0IHRoZXNlIGFyZSBwcm9wZXJseSBhY2NlcHRhYmxlIHdo -ZW4gdmFsaWRhdGVkCgkJIyBUTyBETyBwdXQgaW4gZmluYWwgbG9jYXRpb24gZm9yIG91ciB4c2Qg -YW5kIG5hbWVzcGFjZSAtIGl0J2xsIHByb2JhYmx5IGJlIHNvbWV3aGVyZSBvbiBldGhvcy5hYy51 -ayBvciBibC51awoJCSJ4c2k6c2NoZW1hTG9jYXRpb24iID0+ICRuYW1lc3BhY2UuIiAiLiRzY2hl -bWEsCgkJInhtbG5zOnVrZXRkX2RjIiA9PiAkbmFtZXNwYWNlLAoJCSJ4bWxuczpkY3Rlcm1zIiA9 -PiAiaHR0cDovL3B1cmwub3JnL2RjL3Rlcm1zLyIsCgkJInhtbG5zOnVrZXRkdGVybXMiID0+ICJo -dHRwOi8vbmFjYS5jZW50cmFsLmNyYW5maWVsZC5hYy51ay9ldGhvcy1vYWkvdGVybXMvIgoJKTsK -CSMgdHVybiB0aGUgbGlzdCBvZiBwYWlycyBpbnRvIFhNTCBibG9ja3MgKGluZGVudGVkIGJ5IDgp -IGFuZCBhZGQgdGhlbQoJIyB0aGVtIHRvIHRoZSBFVEQgZWxlbWVudC4KIAoJZm9yZWFjaCggQGV0 -ZERhdGEgKQoJewoJCWlmKHNjYWxhciBAJF8gPCA0KXsKCQkJJHVrZXRkX2RjLT5hcHBlbmRDaGls -ZCggJHBsdWdpbi0+e3Nlc3Npb259LT5yZW5kZXJfZGF0YV9lbGVtZW50KCA4LCAkXy0+WzJdLiI6 -Ii4kXy0+WzBdLCAkXy0+WzFdICkgKTsKCQl9CgkJZWxzaWYoIHJlZiAkXy0+WzNdIGVxICJIQVNI -IiApewoJCQkjIGhhbmRsZSBtdWx0aXBsZSBhdHRyaWJ1dGVzCgkJCSR1a2V0ZF9kYy0+YXBwZW5k -Q2hpbGQoICRwbHVnaW4tPntzZXNzaW9ufS0+cmVuZGVyX2RhdGFfZWxlbWVudCggOCwgJF8tPlsy -XS4iOiIuJF8tPlswXSwgJF8tPlsxXSwgJXskXy0+WzNdfSAgKSApOwoJCX0KCQllbHNlIHsKCQkJ -IyB0aGVyZSdzIGFuIGF0dHJpYnV0ZSB0byBhZGQKCQkJJHVrZXRkX2RjLT5hcHBlbmRDaGlsZCgg -JHBsdWdpbi0+e3Nlc3Npb259LT5yZW5kZXJfZGF0YV9lbGVtZW50KCA4LCAkXy0+WzJdLiI6Ii4k -Xy0+WzBdLCAkXy0+WzFdLCAieHNpOnR5cGUiPT4gJF8tPlszXSAgKSApOwoJCX0KCX0KCXJldHVy -biAkdWtldGRfZGM7Cgp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj -IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIwojIFN0ZXZlIENhcnIKIyBz -dWJyb3V0aW5lIHRvIGNyZWF0ZSBhIHN1aXRhYmxlIGFycmF5IG9mIGFycmF5IHJlZnMgdG8gdGhl -IHR3byBpdGVtIGFycmF5cwojIGFzIHBlciByb3V0aW5lIGRpcmVjdGx5IGFib3ZlIGZvciBkdWJs -aW4gY29yZSAoZGMpLiBUaGUgb25seSBkaWZmZXJlbmNlIGlzIHRoYXQKIyBxdWFsaWZpZWQgZHVi -bGluIGNvcmUgd2lsbCBoYXZlIGFkZGl0aW9uYWwgbmFtZXNwYWNlcyBhbmQgbW9yZSBlbGVtZW50 -cyBmcm9tCiMgdGhlIGVwcmludCBjYW4gYmUgdXRpbGlzZWQuIFNvIHdlIHJldHVybiBhIGxvbmdl -ciwgdGhyZWUgZWxlbWVudCBhcnJheSBwZXIKIyBhcnJheSByZWYuIFRoaXMgbWF5IG5lZWQgcmV0 -aGlua2luZyB3aGVuIHdlIGdldCB0byBhdHRyaWJ1dGVzIChlLmcuIHhzaTp0eXBlPSJVUkkiKQoj -CiMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj -IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgpzdWIgZXByaW50X3RvX3VrZXRkX2RjCnsKCW15KCAk -cGx1Z2luLCAkZXByaW50ICkgPSBAXzsKCglteSAkc2Vzc2lvbiA9ICRwbHVnaW4tPntzZXNzaW9u -fTsKCglteSBAZXRkZGF0YSA9ICgpOwoJIyB3ZSBzdGlsbCB3YW50IG11Y2ggdGhlIHNhbWUgZGMg -ZGF0YSBzbyBpbmNsdWRlIHVuZGVyIHRoZSBkYyBuYW1lc3BhY2UKCSMgYnkgcHV0dGluZyB0aGUg -bmFtZXNwYWNlIGxhc3QgdGhpcyB3b24ndCBicmVhayB0aGUgc2ltcGxlIGRjIHJlbmRlcmluZyBy -b3V0aW5lCgkjIGFib3ZlLiBTa2lwIGFsbCByZWNvcmRzIHRoYXQgYXJlbid0IHRoZXNlcyBiZWNh -dXNlIHVrZXRkX2RjIGlzIG5vbnNlbnNpY2FsIGZvcgoJIyBub24tdGhlc2lzIGl0ZW1zLgoJCglp -ZigkZXByaW50LT5nZXRfdmFsdWUoICJ0eXBlIikgZXEgInRoZXNpcyIgfHwgJGVwcmludC0+Z2V0 -X3ZhbHVlKCAidHlwZSIgKSBlcSAiVGhlc2lzIil7CgoJCSNmdW5jdGlvbiB0byBza2lwIHJlbmRl -cmluZyBzcGVjaWZpYyBlcHJpbnRzIGluIHRoZSBtZXRhZGF0YQoJCWlmKCAkcGx1Z2luLT5yZXBv -c2l0b3J5LT5jYW5fY2FsbCggIm9haV91a2V0ZF9kY19za2lwX2VwcmludCIgKSApCgkJewoJCQlp -ZiggJHBsdWdpbi0+cmVwb3NpdG9yeS0+Y2FsbCggIm9haV91a2V0ZF9kY19za2lwX2VwcmludCIs -ICRlcHJpbnQgKSApewoJCQkJI3JldHVybiAoZW1wdHkpIGFycmF5IHRvIGdlbmVyYXRlIGEgJ2Nh -bm5vdERpc3NlbWluYXRlRm9ybWF0JyByZXNwb25zZQoJCQkJcmV0dXJuIEBldGRkYXRhOwoJCQl9 -OwoJCX0KCQkKCQlwdXNoIEBldGRkYXRhLCBbICJ0aXRsZSIsICRlcHJpbnQtPmdldF92YWx1ZSgg -InRpdGxlIiApLCAiZGMiIF07IAoJCQoJCWlmKCAkZXByaW50LT5pc19zZXQoICJkYXRlIiApICkK -CQl7CgkJCXB1c2ggQGV0ZGRhdGEsIFsgImRhdGUiLCAkZXByaW50LT5nZXRfdmFsdWUoICJkYXRl -IiApLCAiZGMiIF07CgkJfQoKCQkjZ2V0IGRhdGEgZnJvbSByZWZlcmVuY2VkIGZpZWxkIGZ1bmN0 -aW9ucwoJCWZvcmVhY2gocXcoIGNyZWF0b3JfYW5kX29yY2lkIGFkdmlzb3JfYW5kX29yY2lkIGZ1 -bmRlcl9hbmRfcHJvamVjdCBkZXBhcnRtZW50cyBkb2kgKSkKCQl7CgkJCXB1c2ggQGV0ZGRhdGEs -ICZ7JHBsdWdpbi0+eyRffX0oICRwbHVnaW4sICRlcHJpbnQgKTsKCQl9CgoJCWlmKCAkZXByaW50 -LT5leGlzdHNfYW5kX3NldCgic3ViamVjdHMiKSkgIyNDaGVjayBmb3IgZXhpc3RlbmNlIGJlZm9y -ZSBhY2Nlc3NpbmcuIGp5MmUwOAoJCXsKCQkJbXkgJHN1YmplY3RpZDsKCQkJZm9yZWFjaCAkc3Vi -amVjdGlkICggQHskZXByaW50LT5nZXRfdmFsdWUoICJzdWJqZWN0cyIgKX0gKQoJCQl7CgkJCQlt -eSAkc3ViamVjdCA9IEVQcmludHM6OkRhdGFPYmo6OlN1YmplY3QtPm5ldyggJHNlc3Npb24sICRz -dWJqZWN0aWQgKTsKCQkJCSMgYXZvaWQgcHJvYmxlbXMgd2l0aCBiYWQgc3ViamVjdHMKCQkJCW5l -eHQgdW5sZXNzKCBkZWZpbmVkICRzdWJqZWN0ICk7IAoJCQkJcHVzaCBAZXRkZGF0YSwgWyAic3Vi -amVjdCIsIEVQcmludHM6OlV0aWxzOjp0cmVlX3RvX3V0ZjgoICRzdWJqZWN0LT5yZW5kZXJfZGVz -Y3JpcHRpb24oKSApLCAiZGMiIF07CgkJCX0KCQl9CgkJIyBTdGV2ZSBDYXJyIDogd2UncmUgdXNp -bmcgcWRjLCBuYW1lc3BhY2UgZGN0ZXJtcywgdmVyc2lvbiBvZiBkZXNjcmlwdGlvbiAtICdhYnN0 -cmFjdCcKCQlpZiggJGVwcmludC0+ZXhpc3RzX2FuZF9zZXQoICJhYnN0cmFjdCIgKSApewoJCQlw -dXNoIEBldGRkYXRhLCBbICJhYnN0cmFjdCIsICRlcHJpbnQtPmdldF92YWx1ZSggImFic3RyYWN0 -IiApLCAiZGN0ZXJtcyIgXTsKCQl9CgkJCgkJIyBTdGV2ZSBDYXJyIDogdGhlc2VzIGFyZW4ndCB0 -ZWNobmljYWxseSAncHVibGlzaGVkJyBzbyB3ZSBjYW4ndCBhc3N1bWUgYSBwdWJsaXNoZXIgaGVy -ZSBhcyBpbiBvcmlnaW5hbCBjb2RlCgkJaWYoICRlcHJpbnQtPmV4aXN0c19hbmRfc2V0KCAicHVi -bGlzaGVyIiApICl7CgkJCXB1c2ggQGV0ZGRhdGEsIFsgImNvbW1lcmNpYWwiLCAkZXByaW50LT5n -ZXRfdmFsdWUoICJwdWJsaXNoZXIiICksICJ1a2V0ZHRlcm1zIiBdOyAKCQl9CgkKCQlteSAkZWRp -dG9ycyA9ICRlcHJpbnQtPmdldF92YWx1ZSggImVkaXRvcnNfbmFtZSIgKTsKCQlpZiggZGVmaW5l -ZCAkZWRpdG9ycyApCgkJewoJCQlmb3JlYWNoIG15ICRlZGl0b3IgKCBAeyRlZGl0b3JzfSApCgkJ -CXsKCQkJCXB1c2ggQGV0ZGRhdGEsIFsgImNvbnRyaWJ1dG9yIiwgRVByaW50czo6VXRpbHM6Om1h -a2VfbmFtZV9zdHJpbmcoICRlZGl0b3IgKSwgImRjIiBdOwoJCQl9CgkJfQoKCQkjIyBEYXRlIGZv -ciBkaXNjb3ZlcnkuIEZvciBhIG1vbnRoL2RheSB3ZSBkb24ndCBoYXZlLCBhc3N1bWUgMDEuCgkJ -bXkgJGRhdGUgPSAkZXByaW50LT5nZXRfdmFsdWUoICJkYXRlIiApOwoJCWlmKCBkZWZpbmVkICRk -YXRlICkKCQl7CgkgICAgICAgIAkkZGF0ZSA9fiBtL14oXGRcZFxkXGQpKC1cZFxkKT8vOwoJCQlt -eSAkaXNzdWVkID0gJDE7CgkJCWlmKCBkZWZpbmVkICQyICkgeyAkaXNzdWVkIC49ICQyOyB9CgkJ -CXB1c2ggQGV0ZGRhdGEsIFsgImlzc3VlZCIsICRpc3N1ZWQsICJkY3Rlcm1zIiBdOwoJCX0KCQoK -CQlwdXNoIEBldGRkYXRhLCBbICJ0eXBlIiwgJHNlc3Npb24tPmdldF90eXBlX25hbWUoICJlcHJp -bnQiLCAkZXByaW50LT5nZXRfdmFsdWUoICJ0eXBlIiApICksICJkYyIgXTsKCgkJIyBUaGUgVVJM -IG9mIHRoZSBhYnN0cmFjdCBwYWdlIGlzIHRoZSBkY3Rlcm1zIGlzcmVmZXJlbmNlZGJ5CgkJcHVz -aCBAZXRkZGF0YSwgWyAiaXNSZWZlcmVuY2VkQnkiLCAkZXByaW50LT5nZXRfdXJsKCksICJkY3Rl -cm1zIiBdOwoKCgkJbXkgQGRvY3VtZW50cyA9ICRlcHJpbnQtPmdldF9hbGxfZG9jdW1lbnRzKCk7 -CgkJbXkgJG1pbWV0eXBlcyA9ICRzZXNzaW9uLT5jb25maWcoICJvYWkiLCAibWltZV90eXBlcyIg -KTsKCQlmb3JlYWNoKCBAZG9jdW1lbnRzICkKCQl7CgkJCSNmdW5jdGlvbiB0byBza2lwIHJlbmRl -cmluZyBzcGVjaWZpYyBkb2N1bWVudHMgaW4gdGhlIG1ldGFkYXRhCgkJCWlmKCAkcGx1Z2luLT5y -ZXBvc2l0b3J5LT5jYW5fY2FsbCggIm9haV91a2V0ZF9kY19za2lwX2RvY3VtZW50IiApICkKCQkJ -ewoJCQkJbmV4dCBpZiAkcGx1Z2luLT5yZXBvc2l0b3J5LT5jYWxsKCAib2FpX3VrZXRkX2RjX3Nr -aXBfZG9jdW1lbnQiLCAkXyApOwoJCQl9CgoJCQlteSAkZm9ybWF0ID0gJG1pbWV0eXBlcy0+eyRf -LT5nZXRfdmFsdWUoImZvcm1hdCIpfTsKCQkJJGZvcm1hdCA9ICRfLT5nZXRfdmFsdWUoImZvcm1h -dCIpIHVubGVzcyBkZWZpbmVkICRmb3JtYXQ7CgkJCSMkZm9ybWF0ID0gImFwcGxpY2F0aW9uL29j -dGV0LXN0cmVhbSIgdW5sZXNzIGRlZmluZWQgJGZvcm1hdDsKCgkJCXB1c2ggQGV0ZGRhdGEsIFsg -ImlkZW50aWZpZXIiLCAkXy0+Z2V0X3VybCgpLCAiZGMiLCAiZGN0ZXJtczpVUkkiIF07CgkJCXB1 -c2ggQGV0ZGRhdGEsIFsgImZvcm1hdCIsICRmb3JtYXQsICJkYyIgXSBpZiBkZWZpbmVkICRmb3Jt -YXQ7CgkJCSMgaW5mb3JtYXRpb24gYWJvdXQgZXh0ZW50IGFuZCBjaGVja3N1bXMgY291bGQgYmUg -YWRkZWQgaGVyZSwgaWYgdGhleSBhcmUgYXZhaWxhYmxlCgkJCSMgdGhlIGRlZmF1bHQgZXByaW50 -IGRvZXNuJ3QgaGF2ZSBhIHBsYWNlIGZvciB0aGlzIGJ1dCBib3RoIGNvdWxkIGJlIGdlbmVyYXRl -ZCBkeW5hbWljYWxseQoKCQkJIyBvdXRwdXQgYSBsYW5ndWFnZSwgZW1iYXJnb2RhdGUgYW5kIHJp -Z2h0cyBlbGVtZW50IGZvciBlYWNoIGRvY3VtZW50IHdoZXJlIHBvc3NpYmxlCgkJCSMgdGhpcyBt -YXkgYmUgaW4gYWRkaXRpb24gdG8gZmllbGRzIGRlZmluZWQgYXQgdGhlIGVwcmludCBsZXZlbCAo -c2VlIGJlbG93KQoJCQlpZiggJF8tPmV4aXN0c19hbmRfc2V0KCAibGFuZ3VhZ2UiICkgKQoJCQl7 -CgkJCQlteSAkbGFuZyA9ICRfLT5nZXRfdmFsdWUoICJsYW5ndWFnZSIgKTsKCQkJCWlmKCBkZWZp -bmVkICRwbHVnaW4tPntsYW5nX3RvXzNjaGFyfXsgJGxhbmcgfSApewoJCQkJCXB1c2ggQGV0ZGRh -dGEsIFsgImxhbmd1YWdlIiwgJHBsdWdpbi0+e2xhbmdfdG9fM2NoYXJ9eyAkbGFuZyB9LCAiZGMi -LCB7ICJ4c2k6dHlwZSIgPT4gImRjdGVybXM6SVNPNjM5LTIiIH0gXTsKCQkJCX0gZWxzZSB7CgkJ -CQkJcHVzaCBAZXRkZGF0YSwgWyAibGFuZ3VhZ2UiLCAkbGFuZywgImRjIl07CgkJCQl9CgkJCX0K -CQkJaWYoICRfLT5leGlzdHNfYW5kX3NldCggImRhdGVfZW1iYXJnbyIgKSApCgkJCXsKCQkJCXB1 -c2ggQGV0ZGRhdGEsIFsiZW1iYXJnb2RhdGUiLCBfbGFzdF9kYXlfb2ZfZW1iYXJnbyggJF8tPmdl -dF92YWx1ZSggImRhdGVfZW1iYXJnbyIgKSApLCAidWtldGR0ZXJtcyJdOwoJCQl9CgkJCWlmKCAk -Xy0+ZXhpc3RzX2FuZF9zZXQoICJzZWN1cml0eSIgKSApCgkJCXsKCQkJCXB1c2ggQGV0ZGRhdGEs -IFsiYWNjZXNzUmlnaHRzIiwgJF8tPmdldF92YWx1ZSgic2VjdXJpdHkiKSwgImRjdGVybXMiXTsK -CQkJfQoJCX0KCQoJCSMgU3RldmUgQ2FyciA6IHdlJ3JlIHVzaW5nIGlzcmVmZXJlbmNlZGJ5IGZv -ciB0aGUgb2ZmaWNpYWwgdXJsIHNwbGFzaCBwYWdlCgkJaWYoICRlcHJpbnQtPmV4aXN0c19hbmRf -c2V0KCAib2ZmaWNpYWxfdXJsIiApICkKCQl7CgkJCXB1c2ggQGV0ZGRhdGEsIFsgImlzUmVmZXJl -bmNlZEJ5IiwgJGVwcmludC0+Z2V0X3ZhbHVlKCAib2ZmaWNpYWxfdXJsIiApLCAiZGN0ZXJtcyIs -ICJkY3Rlcm1zOlVSSSJdOwoJCX0KCgkJIyBxdWFsaWZpY2F0aW9ubmFtZSA9IFBoLkQsIEVkLkQs -IE0uUGhpbAoJCWlmKCAkZXByaW50LT5leGlzdHNfYW5kX3NldCggInRoZXNpc19uYW1lIiApKXsK -CQkJcHVzaCBAZXRkZGF0YSwgWyAicXVhbGlmaWNhdGlvbm5hbWUiLCAkZXByaW50LT5nZXRfdmFs -dWUoICJ0aGVzaXNfbmFtZSIgKSwgInVrZXRkdGVybXMiXTsKCQl9CgkJZWxzaWYoICRlcHJpbnQt -PmV4aXN0c19hbmRfc2V0KCAidGhlc2lzX3R5cGUiICkgKQoJCXsKCQkJIyBhdHRlbXB0IHRvIGRl -cml2ZSBhIHF1YWxpZmljYXRpb25uYW1lIGZyb20gdGhlc2lzX3R5cGUKCQkJbXkgJG5hbWUgPSAk -ZXByaW50LT5nZXRfdmFsdWUoICJ0aGVzaXNfdHlwZSIgKTsKCQkJaWYoIGRlZmluZWQgJHBsdWdp -bi0+e3RoZXNpc190eXBlX3RvX3F1YWxuYW1lfXsgJG5hbWUgfSApewoJCQkJJG5hbWUgPSAkcGx1 -Z2luLT57dGhlc2lzX3R5cGVfdG9fcXVhbG5hbWV9eyAkbmFtZSB9OwoJCQl9CgkJCXB1c2ggQGV0 -ZGRhdGEsIFsgInF1YWxpZmljYXRpb25uYW1lIiwgJG5hbWUsICJ1a2V0ZHRlcm1zIl07CgkJfQoK -CQkjIHF1YWxpZmljYXRpb25sZXZlbCBzaG91bGQgYmUgZS5nLiAnbWFzdGVycycgb3IgJ2RvY3Rv -cmFsJy4KCQkjIEluIG9sZGVyIEVQcmludHMgY29uZmlndXJhdGlvbiwgdGhlICd0aGVzaXNfdHlw -ZScgZmllbGQgKGFsc28gcmVmZXJlbmNlZCBhYm92ZSkgY29udGFpbmVkCgkJIyBwaGQsIGVuZ2Qs -IG1waGlsLiBUaGVzZSB2YWx1ZXMgYXJlIG1hcHBlZCBpbiB0aGVzaXNfdHlwZV90b19xdWFsbGV2 -ZWwuCgkJIyBJbiBuZXdlciBjb25maWcsIHRoZSB0aGVzaXNfdHlwZSBpcyBhbHJlYWR5IHRoZSBj -b3JyZWN0IHZhbHVlLgoJCWlmKCAkZXByaW50LT5leGlzdHNfYW5kX3NldCggInRoZXNpc190eXBl -IikpewoJCQlteSAkdHlwZSA9ICRlcHJpbnQtPmdldF92YWx1ZSggInRoZXNpc190eXBlIiApOwoJ -CQlpZiggZGVmaW5lZCAkcGx1Z2luLT57dGhlc2lzX3R5cGVfdG9fcXVhbGxldmVsfXsgJHR5cGUg -fSApCgkJCXsKCQkJCSR0eXBlID0gJHBsdWdpbi0+e3RoZXNpc190eXBlX3RvX3F1YWxsZXZlbH17 -ICR0eXBlIH07CgkJCX0KCQkJcHVzaCBAZXRkZGF0YSwgWyAicXVhbGlmaWNhdGlvbmxldmVsIiwg -JHR5cGUsICJ1a2V0ZHRlcm1zIl07CgkJfQoJCWlmKCAkZXByaW50LT5leGlzdHNfYW5kX3NldCgg -Imluc3RpdHV0aW9uIiApKXsKCQkJcHVzaCBAZXRkZGF0YSwgWyAiaW5zdGl0dXRpb24iLCAkZXBy -aW50LT5nZXRfdmFsdWUoICJpbnN0aXR1dGlvbiIgKSwgInVrZXRkdGVybXMiXTsKCQl9CgoJCWlm -KCAkZXByaW50LT5leGlzdHNfYW5kX3NldCggImxhbmd1YWdlIiApKXsKCQkJbXkgJGxhbmcgPSAk -ZXByaW50LT5nZXRfdmFsdWUoICJsYW5ndWFnZSIgKTsKCQkJaWYoIGRlZmluZWQgJHBsdWdpbi0+ -e2xhbmdfdG9fM2NoYXJ9eyAkbGFuZyB9ICl7CgkJCQlwdXNoIEBldGRkYXRhLCBbICJsYW5ndWFn -ZSIsICRwbHVnaW4tPntsYW5nX3RvXzNjaGFyfXsgJGxhbmcgfSwgImRjIiwgeyAieHNpOnR5cGUi -ID0+ICJkY3Rlcm1zOklTTzYzOS0yIiB9IF07CgkJCX0gZWxzZSB7CgkJCQlwdXNoIEBldGRkYXRh -LCBbICJsYW5ndWFnZSIsICRsYW5nLCAiZGMiXTsKCQkJfQoJCX0KCgkJaWYoICRlcHJpbnQtPmV4 -aXN0c19hbmRfc2V0KCAiYWx0X3RpdGxlIiApKXsKCQkJcHVzaCBAZXRkZGF0YSwgWyAiYWx0ZXJu -YXRpdmUiLCAkZXByaW50LT5nZXRfdmFsdWUoImFsdF90aXRsZSIgKSwgImRjdGVybXMiXTsKCQl9 -CgkJaWYoICRlcHJpbnQtPmV4aXN0c19hbmRfc2V0KCAiY2hlY2tzdW0iICkpewoJCQlwdXNoIEBl -dGRkYXRhLCBbICJjaGVja3N1bSIsICRlcHJpbnQtPmdldF92YWx1ZSgiY2hlY2tzdW0iKSwgInVr -ZXRkdGVybXMiIF07CgkJfQoJCWlmKCAkZXByaW50LT5leGlzdHNfYW5kX3NldCggImRhdGVfZW1i -YXJnbyIgKSl7CgkJCXB1c2ggQGV0ZGRhdGEsIFsiZW1iYXJnb2RhdGUiLCAkZXByaW50LT5nZXRf -dmFsdWUoImRhdGVfZW1iYXJnbyIpLCAidWtldGR0ZXJtcyJdOwoJCX0KCQlpZiggJGVwcmludC0+ -ZXhpc3RzX2FuZF9zZXQoICJlbWJhcmdvX3JlYXNvbiIgKSl7CgkJCXB1c2ggQGV0ZGRhdGEsIFsi -ZW1iYXJnb19yZWFzb24iLCAkZXByaW50LT5nZXRfdmFsdWUoImVtYmFyZ29fcmVhc29uIiksICJ1 -a2V0ZHRlcm1zIl07CgkJfQoJCWlmKCAkZXByaW50LT5leGlzdHNfYW5kX3NldCggInJpZ2h0cyIg -KSl7CgkJCXB1c2ggQGV0ZGRhdGEsIFsicmlnaHRzIiwgJGVwcmludC0+Z2V0X3ZhbHVlKCJyaWdo -dHMiKSwgImRjIl07CgkJfQoJCWlmKCAkZXByaW50LT5leGlzdHNfYW5kX3NldCggImNpdGF0aW9u -cyIgKSl7CgkJCXB1c2ggQGV0ZGRhdGEsIFsiaGFzVmVyc2lvbiIsICRlcHJpbnQtPmdldF92YWx1 -ZSgiY2l0YXRpb25zIiksICJkY3Rlcm1zIl07CgkJfQoJCWlmKCAkZXByaW50LT5leGlzdHNfYW5k -X3NldCggInJlZmVyZW5jZXRleHQiICkpewoJCQlwdXNoIEBldGRkYXRhLCBbInJlZmVyZW5jZXMi -LCAkZXByaW50LT5nZXRfdmFsdWUoInJlZmVyZW5jZXRleHQiKSwgImRjdGVybXMiXTsKCQl9CgkJ -Cgl9CgkKCXJldHVybiBAZXRkZGF0YTsKfQoKc3ViIGRlcGFydG1lbnRzCnsKCW15KCAkcGx1Z2lu -LCAkZXByaW50ICkgPSBAXzsKCglteSBAZGVwdHM7CgoJaWYoICRlcHJpbnQtPmV4aXN0c19hbmRf -c2V0KCAiZGl2aXNpb25zIiApICkKCXsKCQlmb3JlYWNoIG15ICRkaXZfaWQgKCBAeyRlcHJpbnQt -PmdldF92YWx1ZSggImRpdmlzaW9ucyIgKX0gKQogICAgICAgICAgICAgICAgewoJCQlteSAkZGVw -dCA9IEVQcmludHM6OkRhdGFPYmo6OlN1YmplY3QtPm5ldyggJHBsdWdpbi0+e3Nlc3Npb259LCAk -ZGl2X2lkICk7CiAgICAgICAgICAgICAgICAgICAgICAgICMgYXZvaWQgcHJvYmxlbXMgd2l0aCBi -YWQgc3ViamVjdHMKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCB1bmxlc3MoIGRlZmluZWQg -JGRlcHQgKTsKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAZGVwdHMsIFsgImRlcGFydG1l -bnQiLCBFUHJpbnRzOjpVdGlsczo6dHJlZV90b191dGY4KCAkZGVwdC0+cmVuZGVyX2Rlc2NyaXB0 -aW9uKCkgKSwgInVrZXRkdGVybXMiIF07CiAgICAgICAgICAgICAgICB9Cgl9CgoJaWYoICRlcHJp -bnQtPmV4aXN0c19hbmRfc2V0KCAiZGVwYXJ0bWVudCIgKSkKCXsKCQlwdXNoIEBkZXB0cywgWyAi -ZGVwYXJ0bWVudCIsICRlcHJpbnQtPmdldF92YWx1ZSggImRlcGFydG1lbnQiICksICJ1a2V0ZHRl -cm1zIl07Cgl9CgoJcmV0dXJuIEBkZXB0czsKfQoKc3ViIGRvaQp7CglteSggJHBsdWdpbiwgJGVw -cmludCApID0gQF87CgoJaWYoICRlcHJpbnQtPmV4aXN0c19hbmRfc2V0KCAiZG9pIiApICkKCXsK -CQlteSAkZG9pID0gJHBsdWdpbi0+X2Zvcm1hdF9kb2koICRlcHJpbnQtPmdldF92YWx1ZSggImRv -aSIgKSApOwoJCWlmKCBkZWZpbmVkICRkb2kgKQoJCXsKCQkJcmV0dXJuIFsgImlkZW50aWZpZXIi -LCAkZG9pLCAiZGMiLCAiZGN0ZXJtczpET0kiIF07CgkJfQoJfQoKCWlmKCAkZXByaW50LT5leGlz -dHNfYW5kX3NldCggImlkX251bWJlciIgKSApewoJCW15ICRkb2kgPSAkcGx1Z2luLT5fZm9ybWF0 -X2RvaSggJGVwcmludC0+Z2V0X3ZhbHVlKCAiaWRfbnVtYmVyIiApICk7CgkJaWYoIGRlZmluZWQg -JGRvaSApCgkJewoJCQlyZXR1cm4gWyAiaWRlbnRpZmllciIsICRkb2ksICJkYyIsICJkY3Rlcm1z -OkRPSSIgXTsKCQl9Cgl9CgoJcmV0dXJuOwp9CgoKc3ViIGNyZWF0b3JfYW5kX29yY2lkCnsKCW15 -KCAkcGx1Z2luLCAkZXByaW50ICkgPSBAXzsKCglteSBAZGNfY3JlYXRvcnMgPSAoKTsJCglteSBA -b3JjaWRzID0gKCk7CQoKCW15ICRjcmVhdG9ycyA9ICRlcHJpbnQtPmdldF92YWx1ZSggImNyZWF0 -b3JzIiApOwoJaWYoIGRlZmluZWQgJGNyZWF0b3JzICkKCXsKCQlmb3JlYWNoIG15ICRjcmVhdG9y -ICggQHskY3JlYXRvcnN9ICkKCQl7CgkJCXB1c2ggQGRjX2NyZWF0b3JzLCBbICJjcmVhdG9yIiwg -RVByaW50czo6VXRpbHM6Om1ha2VfbmFtZV9zdHJpbmcoICRjcmVhdG9yLT57bmFtZX0gKSwgImRj -IiBdOwoJCQlpZiggRVByaW50czo6VXRpbHM6OmlzX3NldCggJGNyZWF0b3ItPntvcmNpZH0gKSAp -IAoJCQl7CgkJCQlwdXNoIEBvcmNpZHMsIFsgImF1dGhvcmlkZW50aWZpZXIiLCAkcGx1Z2luLT5f -Zm9ybWF0X29yY2lkKCAkY3JlYXRvci0+e29yY2lkfSApLCAidWtldGR0ZXJtcyIsIHsgInhzaTp0 -eXBlIiA9PiAidWtldGR0ZXJtczpPUkNJRCIgfSAgXTsKCQkJfQoJCX0KCX0KCglyZXR1cm4gQGRj -X2NyZWF0b3JzLCBAb3JjaWRzOwp9CgpzdWIgYWR2aXNvcl9hbmRfb3JjaWQKewoJbXkoICRwbHVn -aW4sICRlcHJpbnQgKSA9IEBfOwoKCW15IEBhZHZpc29ycyA9ICgpOwkKCW15IEBvcmNpZHMgPSAo -KTsJCgoJaWYoICRlcHJpbnQtPmV4aXN0c19hbmRfc2V0KCAiYWR2aXNvciIgKSApCgl7CgkJcHVz -aCBAYWR2aXNvcnMsIFsgImFkdmlzb3IiLCAkZXByaW50LT5nZXRfdmFsdWUoICJhZHZpc29yIiAp -LCAidWtldGR0ZXJtcyJdOwoJfQoJIyBhbHNvIGxvb2sgaW4gY29udHJpYnV0b3JzCglpZiggJGVw -cmludC0+ZXhpc3RzX2FuZF9zZXQoICJjb250cmlidXRvcnMiICkgKQoJewoJCWZvcmVhY2ggbXkg -JGNvbnRyaWIgKCBAeyAkZXByaW50LT5nZXRfdmFsdWUoICJjb250cmlidXRvcnMiICkgfSApCgkJ -ewoJCQluZXh0IHVubGVzcyBkZWZpbmVkICRjb250cmliLT57dHlwZX0gJiYgZGVmaW5lZCAkY29u -dHJpYi0+e25hbWV9OwoJCQluZXh0IHVubGVzcyAkY29udHJpYi0+e3R5cGV9IGVxICRwbHVnaW4t -Pntjb250cmlidXRvcl90eXBlX3RoZXNpc19hZHZpc29yfTsKCQkJcHVzaCBAYWR2aXNvcnMsIFsg -ImFkdmlzb3IiLCBFUHJpbnRzOjpVdGlsczo6bWFrZV9uYW1lX3N0cmluZyggJGNvbnRyaWItPntu -YW1lfSApLCAidWtldGR0ZXJtcyIgXTsKCQkJaWYoIEVQcmludHM6OlV0aWxzOjppc19zZXQoICRj -b250cmliLT57b3JjaWR9ICkgKQoJCQl7CgkJCQlwdXNoIEBvcmNpZHMsIFsgImF1dGhvcmlkZW50 -aWZpZXIiLCAkcGx1Z2luLT5fZm9ybWF0X29yY2lkKCAkY29udHJpYi0+e29yY2lkfSApLCAidWtl -dGR0ZXJtcyIsICRwbHVnaW4tPl9hdHRyaWJ1dGVzX2Zvcl9hZHZpc29yX2F1dGhvcmlkZW50aWZp -ZXIgIF07CgkJCX0KCQl9Cgl9CgoJcmV0dXJuIEBhZHZpc29ycywgQG9yY2lkczsKfQoKc3ViIF9h -dHRyaWJ1dGVzX2Zvcl9hZHZpc29yX2F1dGhvcmlkZW50aWZpZXIKewoJbXkoICRwbHVnaW4gKSA9 -IEBfOwoKCSMgZGVmYXVsdCBhdHRyaWJ1dGUKCW15ICRhdHRycyA9IHsgInhzaTp0eXBlIiA9PiAi -dWtldGR0ZXJtczpPUkNJRCIgfTsKCgkjIG1lcmdlIGV4dHJhIGF0dHJpYnV0ZXMgaWYgcmVxdWly -ZWQuCgkjIE5CIGlmIGFuIHhzaTp0eXBlIGlzIHNwZWNpZmllZCBpbiBhZHZpc29yX2F1dGhvcmlk -ZW50aWZpZXJfYXR0cmlidXRlcywgdGhpcyB3aWxsIG92ZXJ3cml0ZSB0aGUgdmFsdWUgYWJvdmUu -CglpZiggJHBsdWdpbi0+e2FkZF9hdHRyaWJ1dGVzX3RvX2Fkdmlzb3JfYXV0aG9yaWRlbnRpZmll -cn0gKXsKCQlAJGF0dHJzeyBrZXlzICV7JHBsdWdpbi0+e2Fkdmlzb3JfYXV0aG9yaWRlbnRpZmll -cl9hdHRyaWJ1dGVzfX0gfSA9IHZhbHVlcyAleyRwbHVnaW4tPnthZHZpc29yX2F1dGhvcmlkZW50 -aWZpZXJfYXR0cmlidXRlc319OwoJfQoJCglyZXR1cm4gJGF0dHJzOwp9CgpzdWIgZnVuZGVyX2Fu -ZF9wcm9qZWN0CnsKCW15KCAkcGx1Z2luLCAkZXByaW50ICkgPSBAXzsKCglteSBAc3BvbnNvcnMg -PSAoKTsKCW15IEBncmFudHMgPSAoKTsKCQoJIyByaW94eDJfcHJvamVjdCBjb250YWlucyBhIHBy -b2Nlc3NlZCByZXByZXNlbnRhdGlvbiBvZiBmdW5kZXJzIGFuZCBwcm9qZWN0cy4KCSMgaWYgaXQg -ZXhpc3RzLCB1c2UgdGhhdCBpbiBwcmVmZXJlbmNlIHRvIHRoZSBtb3JlIGZlcmFsICdwcm9qZWN0 -cycgYW5kICdmdW5kZXJzJyBmaWVsZHMuCglpZiggJGVwcmludC0+ZXhpc3RzX2FuZF9zZXQoICJy -aW94eDJfcHJvamVjdCIgKSApCgl7CgoJCWZvcmVhY2ggbXkgJHByb2ogKCBAeyAkZXByaW50LT5n -ZXRfdmFsdWUoICJyaW94eDJfcHJvamVjdCIgKSB9ICkKCQl7CgkJCWlmKCBFUHJpbnRzOjpVdGls -czo6aXNfc2V0KCAkcHJvai0+e3Byb2plY3R9ICkgKXsKCQkJCXB1c2ggQGdyYW50cywgWyAiZ3Jh -bnRudW1iZXIiLCAkcHJvai0+e3Byb2plY3R9LCAidWtldGR0ZXJtcyIgXTsKCQkJfQoJCQlpZigg -RVByaW50czo6VXRpbHM6OmlzX3NldCggJHByb2otPntmdW5kZXJfbmFtZX0gKSApewoJCQkJcHVz -aCBAc3BvbnNvcnMsIFsgInNwb25zb3IiLCAkcHJvai0+e2Z1bmRlcl9uYW1lfSwgInVrZXRkdGVy -bXMiIF07CgkJCX0KCQl9CgoJfSBlbHNlIHsKCQlpZiggJGVwcmludC0+ZXhpc3RzX2FuZF9zZXQo -ICJwcm9qZWN0cyIgKSApCgkJewoJCQlmb3JlYWNoIG15ICRwcm9qICggQHsgJGVwcmludC0+dmFs -dWUoICJwcm9qZWN0cyIgKSB9ICkKCQkJewoJCQkJcHVzaCBAZ3JhbnRzLCBbICJncmFudG51bWJl -ciIsICRwcm9qLCAidWtldGR0ZXJtcyIgXTsKCQkJfQkKCQl9CgoJCWlmKCAkZXByaW50LT5leGlz -dHNfYW5kX3NldCggImZ1bmRlcnMiICkgKQoJCXsKCQkJZm9yZWFjaCBteSAkZnVuZGVyICggQHsg -JGVwcmludC0+dmFsdWUoICJmdW5kZXJzIiApIH0gKQoJCQl7CgkJCQlwdXNoIEBzcG9uc29ycywg -WyAic3BvbnNvciIsICRmdW5kZXIsICJ1a2V0ZHRlcm1zIiBdOwoJCQl9CQoJCX0KCX0KCgkjICdz -cG9uc29ycycgaXMgYSBub24tc3RhbmRhcmQgZmllbGQsIGJ1dCB3YXMgbWFwcGVkIGluIHRoZSBw -bHVnaW4sIHNvIGlzIHJldGFpbmVkIGhlcmUKCWlmKCAkZXByaW50LT5leGlzdHNfYW5kX3NldCgg -InNwb25zb3JzIiApKXsKCQlwdXNoIEBzcG9uc29ycywgWyAic3BvbnNvciIsICRlcHJpbnQtPmdl -dF92YWx1ZSggInNwb25zb3JzIiApLCAidWtldGR0ZXJtcyJdOwoJfQoKCXJldHVybiBAc3BvbnNv -cnMsIEBncmFudHM7Cn0KCnN1YiBfZm9ybWF0X29yY2lkCnsKCW15KCAkcGx1Z2luLCAkb3JjaWQg -KSA9IEBfOwoKCSMgZ3VpZGVsaW5lcyB3YW50IDE2LWNoYXJhY3RlcnMsIG5vIGh5cGhlbnMgb3Ig -VVJMcy4KCSMgVGhpcyBzaG91bGQgZGVhbCB3aXRoIFVSTHMgb3IgbmFtZXNwYWNlZCB2YWx1ZXMu -Cgkkb3JjaWQgPX4gcyNeKD86XHMqKD86aHR0cHM/Oi8vKT9vcmNpZFwub3JnL3xvcmNpZDovPyk/ -KFxkezR9KVwtPyhcZHs0fSlcLT8oXGR7NH0pXC0/KFxkezN9W1xkfFhdKSQjJDEkMiQzJDQjOwoK -CXJldHVybiAkb3JjaWQ7Cn0KCnN1YiBfZm9ybWF0X2RvaQp7CglteSggJHBsdWdpbiwgJGRvaSAp -ID0gQF87CgoJIyBhZHZpY2UgcmVjZWl2ZWQgaXMgdGhhdCBqdXN0IERPSSBpcyBwcmVmZXJyZWQg -dG8gYSBVUkwKCSMgbG9naWMgdGFrZW4gZnJvbSBFUHJpbnRzOjpFeHRyYXM6OnJlbmRlcl9wb3Nz -aWJsZV9kb2kKCWlmKCAkZG9pID1+IG0hXgoJCSg/Omh0dHBzPzovLyg/OmR4XC4pP2RvaVwub3Jn -Lyk/ICAjIGFkZCB0aGlzIGFnYWluIGxhdGVyIGFueXdheQoJCSg/OmRvaTo/XHMqKT8gICAgICAg -ICAgICAgICAgICAgIyBkb24ndCBuZWVkIGFueSBuYW1lc3BhY2Ugc3R1ZmYKCQkoMTAoXC5bXi4v -XSspKy8uKykgICAgICAgICAgICAgICMgdGhlIGFjdHVhbCBET0kgPT4gJDEKCSFpeCApCgl7CgkJ -IyBqdXN0IHVzZSB0aGUgbGFzdCBwYXJ0IC0gdGhlIGFjdHVhbCBET0kuCgkJcmV0dXJuICQxOwoJ -fQoKCXJldHVybiB1bmRlZjsKfQoKc3ViIF9sYXN0X2RheV9vZl9lbWJhcmdvCnsKCW15KCAkZW1i -YXJnbyApID0gQF87CgoJaWYoIGxlbmd0aCAkZW1iYXJnbyA9PSA0ICkKCXsKCQkjIG9ubHkgeWVh -ciBkZWZpbmVkLiBFbWJhcmdvIGlzIHJlbGVhc2VkIGFmdGVyIHRoZSBlbmQgb2YgdGhlIHllYXIu -CgkJcmV0dXJuICRlbWJhcmdvIC49ICItMTItMzEiOwoJfQoJaWYoIGxlbmd0aCAkZW1iYXJnbyA9 -PSAxMCApCgl7CgkJIyBGdWxsIGRhdGUgc3BlY2lmaWVkIC0gcmV0dXJuIGl0LgoJCXJldHVybiAk -ZW1iYXJnbzsKCX0KCglpZiggbGVuZ3RoICRlbWJhcmdvID09IDcgKQoJewoJCSMgeWVhciBhbmQg -bW9udGggc3BlY2lmaWVkLgkKCQlteSggJHksICRtICkgPSBzcGxpdCggL1wtLywgJGVtYmFyZ28g -KTsKCgkJbXkgJGVuZF9kYXkgPSAoMzEsMjgsMzEsMzAsMzEsMzAsMzEsMzEsMzAsMzEsMzAsMzEp -WyRtLTFdOyAjbW9udGggaXMgMS1iYXNlZDsgcGVybCBhcnJheSBpcyAwLWJhc2VkCgoJCSNpZiBt -b250aCBpcyBub3QgRmViLCBlbmQgZGF5IGRvZXMgbm90IGNoYW5nZQoJCXJldHVybiAiJGVtYmFy -Z28tJGVuZF9kYXkiIGlmICRtICE9IDI7CgkKCQkjIGVsc2Ugd29yayBvdXQgbGVhcCB5ZWFyIHN0 -dWZmCgkJIyB5ZWFyIGlzIGRpdiBieSA0LCBidXQgbm90IDEwMCwgYnV0IGlzIGJ5IDQwMAoJCSMg -dW5saWtlbHkgZm9yIEVUaGVzZXMgZW1iYXJnbyBleHBpcnkgLSBidXQgSSd2ZSBoZWFyZCB0YWxr -IG9mICcxMDAgeWVhciBlbWJhcmdvcycuLi4KCQlpZiAoICgkeSAlIDQgPT0gMCkgJiYgKCAkeSAl -IDEwMCAhPSAwIHx8ICR5ICUgNDAwID09IDAgKSApIAoJCXsKCQkJJGVuZF9kYXkrKzsKCQl9CgoJ -CXJldHVybiAiJGVtYmFyZ28tJGVuZF9kYXkiOwoJfQoKCSMgaWYgbm9uZSBvZiB0aGUgY2FzZXMg -YWJvdmUgbWF0Y2gsIHRoZSd2ZSBnb3Qgc29tZXRoaW5nIHN0cmFuZ2UuIEp1c3QgcmV0dXJuIGFz -LWlzCglyZXR1cm4gJGVtYmFyZ287Cn0KCQoxOwoKCj1oZWFkMSBDT1BZUklHSFQKCj1mb3IgQ09Q -WVJJR0hUIEJFR0lOCgpDb3B5cmlnaHQgMjAwMC0yMDExIFVuaXZlcnNpdHkgb2YgU291dGhhbXB0 -b24uCgo9Zm9yIENPUFlSSUdIVCBFTkQKCj1mb3IgTElDRU5TRSBCRUdJTgoKVGhpcyBmaWxlIGlz -IHBhcnQgb2YgRVByaW50cyBMPGh0dHA6Ly93d3cuZXByaW50cy5vcmcvPi4KCkVQcmludHMgaXMg -ZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAp1 -bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh -cyBwdWJsaXNoZWQKYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNp -b24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv -bi4KCkVQcmludHMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz -ZWZ1bCwgYnV0IFdJVEhPVVQKQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg -d2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yCkZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ -VVJQT1NFLiAgU2VlIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkxpY2Vuc2UgZm9yIG1v -cmUgZGV0YWlscy4KCllvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM -ZXNzZXIgR2VuZXJhbCBQdWJsaWMKTGljZW5zZSBhbG9uZyB3aXRoIEVQcmludHMuICBJZiBub3Qs -IHNlZSBMPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgoKPWZvciBMSUNFTlNFIEVORAoK -CiMgUklQIFRNQgo= +ICAgPT4gIkVkLkQuIiwKCWRjbGlucHN5ID0+ICJELkNsaW4uUHN5LiIsCgltZCAgICAgICA9PiAi +TS5ELiIsCgltcGhpbCAgICA9PiAiTS5QaGlsLiIsCgltcmVzICAgICA9PiAiTS5SZXMuIiwKCW1h +ICAgICAgID0+ICJNLkEuIiwKCW1zYyAgICAgID0+ICJNLlNjLiIsCglsbG0gICAgICA9PiAiTC5M +Lk0uIiwKfTsKCgo9aXRlbSB0aGVzaXNfdHlwZV90b19xdWFsbGV2ZWwKCk1hcHMgdGhlc2lzIHR5 +cGUgdG8gYSBsZXZlbCAnTWFzdGVycycgb3IgJ0RvY3RvcmFsJy4KSW4gbW9yZSByZWNlbnQgRVBy +aW50cyBjb25maWd1cmF0aW9uIHRoZXJlIGFyZSB0d28gZmllbGRzLCAndGhlc2lzX25hbWUnIChl +LmcuIHBoZCwgZW5kLmQpIAphbmQgJ3RoZXNpc190eXBlJyAobWFzdGVycywgZG9jdG9yYWwpLiBJ +ZiBib3RoIGZpZWxkcyBleGlzdCwgdGhpcyBpcyBub3QgdXNlZC4KCj1jdXQKCiMgbWFwIGRlZmF1 +bHQgdGhlc2lzX3R5cGUgdmFsdWVzIHRvIGFwcHJvcHJpYXRlCiMgcXVhbGlmaWNhdGlvbmxldmVs +CiMgY2FuIGJlIG92ZXJyaWRkZW4gYXQgYXJjaGl2ZSBsZXZlbCBlZy4KIyAkYy0+e3BsdWdpbnN9 +LT57IkV4cG9ydDo6T0FJX1VLRVREX0RDXzIwMTcifS0+e3BhcmFtc30tPnt0aGVzaXNfdHlwZV90 +b19xdWFsbGV2ZWx9ID0geyAuLiB9OwokREVGQVVMVHt0aGVzaXNfdHlwZV90b19xdWFsbGV2ZWx9 +ID0gewoJcGhkICAgICAgPT4gImRvY3RvcmFsIiwKCWVuZ2QgICAgID0+ICJkb2N0b3JhbCIsCgll +ZGQgICAgICA9PiAiZG9jdG9yYWwiLAoJZGNsaW5wc3kgPT4gImRvY3RvcmFsIiwKCW1kICAgICAg +ID0+ICJkb2N0b3JhbCIsCgltcGhpbCAgICA9PiAibWFzdGVycyIsCgltcmVzICAgICA9PiAnbWFz +dGVycycsCgltYSAgICAgICA9PiAnbWFzdGVycycsCgltc2MgICAgICA9PiAnbWFzdGVycycsCgls +bG0gICAgICA9PiAnbWFzdGVycycsCn07CgoKPWl0ZW0gY29udHJpYnV0b3JfdHlwZV90aGVzaXNf +YWR2aXNvcgoKSWYgdGhlICdjb250cmlidXRvcicgZmllbGQgaXMgYmVpbmcgdXNlZCwgd2hpY2gg +Y29udHJpYnV0b3JfdHlwZSBzaG91bGQgYmUgdXNlZCB0byBtYXRjaAp0aGVzaXMgYWR2aXNvcnMu +Cgo9Y3V0CgojIGRlZmF1bHQgY29udHJpYnV0b3JfdHlwZSB0aGF0IGlkZW50aWZpZXMgYSB0aGVz +aXMgYWR2aXNvcgojIGNhbiBiZSBvdmVycmlkZGVuIGF0IGFyY2hpdmUgbGV2ZWwgZWcuCiMgJGMt +PntwbHVnaW5zfS0+eyJFeHBvcnQ6Ok9BSV9VS0VURF9EQ18yMDE3In0tPntwYXJhbXN9LT57Y29u +dHJpYnV0b3JfdHlwZV90aGVzaXNfYWR2aXNvcn0gPSAiYWR2aXNvciI7CiRERUZBVUxUe2NvbnRy +aWJ1dG9yX3R5cGVfdGhlc2lzX2Fkdmlzb3J9ID0gImh0dHA6Ly93d3cubG9jLmdvdi9sb2MudGVy +bXMvcmVsYXRvcnMvVEhTIjsKCj1pdGVtIGNyZWF0b3JfYW5kX29yY2lkIChmdW5jdGlvbikKCkxv +b2tzIGZvciBvcmNpZHMgaW4gYSBzdWJmaWVsZCBjYWxsZWQgJ29yY2lkJyBieSBkZWZhdWx0LgpS +ZXR1cm5zIGFycmF5cyBmb3IgYXV0aG9yIGFuZCBvcmNpZCBpZiBwcmVzZW50LgoKPWl0ZW0gYWR2 +aXNvcl9hbmRfb3JjaWQgKGZ1bmN0aW9uKQoKTG9va3MgZm9yIGFkdmlzb3JzIGluICdhZHZpc29y +JyBhbmQgJ2NvbnRyaWJ1dG9yJyBmaWVsZHMuCkxvb2tzIGZvciBvcmNpZHMgaW4gY29udHJpYnV0 +b3Igc3ViZmllbGQgJ29yY2lkJyBieSBkZWZhdWx0LgoKCj1pdGVtIGZ1bmRlcl9hbmRfcHJvamVj +dCAoZnVuY3Rpb24pCgpJZiB0aGUgUklPWFgyIHBsdWdpbiBpcyBpbnN0YWxsZWQgaXQgd2lsbCBy +ZXR1cm4gdGhlICdyaW94eDJfcHJvamVjdCcgdmFsdWUuCklmIHRoaXMgcGx1Z2luIGlzIG5vdCBw +cmVzZW50LCBpdCB3aWxsIGxvb2sgaW4gdGhlIHByb2plY3QgYW5kIGZ1bmRlciBmaWVsZHMgZnJv +bSB0aGUgZXByaW50LgoKPWl0ZW0gZG9pIChmdW5jdGlvbikKClJlZmVyZW5jZXMgdGhlIGRvaSBv +ciBpZF9udW1iZXIgZmllbGQgdG8gZmluZCBhIERPSSBmb3IgdGhpcyB0aGVzaXMuCgo9aXRlbSBk +ZXBhcnRtZW50cyAoZnVuY3Rpb24pCgpMb29rcyBpbiB0aGUgZGVmYXVsdCAnZGl2aXNpb25zJyBm +aWVsZCBmb3IgZGVwYXJ0bWVudC9mYWN1bHR5LiBDYW4gYmUgb3ZlcndyaXR0ZW4gaWYgZGF0YSBp +cyBzdG9yZWQgaW4gYW5vdGhlcgpmaWVsZCwgb3IgaWYgc29tZSBsZXZlbHMgb2YgZmFjdWx0eS9k +ZXBhcnRtZW50L3NjaG9vbCBzaG91bGRuJ3QgYmUgcmVwcmVzZW50ZWQuCgo9Y3V0CgokREVGQVVM +VHtjcmVhdG9yX2FuZF9vcmNpZH0gID0gXCZjcmVhdG9yX2FuZF9vcmNpZDsKJERFRkFVTFR7YWR2 +aXNvcl9hbmRfb3JjaWR9ICA9IFwmYWR2aXNvcl9hbmRfb3JjaWQ7CiRERUZBVUxUe2Z1bmRlcl9h +bmRfcHJvamVjdH0gPSBcJmZ1bmRlcl9hbmRfcHJvamVjdDsKJERFRkFVTFR7ZG9pfSA9IFwmZG9p +OwokREVGQVVMVHtkZXBhcnRtZW50c30gPSBcJmRlcGFydG1lbnRzOwoKPWl0ZW0gYWRkX2F0dHJp +YnV0ZXNfdG9fYWR2aXNvcl9hdXRob3JpZGVudGlmaWVyCgpNYXkgYmUgdXNlZCBpbiB0aGUgZnV0 +dXJlIHRvIGFkZCBhbiBhZGRpdGlvbmFsIGF0dHJpYnV0ZSB0byBPUkNJRCBmaWVsZHMgdG8gZGlz +dGluZ3Vpc2ggYmV0d2VlbgphdXRob3IgYW5kIHN1cGVydmlzb3IgT1JDSWRzLgpJdCBpcyBwcm92 +aWRlZCBhcyBhIHNpbXBsZSAwIG9yIDEgb3B0aW9uIHRvIGNoYW5nZSBpbiB0aGUgY29uZmlndXJh +dGlvbi4KCj1pdGVtIGFkdmlzb3JfYXV0aG9yaWRlbnRpZmllcl9hdHRyaWJ1dGVzCgpBIGhhc2gg +b2YgdGhlIGFkZGl0aW9uYWwgYXR0cmlidXRlcyB0byBhZGQgd2hlbiB0aGUgYWJvdmUgdmFsdWUg +aXMgZW5hYmxlZAoKPWN1dAoKIyBhZnRlciBkaXNjdXNzaW9ucyBhYm91dCBsaW5raW5nIGF1dGhv +cnMvc3VwZXJ2aXNvcnMgdG8gdGhlaXIgc3BlY2lmaWMgT1JDSURzLCB0aGlzIHJvdXRlIHdhcyBk +ZWNpZGVkOgojIDEuIEluaXRpYWxseSwgZG8gbm8gdXNlIGFueSBub24tZGVmaW5lZCAoaS5lLiBu +b3QgZGVmaW5lZCBpbiB0aGUgVUtFVERfREMgcHJvZmlsZSkgYXR0cmlidXRlcy4KIyAyLiBBZGQg +Y29kZSB0byB0aGUgcGx1Z2luIHNvIHRoYXQgdXNlIG9mIHRoZSBhdHRyaWJ1dGUgY291bGQgZWFz +aWx5IGJlIGVuYWJsZWQuCiMKIyBUaGUgc29sdXRpb24gZm9yIHRoaXMgaXM6CiMgaSkgYSBmbGFn +IHRvIHNheSB3aGV0aGVyIHRvIHVzZSB0aGUgYXR0cmlidXRlcyBvciBub3QgLSBhbmQgY29tbWVu +dC9pbmNsdWRlIHRoaXMgaW4gdGhlIGNvbmZpZyBmaWxlCiRERUZBVUxUe2FkZF9hdHRyaWJ1dGVz +X3RvX2Fkdmlzb3JfYXV0aG9yaWRlbnRpZmllcn0gPSAwOwojYW5kCiMgaWkpIGEgZGVmYXVsdCBz +ZXQgb2YgYXR0cmlidXRlcyAtIHdoaWNoIGFyZSBvdmVycmlkYWJsZSBpZiBuZWNlc3NhcnkKJERF +RkFVTFR7YWR2aXNvcl9hdXRob3JpZGVudGlmaWVyX2F0dHJpYnV0ZXN9ID0gewoJcmVsID0+ICJh +ZHZpc29yIiwKfTsKCj1pdGVtIGxhbmdfdG9fM2NoYXIKCkEgbWFwIG9mIGxhbmd1YWdlIHZhbHVl +cyAobm9ybWFsbHkgdHdvLWNoYXJhY3RlcnMpIHRvIHRocmVlLWNoYXJhY3RlciBjb3VudHJ5IGNv +ZGVzLiBCeSBkZWZhdWx0IEVQcmludHMgdXNlcyBJU082MzktMSAoMi1jaGFyYWN0ZXIpIApjb2Rl +IGUuZy4gJ2VuJywgYnV0IHRoZSBCTCBzcGVjaWZpY2F0aW9uIGFza3MgZm9yIElTTzYzOS0yIGUu +Zy4gJ2VuZycuCkEgdmFsdWUgdGhhdCBpcyBub3QgbWFwcGVkIHdpbGwgYmUgYWRkZWQgdmVyYmF0 +aW0gdG8gdGhlIG91dHB1dC4KQW55IHZhbHVlcyB0aGF0IGNvdWxkIGJlIHVzZWQgYXQgdGhlIGVw +cmludCBvciBkb2N1bWVudCBsZXZlbCBjb3VsZCBiZSB1c2VkIGUuZy4gdG8gbWFwICdFbmdsaXNo +JyB0byAnZW5nJy4KRVByaW50cyBpbmNsdWRlcyB0aGUgZm9sbG93aW5nIG9wdGlvbnMgYmUgZGVm +YXVsdDogCmh0dHBzOi8vZ2l0aHViLmNvbS9lcHJpbnRzL2VwcmludHMvYmxvYi8zLjMvbGliL2Rl +ZmF1bHRjZmcvbmFtZWRzZXRzL2xhbmd1YWdlcwoKU2VlOiBodHRwOi8vd3d3LmxvYy5nb3YvbWFy +Yy9sYW5ndWFnZXMvbGFuZ3VhZ2VfY29kZS5odG1sCgo9Y3V0CgoKJERFRkFVTFR7bGFuZ190b18z +Y2hhcn0gPSB7CgkiYWEiID0+ICJhYXIiLAkiYWIiID0+ICJhYmsiLAkiYWUiID0+ICJhdmUiLAki +YWYiID0+ICJhZnIiLAkiYWsiID0+ICJha2EiLAkiYW0iID0+ICJhbWgiLAoJImFuIiA9PiAiYXJn +IiwJImFyIiA9PiAiYXJhIiwJImFzIiA9PiAiYXNtIiwJImF2IiA9PiAiYXZhIiwJImF5IiA9PiAi +YXltIiwJImF6IiA9PiAiYXplIiwKCSJiYSIgPT4gImJhayIsCSJiZSIgPT4gImJlbCIsCSJiZyIg +PT4gImJ1bCIsCSJiaCIgPT4gImJpaCIsCSJiaSIgPT4gImJpcyIsCSJibSIgPT4gImJhbSIsCgki +Ym4iID0+ICJiZW4iLAkiYm8iID0+ICJ0aWIiLAkiYnIiID0+ICJicmUiLAkiYnMiID0+ICJib3Mi +LAkiY2EiID0+ICJjYXQiLAkiY2UiID0+ICJjaGUiLAoJImNoIiA9PiAiY2hhIiwJImNvIiA9PiAi +Y29zIiwJImNyIiA9PiAiY3JlIiwJImNzIiA9PiAiY3plIiwJImN1IiA9PiAiY2h1IiwJImN2IiA9 +PiAiY2h2IiwJImN5IiA9PiAid2VsIiwKCSJkYSIgPT4gImRhbiIsCSJkZSIgPT4gImdlciIsCSJk +diIgPT4gImRpdiIsCSJkeiIgPT4gImR6byIsCgkiZWUiID0+ICJld2UiLAkiZWwiID0+ICJncmUi +LAkiZW4iID0+ICJlbmciLAkiZW8iID0+ICJlcG8iLAkiZXMiID0+ICJzcGEiLAkiZXQiID0+ICJl +c3QiLAkiZXUiID0+ICJiYXEiLAoJImZhIiA9PiAicGVyIiwJImZmIiA9PiAiZnVsIiwJImZpIiA9 +PiAiZmluIiwJImZqIiA9PiAiZmlqIiwJImZvIiA9PiAiZmFvIiwJImZyIiA9PiAiZnJlIiwJImZ5 +IiA9PiAiZnJ5IiwKCSJnYSIgPT4gImdsZSIsCSJnZCIgPT4gImdsYSIsCSJnbCIgPT4gImdsZyIs +CSJnbiIgPT4gImdybiIsCSJndSIgPT4gImd1aiIsCSJndiIgPT4gImdsdiIsCgkiaGEiID0+ICJo +YXUiLAkiaGUiID0+ICJoZWIiLAkiaGkiID0+ICJoaW4iLAkiaG8iID0+ICJobW8iLAkiaHIiID0+ +ICJocnYiLAkiaHQiID0+ICJoYXQiLAoJImh1IiA9PiAiaHVuIiwJImh5IiA9PiAiYXJtIiwJImh6 +IiA9PiAiaGVyIiwKCSJpYSIgPT4gImluYSIsCSJpZCIgPT4gImluZCIsCSJpZSIgPT4gImlsZSIs +CSJpZyIgPT4gImlibyIsCSJpaSIgPT4gImlpaSIsCSJpayIgPT4gImlwayIsCgkiaW8iID0+ICJp +ZG8iLAkiaXMiID0+ICJpY2UiLAkiaXQiID0+ICJpdGEiLAkiaXUiID0+ICJpa3UiLAoJImphIiA9 +PiAianBuIiwJImp2IiA9PiAiamF2IiwKCSJrYSIgPT4gImdlbyIsCSJrZyIgPT4gImtvbiIsCSJr +aSIgPT4gImtpayIsCSJraiIgPT4gImt1YSIsCSJrayIgPT4gImtheiIsCSJrbCIgPT4gImthbCIs +Cgkia20iID0+ICJraG0iLAkia24iID0+ICJrYW4iLAkia28iID0+ICJrb3IiLAkia3IiID0+ICJr +YXUiLAkia3MiID0+ICJrYXMiLAkia3UiID0+ICJrdXIiLAoJImt2IiA9PiAia29tIiwJImt3IiA9 +PiAiY29yIiwJImt5IiA9PiAia2lyIiwKCSJsYSIgPT4gImxhdCIsCSJsYiIgPT4gImx0eiIsCSJs +ZyIgPT4gImx1ZyIsCSJsaSIgPT4gImxpbSIsCSJsbiIgPT4gImxpbiIsCSJsbyIgPT4gImxhbyIs +CgkibHQiID0+ICJsaXQiLAkibHUiID0+ICJsdWIiLAkibHYiID0+ICJsYXYiLAoJIm1nIiA9PiAi +bWxnIiwJIm1oIiA9PiAibWFoIiwJIm1pIiA9PiAibWFvIiwJIm1rIiA9PiAibWFjIiwJIm1sIiA9 +PiAibWFsIiwJIm1uIiA9PiAibW9uIiwKCSJtciIgPT4gIm1hciIsCSJtcyIgPT4gIm1heSIsCSJt +dCIgPT4gIm1sdCIsCSJteSIgPT4gImJ1ciIsCgkibmEiID0+ICJuYXUiLAkibmIiID0+ICJub2Ii +LAkibmQiID0+ICJuZGUiLAkibmUiID0+ICJuZXAiLAkibmciID0+ICJuZG8iLAkibmwiID0+ICJk +dXQiLAoJIm5uIiA9PiAibm5vIiwJIm5vIiA9PiAibm9yIiwJIm5yIiA9PiAibmJsIiwJIm52IiA9 +PiAibmF2IiwJIm55IiA9PiAibnlhIiwKCSJvYyIgPT4gIm9jaSIsCSJvaiIgPT4gIm9qaSIsCSJv +bSIgPT4gIm9ybSIsCSJvciIgPT4gIm9yaSIsCSJvcyIgPT4gIm9zcyIsCgkicGEiID0+ICJwYW4i +LAkicGkiID0+ICJwbGkiLAkicGwiID0+ICJwb2wiLAkicHMiID0+ICJwdXMiLAkicHQiID0+ICJw +b3IiLAoJInF1IiA9PiAicXVlIiwKCSJybSIgPT4gInJvaCIsCSJybiIgPT4gInJ1biIsCSJybyIg +PT4gInJ1bSIsCSJydSIgPT4gInJ1cyIsCSJydyIgPT4gImtpbiIsCgkic2EiID0+ICJzYW4iLAki +c2MiID0+ICJzcmQiLAkic2QiID0+ICJzbmQiLAkic2UiID0+ICJzbWUiLAkic2ciID0+ICJzYWci +LAkic2kiID0+ICJzaW4iLAoJInNrIiA9PiAic2xvIiwJInNsIiA9PiAic2x2IiwJInNtIiA9PiAi +c21vIiwJInNuIiA9PiAic25hIiwJInNvIiA9PiAic29tIiwJInNxIiA9PiAiYWxiIiwKCSJzciIg +PT4gInNycCIsCSJzcyIgPT4gInNzdyIsCSJzdCIgPT4gInNvdCIsCSJzdSIgPT4gInN1biIsCSJz +diIgPT4gInN3ZSIsCSJzdyIgPT4gInN3YSIsCgkidGEiID0+ICJ0YW0iLAkidGUiID0+ICJ0ZWwi +LAkidGciID0+ICJ0Z2siLAkidGgiID0+ICJ0aGEiLAkidGkiID0+ICJ0aXIiLAkidGsiID0+ICJ0 +dWsiLAoJInRsIiA9PiAidGdsIiwJInRuIiA9PiAidHNuIiwJInRvIiA9PiAidG9uIiwJInRyIiA9 +PiAidHVyIiwJInRzIiA9PiAidHNvIiwJInR0IiA9PiAidGF0IiwKCSJ0dyIgPT4gInR3aSIsCSJ0 +eSIgPT4gInRhaCIsCgkidWciID0+ICJ1aWciLAkidWsiID0+ICJ1a3IiLAkidXIiID0+ICJ1cmQi +LAkidXoiID0+ICJ1emIiLAoJInZlIiA9PiAidmVuIiwJInZpIiA9PiAidmllIiwJInZvIiA9PiAi +dm9sIiwKCSJ3YSIgPT4gIndsbiIsCSJ3byIgPT4gIndvbCIsCgkieGgiID0+ICJ4aG8iLAoJInlp +IiA9PiAieWlkIiwJInlvIiA9PiAieW9yIiwKCSJ6YSIgPT4gInpoYSIsCSJ6aCIgPT4gImNoaSIs +CSJ6aCIgPT4gImNoaSIsCSJ6dSIgPT4gInp1bCIKfTsKCgo9aXRlbSBtZXRhZGF0YVByZWZpeAoK +VGhpcyBwbHVnaW4gaXMgZGVzaWduZWQgdG8gcmVwbGFjZSAodXNpbmcgYSBwbHVnaW4gYWxpYXMp +IHRoZSBleGlzdGluZyBleHBvcnQgcGx1Z2luLgpCeSBzZXR0aW5nIHRoaXMgdmFsdWUgdG8gc29t +ZXRoaW5nIG90aGVyIHRoYXQgJ3VrZXRkX2RjJywgYW5kIG5vdCBhbGlhc2luZyB0aGUgcGx1Z2lu +LCB5b3UgY2FuIGV4cG9zZSB0aGUKZGF0YSBpbiB0aGUgbmV3IGZvcm1hdCBpbiB0aGUgT0FJLVBN +SCBpbnRlcmZhY2UuIFRoaXMgY2FuIGJlIHVzZWZ1bCBmb3IgdGVzdGluZy4gSWYgdGhlIHZhbHVl +IGlzIHNldCBpbiBhCmNvbmZpZyBmaWxlIHVzaW5nOgogICRjLT57cGx1Z2luc30tPnsiRXhwb3J0 +OjpPQUlfVUtFVERfRENfMjAxNyJ9LT57cGFyYW1zfS0+e21ldGFkYXRhUHJlZml4fSA9ICJ1a2V0 +ZF9kY18yMDE3IjsKdGhlbiBhIFVSTCBvZgogIGh0dHA6Ly9TRVJWRVJfTkFNRS9jZ2kvb2FpMj92 +ZXJiPUdldFJlY29yZHMmbWV0YWRhdGFQcmVmaXg9dWtldGRfZGNfMjAxNyAKd2lsbCB1c2UgdGhp +cyBleHBvcnQgZm9ybWF0LgoKPWN1dAoKJERFRkFVTFR7bWV0YWRhdGFQcmVmaXh9ID0gJ3VrZXRk +X2RjJzsKCj1iYWNrCgo9Y3V0CgoKc3ViIG5ldwp7CglteSggJGNsYXNzLCAlb3B0cyApID0gQF87 +CgoJbXkgJHNlbGYgPSAkY2xhc3MtPlNVUEVSOjpuZXcoICVvcHRzICk7CgoJJHNlbGYtPntuYW1l +fSA9ICJVSyBFVEQgREMgT0FJIFNjaGVtYSI7Cgkkc2VsZi0+e2FjY2VwdH0gPSBbICdkYXRhb2Jq +L2VwcmludCcgXTsKCSRzZWxmLT57dmlzaWJsZX0gPSAiIjsKCSRzZWxmLT57c3VmZml4fSA9ICIu +eG1sIjsKCSRzZWxmLT57bWltZXR5cGV9ID0gInRleHQveG1sIjsKCgkjIG1ldGFkYXRhUHJlZml4 +IGlzIG92ZXJyaWRhYmxlIC0gc28gdGhlIHByb2ZpbGUgY291bGQgYmUgZW5hYmxlZCBhbG9uZ3Np +ZGUgdGhlIGV4aXN0aW5nIHVrZXRkX2RjIHByb2ZpbGUsIHVuZGVyIGEgZGlmZmVyZW50IG5hbWUJ +CgkjJHNlbGYtPnttZXRhZGF0YVByZWZpeH0gPSAidWtldGRfZGMiOwoJIwoJJHNlbGYtPnt4bWxu +c30gPSAiaHR0cDovL25hY2EuY2VudHJhbC5jcmFuZmllbGQuYWMudWsvZXRob3Mtb2FpLzIuMC8i +OwoJJHNlbGYtPntzY2hlbWFMb2NhdGlvbn0gPSAiaHR0cDovL25hY2EuY2VudHJhbC5jcmFuZmll +bGQuYWMudWsvZXRob3Mtb2FpLzIuMC91a2V0ZF9kYy54c2QiOwoKCWZvcihxdyggdGhlc2lzX3R5 +cGVfdG9fcXVhbG5hbWUgCgkJdGhlc2lzX3R5cGVfdG9fcXVhbGxldmVsCgkJY29udHJpYnV0b3Jf +dHlwZV90aGVzaXNfYWR2aXNvcgoJCWNyZWF0b3JfYW5kX29yY2lkCgkJYWR2aXNvcl9hbmRfb3Jj +aWQKCQlmdW5kZXJfYW5kX3Byb2plY3QKCQlkZXBhcnRtZW50cwoJCWRvaQoJCWxhbmdfdG9fM2No +YXIKCQlhZGRfYXR0cmlidXRlc190b19hZHZpc29yX2F1dGhvcmlkZW50aWZpZXIKCQlhZHZpc29y +X2F1dGhvcmlkZW50aWZpZXJfYXR0cmlidXRlcwoJCW1ldGFkYXRhUHJlZml4CgkpKQoJewoJCWlm +KCBkZWZpbmVkICRzZWxmLT57c2Vzc2lvbn0gKQoJCXsKCQkJJHNlbGYtPnskX30gPSAkc2VsZi0+ +cGFyYW0oICRfICk7CgkJfQoJCSRzZWxmLT57JF99ID0gJERFRkFVTFR7JF99IGlmICFkZWZpbmVk +ICRzZWxmLT57JF99OwoJfQoKCXJldHVybiAkc2VsZjsKfQoKCnN1YiBvdXRwdXRfZGF0YW9iagp7 +CglteSggJHBsdWdpbiwgJGRhdGFvYmogKSA9IEBfOwoKCW15ICR4bWwgPSAkcGx1Z2luLT54bWxf +ZGF0YW9iaiggJGRhdGFvYmogKTsKCglyZXR1cm4gRVByaW50czo6WE1MOjp0b19zdHJpbmcoICR4 +bWwgKTsKfQoKCgoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj +IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIwojIFN0ZXZlIENhcnIgLSBlcHJpbnRzIHJldmlz +aW9uIChzdGFuZGFyZCByZXZpc2lvbiBpbiBvcmRlciB0byBvZmZlcgojIHNvbWV0aGluZyBvdGhl +ciB0aGFuIGJhc2ljIGR1YmxpbiBjb3JlIC0gd2hpY2ggaXNuJ3QgZ29pbmcgdG8gYmUgZW5vdWdo +CiMgdG8gZW5jb2RlIHRoZSBjb21wbGV4IGRhdGEgdGhhdCB3ZSBhcmUgZGVhbGluZyB3aXRoIGZv +ciBlLXRoZXNlcykKIyBUaGlzIHN1YnJvdXRpbmUgdGFrZXMgYW4gZXByaW50IG9iamVjdCBhbmQg +cmVuZGVycyB0aGUgWE1MIERPTQojIHRvIGV4cG9ydCBhcyB0aGUgdWtldGRfZGMgZGVmYXVsdCBm +b3JtYXQgaW4gT0FJLgojCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj +IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCnN1YiB4bWxfZGF0YW9iagp7CglteSggJHBs +dWdpbiwgJGVwcmludCApID0gQF87CgoJIyB3ZSBoYXZlIGEgdmFyaWV0eSBvZiBuYW1lc3BhY2Vz +IHNpbmNlIHdlJ3JlIGRvaW5nIHF1YWxpZmllZCBkdWJsaW4gY29yZSwgc28gd2UgbmVlZCBhbgoJ +IyBhcnJheSBvZiByZWZlcmVuY2VzIHRvIHRocmVlIGVsZW1lbnQgYXJyYXlzIGluIG91ciBkYXRh +IHN0cnVjdHVyZQoJbXkgQGV0ZERhdGEgPSAkcGx1Z2luLT5lcHJpbnRfdG9fdWtldGRfZGMoICRl +cHJpbnQgKTsKCglteSAkbmFtZXNwYWNlID0gJHBsdWdpbi0+e3htbG5zfTsKCW15ICRzY2hlbWEg +PSAkcGx1Z2luLT57c2NoZW1hTG9jYXRpb259OwoKCSMgdGhlIGVwcmludCBtYXkgd2VsbCBiZSBu +dWxsIHNpbmNlIGl0IG1heSBub3QgYmUgYSB0aGVzaXMgYnV0IGFuIGFydGljbGUKCW15ICR1a2V0 +ZF9kYyA9ICRwbHVnaW4tPntzZXNzaW9ufS0+bWFrZV9lbGVtZW50KAoJCSJ1a2V0ZF9kYzp1a2V0 +ZGRjIiwKCQkieG1sbnM6ZGMiID0+ICJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIs +CgkJInhtbG5zOnhzaSIgPT4gImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3Rh +bmNlIiwKCQkjIFRPIERPIGNoZWNrIG91dCB0aGF0IHRoZXNlIGFyZSBwcm9wZXJseSBhY2NlcHRh +YmxlIHdoZW4gdmFsaWRhdGVkCgkJIyBUTyBETyBwdXQgaW4gZmluYWwgbG9jYXRpb24gZm9yIG91 +ciB4c2QgYW5kIG5hbWVzcGFjZSAtIGl0J2xsIHByb2JhYmx5IGJlIHNvbWV3aGVyZSBvbiBldGhv +cy5hYy51ayBvciBibC51awoJCSJ4c2k6c2NoZW1hTG9jYXRpb24iID0+ICRuYW1lc3BhY2UuIiAi +LiRzY2hlbWEsCgkJInhtbG5zOnVrZXRkX2RjIiA9PiAkbmFtZXNwYWNlLAoJCSJ4bWxuczpkY3Rl +cm1zIiA9PiAiaHR0cDovL3B1cmwub3JnL2RjL3Rlcm1zLyIsCgkJInhtbG5zOnVrZXRkdGVybXMi +ID0+ICJodHRwOi8vbmFjYS5jZW50cmFsLmNyYW5maWVsZC5hYy51ay9ldGhvcy1vYWkvdGVybXMv +IgoJKTsKCSMgdHVybiB0aGUgbGlzdCBvZiBwYWlycyBpbnRvIFhNTCBibG9ja3MgKGluZGVudGVk +IGJ5IDgpIGFuZCBhZGQgdGhlbQoJIyB0aGVtIHRvIHRoZSBFVEQgZWxlbWVudC4KIAoJZm9yZWFj +aCggQGV0ZERhdGEgKQoJewoJCWlmKHNjYWxhciBAJF8gPCA0KXsKCQkJJHVrZXRkX2RjLT5hcHBl +bmRDaGlsZCggJHBsdWdpbi0+e3Nlc3Npb259LT5yZW5kZXJfZGF0YV9lbGVtZW50KCA4LCAkXy0+ +WzJdLiI6Ii4kXy0+WzBdLCAkXy0+WzFdICkgKTsKCQl9CgkJZWxzaWYoIHJlZiAkXy0+WzNdIGVx +ICJIQVNIIiApewoJCQkjIGhhbmRsZSBtdWx0aXBsZSBhdHRyaWJ1dGVzCgkJCSR1a2V0ZF9kYy0+ +YXBwZW5kQ2hpbGQoICRwbHVnaW4tPntzZXNzaW9ufS0+cmVuZGVyX2RhdGFfZWxlbWVudCggOCwg +JF8tPlsyXS4iOiIuJF8tPlswXSwgJF8tPlsxXSwgJXskXy0+WzNdfSAgKSApOwoJCX0KCQllbHNl +IHsKCQkJIyB0aGVyZSdzIGFuIGF0dHJpYnV0ZSB0byBhZGQKCQkJJHVrZXRkX2RjLT5hcHBlbmRD +aGlsZCggJHBsdWdpbi0+e3Nlc3Npb259LT5yZW5kZXJfZGF0YV9lbGVtZW50KCA4LCAkXy0+WzJd +LiI6Ii4kXy0+WzBdLCAkXy0+WzFdLCAieHNpOnR5cGUiPT4gJF8tPlszXSAgKSApOwoJCX0KCX0K +CXJldHVybiAkdWtldGRfZGM7Cgp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj +IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIwojIFN0ZXZlIENh +cnIKIyBzdWJyb3V0aW5lIHRvIGNyZWF0ZSBhIHN1aXRhYmxlIGFycmF5IG9mIGFycmF5IHJlZnMg +dG8gdGhlIHR3byBpdGVtIGFycmF5cwojIGFzIHBlciByb3V0aW5lIGRpcmVjdGx5IGFib3ZlIGZv +ciBkdWJsaW4gY29yZSAoZGMpLiBUaGUgb25seSBkaWZmZXJlbmNlIGlzIHRoYXQKIyBxdWFsaWZp +ZWQgZHVibGluIGNvcmUgd2lsbCBoYXZlIGFkZGl0aW9uYWwgbmFtZXNwYWNlcyBhbmQgbW9yZSBl +bGVtZW50cyBmcm9tCiMgdGhlIGVwcmludCBjYW4gYmUgdXRpbGlzZWQuIFNvIHdlIHJldHVybiBh +IGxvbmdlciwgdGhyZWUgZWxlbWVudCBhcnJheSBwZXIKIyBhcnJheSByZWYuIFRoaXMgbWF5IG5l +ZWQgcmV0aGlua2luZyB3aGVuIHdlIGdldCB0byBhdHRyaWJ1dGVzIChlLmcuIHhzaTp0eXBlPSJV +UkkiKQojCiMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj +IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgpzdWIgZXByaW50X3RvX3VrZXRkX2RjCnsK +CW15KCAkcGx1Z2luLCAkZXByaW50ICkgPSBAXzsKCglteSAkc2Vzc2lvbiA9ICRwbHVnaW4tPntz +ZXNzaW9ufTsKCglteSBAZXRkZGF0YSA9ICgpOwoJIyB3ZSBzdGlsbCB3YW50IG11Y2ggdGhlIHNh +bWUgZGMgZGF0YSBzbyBpbmNsdWRlIHVuZGVyIHRoZSBkYyBuYW1lc3BhY2UKCSMgYnkgcHV0dGlu +ZyB0aGUgbmFtZXNwYWNlIGxhc3QgdGhpcyB3b24ndCBicmVhayB0aGUgc2ltcGxlIGRjIHJlbmRl +cmluZyByb3V0aW5lCgkjIGFib3ZlLiBTa2lwIGFsbCByZWNvcmRzIHRoYXQgYXJlbid0IHRoZXNl +cyBiZWNhdXNlIHVrZXRkX2RjIGlzIG5vbnNlbnNpY2FsIGZvcgoJIyBub24tdGhlc2lzIGl0ZW1z +LgoJCglpZigkZXByaW50LT5nZXRfdmFsdWUoICJ0eXBlIikgZXEgInRoZXNpcyIgfHwgJGVwcmlu +dC0+Z2V0X3ZhbHVlKCAidHlwZSIgKSBlcSAiVGhlc2lzIil7CgoJCSNmdW5jdGlvbiB0byBza2lw +IHJlbmRlcmluZyBzcGVjaWZpYyBlcHJpbnRzIGluIHRoZSBtZXRhZGF0YQoJCWlmKCAkcGx1Z2lu +LT5yZXBvc2l0b3J5LT5jYW5fY2FsbCggIm9haV91a2V0ZF9kY19za2lwX2VwcmludCIgKSApCgkJ +ewoJCQlpZiggJHBsdWdpbi0+cmVwb3NpdG9yeS0+Y2FsbCggIm9haV91a2V0ZF9kY19za2lwX2Vw +cmludCIsICRlcHJpbnQgKSApewoJCQkJI3JldHVybiAoZW1wdHkpIGFycmF5IHRvIGdlbmVyYXRl +IGEgJ2Nhbm5vdERpc3NlbWluYXRlRm9ybWF0JyByZXNwb25zZQoJCQkJcmV0dXJuIEBldGRkYXRh +OwoJCQl9OwoJCX0KCQkKCQlwdXNoIEBldGRkYXRhLCBbICJ0aXRsZSIsICRlcHJpbnQtPmdldF92 +YWx1ZSggInRpdGxlIiApLCAiZGMiIF07IAoJCQoJCWlmKCAkZXByaW50LT5pc19zZXQoICJkYXRl +IiApICkKCQl7CgkJCXB1c2ggQGV0ZGRhdGEsIFsgImRhdGUiLCAkZXByaW50LT5nZXRfdmFsdWUo +ICJkYXRlIiApLCAiZGMiIF07CgkJfQoKCQkjZ2V0IGRhdGEgZnJvbSByZWZlcmVuY2VkIGZpZWxk +IGZ1bmN0aW9ucwoJCWZvcmVhY2gocXcoIGNyZWF0b3JfYW5kX29yY2lkIGFkdmlzb3JfYW5kX29y +Y2lkIGZ1bmRlcl9hbmRfcHJvamVjdCBkZXBhcnRtZW50cyBkb2kgKSkKCQl7CgkJCXB1c2ggQGV0 +ZGRhdGEsICZ7JHBsdWdpbi0+eyRffX0oICRwbHVnaW4sICRlcHJpbnQgKTsKCQl9CgoJCWlmKCAk +ZXByaW50LT5leGlzdHNfYW5kX3NldCgic3ViamVjdHMiKSkgIyNDaGVjayBmb3IgZXhpc3RlbmNl +IGJlZm9yZSBhY2Nlc3NpbmcuIGp5MmUwOAoJCXsKCQkJbXkgJHN1YmplY3RpZDsKCQkJZm9yZWFj +aCAkc3ViamVjdGlkICggQHskZXByaW50LT5nZXRfdmFsdWUoICJzdWJqZWN0cyIgKX0gKQoJCQl7 +CgkJCQlteSAkc3ViamVjdCA9IEVQcmludHM6OkRhdGFPYmo6OlN1YmplY3QtPm5ldyggJHNlc3Np +b24sICRzdWJqZWN0aWQgKTsKCQkJCSMgYXZvaWQgcHJvYmxlbXMgd2l0aCBiYWQgc3ViamVjdHMK +CQkJCW5leHQgdW5sZXNzKCBkZWZpbmVkICRzdWJqZWN0ICk7IAoJCQkJcHVzaCBAZXRkZGF0YSwg +WyAic3ViamVjdCIsIEVQcmludHM6OlV0aWxzOjp0cmVlX3RvX3V0ZjgoICRzdWJqZWN0LT5yZW5k +ZXJfZGVzY3JpcHRpb24oKSApLCAiZGMiIF07CgkJCX0KCQl9CgkJIyBTdGV2ZSBDYXJyIDogd2Un +cmUgdXNpbmcgcWRjLCBuYW1lc3BhY2UgZGN0ZXJtcywgdmVyc2lvbiBvZiBkZXNjcmlwdGlvbiAt +ICdhYnN0cmFjdCcKCQlpZiggJGVwcmludC0+ZXhpc3RzX2FuZF9zZXQoICJhYnN0cmFjdCIgKSAp +ewoJCQlwdXNoIEBldGRkYXRhLCBbICJhYnN0cmFjdCIsICRlcHJpbnQtPmdldF92YWx1ZSggImFi +c3RyYWN0IiApLCAiZGN0ZXJtcyIgXTsKCQl9CgkJCgkJIyBTdGV2ZSBDYXJyIDogdGhlc2VzIGFy +ZW4ndCB0ZWNobmljYWxseSAncHVibGlzaGVkJyBzbyB3ZSBjYW4ndCBhc3N1bWUgYSBwdWJsaXNo +ZXIgaGVyZSBhcyBpbiBvcmlnaW5hbCBjb2RlCgkJaWYoICRlcHJpbnQtPmV4aXN0c19hbmRfc2V0 +KCAicHVibGlzaGVyIiApICl7CgkJCXB1c2ggQGV0ZGRhdGEsIFsgImNvbW1lcmNpYWwiLCAkZXBy +aW50LT5nZXRfdmFsdWUoICJwdWJsaXNoZXIiICksICJ1a2V0ZHRlcm1zIiBdOyAKCQl9CgkKCQlt +eSAkZWRpdG9ycyA9ICRlcHJpbnQtPmdldF92YWx1ZSggImVkaXRvcnNfbmFtZSIgKTsKCQlpZigg +ZGVmaW5lZCAkZWRpdG9ycyApCgkJewoJCQlmb3JlYWNoIG15ICRlZGl0b3IgKCBAeyRlZGl0b3Jz +fSApCgkJCXsKCQkJCXB1c2ggQGV0ZGRhdGEsIFsgImNvbnRyaWJ1dG9yIiwgRVByaW50czo6VXRp +bHM6Om1ha2VfbmFtZV9zdHJpbmcoICRlZGl0b3IgKSwgImRjIiBdOwoJCQl9CgkJfQoKCQkjIyBE +YXRlIGZvciBkaXNjb3ZlcnkuIEZvciBhIG1vbnRoL2RheSB3ZSBkb24ndCBoYXZlLCBhc3N1bWUg +MDEuCgkJbXkgJGRhdGUgPSAkZXByaW50LT5nZXRfdmFsdWUoICJkYXRlIiApOwoJCWlmKCBkZWZp +bmVkICRkYXRlICkKCQl7CgkgICAgICAgIAkkZGF0ZSA9fiBtL14oXGRcZFxkXGQpKC1cZFxkKT8v +OwoJCQlteSAkaXNzdWVkID0gJDE7CgkJCWlmKCBkZWZpbmVkICQyICkgeyAkaXNzdWVkIC49ICQy +OyB9CgkJCXB1c2ggQGV0ZGRhdGEsIFsgImlzc3VlZCIsICRpc3N1ZWQsICJkY3Rlcm1zIiBdOwoJ +CX0KCQoKCQlwdXNoIEBldGRkYXRhLCBbICJ0eXBlIiwgJHNlc3Npb24tPmdldF90eXBlX25hbWUo +ICJlcHJpbnQiLCAkZXByaW50LT5nZXRfdmFsdWUoICJ0eXBlIiApICksICJkYyIgXTsKCgkJIyBU +aGUgVVJMIG9mIHRoZSBhYnN0cmFjdCBwYWdlIGlzIHRoZSBkY3Rlcm1zIGlzcmVmZXJlbmNlZGJ5 +CgkJcHVzaCBAZXRkZGF0YSwgWyAiaXNSZWZlcmVuY2VkQnkiLCAkZXByaW50LT5nZXRfdXJsKCks +ICJkY3Rlcm1zIiBdOwoKCgkJbXkgQGRvY3VtZW50cyA9ICRlcHJpbnQtPmdldF9hbGxfZG9jdW1l +bnRzKCk7CgkJbXkgJG1pbWV0eXBlcyA9ICRzZXNzaW9uLT5jb25maWcoICJvYWkiLCAibWltZV90 +eXBlcyIgKTsKCQlmb3JlYWNoKCBAZG9jdW1lbnRzICkKCQl7CgkJCSNmdW5jdGlvbiB0byBza2lw +IHJlbmRlcmluZyBzcGVjaWZpYyBkb2N1bWVudHMgaW4gdGhlIG1ldGFkYXRhCgkJCWlmKCAkcGx1 +Z2luLT5yZXBvc2l0b3J5LT5jYW5fY2FsbCggIm9haV91a2V0ZF9kY19za2lwX2RvY3VtZW50IiAp +ICkKCQkJewoJCQkJbmV4dCBpZiAkcGx1Z2luLT5yZXBvc2l0b3J5LT5jYWxsKCAib2FpX3VrZXRk +X2RjX3NraXBfZG9jdW1lbnQiLCAkXyApOwoJCQl9CgoJCQlteSAkZm9ybWF0ID0gJG1pbWV0eXBl +cy0+eyRfLT5nZXRfdmFsdWUoImZvcm1hdCIpfTsKCQkJJGZvcm1hdCA9ICRfLT5nZXRfdmFsdWUo +ImZvcm1hdCIpIHVubGVzcyBkZWZpbmVkICRmb3JtYXQ7CgkJCSMkZm9ybWF0ID0gImFwcGxpY2F0 +aW9uL29jdGV0LXN0cmVhbSIgdW5sZXNzIGRlZmluZWQgJGZvcm1hdDsKCgkJCXB1c2ggQGV0ZGRh +dGEsIFsgImlkZW50aWZpZXIiLCAkXy0+Z2V0X3VybCgpLCAiZGMiLCAiZGN0ZXJtczpVUkkiIF07 +CgkJCXB1c2ggQGV0ZGRhdGEsIFsgImZvcm1hdCIsICRmb3JtYXQsICJkYyIgXSBpZiBkZWZpbmVk +ICRmb3JtYXQ7CgkJCSMgaW5mb3JtYXRpb24gYWJvdXQgZXh0ZW50IGFuZCBjaGVja3N1bXMgY291 +bGQgYmUgYWRkZWQgaGVyZSwgaWYgdGhleSBhcmUgYXZhaWxhYmxlCgkJCSMgdGhlIGRlZmF1bHQg +ZXByaW50IGRvZXNuJ3QgaGF2ZSBhIHBsYWNlIGZvciB0aGlzIGJ1dCBib3RoIGNvdWxkIGJlIGdl +bmVyYXRlZCBkeW5hbWljYWxseQoKCQkJIyBvdXRwdXQgYSBsYW5ndWFnZSwgZW1iYXJnb2RhdGUg +YW5kIHJpZ2h0cyBlbGVtZW50IGZvciBlYWNoIGRvY3VtZW50IHdoZXJlIHBvc3NpYmxlCgkJCSMg +dGhpcyBtYXkgYmUgaW4gYWRkaXRpb24gdG8gZmllbGRzIGRlZmluZWQgYXQgdGhlIGVwcmludCBs +ZXZlbCAoc2VlIGJlbG93KQoJCQlpZiggJF8tPmV4aXN0c19hbmRfc2V0KCAibGFuZ3VhZ2UiICkg +KQoJCQl7CgkJCQlteSAkbGFuZyA9ICRfLT5nZXRfdmFsdWUoICJsYW5ndWFnZSIgKTsKCQkJCWlm +KCBkZWZpbmVkICRwbHVnaW4tPntsYW5nX3RvXzNjaGFyfXsgJGxhbmcgfSApewoJCQkJCXB1c2gg +QGV0ZGRhdGEsIFsgImxhbmd1YWdlIiwgJHBsdWdpbi0+e2xhbmdfdG9fM2NoYXJ9eyAkbGFuZyB9 +LCAiZGMiLCB7ICJ4c2k6dHlwZSIgPT4gImRjdGVybXM6SVNPNjM5LTIiIH0gXTsKCQkJCX0gZWxz +ZSB7CgkJCQkJcHVzaCBAZXRkZGF0YSwgWyAibGFuZ3VhZ2UiLCAkbGFuZywgImRjIl07CgkJCQl9 +CgkJCX0KCQkJaWYoICRfLT5leGlzdHNfYW5kX3NldCggImRhdGVfZW1iYXJnbyIgKSApCgkJCXsK +CQkJCXB1c2ggQGV0ZGRhdGEsIFsiZW1iYXJnb2RhdGUiLCBfbGFzdF9kYXlfb2ZfZW1iYXJnbygg +JF8tPmdldF92YWx1ZSggImRhdGVfZW1iYXJnbyIgKSApLCAidWtldGR0ZXJtcyJdOwoJCQl9CgkJ +CWlmKCAkXy0+ZXhpc3RzX2FuZF9zZXQoICJzZWN1cml0eSIgKSApCgkJCXsKCQkJCXB1c2ggQGV0 +ZGRhdGEsIFsiYWNjZXNzUmlnaHRzIiwgJF8tPmdldF92YWx1ZSgic2VjdXJpdHkiKSwgImRjdGVy +bXMiXTsKCQkJfQoJCX0KCQoJCSMgU3RldmUgQ2FyciA6IHdlJ3JlIHVzaW5nIGlzcmVmZXJlbmNl +ZGJ5IGZvciB0aGUgb2ZmaWNpYWwgdXJsIHNwbGFzaCBwYWdlCgkJaWYoICRlcHJpbnQtPmV4aXN0 +c19hbmRfc2V0KCAib2ZmaWNpYWxfdXJsIiApICkKCQl7CgkJCXB1c2ggQGV0ZGRhdGEsIFsgImlz +UmVmZXJlbmNlZEJ5IiwgJGVwcmludC0+Z2V0X3ZhbHVlKCAib2ZmaWNpYWxfdXJsIiApLCAiZGN0 +ZXJtcyIsICJkY3Rlcm1zOlVSSSJdOwoJCX0KCgkJIyBxdWFsaWZpY2F0aW9ubmFtZSA9IFBoLkQs +IEVkLkQsIE0uUGhpbAoJCWlmKCAkZXByaW50LT5leGlzdHNfYW5kX3NldCggInRoZXNpc19uYW1l +IiApKXsKCQkJcHVzaCBAZXRkZGF0YSwgWyAicXVhbGlmaWNhdGlvbm5hbWUiLCAkZXByaW50LT5n +ZXRfdmFsdWUoICJ0aGVzaXNfbmFtZSIgKSwgInVrZXRkdGVybXMiXTsKCQl9CgkJZWxzaWYoICRl +cHJpbnQtPmV4aXN0c19hbmRfc2V0KCAidGhlc2lzX3R5cGUiICkgKQoJCXsKCQkJIyBhdHRlbXB0 +IHRvIGRlcml2ZSBhIHF1YWxpZmljYXRpb25uYW1lIGZyb20gdGhlc2lzX3R5cGUKCQkJbXkgJG5h +bWUgPSAkZXByaW50LT5nZXRfdmFsdWUoICJ0aGVzaXNfdHlwZSIgKTsKCQkJaWYoIGRlZmluZWQg +JHBsdWdpbi0+e3RoZXNpc190eXBlX3RvX3F1YWxuYW1lfXsgJG5hbWUgfSApewoJCQkJJG5hbWUg +PSAkcGx1Z2luLT57dGhlc2lzX3R5cGVfdG9fcXVhbG5hbWV9eyAkbmFtZSB9OwoJCQl9CgkJCXB1 +c2ggQGV0ZGRhdGEsIFsgInF1YWxpZmljYXRpb25uYW1lIiwgJG5hbWUsICJ1a2V0ZHRlcm1zIl07 +CgkJfQoKCQkjIHF1YWxpZmljYXRpb25sZXZlbCBzaG91bGQgYmUgZS5nLiAnbWFzdGVycycgb3Ig +J2RvY3RvcmFsJy4KCQkjIEluIG9sZGVyIEVQcmludHMgY29uZmlndXJhdGlvbiwgdGhlICd0aGVz +aXNfdHlwZScgZmllbGQgKGFsc28gcmVmZXJlbmNlZCBhYm92ZSkgY29udGFpbmVkCgkJIyBwaGQs +IGVuZ2QsIG1waGlsLiBUaGVzZSB2YWx1ZXMgYXJlIG1hcHBlZCBpbiB0aGVzaXNfdHlwZV90b19x +dWFsbGV2ZWwuCgkJIyBJbiBuZXdlciBjb25maWcsIHRoZSB0aGVzaXNfdHlwZSBpcyBhbHJlYWR5 +IHRoZSBjb3JyZWN0IHZhbHVlLgoJCWlmKCAkZXByaW50LT5leGlzdHNfYW5kX3NldCggInRoZXNp +c190eXBlIikpewoJCQlteSAkdHlwZSA9ICRlcHJpbnQtPmdldF92YWx1ZSggInRoZXNpc190eXBl +IiApOwoJCQlpZiggZGVmaW5lZCAkcGx1Z2luLT57dGhlc2lzX3R5cGVfdG9fcXVhbGxldmVsfXsg +JHR5cGUgfSApCgkJCXsKCQkJCSR0eXBlID0gJHBsdWdpbi0+e3RoZXNpc190eXBlX3RvX3F1YWxs +ZXZlbH17ICR0eXBlIH07CgkJCX0KCQkJcHVzaCBAZXRkZGF0YSwgWyAicXVhbGlmaWNhdGlvbmxl +dmVsIiwgJHR5cGUsICJ1a2V0ZHRlcm1zIl07CgkJfQoJCWlmKCAkZXByaW50LT5leGlzdHNfYW5k +X3NldCggImluc3RpdHV0aW9uIiApKXsKCQkJcHVzaCBAZXRkZGF0YSwgWyAiaW5zdGl0dXRpb24i +LCAkZXByaW50LT5nZXRfdmFsdWUoICJpbnN0aXR1dGlvbiIgKSwgInVrZXRkdGVybXMiXTsKCQl9 +CgoJCWlmKCAkZXByaW50LT5leGlzdHNfYW5kX3NldCggImxhbmd1YWdlIiApKXsKCQkJbXkgJGxh +bmcgPSAkZXByaW50LT5nZXRfdmFsdWUoICJsYW5ndWFnZSIgKTsKCQkJaWYoIGRlZmluZWQgJHBs +dWdpbi0+e2xhbmdfdG9fM2NoYXJ9eyAkbGFuZyB9ICl7CgkJCQlwdXNoIEBldGRkYXRhLCBbICJs +YW5ndWFnZSIsICRwbHVnaW4tPntsYW5nX3RvXzNjaGFyfXsgJGxhbmcgfSwgImRjIiwgeyAieHNp +OnR5cGUiID0+ICJkY3Rlcm1zOklTTzYzOS0yIiB9IF07CgkJCX0gZWxzZSB7CgkJCQlwdXNoIEBl +dGRkYXRhLCBbICJsYW5ndWFnZSIsICRsYW5nLCAiZGMiXTsKCQkJfQoJCX0KCgkJaWYoICRlcHJp +bnQtPmV4aXN0c19hbmRfc2V0KCAiYWx0X3RpdGxlIiApKXsKCQkJcHVzaCBAZXRkZGF0YSwgWyAi +YWx0ZXJuYXRpdmUiLCAkZXByaW50LT5nZXRfdmFsdWUoImFsdF90aXRsZSIgKSwgImRjdGVybXMi +XTsKCQl9CgkJaWYoICRlcHJpbnQtPmV4aXN0c19hbmRfc2V0KCAiY2hlY2tzdW0iICkpewoJCQlw +dXNoIEBldGRkYXRhLCBbICJjaGVja3N1bSIsICRlcHJpbnQtPmdldF92YWx1ZSgiY2hlY2tzdW0i +KSwgInVrZXRkdGVybXMiIF07CgkJfQoJCWlmKCAkZXByaW50LT5leGlzdHNfYW5kX3NldCggImRh +dGVfZW1iYXJnbyIgKSl7CgkJCXB1c2ggQGV0ZGRhdGEsIFsiZW1iYXJnb2RhdGUiLCAkZXByaW50 +LT5nZXRfdmFsdWUoImRhdGVfZW1iYXJnbyIpLCAidWtldGR0ZXJtcyJdOwoJCX0KCQlpZiggJGVw +cmludC0+ZXhpc3RzX2FuZF9zZXQoICJlbWJhcmdvX3JlYXNvbiIgKSl7CgkJCXB1c2ggQGV0ZGRh +dGEsIFsiZW1iYXJnb19yZWFzb24iLCAkZXByaW50LT5nZXRfdmFsdWUoImVtYmFyZ29fcmVhc29u +IiksICJ1a2V0ZHRlcm1zIl07CgkJfQoJCWlmKCAkZXByaW50LT5leGlzdHNfYW5kX3NldCggInJp +Z2h0cyIgKSl7CgkJCXB1c2ggQGV0ZGRhdGEsIFsicmlnaHRzIiwgJGVwcmludC0+Z2V0X3ZhbHVl +KCJyaWdodHMiKSwgImRjIl07CgkJfQoJCWlmKCAkZXByaW50LT5leGlzdHNfYW5kX3NldCggImNp +dGF0aW9ucyIgKSl7CgkJCXB1c2ggQGV0ZGRhdGEsIFsiaGFzVmVyc2lvbiIsICRlcHJpbnQtPmdl +dF92YWx1ZSgiY2l0YXRpb25zIiksICJkY3Rlcm1zIl07CgkJfQoJCWlmKCAkZXByaW50LT5leGlz +dHNfYW5kX3NldCggInJlZmVyZW5jZXRleHQiICkpewoJCQlwdXNoIEBldGRkYXRhLCBbInJlZmVy +ZW5jZXMiLCAkZXByaW50LT5nZXRfdmFsdWUoInJlZmVyZW5jZXRleHQiKSwgImRjdGVybXMiXTsK +CQl9CgkJCgl9CgkKCXJldHVybiBAZXRkZGF0YTsKfQoKc3ViIGRlcGFydG1lbnRzCnsKCW15KCAk +cGx1Z2luLCAkZXByaW50ICkgPSBAXzsKCglteSBAZGVwdHM7CgoJaWYoICRlcHJpbnQtPmV4aXN0 +c19hbmRfc2V0KCAiZGl2aXNpb25zIiApICkKCXsKCQlmb3JlYWNoIG15ICRkaXZfaWQgKCBAeyRl +cHJpbnQtPmdldF92YWx1ZSggImRpdmlzaW9ucyIgKX0gKQogICAgICAgICAgICAgICAgewoJCQlt +eSAkZGVwdCA9IEVQcmludHM6OkRhdGFPYmo6OlN1YmplY3QtPm5ldyggJHBsdWdpbi0+e3Nlc3Np +b259LCAkZGl2X2lkICk7CiAgICAgICAgICAgICAgICAgICAgICAgICMgYXZvaWQgcHJvYmxlbXMg +d2l0aCBiYWQgc3ViamVjdHMKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCB1bmxlc3MoIGRl +ZmluZWQgJGRlcHQgKTsKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAZGVwdHMsIFsgImRl +cGFydG1lbnQiLCBFUHJpbnRzOjpVdGlsczo6dHJlZV90b191dGY4KCAkZGVwdC0+cmVuZGVyX2Rl +c2NyaXB0aW9uKCkgKSwgInVrZXRkdGVybXMiIF07CiAgICAgICAgICAgICAgICB9Cgl9CgoJaWYo +ICRlcHJpbnQtPmV4aXN0c19hbmRfc2V0KCAiZGVwYXJ0bWVudCIgKSkKCXsKCQlwdXNoIEBkZXB0 +cywgWyAiZGVwYXJ0bWVudCIsICRlcHJpbnQtPmdldF92YWx1ZSggImRlcGFydG1lbnQiICksICJ1 +a2V0ZHRlcm1zIl07Cgl9CgoJcmV0dXJuIEBkZXB0czsKfQoKc3ViIGRvaQp7CglteSggJHBsdWdp +biwgJGVwcmludCApID0gQF87CgoJaWYoICRlcHJpbnQtPmV4aXN0c19hbmRfc2V0KCAiZG9pIiAp +ICkKCXsKCQlteSAkZG9pID0gJHBsdWdpbi0+X2Zvcm1hdF9kb2koICRlcHJpbnQtPmdldF92YWx1 +ZSggImRvaSIgKSApOwoJCWlmKCBkZWZpbmVkICRkb2kgKQoJCXsKCQkJcmV0dXJuIFsgImlkZW50 +aWZpZXIiLCAkZG9pLCAiZGMiLCAiZGN0ZXJtczpET0kiIF07CgkJfQoJfQoKCWlmKCAkZXByaW50 +LT5leGlzdHNfYW5kX3NldCggImlkX251bWJlciIgKSApewoJCW15ICRkb2kgPSAkcGx1Z2luLT5f +Zm9ybWF0X2RvaSggJGVwcmludC0+Z2V0X3ZhbHVlKCAiaWRfbnVtYmVyIiApICk7CgkJaWYoIGRl +ZmluZWQgJGRvaSApCgkJewoJCQlyZXR1cm4gWyAiaWRlbnRpZmllciIsICRkb2ksICJkYyIsICJk +Y3Rlcm1zOkRPSSIgXTsKCQl9Cgl9CgoJcmV0dXJuOwp9CgoKc3ViIGNyZWF0b3JfYW5kX29yY2lk +CnsKCW15KCAkcGx1Z2luLCAkZXByaW50ICkgPSBAXzsKCglteSBAZGNfY3JlYXRvcnMgPSAoKTsJ +CglteSBAb3JjaWRzID0gKCk7CQoKCW15ICRjcmVhdG9ycyA9ICRlcHJpbnQtPmdldF92YWx1ZSgg +ImNyZWF0b3JzIiApOwoJaWYoIGRlZmluZWQgJGNyZWF0b3JzICkKCXsKCQlmb3JlYWNoIG15ICRj +cmVhdG9yICggQHskY3JlYXRvcnN9ICkKCQl7CgkJCXB1c2ggQGRjX2NyZWF0b3JzLCBbICJjcmVh +dG9yIiwgRVByaW50czo6VXRpbHM6Om1ha2VfbmFtZV9zdHJpbmcoICRjcmVhdG9yLT57bmFtZX0g +KSwgImRjIiBdOwoJCQlpZiggRVByaW50czo6VXRpbHM6OmlzX3NldCggJGNyZWF0b3ItPntvcmNp +ZH0gKSApIAoJCQl7CgkJCQlwdXNoIEBvcmNpZHMsIFsgImF1dGhvcmlkZW50aWZpZXIiLCAkcGx1 +Z2luLT5fZm9ybWF0X29yY2lkKCAkY3JlYXRvci0+e29yY2lkfSApLCAidWtldGR0ZXJtcyIsIHsg +InhzaTp0eXBlIiA9PiAidWtldGR0ZXJtczpPUkNJRCIgfSAgXTsKCQkJfQoJCX0KCX0KCglyZXR1 +cm4gQGRjX2NyZWF0b3JzLCBAb3JjaWRzOwp9CgpzdWIgYWR2aXNvcl9hbmRfb3JjaWQKewoJbXko +ICRwbHVnaW4sICRlcHJpbnQgKSA9IEBfOwoKCW15IEBhZHZpc29ycyA9ICgpOwkKCW15IEBvcmNp +ZHMgPSAoKTsJCgoJaWYoICRlcHJpbnQtPmV4aXN0c19hbmRfc2V0KCAiYWR2aXNvciIgKSApCgl7 +CgkJcHVzaCBAYWR2aXNvcnMsIFsgImFkdmlzb3IiLCAkZXByaW50LT5nZXRfdmFsdWUoICJhZHZp +c29yIiApLCAidWtldGR0ZXJtcyJdOwoJfQoJIyBhbHNvIGxvb2sgaW4gY29udHJpYnV0b3JzCglp +ZiggJGVwcmludC0+ZXhpc3RzX2FuZF9zZXQoICJjb250cmlidXRvcnMiICkgKQoJewoJCWZvcmVh +Y2ggbXkgJGNvbnRyaWIgKCBAeyAkZXByaW50LT5nZXRfdmFsdWUoICJjb250cmlidXRvcnMiICkg +fSApCgkJewoJCQluZXh0IHVubGVzcyBkZWZpbmVkICRjb250cmliLT57dHlwZX0gJiYgZGVmaW5l +ZCAkY29udHJpYi0+e25hbWV9OwoJCQluZXh0IHVubGVzcyAkY29udHJpYi0+e3R5cGV9IGVxICRw +bHVnaW4tPntjb250cmlidXRvcl90eXBlX3RoZXNpc19hZHZpc29yfTsKCQkJcHVzaCBAYWR2aXNv +cnMsIFsgImFkdmlzb3IiLCBFUHJpbnRzOjpVdGlsczo6bWFrZV9uYW1lX3N0cmluZyggJGNvbnRy +aWItPntuYW1lfSApLCAidWtldGR0ZXJtcyIgXTsKCQkJaWYoIEVQcmludHM6OlV0aWxzOjppc19z +ZXQoICRjb250cmliLT57b3JjaWR9ICkgKQoJCQl7CgkJCQlwdXNoIEBvcmNpZHMsIFsgImF1dGhv +cmlkZW50aWZpZXIiLCAkcGx1Z2luLT5fZm9ybWF0X29yY2lkKCAkY29udHJpYi0+e29yY2lkfSAp +LCAidWtldGR0ZXJtcyIsICRwbHVnaW4tPl9hdHRyaWJ1dGVzX2Zvcl9hZHZpc29yX2F1dGhvcmlk +ZW50aWZpZXIgIF07CgkJCX0KCQl9Cgl9CgoJcmV0dXJuIEBhZHZpc29ycywgQG9yY2lkczsKfQoK +c3ViIF9hdHRyaWJ1dGVzX2Zvcl9hZHZpc29yX2F1dGhvcmlkZW50aWZpZXIKewoJbXkoICRwbHVn +aW4gKSA9IEBfOwoKCSMgZGVmYXVsdCBhdHRyaWJ1dGUKCW15ICRhdHRycyA9IHsgInhzaTp0eXBl +IiA9PiAidWtldGR0ZXJtczpPUkNJRCIgfTsKCgkjIG1lcmdlIGV4dHJhIGF0dHJpYnV0ZXMgaWYg +cmVxdWlyZWQuCgkjIE5CIGlmIGFuIHhzaTp0eXBlIGlzIHNwZWNpZmllZCBpbiBhZHZpc29yX2F1 +dGhvcmlkZW50aWZpZXJfYXR0cmlidXRlcywgdGhpcyB3aWxsIG92ZXJ3cml0ZSB0aGUgdmFsdWUg +YWJvdmUuCglpZiggJHBsdWdpbi0+e2FkZF9hdHRyaWJ1dGVzX3RvX2Fkdmlzb3JfYXV0aG9yaWRl +bnRpZmllcn0gKXsKCQlAJGF0dHJzeyBrZXlzICV7JHBsdWdpbi0+e2Fkdmlzb3JfYXV0aG9yaWRl +bnRpZmllcl9hdHRyaWJ1dGVzfX0gfSA9IHZhbHVlcyAleyRwbHVnaW4tPnthZHZpc29yX2F1dGhv +cmlkZW50aWZpZXJfYXR0cmlidXRlc319OwoJfQoJCglyZXR1cm4gJGF0dHJzOwp9CgpzdWIgZnVu +ZGVyX2FuZF9wcm9qZWN0CnsKCW15KCAkcGx1Z2luLCAkZXByaW50ICkgPSBAXzsKCglteSBAc3Bv +bnNvcnMgPSAoKTsKCW15IEBncmFudHMgPSAoKTsKCQoJIyByaW94eDJfcHJvamVjdCBjb250YWlu +cyBhIHByb2Nlc3NlZCByZXByZXNlbnRhdGlvbiBvZiBmdW5kZXJzIGFuZCBwcm9qZWN0cy4KCSMg +aWYgaXQgZXhpc3RzLCB1c2UgdGhhdCBpbiBwcmVmZXJlbmNlIHRvIHRoZSBtb3JlIGZlcmFsICdw +cm9qZWN0cycgYW5kICdmdW5kZXJzJyBmaWVsZHMuCglpZiggJGVwcmludC0+ZXhpc3RzX2FuZF9z +ZXQoICJyaW94eDJfcHJvamVjdCIgKSApCgl7CgoJCWZvcmVhY2ggbXkgJHByb2ogKCBAeyAkZXBy +aW50LT5nZXRfdmFsdWUoICJyaW94eDJfcHJvamVjdCIgKSB9ICkKCQl7CgkJCWlmKCBFUHJpbnRz +OjpVdGlsczo6aXNfc2V0KCAkcHJvai0+e3Byb2plY3R9ICkgKXsKCQkJCXB1c2ggQGdyYW50cywg +WyAiZ3JhbnRudW1iZXIiLCAkcHJvai0+e3Byb2plY3R9LCAidWtldGR0ZXJtcyIgXTsKCQkJfQoJ +CQlpZiggRVByaW50czo6VXRpbHM6OmlzX3NldCggJHByb2otPntmdW5kZXJfbmFtZX0gKSApewoJ +CQkJcHVzaCBAc3BvbnNvcnMsIFsgInNwb25zb3IiLCAkcHJvai0+e2Z1bmRlcl9uYW1lfSwgInVr +ZXRkdGVybXMiIF07CgkJCX0KCQl9CgoJfSBlbHNlIHsKCQlpZiggJGVwcmludC0+ZXhpc3RzX2Fu +ZF9zZXQoICJwcm9qZWN0cyIgKSApCgkJewoJCQlmb3JlYWNoIG15ICRwcm9qICggQHsgJGVwcmlu +dC0+dmFsdWUoICJwcm9qZWN0cyIgKSB9ICkKCQkJewoJCQkJcHVzaCBAZ3JhbnRzLCBbICJncmFu +dG51bWJlciIsICRwcm9qLCAidWtldGR0ZXJtcyIgXTsKCQkJfQkKCQl9CgoJCWlmKCAkZXByaW50 +LT5leGlzdHNfYW5kX3NldCggImZ1bmRlcnMiICkgKQoJCXsKCQkJZm9yZWFjaCBteSAkZnVuZGVy +ICggQHsgJGVwcmludC0+dmFsdWUoICJmdW5kZXJzIiApIH0gKQoJCQl7CgkJCQlwdXNoIEBzcG9u +c29ycywgWyAic3BvbnNvciIsICRmdW5kZXIsICJ1a2V0ZHRlcm1zIiBdOwoJCQl9CQoJCX0KCX0K +CgkjICdzcG9uc29ycycgaXMgYSBub24tc3RhbmRhcmQgZmllbGQsIGJ1dCB3YXMgbWFwcGVkIGlu +IHRoZSBwbHVnaW4sIHNvIGlzIHJldGFpbmVkIGhlcmUKCWlmKCAkZXByaW50LT5leGlzdHNfYW5k +X3NldCggInNwb25zb3JzIiApKXsKCQlwdXNoIEBzcG9uc29ycywgWyAic3BvbnNvciIsICRlcHJp +bnQtPmdldF92YWx1ZSggInNwb25zb3JzIiApLCAidWtldGR0ZXJtcyJdOwoJfQoKCXJldHVybiBA +c3BvbnNvcnMsIEBncmFudHM7Cn0KCnN1YiBfZm9ybWF0X29yY2lkCnsKCW15KCAkcGx1Z2luLCAk +b3JjaWQgKSA9IEBfOwoKCSMgZ3VpZGVsaW5lcyB3YW50IDE2LWNoYXJhY3RlcnMsIG5vIGh5cGhl +bnMgb3IgVVJMcy4KCSMgVGhpcyBzaG91bGQgZGVhbCB3aXRoIFVSTHMgb3IgbmFtZXNwYWNlZCB2 +YWx1ZXMuCgkkb3JjaWQgPX4gcyNeKD86XHMqKD86aHR0cHM/Oi8vKT9vcmNpZFwub3JnL3xvcmNp +ZDovPyk/KFxkezR9KVwtPyhcZHs0fSlcLT8oXGR7NH0pXC0/KFxkezN9W1xkfFhdKSQjJDEkMiQz +JDQjOwoKCXJldHVybiAkb3JjaWQ7Cn0KCnN1YiBfZm9ybWF0X2RvaQp7CglteSggJHBsdWdpbiwg +JGRvaSApID0gQF87CgoJIyBhZHZpY2UgcmVjZWl2ZWQgaXMgdGhhdCBqdXN0IERPSSBpcyBwcmVm +ZXJyZWQgdG8gYSBVUkwKCSMgbG9naWMgdGFrZW4gZnJvbSBFUHJpbnRzOjpFeHRyYXM6OnJlbmRl +cl9wb3NzaWJsZV9kb2kKCWlmKCAkZG9pID1+IG0hXgoJCSg/Omh0dHBzPzovLyg/OmR4XC4pP2Rv +aVwub3JnLyk/ICAjIGFkZCB0aGlzIGFnYWluIGxhdGVyIGFueXdheQoJCSg/OmRvaTo/XHMqKT8g +ICAgICAgICAgICAgICAgICAgIyBkb24ndCBuZWVkIGFueSBuYW1lc3BhY2Ugc3R1ZmYKCQkoMTAo +XC5bXi4vXSspKy8uKykgICAgICAgICAgICAgICMgdGhlIGFjdHVhbCBET0kgPT4gJDEKCSFpeCAp +Cgl7CgkJIyBqdXN0IHVzZSB0aGUgbGFzdCBwYXJ0IC0gdGhlIGFjdHVhbCBET0kuCgkJcmV0dXJu +ICQxOwoJfQoKCXJldHVybiB1bmRlZjsKfQoKc3ViIF9sYXN0X2RheV9vZl9lbWJhcmdvCnsKCW15 +KCAkZW1iYXJnbyApID0gQF87CgoJaWYoIGxlbmd0aCAkZW1iYXJnbyA9PSA0ICkKCXsKCQkjIG9u +bHkgeWVhciBkZWZpbmVkLiBFbWJhcmdvIGlzIHJlbGVhc2VkIGFmdGVyIHRoZSBlbmQgb2YgdGhl +IHllYXIuCgkJcmV0dXJuICRlbWJhcmdvIC49ICItMTItMzEiOwoJfQoJaWYoIGxlbmd0aCAkZW1i +YXJnbyA9PSAxMCApCgl7CgkJIyBGdWxsIGRhdGUgc3BlY2lmaWVkIC0gcmV0dXJuIGl0LgoJCXJl +dHVybiAkZW1iYXJnbzsKCX0KCglpZiggbGVuZ3RoICRlbWJhcmdvID09IDcgKQoJewoJCSMgeWVh +ciBhbmQgbW9udGggc3BlY2lmaWVkLgkKCQlteSggJHksICRtICkgPSBzcGxpdCggL1wtLywgJGVt +YmFyZ28gKTsKCgkJbXkgJGVuZF9kYXkgPSAoMzEsMjgsMzEsMzAsMzEsMzAsMzEsMzEsMzAsMzEs +MzAsMzEpWyRtLTFdOyAjbW9udGggaXMgMS1iYXNlZDsgcGVybCBhcnJheSBpcyAwLWJhc2VkCgoJ +CSNpZiBtb250aCBpcyBub3QgRmViLCBlbmQgZGF5IGRvZXMgbm90IGNoYW5nZQoJCXJldHVybiAi +JGVtYmFyZ28tJGVuZF9kYXkiIGlmICRtICE9IDI7CgkKCQkjIGVsc2Ugd29yayBvdXQgbGVhcCB5 +ZWFyIHN0dWZmCgkJIyB5ZWFyIGlzIGRpdiBieSA0LCBidXQgbm90IDEwMCwgYnV0IGlzIGJ5IDQw +MAoJCSMgdW5saWtlbHkgZm9yIEVUaGVzZXMgZW1iYXJnbyBleHBpcnkgLSBidXQgSSd2ZSBoZWFy +ZCB0YWxrIG9mICcxMDAgeWVhciBlbWJhcmdvcycuLi4KCQlpZiAoICgkeSAlIDQgPT0gMCkgJiYg +KCAkeSAlIDEwMCAhPSAwIHx8ICR5ICUgNDAwID09IDAgKSApIAoJCXsKCQkJJGVuZF9kYXkrKzsK +CQl9CgoJCXJldHVybiAiJGVtYmFyZ28tJGVuZF9kYXkiOwoJfQoKCSMgaWYgbm9uZSBvZiB0aGUg +Y2FzZXMgYWJvdmUgbWF0Y2gsIHRoZSd2ZSBnb3Qgc29tZXRoaW5nIHN0cmFuZ2UuIEp1c3QgcmV0 +dXJuIGFzLWlzCglyZXR1cm4gJGVtYmFyZ287Cn0KCQoxOwoKCj1oZWFkMSBDT1BZUklHSFQKCj1m +b3IgQ09QWVJJR0hUIEJFR0lOCgpDb3B5cmlnaHQgMjAwMC0yMDExIFVuaXZlcnNpdHkgb2YgU291 +dGhhbXB0b24uCgo9Zm9yIENPUFlSSUdIVCBFTkQKCj1mb3IgTElDRU5TRSBCRUdJTgoKVGhpcyBm +aWxlIGlzIHBhcnQgb2YgRVByaW50cyBMPGh0dHA6Ly93d3cuZXByaW50cy5vcmcvPi4KCkVQcmlu +dHMgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm +eSBpdAp1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGlj +ZW5zZSBhcyBwdWJsaXNoZWQKYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVy +IHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg +dmVyc2lvbi4KCkVQcmludHMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs +IGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt +cGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yCkZJVE5FU1MgRk9SIEEgUEFSVElD +VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkxpY2Vuc2Ug +Zm9yIG1vcmUgZGV0YWlscy4KCllvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl +IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKTGljZW5zZSBhbG9uZyB3aXRoIEVQcmludHMuICBJ +ZiBub3QsIHNlZSBMPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgoKPWZvciBMSUNFTlNF +IEVORAoKCiMgUklQIFRNQgo= @@ -3226,7 +3230,7 @@ hMTOdzZ+58RvbXyGtyAv+3IYlZCXlJmJQLv79g/rPzv9//ckha9+4A+VAAAAAElFTkSuQmCC coverimage - 1.0.4 + 1.0.5 EPMC::OAI_UKETD_DC_2017 diff --git a/oai_uketd_dc.epmi b/oai_uketd_dc.epmi index 55b8cd9..f136d1b 100644 --- a/oai_uketd_dc.epmi +++ b/oai_uketd_dc.epmi @@ -7,15 +7,15 @@ epm/oai_uketd_dc/cfg/cfg.d/z_oai_uketd_dc.pl - 9e16c009e9d47bae94ecf0d597394e17 + d60147e1e65a45c4119e69910c920461 MD5 - 8367 + 8551 plugins/EPrints/Plugin/Export/OAI_UKETD_DC_2017.pm - c1a85437c4b7e7d7ba01d79fe7421767 + 97ebdec2a51937cb056aa8cbf68ffb42 MD5 - 27941 + 27947 plugins/EPrints/Plugin/Screen/EPMC/OAI_UKETD_DC_2017.pm @@ -47,7 +47,7 @@ coverimage - 1.0.4 + 1.0.5 EPMC::OAI_UKETD_DC_2017