PD9waHAgIAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCXJlcXVpcmVfb25jZSgkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddIC4gIi9lY2xpcHNlLm9yZy1jb21tb24vc3lzdGVtL2FwcC5jbGFzcy5waHAiKTsJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbmF2LmNsYXNzLnBocCIpOyAJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbWVudS5jbGFzcy5waHAiKTsgCSRBcHAgCT0gbmV3IEFwcCgpOwkkTmF2CT0gbmV3IE5hdigpOwkkTWVudSAJPSBuZXcgTWVudSgpOwkJaW5jbHVkZSgiX3Byb2plY3RDb21tb24ucGhwIik7ICAgICMgQWxsIG9uIHRoZSBzYW1lIGxpbmUgdG8gdW5jbHV0dGVyIHRoZSB1c2VyJ3MgZGVza3RvcCcKCgkKCSMKCSMgQmVnaW46IHBhZ2Utc3BlY2lmaWMgc2V0dGluZ3MuICBDaGFuZ2UgdGhlc2UuIAoJJHBhZ2VUaXRsZSAJCT0gIkVjbGlwc2UgUmllbmEgcHJvamVjdCBlbmhhbmNlcyBidWlsZGluZyBlbnRlcnByaXNlIGFwcGxpY2F0aW9ucyB1c2luZyBFY2xpcHNlIFJDUCI7CgkkcGFnZUtleXdvcmRzCT0gImVjbGlwc2UsIHJpZW5hLCBwcmVzcywgcmVsZWFzZSI7CgkkcGFnZUF1dGhvcgkJPSAiSWFuIFNrZXJyZXR0IjsKCQoJIyBBZGQgcGFnZS1zcGVjaWZpYyBOYXYgYmFycyBoZXJlCgkjIEZvcm1hdCBpcyBMaW5rIHRleHQsIGxpbmsgVVJMIChjYW4gYmUgaHR0cDovL3d3dy5zb21lb3RoZXJzaXRlLmNvbS8pLCB0YXJnZXQgKF9zZWxmLCBfYmxhbmspCgkjICROYXYtPmFkZEN1c3RvbU5hdigiTXkgTGluayIsICJteXBhZ2UucGhwIiwgIl9zZWxmIik7CgkjICROYXYtPmFkZEN1c3RvbU5hdigiR29vZ2xlIiwgImh0dHA6Ly93d3cuZ29vZ2xlLmNvbS8iLCAiX2JsYW5rIik7CgoJIyBFbmQ6IHBhZ2Utc3BlY2lmaWMgc2V0dGluZ3MKCSMKCQoJIyBQYXN0ZSB5b3VyIEhUTUwgY29udGVudCBiZXR3ZWVuIHRoZSBFT0hUTUwgbWFya2VycyEJCgkkaHRtbCA9IDw8PEVPSFRNTAoJCTxzdHlsZT4KCQkucGFkZGVkbGlzdCBsaSB7CXBhZGRpbmctYm90dG9tOjdweDsJfQoJPC9zdHlsZT4KPGRpdiBpZD0ibWFpbmNvbnRlbnQiPgoJPGRpdiBpZD0ibWlkY29sdW1uIj4KCQk8aDI+UHJlc3MgUmVsZWFzZTwvaDI+CgkJPGNlbnRlcj4KCQk8aDE+JHBhZ2VUaXRsZTwvaDE+CgkJPHA+PGk+Y29tcGVvcGxlIEFHIGlzIGxlYWRpbmcgdGhlIHByb2plY3Q8L2k+PC9wPjwvY2VudGVyPgoJCTxwPjxzdHJvbmc+T3R0YXdhLCBDYW5hZGEsIGFuZCBGcmFua2Z1cnQsIEdlcm1hbnkgLSBGZWJydWFyeSAxMywgMjAwOCAtIDwvc3Ryb25nPlRoZSBFY2xpcHNlIEZvdW5kYXRpb24gYW5kIGNvbXBlb3BsZSBBRyB0b2RheSBhbm5vdW5jZWQgdGhhdCBSaWVuYSBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgZXN0YWJsaXNoZWQgYXMgYW4gb3Blbi1zb3VyY2UgcHJvamVjdCB3aXRoaW4gdGhlIEVjbGlwc2UgY29tbXVuaXR5LiBUaGUgUmllbmEgcHJvamVjdCB3aWxsIHByb3ZpZGUgYSBob21vZ2VuZW91cyBwbGF0Zm9ybSBmb3IgYnVzaW5lc3MgZW50ZXJwcmlzZSBhcHBsaWNhdGlvbnMgZnJvbSB0aGUgdXNlciBpbnRlcmZhY2UgdG8gdGhlIGJhY2stZW5kIGludGVncmF0aW9uLCBiYXNlZCBlbnRpcmVseSBvbiB0aGUgRWNsaXBzZSBFcXVpbm94IHBsYXRmb3JtLiBCeSBkb2luZyBzbywgUmllbmEgd2lsbCBtYWtlIGl0IGVhc2llciBhbmQgbXVjaCBtb3JlIGNvbWZvcnRhYmxlIHRvIGJ1aWxkIG11bHRpLXRpZXIgZW50ZXJwcmlzZSBjbGllbnQvc2VydmVyIGFwcGxpY2F0aW9ucywgdXNpbmcgRWNsaXBzZSBSQ1AgKFJpY2ggQ2xpZW50IFBsYXRmb3JtKS4gCgkJPC9wPgoJCTxwPlJpZW5hIGFpbXMgdG8gYnJvYWRlbiB0aGUgdXNhZ2Ugb2YgdGhlIHNlcnZpY2Ugb3JpZW50ZWQgYXJjaGl0ZWN0dXJlIG9mIEVxdWlub3ggYnkgcHJvdmlkaW5nIGFjY2VzcyB0byBsb2NhbCBhbmQgcmVtb3RlIHNlcnZpY2VzIGluIGEgdHJhbnNwYXJlbnQgd2F5LiBVc2luZyB0aGlzIGNvbnNpc3RlbnQgY29tcG9uZW50IG1vZGVsLCB0aGUgY29tcG9uZW50cyBvZiB0aGUgZW50ZXJwcmlzZSBhcHBsaWNhdGlvbiBjYW4gYmUgZGV2ZWxvcGVkIHJlZ2FyZGxlc3Mgb2YgdGhlaXIgdGFyZ2V0IGxvY2F0aW9uLiBDb21wb25lbnRzIGFyZSBsYXRlciBlYXNpbHkgcGxhY2VkIG9uIGNsaWVudCBvciBzZXJ2ZXIsIGRlcGVuZGluZyBvbiB0aGUgYnVzaW5lc3MgcmVxdWlyZW1lbnRzLiA8L3A+CgkJCgkJPHA+SW4gb3JkZXIgdG8gYWNoaWV2ZSB0aGlzIGdvYWwsIHRoZSBSaWVuYSBwcm9qZWN0IHRlYW0gd2lsbCBhZGFwdCBjb21wb25lbnRzIGZyb20gZXhpc3RpbmcgRWNsaXBzZSBwcm9qZWN0cyB0byBzdXBwb3J0IHRoZSBkaXN0cmlidXRlZCBhc3BlY3Qgb2YgZW50ZXJwcmlzZSBhcHBsaWNhdGlvbnMuIEZ1cnRoZXJtb3JlLCBpdCB3aWxsIHByb3ZpZGUgbmV3IGNvbXBvbmVudHMgdG8gc3VwcG9ydCB0aGUgc3BlY2lhbCBuZWVkcyBvZiBidWlsZGluZyBhbmQgcnVubmluZyBsYXJnZSBlbnRlcnByaXNlIGFwcGxpY2F0aW9ucy4gQXMgYW4gZXhhbXBsZSwgdGhlIFJpZW5hIHVzZXIgaW50ZXJmYWNlIHdpbGwgc3VwcG9ydCBhIGJ1c2luZXNzIHByb2Nlc3Mgb3JpZW50ZWQgdXNlciBpbnRlcmZhY2UgdmlzdWFsaXphdGlvbiBhbmQgbmF2aWdhdGlvbiBtZXRhcGhvciB3aGljaCBjYW4gYmUgdXNlZCBhcyBhbiBhbHRlcm5hdGl2ZSB0byB0aGUgZGVmYXVsdCB3b3JrYmVuY2ggbGF5b3V0LjwvcD4KCgkJPHA+k1dpdGggUmllbmEsIHdlIGFkZCBhbm90aGVyIGltcG9ydGFudCBwcm9qZWN0IHRvIG91ciBjb21tdW5pdHkslCBzYWlkIE1pa2UgTWlsaW5rb3ZpY2gsIGV4ZWN1dGl2ZSBkaXJlY3RvciBvZiB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uLiCTUmllbmEgcHJvbWlzZXMgdG8gc2VhbWxlc3NseSBpbnRlZ3JhdGUgdGhlIEVjbGlwc2UgY2xpZW50IGFuZCBzZXJ2ZXIgdGllcnMuIEJ5IHByb3ZpZGluZyBhIHNjYWxhYmxlIHBsYXRmb3JtLCBSaWVuYSB3aWxsIHN1cHBvcnQgdGhlIGdyb3d0aCBvZiBFY2xpcHNlIEVxdWlub3ggYW5kIFJDUCBhcyBhIHNvbHV0aW9uIGZvciBkZXZlbG9waW5nIGVudGVycHJpc2UgYXBwbGljYXRpb25zIHdpdGggc29waGlzdGljYXRlZCB1c2VyIGludGVyZmFjZXMulAoJCTwvcD4KCQk8cD4KCQkJCVRoZSBFY2xpcHNlIFJpZW5hIHByb2plY3Qgd2FzIHByb3Bvc2VkIGFuZCBpcyBub3cgYmVpbmcgbGVkIGJ5IGNvbXBlb3BsZSBBRywgYSBHZXJtYW4gSVQtU2VydmljZSBwcm92aWRlci4KCQk8L3A+IAoJCTxwPpNjb21wZW9wbGUgaXMgZXhjaXRlZCB0byBwbGF5IGEgbWFqb3Igcm9sZSBpbiB0aGUgUmllbmEgcHJvamVjdCBhbmQgaW4gdGhpcyB3YXkgdG8gZXh0ZW5kIG91ciBpbnZvbHZlbWVudCBpbiB0aGUgRWNsaXBzZSBjb21tdW5pdHkslCBzYWlkIEr8cmdlbiBXaWVzbWFpZXIsIG1lbWJlciBvZiB0aGUgYm9hcmQgb2YgZGlyZWN0b3JzIGFuZCBDVE8gb2YgY29tcGVvcGxlLi4gk0FzIGFuIGV4cGVydCBpbiBkZXZlbG9waW5nIFNtYXJ0IENsaWVudCBiYXNlZCBhcHBsaWNhdGlvbnMsIGNvbXBlb3BsZSBpcyBkZWxpZ2h0ZWQgdG8gYmUgb2ZmZXJpbmcgb3VyIGV4dGVuc2l2ZSBJVCBrbm93LWhvdyB0byB0aGUgY29tbXVuaXR5IGJ5IGNvbnRyaWJ1dGluZyB3aXRoIFJpZW5hIHRvIHRoZSBmdXJ0aGVyIGVzdGFibGlzaG1lbnQgb2YgdGhlIEVjbGlwc2UgUkNQIGluIHRoZSBmaWVsZCBvZiBlbnRlcnByaXNlIGFwcGxpY2F0aW9ucy6UPC9wPgoJCTxwPkNvbXBvbmVudHMgd2hpY2ggYXJlIGluIHRoZSBzY29wZSBvZiBSaWVuYSBpbmNsdWRlIFJlbW90ZSBTZXJ2aWNlcywgU29mdHdhcmUgVXBkYXRlLCBhcyB3ZWxsIGFzIEF1dGhlbnRpY2F0aW9uIGFuZCBBdXRob3JpemF0aW9uLiBBZGRpdGlvbmFsIGNvbXBvbmVudHMgYXJlIFJlcG9ydGluZywgRXh0ZXJuYWwgQXBwbGljYXRpb24gSW50ZWdyYXRpb24gYW5kIGFuIGFsdGVybmF0aXZlIHRvIHRoZSBjdXJyZW50IHdvcmsgYmVuY2ggVUkgcGFyYWRpZ20uIEFzIGEgbmV4dCBzdGVwLCB0aGUgZmlyc3QgY29kZSBjb250cmlidXRpb24gd2lsbCBiZSBzdWJtaXR0ZWQgYnkgdGhlIFJpZW5hLXRlYW0gYnkgdGhlIGVuZCBvZiBGZWJydWFyeS4gIE1vcmUgZGV0YWlscyBhYm91dCBSaWVuYSBjYW4gYmUgZm91bmQgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9yaWVuYSI+d3d3LmVjbGlwc2Uub3JnL3JpZW5hPC9hPi48L3A+CgkKCQkKCQk8cD48c3Ryb25nPkFib3V0IHRoZSBFY2xpcHNlIEZvdW5kYXRpb248L3N0cm9uZz48YnIgLz4KCQlFY2xpcHNlIGlzIGFuIG9wZW4gc291cmNlIGNvbW11bml0eSB3aG9zZSBwcm9qZWN0cyBhcmUgZm9jdXNlZCBvbiBwcm92aWRpbmcgYW4gZXh0ZW5zaWJsZSBkZXZlbG9wbWVudCBwbGF0Zm9ybSBhbmQgYXBwbGljYXRpb24gZnJhbWV3b3JrcyBmb3IgYnVpbGRpbmcgc29mdHdhcmUuIEVjbGlwc2UgcHJvdmlkZXMgZXh0ZW5zaWJsZSB0b29scyBhbmQgZnJhbWV3b3JrcyB0aGF0IHNwYW4gdGhlIHNvZnR3YXJlIGRldmVsb3BtZW50IGxpZmVjeWNsZSwgaW5jbHVkaW5nIHN1cHBvcnQgZm9yIG1vZGVsaW5nLCBsYW5ndWFnZSBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMgZm9yIEphdmEsIEMvQysrIGFuZCBvdGhlcnMsIHRlc3RpbmcgYW5kIHBlcmZvcm1hbmNlLCBidXNpbmVzcyBpbnRlbGxpZ2VuY2UsIHJpY2ggY2xpZW50IGFwcGxpY2F0aW9ucyBhbmQgZW1iZWRkZWQgZGV2ZWxvcG1lbnQuIEEgbGFyZ2UsIHZpYnJhbnQgZWNvc3lzdGVtIG9mIG1ham9yIHRlY2hub2xvZ3kgdmVuZG9ycywgaW5ub3ZhdGl2ZSBzdGFydC11cHMsIHVuaXZlcnNpdGllcyBhbmQgcmVzZWFyY2ggaW5zdGl0dXRpb25zIGFuZCBpbmRpdmlkdWFscyBleHRlbmQsIGNvbXBsZW1lbnQgYW5kIHN1cHBvcnQgdGhlIEVjbGlwc2UgUGxhdGZvcm0uPC9wPgoJCTxwPlRoZSBFY2xpcHNlIEZvdW5kYXRpb24gaXMgYSBub3QtZm9yLXByb2ZpdCwgbWVtYmVyIHN1cHBvcnRlZCBjb3Jwb3JhdGlvbiB0aGF0IGhvc3RzIHRoZSBFY2xpcHNlIHByb2plY3RzLiBGdWxsIGRldGFpbHMgb2YgRWNsaXBzZSBhbmQgdGhlIEVjbGlwc2UgRm91bmRhdGlvbiBhcmUgYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmciPnd3dy5lY2xpcHNlLm9yZzwvYT4uPC9wPgoKCQk8cD48c3Ryb25nPkFib3V0IGNvbXBlb3BsZSBBRzwvc3Ryb25nPjxiciAvPgoJCWNvbXBlb3BsZSBBRyBpcyBhIEV1cm9wZWFuIElULXNlcnZpY2UgcHJvdmlkZXIgbG9jYXRlZCBpbiBGcmFua2Z1cnQsIEdlcm1hbnkuIFRoZWlyIGNvcmUgY29tcGV0ZW5jZSBhbmQgYnVzaW5lc3MgaXMgc3VwcGx5aW5nIGlubm92YXRpdmUsIHNtYXJ0IGNsaWVudC1iYXNlZCBzYWxlcy0gYW5kIGRpc3RyaWJ1dGlvbiBzeXN0ZW1zLiBBcyBhIG1lbWJlciBvZiB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIGNvbXBlb3BsZSBkb2VzIG5vdCBvbmx5IHVzZSBvcGVuIHNvdXJjZSB0ZWNobm9sb2d5IHRvIGRldmVsb3AgaW5ub3ZhdGl2ZSBJVCBTeXN0ZW1zLCBidXQgIGFsc28gIGFjdGl2ZWx5IHN1cHBvcnRzIHRoZSBmdXJ0aGVyIGRldmVsb3BtZW50IG9mIHRoZSBFY2xpcHNlIHBsYXRmb3JtLiA8L3A+CgkJPHA+SW4gdGhlIGZpZWxkIG9mIElULXByb2plY3RzLCBjb21wZW9wbGUgb2ZmZXJzIHRoZWlyIGN1c3RvbWVycyBhIGNvbXBsZXRlIHJhbmdlIG9mIHNlcnZpY2VzIHdoaWNoIGluY2x1ZGUgdGVjaG5vbG9neSBjb25zdWx0YW5jeSwgZGVzaWduIGFuZCBpbXBsZW1lbnRhdGlvbiBhcyB3ZWxsIGFzIGhhbmRsaW5nIGVudGlyZSBJVC1wcm9qZWN0cy4gPC9wPgoJCQoJCTxwPjxjZW50ZXI+PGk+QWxsIGNvbXBhbnkvcHJvZHVjdCBuYW1lcyBhbmQgc2VydmljZSBtYXJrcyBtYXkgYmUgdHJhZGVtYXJrcyBvciByZWdpc3RlcmVkIHRyYWRlbWFya3Mgb2YgdGhlaXIgcmVzcGVjdGl2ZSBjb21wYW5pZXMuPC9pPjwvY2VudGVyPjwvcD4KCQkKCQk8YnIgLz48YnIgLz48c3Ryb25nPlByZXNzIENvbnRhY3Q8L3N0cm9uZz48YnI+CQoJCVN0ZXZlIEVpc2Vuc3RhZHQ8YnIvPgoJCVBhZ2UgT25lIFB1YmxpYyBSZWxhdGlvbnM8YnIvPgoJCTkxOS03ODEtODA5Njxici8+CgkJc3RldmVAcGFnZW9uZXByLmNvbTxici8+CgkJPGJyIC8+PGJyLz4KCQlNYW51ZWxhIER1ZnQ8YnIvPgoJCWNvbXBlb3BsZSBBRzxici8+CgkJQ2VsbDogKzQ5ICgwKTE3NiA2MjA3MjYxMDxici8+CgkJbWR1QGNvbXBlb3BsZS5kZTxici8+CgkJPGJyIC8+CgkJCgkJCgkJPGNlbnRlcj4jICMgIzwvY2VudGVyPiAKCQk8YnIgLz4KCQk8YnI+CgkJCTxicj4KCTwvZGl2PgoKPC9kaXY+CgoKCQkKCkVPSFRNTDsKCgoJJGh0bWwgPSBtYl9jb252ZXJ0X2VuY29kaW5nKCRodG1sLCAiSFRNTC1FTlRJVElFUyIsICJhdXRvIik7CgkjIEdlbmVyYXRlIHRoZSB3ZWIgcGFnZQoJJEFwcC0+Z2VuZXJhdGVQYWdlKCR0aGVtZSwgJE1lbnUsICROYXYsICRwYWdlQXV0aG9yLCAkcGFnZUtleXdvcmRzLCAkcGFnZVRpdGxlLCAkaHRtbCk7Cj8+Cgo=