LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIAogKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCiAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQogKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgogKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCiAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQogKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAqIAogKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogKiAKICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAogKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgogKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCiAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKICogdW5kZXIgdGhlIExpY2Vuc2UuCiAqIAogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCgojZGVmaW5lIF9fUlNDCiNpZm5kZWYgX0VSUkNPREVfSFhYIC8vYXV0b2dlbgojaW5jbHVkZSA8dG9vbHMvZXJyY29kZS5oeHg+CiNlbmRpZgojaW5jbHVkZSAic2IuaHJjIgojaW5jbHVkZSA8YmFzaWMvc2JlcnJvcnMuaHh4PgoKUmVzb3VyY2UgUklEX0JBU0lDX1NUQVJUCnsKCVN0cmluZyBTYkVSUl9TWU5UQVggJiBFUlJDT0RFX1JFU19NQVNLCgl7CgkJVGV4dCBbIGVuLVVTIF0gPSAiU3ludGF4IGVycm9yLiIgOwoJfTsKCVN0cmluZyBTYkVSUl9OT19HT1NVQiAmIEVSUkNPREVfUkVTX01BU0sKCXsKCQlUZXh0IFsgZW4tVVMgXSA9ICJSZXR1cm4gd2l0aG91dCBHb3N1Yi4iIDsKCX07CglTdHJpbmcgU2JFUlJfUkVET19GUk9NX1NUQVJUICYgRVJSQ09ERV9SRVNfTUFTSwoJewoJCVRleHQgWyBlbi1VUyBdID0gIkluY29ycmVjdCBlbnRyeTsgcGxlYXNlIHJldHJ5LiIgOwoJfTsKCVN0cmluZyBTYkVSUl9CQURfQVJHVU1FTlQgJiBFUlJDT0RFX1JFU19NQVNLCgl7CgkJLyogIyMjIEFDSFRVTkc6IE5ldWVyIFRleHQgaW4gUmVzb3VyY2U/IFVuZ7NsdGlnZXIgUHJvemVkdXJhdWZydWYgOiBVbmeBbHRpZ2VyIFByb3plZHVyYXVmcnVmICovCgkJVGV4dCBbIGVuLVVTIF0gPSAiSW52YWxpZCBwcm9jZWR1cmUgY2FsbC4iIDsKCX07CglTdHJpbmcgU2JFUlJfTUFUSF9PVkVSRkxPVyAmIEVSUkNPREVfUkVTX01BU0sKCXsKCQkvKiAjIyMgQUNIVFVORzogTmV1ZXIgVGV4dCBpbiBSZXNvdXJjZT8gmmJlcmxhdWYgOiDcYmVybGF1ZiAqLwoJCVRleHQgWyBlbi1VUyBdID0gIk92ZXJmbG93LiIgOwoJfTsKCVN0cmluZyBTYkVSUl9OT19NRU1PUlkgJiBFUlJDT0RFX1JFU19NQVNLCgl7CgkJLyogIyMjIEFDSFRVTkc6IE5ldWVyIFRleHQgaW4gUmVzb3VyY2U/IE5pY2h0IGdlbrNnZW5kIFNwZWljaGVyIDogTmljaHQgZ2VugWdlbmQgU3BlaWNoZXIgKi8KCQlUZXh0IFsgZW4tVVMgXSA9ICJOb3QgZW5vdWdoIG1lbW9yeS4iIDsKCX07CglTdHJpbmcgU2JFUlJfQUxSRUFEWV9ESU0gJiBFUlJDT0RFX1JFU19NQVNLCgl7CgkJVGV4dCBbIGVuLVVTIF0gPSAiQXJyYXkgYWxyZWFkeSBkaW1lbnNpb25lZC4iIDsKCX07CglTdHJpbmcgU2JFUlJfT1VUX09GX1JBTkdFICYgRVJSQ09ERV9SRVNfTUFTSwoJewoJCS8qICMjIyBBQ0hUVU5HOiBOZXVlciBUZXh0IGluIFJlc291cmNlPyBJbmRleCBhdZhlcmhhbGIgZGVzIGRlZmluaWVydGVuIEJlcmVpY2hzIDogSW5kZXggYXX/ZXJoYWxiIGRlcyBkZWZpbmllcnRlbiBCZXJlaWNocyAqLwoJCVRleHQgWyBlbi1VUyBdID0gIkluZGV4IG91dCBvZiBkZWZpbmVkIHJhbmdlLiIgOwoJfTsKCVN0cmluZyBTYkVSUl9EVVBMSUNBVEVfREVGICYgRVJSQ09ERV9SRVNfTUFTSwoJewoJCVRleHQgWyBlbi1VUyBdID0gIkR1cGxpY2F0ZSBkZWZpbml0aW9uLiIgOwoJfTsKCVN0cmluZyBTYkVSUl9aRVJPRElWICYgRVJSQ09ERV9SRVNfTUFTSwoJewoJCVRleHQgWyBlbi1VUyBdID0gIkRpdmlzaW9uIGJ5IHplcm8uIiA7Cgl9OwoJU3RyaW5nIFNiRVJSX1ZBUl9VTkRFRklORUQgJiBFUlJDT0RFX1JFU19NQVNLCgl7CgkJVGV4dCBbIGVuLVVTIF0gPSAiVmFyaWFibGUgbm90IGRlZmluZWQuIiA7Cgl9OwoJU3RyaW5nIFNiRVJSX0NPTlZFUlNJT04gJiBFUlJDT0RFX1JFU19NQVNLCgl7CgkJLyogIyMjIEFDSFRVTkc6IE5ldWVyIFRleHQgaW4gUmVzb3VyY2U/IERhdGVudHlwZW4gdW52ZXJ0cvVnbGljaCA6IERhdGVudHlwZW4gdW52ZXJ0cqdnbGljaCAqLwoJCVRleHQgWyBlbi1VUyBdID0gIkRhdGEgdHlwZSBtaXNtYXRjaC4iIDsKCX07CglTdHJpbmcgU2JFUlJfQkFEX1BBUkFNRVRFUiAmIEVSUkNPREVfUkVTX01BU0sKCXsKCQkvKiAjIyMgQUNIVFVORzogTmV1ZXIgVGV4dCBpbiBSZXNvdXJjZT8gVW5ns2x0aWdlciBQYXJhbWV0ZXIgOiBVbmeBbHRpZ2VyIFBhcmFtZXRlciAqLwoJCVRleHQgWyBlbi1VUyBdID0gIkludmFsaWQgcGFyYW1ldGVyLiIgOwoJfTsKCVN0cmluZyBTYkVSUl9VU0VSX0FCT1JUICYgRVJSQ09ERV9SRVNfTUFTSwoJewoJCVRleHQgWyBlbi1VUyBdID0gIlByb2Nlc3MgaW50ZXJydXB0ZWQgYnkgdXNlci4iIDsKCX07CglTdHJpbmcgU2JFUlJfQkFEX1JFU1VNRSAmIEVSUkNPREVfUkVTX01BU0sKCXsKCQlUZXh0IFsgZW4tVVMgXSA9ICJSZXN1bWUgd2l0aG91dCBlcnJvci4iIDsKCX07CglTdHJpbmcgU2JFUlJfU1RBQ0tfT1ZFUkZMT1cgJiBFUlJDT0RFX1JFU19NQVNLCgl7CgkJLyogIyMjIEFDSFRVTkc6IE5ldWVyIFRleHQgaW4gUmVzb3VyY2U/IE5pY2h0IGdlbrNnZW5kIFN0YXBlbHNwZWljaGVyIDogTmljaHQgZ2VugWdlbmQgU3RhcGVsc3BlaWNoZXIgKi8KCQlUZXh0IFsgZW4tVVMgXSA9ICJOb3QgZW5vdWdoIHN0YWNrIG1lbW9yeS4iIDsKCX07CglTdHJpbmcgU2JFUlJfUFJPQ19VTkRFRklORUQgJiBFUlJDT0RFX1JFU19NQVNLCgl7CgkJVGV4dCBbIGVuLVVTIF0gPSAiU3ViLXByb2NlZHVyZSBvciBmdW5jdGlvbiBwcm9jZWR1cmUgbm90IGRlZmluZWQuIiA7Cgl9OwoJU3RyaW5nIFNiRVJSX0JBRF9ETExfTE9BRCAmIEVSUkNPREVfUkVTX01BU0sKCXsKCQlUZXh0IFsgZW4tVVMgXSA9ICJFcnJvciBsb2FkaW5nIERMTCBmaWxlLiIgOwoJfTsKCVN0cmluZyBTYkVSUl9CQURfRExMX0NBTEwgJiBFUlJDT0RFX1JFU19NQVNLCgl7CgkJVGV4dCBbIGVuLVVTIF0gPSAiV3JvbmcgRExMIGNhbGwgY29udmVudGlvbi4iIDsKCX07CglTdHJpbmcgU2JFUlJfSU5URVJOQUxfRVJST1IgJiBFUlJDT0RFX1JFU19NQVNLCgl7CgkJVGV4dCBbIGVuLVVTIF0gPSAiSW50ZXJuYWwgZXJyb3IgJChBUkcxKS4iIDsKCX07CglTdHJpbmcgU2JFUlJfQkFEX0NIQU5ORUwgJiBFUlJDT0RFX1JFU19NQVNLCgl7CgkJVGV4dCBbIGVuLVVTIF0gPSAiSW52YWxpZCBmaWxlIG5hbWUgb3IgZmlsZSBudW1iZXIuIiA7Cgl9OwoJU3RyaW5nIFNiRVJSX0ZJTEVfTk9UX0ZPVU5EICYgRVJSQ09ERV9SRVNfTUFTSwoJewoJCVRleHQgWyBlbi1VUyBdID0gIkZpbGUgbm90IGZvdW5kLiIgOwoJfTsKCVN0cmluZyBTYkVSUl9CQURfRklMRV9NT0RFICYgRVJSQ09ERV9SRVNfTUFTSwoJewoJCVRleHQgWyBlbi1VUyBdID0gIkluY29ycmVjdCBmaWxlIG1vZGUuIiA7Cgl9OwoJU3RyaW5nIFNiRVJSX0ZJTEVfQUxSRUFEWV9PUEVOICYgRVJSQ09ERV9SRVNfTUFTSwoJewoJCS8qICMjIyBBQ0hUVU5HOiBOZXVlciBUZXh0IGluIFJlc291cmNlPyBEYXRlaSBiZXJlaXRzIGdl92ZmbmV0IDogRGF0ZWkgYmVyZWl0cyBnZZRmZm5ldCAqLwoJCVRleHQgWyBlbi1VUyBdID0gIkZpbGUgYWxyZWFkeSBvcGVuLiIgOwoJfTsKCVN0cmluZyBTYkVSUl9JT19FUlJPUiAmIEVSUkNPREVfUkVTX01BU0sKCXsKCQkvKiAjIyMgQUNIVFVORzogTmV1ZXIgVGV4dCBpbiBSZXNvdXJjZT8gR2Vy9XRlLUUvQS1GZWhsZXIgOiBHZXKndGUtRS9BLUZlaGxlciAqLwoJCVRleHQgWyBlbi1VUyBdID0gIkRldmljZSBJL08gZXJyb3IuIiA7Cgl9OwoJU3RyaW5nIFNiRVJSX0ZJTEVfRVhJU1RTICYgRVJSQ09ERV9SRVNfTUFTSwoJewoJCVRleHQgWyBlbi1VUyBdID0gIkZpbGUgYWxyZWFkeSBleGlzdHMuIiA7Cgl9OwoJU3RyaW5nIFNiRVJSX0JBRF9SRUNPUkRfTEVOR1RIICYgRVJSQ09ERV9SRVNfTUFTSwoJewoJCS8qICMjIyBBQ0hUVU5HOiBOZXVlciBUZXh0IGluIFJlc291cmNlPyBGYWxzY2hlIERhdGVuc2F0emz1bmdlIDogRmFsc2NoZSBEYXRlbnNhdHpsp25nZSAqLwoJCVRleHQgWyBlbi1VUyBdID0gIkluY29ycmVjdCByZWNvcmQgbGVuZ3RoLiIgOwoJfTsKCVN0cmluZyBTYkVSUl9ESVNLX0ZVTEwgJiBFUlJDT0RFX1JFU19NQVNLCgl7CgkJVGV4dCBbIGVuLVVTIF0gPSAiRGlzayBvciBoYXJkIGRyaXZlIGZ1bGwuIiA7Cgl9OwoJU3RyaW5nIFNiRVJSX1JFQURfUEFTVF9FT0YgJiBFUlJDT0RFX1JFU19NQVNLCgl7CgkJLyogIyMjIEFDSFRVTkc6IE5ldWVyIFRleHQgaW4gUmVzb3VyY2U/IExlc2VuILNiZXIgZGFzIEVuZGUgZGVyIERhdGVpIGhpbmF1cyA6IExlc2VuIIFiZXIgZGFzIEVuZGUgZGVyIERhdGVpIGhpbmF1cyAqLwoJCVRleHQgWyBlbi1VUyBdID0gIlJlYWRpbmcgZXhjZWVkcyBFT0YuIiA7Cgl9OwoJU3RyaW5nIFNiRVJSX0JBRF9SRUNPUkRfTlVNQkVSICYgRVJSQ09ERV9SRVNfTUFTSwoJewoJCVRleHQgWyBlbi1VUyBdID0gIkluY29ycmVjdCByZWNvcmQgbnVtYmVyLiIgOwoJfTsKCVN0cmluZyBTYkVSUl9UT09fTUFOWV9GSUxFUyAmIEVSUkNPREVfUkVTX01BU0sKCXsKCQlUZXh0IFsgZW4tVVMgXSA9ICJUb28gbWFueSBmaWxlcy4iIDsKCX07CglTdHJpbmcgU2JFUlJfTk9fREVWSUNFICYgRVJSQ09ERV9SRVNfTUFTSwoJewoJCS8qICMjIyBBQ0hUVU5HOiBOZXVlciBUZXh0IGluIFJlc291cmNlPyBHZXL1dCBuaWNodCB2ZXJms2diYXIgOiBHZXKndCBuaWNodCB2ZXJmgWdiYXIgKi8KCQlUZXh0IFsgZW4tVVMgXSA9ICJEZXZpY2Ugbm90IGF2YWlsYWJsZS4iIDsKCX07CglTdHJpbmcgU2JFUlJfQUNDRVNTX0RFTklFRCAmIEVSUkNPREVfUkVTX01BU0sKCXsKCQlUZXh0IFsgZW4tVVMgXSA9ICJBY2Nlc3MgZGVuaWVkLiIgOwoJfTsKCVN0cmluZyBTYkVSUl9OT1RfUkVBRFkgJiBFUlJDT0RFX1JFU19NQVNLCgl7CgkJVGV4dCBbIGVuLVVTIF0gPSAiRGlzayBub3QgcmVhZHkuIiA7Cgl9OwoJU3RyaW5nIFNiRVJSX05PVF9JTVBMRU1FTlRFRCAmIEVSUkNPREVfUkVTX01BU0sKCXsKCQlUZXh0IFsgZW4tVVMgXSA9ICJOb3QgaW1wbGVtZW50ZWQuIiA7Cgl9OwoJU3RyaW5nIFNiRVJSX0RJRkZFUkVOVF9EUklWRSAmIEVSUkNPREVfUkVTX01BU0sKCXsKCQkvKiAjIyMgQUNIVFVORzogTmV1ZXIgVGV4dCBpbiBSZXNvdXJjZT8gVW1iZW5lbm5lbiBhdWYgdmVyc2NoaWVkZW5lbiBMYXVmd2Vya2VuIG5pY2h0IG33Z2xpY2ggOiBVbWJlbmVubmVuIGF1ZiB2ZXJzY2hpZWRlbmVuIExhdWZ3ZXJrZW4gbmljaHQgbZRnbGljaCAqLwoJCVRleHQgWyBlbi1VUyBdID0gIlJlbmFtaW5nIG9uIGRpZmZlcmVudCBkcml2ZXMgaW1wb3NzaWJsZS4iIDsKCX07CglTdHJpbmcgU2JFUlJfQUNDRVNTX0VSUk9SICYgRVJSQ09ERV9SRVNfTUFTSwoJewoJCVRleHQgWyBlbi1VUyBdID0gIlBhdGgvRmlsZSBhY2Nlc3MgZXJyb3IuIiA7Cgl9OwoJU3RyaW5nIFNiRVJSX1BBVEhfTk9UX0ZPVU5EICYgRVJSQ09ERV9SRVNfTUFTSwoJewoJCVRleHQgWyBlbi1VUyBdID0gIlBhdGggbm90IGZvdW5kLiIgOwoJfTsKCVN0cmluZyBTYkVSUl9OT19PQkpFQ1QgJiBFUlJDT0RFX1JFU19NQVNLCgl7CgkJVGV4dCBbIGVuLVVTIF0gPSAiT2JqZWN0IHZhcmlhYmxlIG5vdCBzZXQuIiA7Cgl9OwoJU3RyaW5nIFNiRVJSX0JBRF9QQVRURVJOICYgRVJSQ09ERV9SRVNfTUFTSwoJewoJCS8qICMjIyBBQ0hUVU5HOiBOZXVlciBUZXh0IGluIFJlc291cmNlPyBaZWljaGVuZm9sZ2VubXVzdGVyIHVuenVs9XNzaWcgOiBaZWljaGVuZm9sZ2VubXVzdGVyIHVuenVsp3NzaWcgKi8KCQlUZXh0IFsgZW4tVVMgXSA9ICJJbnZhbGlkIHN0cmluZyBwYXR0ZXJuLiIgOwoJfTsKCVN0cmluZyBTQkVSUl9JU19OVUxMICYgRVJSQ09ERV9SRVNfTUFTSwoJewoJCS8qICMjIyBBQ0hUVU5HOiBOZXVlciBUZXh0IGluIFJlc291cmNlPyBWZXJ3ZW5kdW5nIHZvbiBOdWxsIHVuenVs9XNzaWcgOiBWZXJ3ZW5kdW5nIHZvbiBOdWxsIHVuenVsp3NzaWcgKi8KCQlUZXh0IFsgZW4tVVMgXSA9ICJVc2Ugb2YgemVybyBub3QgcGVybWl0dGVkLiIgOwoJfTsKCVN0cmluZyBTYkVSUl9EREVfRVJST1IgJiBFUlJDT0RFX1JFU19NQVNLCgl7CgkJVGV4dCBbIGVuLVVTIF0gPSAiRERFIEVycm9yLiIgOwoJfTsKCVN0cmluZyBTYkVSUl9EREVfV0FJVElOR0FDSyAmIEVSUkNPREVfUkVTX01BU0sKCXsKCQlUZXh0IFsgZW4tVVMgXSA9ICJBd2FpdGluZyByZXNwb25zZSB0byBEREUgY29ubmVjdGlvbi4iIDsKCX07CglTdHJpbmcgU2JFUlJfRERFX09VVE9GQ0hBTk5FTFMgJiBFUlJDT0RFX1JFU19NQVNLCgl7CgkJLyogIyMjIEFDSFRVTkc6IE5ldWVyIFRleHQgaW4gUmVzb3VyY2U/IEtlaW5lIGZyZWllbiBEREUtS2Fu9WxlIDogS2VpbmUgZnJlaWVuIERERS1LYW6nbGUgKi8KCQlUZXh0IFsgZW4tVVMgXSA9ICJObyBEREUgY2hhbm5lbHMgYXZhaWxhYmxlLiIgOwoJfTsKCVN0cmluZyBTYkVSUl9EREVfTk9fUkVTUE9OU0UgJiBFUlJDT0RFX1JFU19NQVNLCgl7CgkJVGV4dCBbIGVuLVVTIF0gPSAiTm8gYXBwbGljYXRpb24gcmVzcG9uZGVkIHRvIERERSBjb25uZWN0IGluaXRpYXRpb24uIiA7Cgl9OwoJU3RyaW5nIFNiRVJSX0RERV9NVUxUX1JFU1BPTlNFUyAmIEVSUkNPREVfUkVTX01BU0sKCXsKCQlUZXh0IFsgZW4tVVMgXSA9ICJUb28gbWFueSBhcHBsaWNhdGlvbnMgcmVzcG9uZGVkIHRvIERERSBjb25uZWN0IGluaXRpYXRpb24uIiA7Cgl9OwoJU3RyaW5nIFNiRVJSX0RERV9DSEFOTkVMX0xPQ0tFRCAmIEVSUkNPREVfUkVTX01BU0sKCXsKCQlUZXh0IFsgZW4tVVMgXSA9ICJEREUgY2hhbm5lbCBsb2NrZWQuIiA7Cgl9OwoJU3RyaW5nIFNiRVJSX0RERV9OT1RQUk9DRVNTRUQgJiBFUlJDT0RFX1JFU19NQVNLCgl7CgkJLyogIyMjIEFDSFRVTkc6IE5ldWVyIFRleHQgaW4gUmVzb3VyY2U/IEZyZW1kYXBwbGlrYXRpb24ga2FubiBEREUtT3BlcmF0aW9uIG5pY2h0IGF1c2azaHJlbiA6IEZyZW1kYXBwbGlrYXRpb24ga2FubiBEREUtT3BlcmF0aW9uIG5pY2h0IGF1c2aBaHJlbiAqLwoJCVRleHQgWyBlbi1VUyBdID0gIkV4dGVybmFsIGFwcGxpY2F0aW9uIGNhbm5vdCBleGVjdXRlIERERSBvcGVyYXRpb24uIiA7Cgl9OwoJU3RyaW5nIFNiRVJSX0RERV9USU1FT1VUICYgRVJSQ09ERV9SRVNfTUFTSwoJewoJCS8qICMjIyBBQ0hUVU5HOiBOZXVlciBUZXh0IGluIFJlc291cmNlPyBaZWl0s2JlcnNjaHJlaXR1bmcgd/VocmVuZCBkZXMgV2FydGVucyBhdWYgRERFLUFudHdvcnQgOiBaZWl0gWJlcnNjaHJlaXR1bmcgd6docmVuZCBkZXMgV2FydGVucyBhdWYgRERFLUFudHdvcnQgKi8KCQlUZXh0IFsgZW4tVVMgXSA9ICJUaW1lb3V0IHdoaWxlIHdhaXRpbmcgZm9yIERERSByZXNwb25zZS4iIDsKCX07CglTdHJpbmcgU2JFUlJfRERFX1VTRVJfSU5URVJSVVBUICYgRVJSQ09ERV9SRVNfTUFTSwoJewoJCS8qICMjIyBBQ0hUVU5HOiBOZXVlciBUZXh0IGluIFJlc291cmNlPyBCZW51dHplciBkcrNja3RlIEVTQ0FQRSB39WhyZW5kIGRlciBEREUtT3BlcmF0aW9uIDogQmVudXR6ZXIgZHKBY2t0ZSBFU0NBUEUgd6docmVuZCBkZXIgRERFLU9wZXJhdGlvbiAqLwoJCVRleHQgWyBlbi1VUyBdID0gIlVzZXIgcHJlc3NlZCBFU0NBUEUgZHVyaW5nIERERSBvcGVyYXRpb24uIiA7Cgl9OwoJU3RyaW5nIFNiRVJSX0RERV9CVVNZICYgRVJSQ09ERV9SRVNfTUFTSwoJewoJCVRleHQgWyBlbi1VUyBdID0gIkV4dGVybmFsIGFwcGxpY2F0aW9uIGJ1c3kuIiA7Cgl9OwoJU3RyaW5nIFNiRVJSX0RERV9OT19EQVRBICYgRVJSQ09ERV9SRVNfTUFTSwoJewoJCVRleHQgWyBlbi1VUyBdID0gIkRERSBvcGVyYXRpb24gd2l0aG91dCBkYXRhLiIgOwoJfTsKCVN0cmluZyBTYkVSUl9EREVfV1JPTkdfREFUQV9GT1JNQVQgJiBFUlJDT0RFX1JFU19NQVNLCgl7CgkJVGV4dCBbIGVuLVVTIF0gPSAiRGF0YSBhcmUgaW4gd3JvbmcgZm9ybWF0LiIgOwoJfTsKCVN0cmluZyBTYkVSUl9EREVfUEFSVE5FUl9RVUlUICYgRVJSQ09ERV9SRVNfTUFTSwoJewoJCVRleHQgWyBlbi1VUyBdID0gIkV4dGVybmFsIGFwcGxpY2F0aW9uIGhhcyBiZWVuIHRlcm1pbmF0ZWQuIiA7Cgl9OwoJU3RyaW5nIFNiRVJSX0RERV9DT05WX0NMT1NFRCAmIEVSUkNPREVfUkVTX01BU0sKCXsKCQkvKiAjIyMgQUNIVFVORzogTmV1ZXIgVGV4dCBpbiBSZXNvdXJjZT8gRERFLVZlcmJpbmR1bmcgaXN0IHVudGVyYnJvY2hlbiBvZGVyIGdl9W5kZXJ0IHdvcmRlbiA6IERERS1WZXJiaW5kdW5nIGlzdCB1bnRlcmJyb2NoZW4gb2RlciBnZaduZGVydCB3b3JkZW4gKi8KCQlUZXh0IFsgZW4tVVMgXSA9ICJEREUgY29ubmVjdGlvbiBpbnRlcnJ1cHRlZCBvciBtb2RpZmllZC4iIDsKCX07CglTdHJpbmcgU2JFUlJfRERFX05PX0NIQU5ORUwgJiBFUlJDT0RFX1JFU19NQVNLCgl7CgkJVGV4dCBbIGVuLVVTIF0gPSAiRERFIG1ldGhvZCBpbnZva2VkIHdpdGggbm8gY2hhbm5lbCBvcGVuLiIgOwoJfTsKCVN0cmluZyBTYkVSUl9EREVfSU5WQUxJRF9MSU5LICYgRVJSQ09ERV9SRVNfTUFTSwoJewoJCS8qICMjIyBBQ0hUVU5HOiBOZXVlciBUZXh0IGluIFJlc291cmNlPyBVbmezbHRpZ2VzIERERS1MaW5rZm9ybWF0IDogVW5ngWx0aWdlcyBEREUtTGlua2Zvcm1hdCAqLwoJCVRleHQgWyBlbi1VUyBdID0gIkludmFsaWQgRERFIGxpbmsgZm9ybWF0LiIgOwoJfTsKCVN0cmluZyBTYkVSUl9EREVfUVVFVUVfT1ZFUkZMT1cgJiBFUlJDT0RFX1JFU19NQVNLCgl7CgkJVGV4dCBbIGVuLVVTIF0gPSAiRERFIG1lc3NhZ2UgaGFzIGJlZW4gbG9zdC4iIDsKCX07CglTdHJpbmcgU2JFUlJfRERFX0xJTktfQUxSRUFEWV9FU1QgJiBFUlJDT0RFX1JFU19NQVNLCgl7CgkJLyogIyMjIEFDSFRVTkc6IE5ldWVyIFRleHQgaW4gUmVzb3VyY2U/IFBhc3RlIExpbmsgYmVyZWl0cyBkdXJjaGdlZrNocnQgOiBQYXN0ZSBMaW5rIGJlcmVpdHMgZHVyY2hnZWaBaHJ0ICovCgkJVGV4dCBbIGVuLVVTIF0gPSAiUGFzdGUgbGluayBhbHJlYWR5IHBlcmZvcm1lZC4iIDsKCX07CglTdHJpbmcgU2JFUlJfRERFX0xJTktfSU5WX1RPUElDICYgRVJSQ09ERV9SRVNfTUFTSwoJewoJCS8qICMjIyBBQ0hUVU5HOiBOZXVlciBUZXh0IGluIFJlc291cmNlPyBMaW5rTW9kZSBrYW5uIHdlZ2VuIHVuZ7NsdGlnZW4gTGluay1Ub3BpY3MgbmljaHQgZ2VzZXR6dCB3ZXJkZW4gOiBMaW5rTW9kZSBrYW5uIHdlZ2VuIHVuZ4FsdGlnZW4gTGluay1Ub3BpY3MgbmljaHQgZ2VzZXR6dCB3ZXJkZW4gKi8KCQlUZXh0IFsgZW4tVVMgXSA9ICJMaW5rIG1vZGUgY2Fubm90IGJlIHNldCBkdWUgdG8gaW52YWxpZCBsaW5rIHRvcGljLiIgOwoJfTsKCVN0cmluZyBTYkVSUl9EREVfRExMX05PVF9GT1VORCAmIEVSUkNPREVfUkVTX01BU0sKCXsKCQkvKiAjIyMgQUNIVFVORzogTmV1ZXIgVGV4dCBpbiBSZXNvdXJjZT8gRrNyIERERSB3aXJkIERERU1MLkRMTCBiZW73dGlndCA6IEaBciBEREUgd2lyZCBEREVNTC5ETEwgYmVulHRpZ3QgKi8KCQlUZXh0IFsgZW4tVVMgXSA9ICJEREUgcmVxdWlyZXMgdGhlIERERU1MLkRMTCBmaWxlLiIgOwoJfTsKCVN0cmluZyBTYkVSUl9DQU5OT1RfTE9BRCAmIEVSUkNPREVfUkVTX01BU0sKCXsKCQkvKiAjIyMgQUNIVFVORzogTmV1ZXIgVGV4dCBpbiBSZXNvdXJjZT8gRGFzIE1vZHVsIGthbm4gbmljaHQgZ2VsYWRlbiB3ZXJkZW4sIHVuZ7NsdGlnZXMgRm9ybWF0IDogRGFzIE1vZHVsIGthbm4gbmljaHQgZ2VsYWRlbiB3ZXJkZW4sIHVuZ4FsdGlnZXMgRm9ybWF0ICovCgkJVGV4dCBbIGVuLVVTIF0gPSAiTW9kdWxlIGNhbm5vdCBiZSBsb2FkZWQ7IGludmFsaWQgZm9ybWF0LiIgOwoJfTsKCVN0cmluZyBTYkVSUl9CQURfSU5ERVggJiBFUlJDT0RFX1JFU19NQVNLCgl7CgkJLyogIyMjIEFDSFRVTkc6IE5ldWVyIFRleHQgaW4gUmVzb3VyY2U/IFVuZ7NsdGlnZXIgT2JqZWt0aW5kZXggOiBVbmeBbHRpZ2VyIE9iamVrdGluZGV4ICovCgkJVGV4dCBbIGVuLVVTIF0gPSAiSW52YWxpZCBvYmplY3QgaW5kZXguIiA7Cgl9OwoJU3RyaW5nIFNiRVJSX05PX0FDVElWRV9PQkpFQ1QgJiBFUlJDT0RFX1JFU19NQVNLCgl7CgkJLyogIyMjIEFDSFRVTkc6IE5ldWVyIFRleHQgaW4gUmVzb3VyY2U/IE9iamVrdCBpc3QgbmljaHQgdmVyZrNnYmFyIDogT2JqZWt0IGlzdCBuaWNodCB2ZXJmgWdiYXIgKi8KCQlUZXh0IFsgZW4tVVMgXSA9ICJPYmplY3QgaXMgbm90IGF2YWlsYWJsZS4iIDsKCX07CglTdHJpbmcgU2JFUlJfQkFEX1BST1BfVkFMVUUgJiBFUlJDT0RFX1JFU19NQVNLCgl7CgkJLyogIyMjIEFDSFRVTkc6IE5ldWVyIFRleHQgaW4gUmVzb3VyY2U/IEZhbHNjaGVyIFdlcnQgZrNyIEVpZ2Vuc2NoYWZ0IDogRmFsc2NoZXIgV2VydCBmgXIgRWlnZW5zY2hhZnQgKi8KCQlUZXh0IFsgZW4tVVMgXSA9ICJJbmNvcnJlY3QgcHJvcGVydHkgdmFsdWUuIiA7Cgl9OwoJU3RyaW5nIFNiRVJSX1BST1BfUkVBRE9OTFkgJiBFUlJDT0RFX1JFU19NQVNLCgl7CgkJLyogIyMjIEFDSFRVTkc6IE5ldWVyIFRleHQgaW4gUmVzb3VyY2U/IEVpZ2Vuc2NoYWZ0IGlzdCBzY2hyZWliZ2VzY2izdHp0IDogRWlnZW5zY2hhZnQgaXN0IHNjaHJlaWJnZXNjaIF0enQgKi8KCQlUZXh0IFsgZW4tVVMgXSA9ICJUaGlzIHByb3BlcnR5IGlzIHJlYWQtb25seS4iIDsKCX07CglTdHJpbmcgU2JFUlJfUFJPUF9XUklURU9OTFkgJiBFUlJDT0RFX1JFU19NQVNLCgl7CgkJLyogIyMjIEFDSFRVTkc6IE5ldWVyIFRleHQgaW4gUmVzb3VyY2U/IEVpZ2Vuc2NoYWZ0IGlzdCBsZXNlZ2VzY2izdHp0IDogRWlnZW5zY2hhZnQgaXN0IGxlc2VnZXNjaIF0enQgKi8KCQlUZXh0IFsgZW4tVVMgXSA9ICJUaGlzIHByb3BlcnR5IGlzIHdyaXRlIG9ubHkuIiA7Cgl9OwoJU3RyaW5nIFNiRVJSX0lOVkFMSURfT0JKRUNUICYgRVJSQ09ERV9SRVNfTUFTSwoJewoJCS8qICMjIyBBQ0hUVU5HOiBOZXVlciBUZXh0IGluIFJlc291cmNlPyBVbmezbHRpZ2UgT2JqZWt0cmVmZXJlbnogOiBVbmeBbHRpZ2UgT2JqZWt0cmVmZXJlbnogKi8KCQlUZXh0IFsgZW4tVVMgXSA9ICJJbnZhbGlkIG9iamVjdCByZWZlcmVuY2UuIiA7Cgl9OwoJU3RyaW5nIFNiRVJSX05PX01FVEhPRCAmIEVSUkNPREVfUkVTX01BU0sKCXsKCQlUZXh0IFsgZW4tVVMgXSA9ICJQcm9wZXJ0eSBvciBtZXRob2Qgbm90IGZvdW5kOiAkKEFSRzEpLiIgOwoJfTsKCVN0cmluZyBTYkVSUl9ORUVEU19PQkpFQ1QgJiBFUlJDT0RFX1JFU19NQVNLCgl7CgkJVGV4dCBbIGVuLVVTIF0gPSAiT2JqZWN0IHJlcXVpcmVkLiIgOwoJfTsKCVN0cmluZyBTYkVSUl9JTlZBTElEX1VTQUdFX09CSkVDVCAmIEVSUkNPREVfUkVTX01BU0sKCXsKCQlUZXh0IFsgZW4tVVMgXSA9ICJJbnZhbGlkIHVzZSBvZiBhbiBvYmplY3QuIiA7Cgl9OwoJU3RyaW5nIFNiRVJSX05PX09MRSAmIEVSUkNPREVfUkVTX01BU0sKCXsKCQkvKiAjIyMgQUNIVFVORzogTmV1ZXIgVGV4dCBpbiBSZXNvdXJjZT8gT0xFLUF1dG9tYXRpc2llcnVuZyB3aXJkIHZvbiBkaWVzZW0gT2JqZWt0IG5pY2h0IHVudGVyc3SzdHp0IDogT0xFLUF1dG9tYXRpc2llcnVuZyB3aXJkIHZvbiBkaWVzZW0gT2JqZWt0IG5pY2h0IHVudGVyc3SBdHp0ICovCgkJVGV4dCBbIGVuLVVTIF0gPSAiT0xFIEF1dG9tYXRpb24gaXMgbm90IHN1cHBvcnRlZCBieSB0aGlzIG9iamVjdC4iIDsKCX07CglTdHJpbmcgU2JFUlJfQkFEX01FVEhPRCAmIEVSUkNPREVfUkVTX01BU0sKCXsKCQkvKiAjIyMgQUNIVFVORzogTmV1ZXIgVGV4dCBpbiBSZXNvdXJjZT8gT2JqZWt0IHVudGVyc3SzdHp0IGRpZXNlIEVpZ2Vuc2NoYWZ0IG9kZXIgTWV0aG9kZSBuaWNodCA6IE9iamVrdCB1bnRlcnN0gXR6dCBkaWVzZSBFaWdlbnNjaGFmdCBvZGVyIE1ldGhvZGUgbmljaHQgKi8KCQlUZXh0IFsgZW4tVVMgXSA9ICJUaGlzIHByb3BlcnR5IG9yIG1ldGhvZCBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBvYmplY3QuIiA7Cgl9OwoJU3RyaW5nIFNiRVJSX09MRV9FUlJPUiAmIEVSUkNPREVfUkVTX01BU0sKCXsKCQlUZXh0IFsgZW4tVVMgXSA9ICJPTEUgQXV0b21hdGlvbiBFcnJvci4iIDsKCX07CglTdHJpbmcgU2JFUlJfQkFEX0FDVElPTiAmIEVSUkNPREVfUkVTX01BU0sKCXsKCQkvKiAjIyMgQUNIVFVORzogTmV1ZXIgVGV4dCBpbiBSZXNvdXJjZT8gRGllc2UgQWt0aW9uIHdpcmQgdm9tIGFuZ2VnZWJlbmVuIE9iamVrdCBuaWNodCB1bnRlcnN0s3R6dCA6IERpZXNlIEFrdGlvbiB3aXJkIHZvbSBhbmdlZ2ViZW5lbiBPYmpla3QgbmljaHQgdW50ZXJzdIF0enQgKi8KCQlUZXh0IFsgZW4tVVMgXSA9ICJUaGlzIGFjdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGJ5IGdpdmVuIG9iamVjdC4iIDsKCX07CglTdHJpbmcgU2JFUlJfTk9fTkFNRURfQVJHUyAmIEVSUkNPREVfUkVTX01BU0sKCXsKCQkvKiAjIyMgQUNIVFVORzogTmV1ZXIgVGV4dCBpbiBSZXNvdXJjZT8gQmVuYW5udGUgQXJndW1lbnRlIHdlcmRlbiB2b20gYW5nZWdlYmVuZW4gT2JqZWt0IG5pY2h0IHVudGVyc3SzdHp0IDogQmVuYW5udGUgQXJndW1lbnRlIHdlcmRlbiB2b20gYW5nZWdlYmVuZW4gT2JqZWt0IG5pY2h0IHVudGVyc3SBdHp0ICovCgkJVGV4dCBbIGVuLVVTIF0gPSAiTmFtZWQgYXJndW1lbnRzIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IGdpdmVuIG9iamVjdC4iIDsKCX07CglTdHJpbmcgU2JFUlJfQkFEX0xPQ0FMRSAmIEVSUkNPREVfUkVTX01BU0sKCXsKCQkvKiAjIyMgQUNIVFVORzogTmV1ZXIgVGV4dCBpbiBSZXNvdXJjZT8gRGFzIGFrdHVlbGxlIEdlYmlldHNzY2hlbWEgd2lyZCB2b20gYW5nZWdlYmVuZW4gT2JqZWt0IG5pY2h0IHVudGVyc3SzdHp0IDogRGFzIGFrdHVlbGxlIEdlYmlldHNzY2hlbWEgd2lyZCB2b20gYW5nZWdlYmVuZW4gT2JqZWt0IG5pY2h0IHVudGVyc3SBdHp0ICovCgkJVGV4dCBbIGVuLVVTIF0gPSAiVGhlIGN1cnJlbnQgbG9jYWxlIHNldHRpbmcgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgZ2l2ZW4gb2JqZWN0LiIgOwoJfTsKCVN0cmluZyBTYkVSUl9OQU1FRF9OT1RfRk9VTkQgJiBFUlJDT0RFX1JFU19NQVNLCgl7CgkJVGV4dCBbIGVuLVVTIF0gPSAiTmFtZWQgYXJndW1lbnQgbm90IGZvdW5kLiIgOwoJfTsKCVN0cmluZyBTYkVSUl9OT1RfT1BUSU9OQUwgJiBFUlJDT0RFX1JFU19NQVNLCgl7CgkJVGV4dCBbIGVuLVVTIF0gPSAiQXJndW1lbnQgaXMgbm90IG9wdGlvbmFsLiIgOwoJfTsKCVN0cmluZyBTYkVSUl9XUk9OR19BUkdTICYgRVJSQ09ERV9SRVNfTUFTSwoJewoJCVRleHQgWyBlbi1VUyBdID0gIkludmFsaWQgbnVtYmVyIG9mIGFyZ3VtZW50cy4iIDsKCX07CglTdHJpbmcgU2JFUlJfTk9UX0FfQ09MTCAmIEVSUkNPREVfUkVTX01BU0sKCXsKCQlUZXh0IFsgZW4tVVMgXSA9ICJPYmplY3QgaXMgbm90IGEgbGlzdC4iIDsKCX07CglTdHJpbmcgU2JFUlJfQkFEX09SRElOQUwgJiBFUlJDT0RFX1JFU19NQVNLCgl7CgkJLyogIyMjIEFDSFRVTkc6IE5ldWVyIFRleHQgaW4gUmVzb3VyY2U/IE9yZG51bmdzemFobCB1bmezbHRpZyA6IE9yZG51bmdzemFobCB1bmeBbHRpZyAqLwoJCVRleHQgWyBlbi1VUyBdID0gIkludmFsaWQgb3JkaW5hbCBudW1iZXIuIiA7Cgl9OwoJU3RyaW5nIFNiRVJSX0RMTFBST0NfTk9UX0ZPVU5EICYgRVJSQ09ERV9SRVNfTUFTSwoJewoJCVRleHQgWyBlbi1VUyBdID0gIlNwZWNpZmllZCBETEwgZnVuY3Rpb24gbm90IGZvdW5kLiIgOwoJfTsKCVN0cmluZyBTYkVSUl9CQURfQ0xJUEJEX0ZPUk1BVCAmIEVSUkNPREVfUkVTX01BU0sKCXsKCQkvKiAjIyMgQUNIVFVORzogTmV1ZXIgVGV4dCBpbiBSZXNvdXJjZT8gVW5ns2x0aWdlcyBDbGlwYm9hcmQtRm9ybWF0IDogVW5ngWx0aWdlcyBDbGlwYm9hcmQtRm9ybWF0ICovCgkJVGV4dCBbIGVuLVVTIF0gPSAiSW52YWxpZCBjbGlwYm9hcmQgZm9ybWF0LiIgOwoJfTsKCVN0cmluZyBTYkVSUl9QUk9QRVJUWV9OT1RfRk9VTkQgJiBFUlJDT0RFX1JFU19NQVNLCgl7CgkJVGV4dCBbIGVuLVVTIF0gPSAiT2JqZWN0IGRvZXMgbm90IGhhdmUgdGhpcyBwcm9wZXJ0eS4iIDsKCX07CglTdHJpbmcgU2JFUlJfTUVUSE9EX05PVF9GT1VORCAmIEVSUkNPREVfUkVTX01BU0sKCXsKCQlUZXh0IFsgZW4tVVMgXSA9ICJPYmplY3QgZG9lcyBub3QgaGF2ZSB0aGlzIG1ldGhvZC4iIDsKCX07CglTdHJpbmcgU2JFUlJfQVJHX01JU1NJTkcgJiBFUlJDT0RFX1JFU19NQVNLCgl7CgkJVGV4dCBbIGVuLVVTIF0gPSAiUmVxdWlyZWQgYXJndW1lbnQgbGFja2luZy4iIDsKCX07CglTdHJpbmcgU2JFUlJfQkFEX05VTUJFUl9PRl9BUkdTICYgRVJSQ09ERV9SRVNfTUFTSwoJewoJCS8qICMjIyBBQ0hUVU5HOiBOZXVlciBUZXh0IGluIFJlc291cmNlPyBVbmezbHRpZ2UgQW56YWhsIHZvbiBBcmd1bWVudGVuIDogVW5ngWx0aWdlIEFuemFobCB2b24gQXJndW1lbnRlbiAqLwoJCVRleHQgWyBlbi1VUyBdID0gIkludmFsaWQgbnVtYmVyIG9mIGFyZ3VtZW50cy4iIDsKCX07CglTdHJpbmcgU2JFUlJfTUVUSE9EX0ZBSUxFRCAmIEVSUkNPREVfUkVTX01BU0sKCXsKCQkvKiAjIyMgQUNIVFVORzogTmV1ZXIgVGV4dCBpbiBSZXNvdXJjZT8gRmVobGVyIGluIEF1c2azaHJ1bmcgZWluZXIgTWV0aG9kZSA6IEZlaGxlciBpbiBBdXNmgWhydW5nIGVpbmVyIE1ldGhvZGUgKi8KCQlUZXh0IFsgZW4tVVMgXSA9ICJFcnJvciBleGVjdXRpbmcgYSBtZXRob2QuIiA7Cgl9OwoJU3RyaW5nIFNiRVJSX1NFVFBST1BfRkFJTEVEICYgRVJSQ09ERV9SRVNfTUFTSwoJewoJCVRleHQgWyBlbi1VUyBdID0gIlVuYWJsZSB0byBzZXQgcHJvcGVydHkuIiA7Cgl9OwoJU3RyaW5nIFNiRVJSX0dFVFBST1BfRkFJTEVEICYgRVJSQ09ERV9SRVNfTUFTSwoJewoJCVRleHQgWyBlbi1VUyBdID0gIlVuYWJsZSB0byBkZXRlcm1pbmUgcHJvcGVydHkuIiA7Cgl9OwoJIC8vIENvbXBpbGVyIGVycm9ycy4gVGhlc2UgYXJlIG5vdCBydW50aW1lIGVycm9ycy4KCVN0cmluZyBTYkVSUl9VTkVYUEVDVEVEICYgRVJSQ09ERV9SRVNfTUFTSwoJewoJCVRleHQgWyBlbi1VUyBdID0gIlVuZXhwZWN0ZWQgc3ltYm9sOiAkKEFSRzEpLiIgOwoJfTsKCVN0cmluZyBTYkVSUl9FWFBFQ1RFRCAmIEVSUkNPREVfUkVTX01BU0sKCXsKCQlUZXh0IFsgZW4tVVMgXSA9ICJFeHBlY3RlZDogJChBUkcxKS4iIDsKCX07CglTdHJpbmcgU2JFUlJfU1lNQk9MX0VYUEVDVEVEICYgRVJSQ09ERV9SRVNfTUFTSwoJewoJCVRleHQgWyBlbi1VUyBdID0gIlN5bWJvbCBleHBlY3RlZC4iIDsKCX07CglTdHJpbmcgU2JFUlJfVkFSX0VYUEVDVEVEICYgRVJSQ09ERV9SRVNfTUFTSwoJewoJCVRleHQgWyBlbi1VUyBdID0gIlZhcmlhYmxlIGV4cGVjdGVkLiIgOwoJfTsKCVN0cmluZyBTYkVSUl9MQUJFTF9FWFBFQ1RFRCAmIEVSUkNPREVfUkVTX01BU0sKCXsKCQlUZXh0IFsgZW4tVVMgXSA9ICJMYWJlbCBleHBlY3RlZC4iIDsKCX07CglTdHJpbmcgU2JFUlJfTFZBTFVFX0VYUEVDVEVEICYgRVJSQ09ERV9SRVNfTUFTSwoJewoJCVRleHQgWyBlbi1VUyBdID0gIlZhbHVlIGNhbm5vdCBiZSBhcHBsaWVkLiIgOwoJfTsKCVN0cmluZyBTYkVSUl9WQVJfREVGSU5FRCAmIEVSUkNPREVfUkVTX01BU0sKCXsKCQlUZXh0IFsgZW4tVVMgXSA9ICJWYXJpYWJsZSAkKEFSRzEpIGFscmVhZHkgZGVmaW5lZC4iIDsKCX07CglTdHJpbmcgU2JFUlJfUFJPQ19ERUZJTkVEICYgRVJSQ09ERV9SRVNfTUFTSwoJewoJCVRleHQgWyBlbi1VUyBdID0gIlN1YiBwcm9jZWR1cmUgb3IgZnVuY3Rpb24gcHJvY2VkdXJlICQoQVJHMSkgYWxyZWFkeSBkZWZpbmVkLiIgOwoJfTsKCVN0cmluZyBTYkVSUl9MQUJFTF9ERUZJTkVEICYgRVJSQ09ERV9SRVNfTUFTSwoJewoJCVRleHQgWyBlbi1VUyBdID0gIkxhYmVsICQoQVJHMSkgYWxyZWFkeSBkZWZpbmVkLiIgOwoJfTsKCVN0cmluZyBTYkVSUl9VTkRFRl9WQVIgJiBFUlJDT0RFX1JFU19NQVNLCgl7CgkJVGV4dCBbIGVuLVVTIF0gPSAiVmFyaWFibGUgJChBUkcxKSBub3QgZm91bmQuIiA7Cgl9OwoJU3RyaW5nIFNiRVJSX1VOREVGX0FSUkFZICYgRVJSQ09ERV9SRVNfTUFTSwoJewoJCVRleHQgWyBlbi1VUyBdID0gIkFycmF5IG9yIHByb2NlZHVyZSAkKEFSRzEpIG5vdCBmb3VuZC4iIDsKCX07CglTdHJpbmcgU2JFUlJfVU5ERUZfUFJPQyAmIEVSUkNPREVfUkVTX01BU0sKCXsKCQlUZXh0IFsgZW4tVVMgXSA9ICJQcm9jZWR1cmUgJChBUkcxKSBub3QgZm91bmQuIiA7Cgl9OwoJU3RyaW5nIFNiRVJSX1VOREVGX0xBQkVMICYgRVJSQ09ERV9SRVNfTUFTSwoJewoJCVRleHQgWyBlbi1VUyBdID0gIkxhYmVsICQoQVJHMSkgdW5kZWZpbmVkLiIgOwoJfTsKCVN0cmluZyBTYkVSUl9VTkRFRl9UWVBFICYgRVJSQ09ERV9SRVNfTUFTSwoJewoJCVRleHQgWyBlbi1VUyBdID0gIlVua25vd24gZGF0YSB0eXBlICQoQVJHMSkuIiA7Cgl9OwoJU3RyaW5nIFNiRVJSX0JBRF9FWElUICYgRVJSQ09ERV9SRVNfTUFTSwoJewoJCVRleHQgWyBlbi1VUyBdID0gIkV4aXQgJChBUkcxKSBleHBlY3RlZC4iIDsKCX07CglTdHJpbmcgU2JFUlJfQkFEX0JMT0NLICYgRVJSQ09ERV9SRVNfTUFTSwoJewoJCVRleHQgWyBlbi1VUyBdID0gIlN0YXRlbWVudCBibG9jayBzdGlsbCBvcGVuOiAkKEFSRzEpIG1pc3NpbmcuIiA7Cgl9OwoJU3RyaW5nIFNiRVJSX0JBRF9CUkFDS0VUUyAmIEVSUkNPREVfUkVTX01BU0sKCXsKCQlUZXh0IFsgZW4tVVMgXSA9ICJQYXJlbnRoZXNlcyBkbyBub3QgbWF0Y2guIiA7Cgl9OwoJU3RyaW5nIFNiRVJSX0JBRF9ERUNMQVJBVElPTiAmIEVSUkNPREVfUkVTX01BU0sKCXsKCQlUZXh0IFsgZW4tVVMgXSA9ICJTeW1ib2wgJChBUkcxKSBhbHJlYWR5IGRlZmluZWQgZGlmZmVyZW50bHkuIiA7Cgl9OwoJU3RyaW5nIFNiRVJSX0JBRF9QQVJBTUVURVJTICYgRVJSQ09ERV9SRVNfTUFTSwoJewoJCVRleHQgWyBlbi1VUyBdID0gIlBhcmFtZXRlcnMgZG8gbm90IGNvcnJlc3BvbmQgdG8gcHJvY2VkdXJlLiIgOwoJfTsKCVN0cmluZyBTYkVSUl9CQURfQ0hBUl9JTl9OVU1CRVIgJiBFUlJDT0RFX1JFU19NQVNLCgl7CgkJLyogIyMjIEFDSFRVTkc6IE5ldWVyIFRleHQgaW4gUmVzb3VyY2U/IFVuZ7NsdGlnZXMgWmVpY2hlbiBpbiBaYWhsIDogVW5ngWx0aWdlcyBaZWljaGVuIGluIFphaGwgKi8KCQlUZXh0IFsgZW4tVVMgXSA9ICJJbnZhbGlkIGNoYXJhY3RlciBpbiBudW1iZXIuIiA7Cgl9OwoJU3RyaW5nIFNiRVJSX01VU1RfSEFWRV9ESU1TICYgRVJSQ09ERV9SRVNfTUFTSwoJewoJCS8qICMjIyBBQ0hUVU5HOiBOZXVlciBUZXh0IGluIFJlc291cmNlPyBBcnJheSBtdZggZGltZW5zaW9uaWVydCB3ZXJkZW4gOiBBcnJheSBtdf8gZGltZW5zaW9uaWVydCB3ZXJkZW4gKi8KCQlUZXh0IFsgZW4tVVMgXSA9ICJBcnJheSBtdXN0IGJlIGRpbWVuc2lvbmVkLiIgOwoJfTsKCVN0cmluZyBTYkVSUl9OT19JRiAmIEVSUkNPREVfUkVTX01BU0sKCXsKCQlUZXh0IFsgZW4tVVMgXSA9ICJFbHNlL0VuZGlmIHdpdGhvdXQgSWYuIiA7Cgl9OwoJU3RyaW5nIFNiRVJSX05PVF9JTl9TVUJSICYgRVJSQ09ERV9SRVNfTUFTSwoJewoJCS8qICMjIyBBQ0hUVU5HOiBOZXVlciBUZXh0IGluIFJlc291cmNlPyAkKEFSRzEpIGlubmVyaGFsYiBlaW5lciBQcm96ZWR1ciB1bnp1bPVzc2lnIDogJChBUkcxKSBpbm5lcmhhbGIgZWluZXIgUHJvemVkdXIgdW56dWync3NpZyAqLwoJCVRleHQgWyBlbi1VUyBdID0gIiQoQVJHMSkgbm90IGFsbG93ZWQgd2l0aGluIGEgcHJvY2VkdXJlLiIgOwoJfTsKCVN0cmluZyBTYkVSUl9OT1RfSU5fTUFJTiAmIEVSUkNPREVfUkVTX01BU0sKCXsKCQkvKiAjIyMgQUNIVFVORzogTmV1ZXIgVGV4dCBpbiBSZXNvdXJjZT8gJChBUkcxKSBhdZhlcmhhbGIgZWluZXIgUHJvemVkdXIgdW56dWz1c3NpZyA6ICQoQVJHMSkgYXX/ZXJoYWxiIGVpbmVyIFByb3plZHVyIHVuenVsp3NzaWcgKi8KCQlUZXh0IFsgZW4tVVMgXSA9ICIkKEFSRzEpIG5vdCBhbGxvd2VkIG91dHNpZGUgYSBwcm9jZWR1cmUuIiA7Cgl9OwoJU3RyaW5nIFNiRVJSX1dST05HX0RJTVMgJiBFUlJDT0RFX1JFU19NQVNLCgl7CgkJVGV4dCBbIGVuLVVTIF0gPSAiRGltZW5zaW9uIHNwZWNpZmljYXRpb25zIGRvIG5vdCBtYXRjaC4iIDsKCX07CglTdHJpbmcgU2JFUlJfQkFEX09QVElPTiAmIEVSUkNPREVfUkVTX01BU0sKCXsKCQlUZXh0IFsgZW4tVVMgXSA9ICJVbmtub3duIG9wdGlvbjogJChBUkcxKS4iIDsKCX07CglTdHJpbmcgU2JFUlJfQ09OU1RBTlRfUkVERUNMQVJFRCAmIEVSUkNPREVfUkVTX01BU0sKCXsKCQlUZXh0IFsgZW4tVVMgXSA9ICJDb25zdGFudCAkKEFSRzEpIHJlZGVmaW5lZC4iIDsKCX07CglTdHJpbmcgU2JFUlJfUFJPR19UT09fTEFSR0UgJiBFUlJDT0RFX1JFU19NQVNLCgl7CgkJLyogIyMjIEFDSFRVTkc6IE5ldWVyIFRleHQgaW4gUmVzb3VyY2U/IFByb2dyYW1tIGlzdCB6dSBncm+YIDogUHJvZ3JhbW0gaXN0IHp1IGdyb/8gKi8KCQlUZXh0IFsgZW4tVVMgXSA9ICJQcm9ncmFtIHRvbyBsYXJnZS4iIDsKCX07CglTdHJpbmcgU2JFUlJfTk9fU1RSSU5HU19BUlJBWVMgJiBFUlJDT0RFX1JFU19NQVNLCgl7CgkJLyogIyMjIEFDSFRVTkc6IE5ldWVyIFRleHQgaW4gUmVzb3VyY2U/IFN0cmluZ3Mgb2RlciBBcnJheXMgdW56dWz1c3NpZyA6IFN0cmluZ3Mgb2RlciBBcnJheXMgdW56dWync3NpZyAqLwoJCVRleHQgWyBlbi1VUyBdID0gIlN0cmluZ3Mgb3IgYXJyYXlzIG5vdCBwZXJtaXR0ZWQuIiA7Cgl9OwoJU3RyaW5nIEVSUkNPREVfQkFTSUNfRVhDRVBUSU9OICYgRVJSQ09ERV9SRVNfTUFTSwoJewoJCVRleHQgWyBlbi1VUyBdID0gIkFuIGV4Y2VwdGlvbiBvY2N1cnJlZCAkKEFSRzEpLiIgOwoJfTsKCVN0cmluZyBFUlJDT0RFX0JBU0lDX0FSUkFZX0ZJWCAmIEVSUkNPREVfUkVTX01BU0sKCXsKCQlUZXh0IFsgZW4tVVMgXSA9ICJUaGlzIGFycmF5IGlzIGZpeGVkIG9yIHRlbXBvcmFyaWx5IGxvY2tlZC4iIDsKCX07CglTdHJpbmcgRVJSQ09ERV9CQVNJQ19TVFJJTkdfT1ZFUkZMT1cgJiBFUlJDT0RFX1JFU19NQVNLCgl7CgkJVGV4dCBbIGVuLVVTIF0gPSAiT3V0IG9mIHN0cmluZyBzcGFjZS4iIDsKCX07CglTdHJpbmcgRVJSQ09ERV9CQVNJQ19FWFBSX1RPT19DT01QTEVYICYgRVJSQ09ERV9SRVNfTUFTSwoJewoJCVRleHQgWyBlbi1VUyBdID0gIkV4cHJlc3Npb24gVG9vIENvbXBsZXguIiA7Cgl9OwoJU3RyaW5nIEVSUkNPREVfQkFTSUNfT1BFUl9OT1RfUEVSRk9STSAmIEVSUkNPREVfUkVTX01BU0sKCXsKCQlUZXh0IFsgZW4tVVMgXSA9ICJDYW4ndCBwZXJmb3JtIHJlcXVlc3RlZCBvcGVyYXRpb24uIiA7Cgl9OwoJU3RyaW5nIEVSUkNPREVfQkFTSUNfVE9PX01BTllfRExMICYgRVJSQ09ERV9SRVNfTUFTSwoJewoJCVRleHQgWyBlbi1VUyBdID0gIlRvbyBtYW55IERMTCBhcHBsaWNhdGlvbiBjbGllbnRzLiIgOwoJfTsKCVN0cmluZyBFUlJDT0RFX0JBU0lDX0xPT1BfTk9UX0lOSVQgJiBFUlJDT0RFX1JFU19NQVNLCgl7CgkJVGV4dCBbIGVuLVVTIF0gPSAiRm9yIGxvb3Agbm90IGluaXRpYWxpemVkLiIgOwoJfTsKCVN0cmluZyBFUlJDT0RFX0JBU0lDX0NPTVBBVCAmIEVSUkNPREVfUkVTX01BU0sKCXsKCQlUZXh0IFsgZW4tVVMgXSA9ICIkKEFSRzEpIiA7Cgl9Owp9OwogLy8gSGlud2VpczogSURTX1NCRVJSX1RFUk1JTkFURUQgPSBJRFNfU0JFUlJfU1RBUlQrMjAwMC4KU3RyaW5nIElEU19TQkVSUl9URVJNSU5BVEVECnsKCVRleHQgWyBlbi1VUyBdID0gIlRoZSBtYWNybyBydW5uaW5nIGhhcyBiZWVuIGludGVycnVwdGVkIiA7Cn07ClN0cmluZyBJRFNfU0JFUlJfU1RPUkVSRUYKewoJVGV4dCBbIGVuLVVTIF0gPSAiUmVmZXJlbmNlIHdpbGwgbm90IGJlIHNhdmVkOiAiOwp9OwpTdHJpbmcgRVJSQ09ERV9CQVNNR1JfTElCTE9BRCAmIEVSUkNPREVfUkVTX01BU0sKewoJLyogIyMjIEFDSFRVTkc6IE5ldWVyIFRleHQgaW4gUmVzb3VyY2U/IEZlaGxlciBiZWltIExhZGVuIGRlciBCaWJsaW90aGVrICckKEFSRzEpJyA6IEZlaGxlciBiZWltIExhZGVuIGRlciBCaWJsaW90aGVrICcnJChBUkcxKScnICovCgkvKiAjIyMgQUNIVFVORzogTmV1ZXIgVGV4dCBpbiBSZXNvdXJjZT8gRmVobGVyIGJlaW0gTGFkZW4gZGVyIEJpYmxpb3RoZWsgJyQoQVJHMSknIDogRmVobGVyIGJlaW0gTGFkZW4gZGVyIEJpYmxpb3RoZWsgJyckKEFSRzEpICovCgkvKiAjIyMgQUNIVFVORzogTmV1ZXIgVGV4dCBpbiBSZXNvdXJjZT8gRmVobGVyIGJlaW0gTGFkZW4gZGVyIEJpYmxpb3RoZWsgJyQoQVJHMSknIDogRmVobGVyIGJlaW0gTGFkZW4gZGVyIEJpYmxpb3RoZWsgJyckKEFSRzEpICovCgkvKiAjIyMgQUNIVFVORzogTmV1ZXIgVGV4dCBpbiBSZXNvdXJjZT8gRmVobGVyIGJlaW0gTGFkZW4gZGVyIEJpYmxpb3RoZWsgJyQoQVJHMSknIDogRmVobGVyIGJlaW0gTGFkZW4gZGVyIEJpYmxpb3RoZWsgJyckKEFSRzEpJycgKi8KCVRleHQgWyBlbi1VUyBdID0gIkVycm9yIGxvYWRpbmcgbGlicmFyeSAnJChBUkcxKScuIiA7Cn07ClN0cmluZyBFUlJDT0RFX0JBU01HUl9MSUJTQVZFICYgRVJSQ09ERV9SRVNfTUFTSwp7CgkvKiAjIyMgQUNIVFVORzogTmV1ZXIgVGV4dCBpbiBSZXNvdXJjZT8gRmVobGVyIGJlaW0gU3BlaWNoZXJuIGRlciBCaWJsaW90aGVrOiAnJChBUkcxKScgOiBGZWhsZXIgYmVpbSBTcGVpY2hlcm4gZGVyIEJpYmxpb3RoZWs6ICcnJChBUkcxKScnICovCgkvKiAjIyMgQUNIVFVORzogTmV1ZXIgVGV4dCBpbiBSZXNvdXJjZT8gRmVobGVyIGJlaW0gU3BlaWNoZXJuIGRlciBCaWJsaW90aGVrOiAnJChBUkcxKScgOiBGZWhsZXIgYmVpbSBTcGVpY2hlcm4gZGVyIEJpYmxpb3RoZWs6ICcnJChBUkcxKSAqLwoJLyogIyMjIEFDSFRVTkc6IE5ldWVyIFRleHQgaW4gUmVzb3VyY2U/IEZlaGxlciBiZWltIFNwZWljaGVybiBkZXIgQmlibGlvdGhlazogJyQoQVJHMSknIDogRmVobGVyIGJlaW0gU3BlaWNoZXJuIGRlciBCaWJsaW90aGVrOiAnJyQoQVJHMSkgKi8KCS8qICMjIyBBQ0hUVU5HOiBOZXVlciBUZXh0IGluIFJlc291cmNlPyBGZWhsZXIgYmVpbSBTcGVpY2hlcm4gZGVyIEJpYmxpb3RoZWs6ICckKEFSRzEpJyA6IEZlaGxlciBiZWltIFNwZWljaGVybiBkZXIgQmlibGlvdGhlazogJyckKEFSRzEpJycgKi8KCVRleHQgWyBlbi1VUyBdID0gIkVycm9yIHNhdmluZyBsaWJyYXJ5OiAnJChBUkcxKScuIiA7Cn07ClN0cmluZyBFUlJDT0RFX0JBU01HUl9NR1JPUEVOICYgRVJSQ09ERV9SRVNfTUFTSwp7CgkvKiAjIyMgQUNIVFVORzogTmV1ZXIgVGV4dCBpbiBSZXNvdXJjZT8gRGFzIEJBU0lDIGF1cyBkZXIgRGF0ZWkgJyQoQVJHMSknIGtvbm50ZSBuaWNodCBpbml0aWFsaXNpZXJ0IHdlcmRlbiA6IERhcyBCQVNJQyBhdXMgZGVyIERhdGVpICcnJChBUkcxKScnIGtvbm50ZSBuaWNodCBpbml0aWFsaXNpZXJ0IHdlcmRlbiAqLwoJLyogIyMjIEFDSFRVTkc6IE5ldWVyIFRleHQgaW4gUmVzb3VyY2U/IERhcyBCQVNJQyBhdXMgZGVyIERhdGVpICckKEFSRzEpJyBrb25udGUgbmljaHQgaW5pdGlhbGlzaWVydCB3ZXJkZW4gOiBEYXMgQkFTSUMgYXVzIGRlciBEYXRlaSAnJyQoQVJHMSknJyBrb25udGUgbmljaHQgaW5pdGlhbGlzaWVydCB3ZXJkZW4gKi8KCS8qICMjIyBBQ0hUVU5HOiBOZXVlciBUZXh0IGluIFJlc291cmNlPyBEYXMgQkFTSUMgYXVzIGRlciBEYXRlaSAnJChBUkcxKScga29ubnRlIG5pY2h0IGluaXRpYWxpc2llcnQgd2VyZGVuIDogRGFzIEJBU0lDIGF1cyBkZXIgRGF0ZWkgJyckKEFSRzEpJycga29ubnRlIG5pY2h0IGluaXRpYWxpc2llcnQgd2VyZGVuICovCgkvKiAjIyMgQUNIVFVORzogTmV1ZXIgVGV4dCBpbiBSZXNvdXJjZT8gRGFzIEJBU0lDIGF1cyBkZXIgRGF0ZWkgJyQoQVJHMSknIGtvbm50ZSBuaWNodCBpbml0aWFsaXNpZXJ0IHdlcmRlbiA6IERhcyBCQVNJQyBhdXMgZGVyIERhdGVpICcnJChBUkcxKScnIGtvbm50ZSBuaWNodCBpbml0aWFsaXNpZXJ0IHdlcmRlbiAqLwoJVGV4dCBbIGVuLVVTIF0gPSAiVGhlIEJBU0lDIGZyb20gdGhlIGZpbGUgJyQoQVJHMSknIGNvdWxkIG5vdCBiZSBpbml0aWFsaXplZC4iIDsKfTsKU3RyaW5nIEVSUkNPREVfQkFTTUdSX01HUlNBVkUgJiBFUlJDT0RFX1JFU19NQVNLCnsKCVRleHQgWyBlbi1VUyBdID0gIkVycm9yIHNhdmluZyBCQVNJQzogJyQoQVJHMSknLiIgOwp9OwpTdHJpbmcgRVJSQ09ERV9CQVNNR1JfUkVNT1ZFTElCICYgRVJSQ09ERV9SRVNfTUFTSwp7CglUZXh0IFsgZW4tVVMgXSA9ICJFcnJvciByZW1vdmluZyBsaWJyYXJ5LiIgOwp9OwpTdHJpbmcgRVJSQ09ERV9CQVNNR1JfVU5MT0FETElCICYgRVJSQ09ERV9SRVNfTUFTSwp7CglUZXh0IFsgZW4tVVMgXSA9ICJUaGUgbGlicmFyeSBjb3VsZCBub3QgYmUgcmVtb3ZlZCBmcm9tIG1lbW9yeS4iIDsKfTsKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo=