PD9waHAgIAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCXJlcXVpcmVfb25jZSgkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddIC4gIi9lY2xpcHNlLm9yZy1jb21tb24vc3lzdGVtL2FwcC5jbGFzcy5waHAiKTsJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbmF2LmNsYXNzLnBocCIpOyAJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbWVudS5jbGFzcy5waHAiKTsgCSRBcHAgCT0gbmV3IEFwcCgpOwkkTmF2CT0gbmV3IE5hdigpOwkkTWVudSAJPSBuZXcgTWVudSgpOwkJaW5jbHVkZSgiX3Byb2plY3RDb21tb24ucGhwIik7ICAgICMgQWxsIG9uIHRoZSBzYW1lIGxpbmUgdG8gdW5jbHV0dGVyIHRoZSB1c2VyJ3MgZGVza3RvcCcKCgojCiMgQmVnaW46IHBhZ2Utc3BlY2lmaWMgc2V0dGluZ3MuICBDaGFuZ2UgdGhlc2UuCiRwYWdlVGl0bGUgCQk9ICJFY2xpcHNlIHN0ZWxsdCBq5GhybGljaGVzIFJlbGVhc2UgYmVyZWl0IjsKJHBhZ2VLZXl3b3Jkcwk9ICJlY2xpcHNlLCBlbWJlZGRlZCwgRVNDLCBtb2JpbGUiOwokcGFnZUF1dGhvcgkJPSAiSWFuIFNrZXJyZXR0IjsKCiMgQWRkIHBhZ2Utc3BlY2lmaWMgTmF2IGJhcnMgaGVyZQojIEZvcm1hdCBpcyBMaW5rIHRleHQsIGxpbmsgVVJMIChjYW4gYmUgaHR0cDovL3d3dy5zb21lb3RoZXJzaXRlLmNvbS8pLCB0YXJnZXQgKF9zZWxmLCBfYmxhbmspCiMgJE5hdi0+YWRkQ3VzdG9tTmF2KCJNeSBMaW5rIiwgIm15cGFnZS5waHAiLCAiX3NlbGYiKTsKIyAkTmF2LT5hZGRDdXN0b21OYXYoIkdvb2dsZSIsICJodHRwOi8vd3d3Lmdvb2dsZS5jb20vIiwgIl9ibGFuayIpOwoKIyBFbmQ6IHBhZ2Utc3BlY2lmaWMgc2V0dGluZ3MKIwoKIyBQYXN0ZSB5b3VyIEhUTUwgY29udGVudCBiZXR3ZWVuIHRoZSBFT0hUTUwgbWFya2VycyEKb2Jfc3RhcnQoKTsKPz4KCQk8c3R5bGU+CgkJLnBhZGRlZGxpc3Qge21hcmdpbi1sZWZ0OjIwcHg7bWFyZ2luLXRvcDotMTBweDt9CgkJLnBhZGRlZGxpc3QgbGkge3BhZGRpbmctYm90dG9tOjNweDsgfQoJCXAge3BhZGRpbmctYm90dG9tOjEwcHg7fQoJCTwvc3R5bGU+CjxkaXYgaWQ9IndpZGVjb250ZW50Ij4KCTxkaXYgaWQ9Im1pZGNvbHVtbndpZGUiPgoJCTxoMj5QcmVzcyBSZWxlYXNlPC9oMj4KCgkJPGNlbnRlcj4KCQk8aDE+PD89JHBhZ2VUaXRsZT8+PC9oMT4KCQk8L2NlbnRlcj4KCQk8aDI+R2FueW1lZGUgUmVsZWFzZSBiZWluaGFsdGV0IDIzIFByb2pla3RlIHVuZCAxOCBNaWxsaW9uZW4gQ29kZXplaWxlbjwvaDI+CgkJCgkJPHA+PHN0cm9uZz5PdHRhd2EsIEthbmFkYSwgMjUuIEp1bmkgMjAwOCAtIDwvc3Ryb25nPkRpZSBFY2xpcHNlIEZvdW5kYXRpb24gdW5kIGRpZSBnZXNhbXRlIEVjbGlwc2UgQ29tbXVuaXR5IGhhYmVuIGhldXRlIGRpZSBWZXJm/GdiYXJrZWl0IGRlcyBHYW55bWVkZSBSZWxlYXNlcyBhbmdla/xuZGlndC4gTWl0IEdhbnltZWRlIGdpYnQgZGllIEVjbGlwc2UgQ29tbXVuaXR5IGltIGRyaXR0ZW4gSmFociBpbiBGb2xnZSBlaW4ghHNpbXVsdGFuZXMgUHJvamVrdC1SZWxlYXNlkyBoZXJhdXMuIEdhbnltZWRlIGJlaW5oYWx0ZXQgUHJvZ3JhbW1wYWtldGUgdm9uIDIzIHVudGVyc2NoaWVkbGljaGVuIEVjbGlwc2UtUHJvamVrdHRlYW1zIHVuZCB1bWZhc3N0IPxiZXIgMTggTWlsbGlvbmVuIENvZGV6ZWlsZW4uPC9wPgoJCTxwPkRhcyBSZWxlYXNlIHN0ZWxsdCBOZXVlcnVuZ2VuIHVuZCBLZXkgRmVhdHVyZXMgZvxyIHVudGVyc2NoaWVkbGljaGUgQmVyZWljaGUgYmVyZWl0LiBadSBkaWVzZW4geuRobGVuIEVxdWlub3ggdW5kIFJ1bnRpbWUtUHJvamVrdGUsIE1vZGVsaW5nIEZlYXR1cmVzIHVuZCBFbnR3aWNrbHVuZ3N3ZXJremV1Z2Ugc293aWUgVW50ZXJzdPx0enVuZyB2b24gRW50d2lja2xlcm4gdm9uIHNlcnZpY2Utb3JpZW50aWVydGVuIEFyY2hpdGVrdHVyZW4gKFNPQSkuPC9wPgoJCTxwPkFsbGUgUHJvamVrdGUgdm9uIEdhbnltZWRlIHN0ZWhlbiBqZXR6dCBm/HIgZGVuIERvd25sb2FkIGJlcmVpdC4gRGllIEVjbGlwc2UgRm91bmRhdGlvbiBlcmxlaWNodGVydCBkdXJjaCBkaWUgQmVyZWl0c3RlbGx1bmcgdm9uIHNpZWJlbiBQcm9ncmFtbXBha2V0ZW4sIGRpZSBqZXdlaWxzIGVpbiBiZXN0aW1tdGVzIEFud2VuZHVuZ3NnZWJpZXQgYWJkZWNrZW4sIGRlbiBEb3dubG9hZHByb3plc3Mgdm9uIGdsZWljaCBtZWhyZXJlbiBQcm9qZWt0ZW4uIFdlaXRlcmb8aHJlbmRlIEluZm9ybWF0aW9uZW4genUgR2FueW1lZGUgc2luZCD8YmVyIDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZ2FueW1lZGUiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZ2FueW1lZGU8L2E+IGFicnVmYmFyLjwvcD4KCQk8cD6ERGllIEVjbGlwc2UgQ29tbXVuaXR5IHNldHp0IG1pdCBkZW0gR2FueW1lZGUtUmVsZWFzZSBkaWUgVHJhZGl0aW9uIGZvcnQsIGlubm92YXRpdmUgU29mdHdhcmUgcmVnZWxt5N9pZyB6dSBlaW5lbSBmZXN0ZW4gWmVpdHB1bmt0IGJlcmVpdHp1c3RlbGxlbpMsIHNhZ3QgTWlrZSBNaWxpbmtvdmljaCwgR2VzY2jkZnRzZvxocmVyIGRlciBFY2xpcHNlIEZvdW5kYXRpb24uIIROZXVlIEZlYXR1cmVzIHdpZSBkYXMgRXF1aW5veCBwMiBQcm92aXNpb25pbmcgU3lzdGVtLCBOZXVlIE1vZGVsbGllcnVuZ3N0b29scyB1bmQgV2Vya3pldWdlIGb8ciBTT0EtRW50d2lja2xlciB3ZXJkZW4gc2ljaCB6dSBiZWxpZWJ0ZW4gRmVhdHVyZXMgZGVyIEVjbGlwc2UtQW53ZW5kZXIgZW50d2lja2Vsbi6TPC9wPgoJCTxwPkRhcyBHYW55bWVkZSBSZWxhc2Ugd2lyZCBhdWNoIGVpbiBTY2h3ZXJwdW5rdHRoZW1hIGJlaW0gRWNsaXBzZSBTdW1taXQgRXVyb3BlICg8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2VzdW1taXQub3JnL3N1bW1pdGV1cm9wZTIwMDgvIj5odHRwOi8vd3d3LmVjbGlwc2VzdW1taXQub3JnL3N1bW1pdGV1cm9wZTIwMDgvPC9hPikgc2VpbiwgZGVyIGFtIDE5LiB1bmQgMjAuIE5vdmVtYmVyIGluIEx1ZHdpZ3NidXJnIHN0YXR0ZmluZGVuIHdpcmQuPC9wPgoJCTxwPjxzdHJvbmc+3GJlciBkaWUgRWNsaXBzZSBGb3VuZGF0aW9uPC9zdHJvbmc+PGJyIC8+CgkJSW5mb3JtYXRpb25lbiD8YmVyIEVjbGlwc2Ugc2luZCB1bnRlciA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnLyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZzwvYT4gZXJo5Gx0bGljaC48L3A+CgkJPGJyIC8+CgkJPGNlbnRlcj4jICMgIzwvY2VudGVyPiAKCQk8YnIgLz5BbGxlIEZpcm1lbi0gdW5kIFByb2R1a3RuYW1lbiBzb3dpZSBTZXJ2aWNlLU1hcmtlbiBzaW5kIGVpbmdldHJhZ2VuZSBXYXJlbnplaWNoZW4gb2RlciBnZXNjaPx0enRlIE1hcmtlbiBkZXIgamV3ZWlsaWdlbiBGaXJtZW4uCgkJCgkJPHA+PGI+UHJlc3Nla29udGFrdDo8L2I+PGJyPgoJCUNoYW50YWwgWWFuZzxicj4KCQlQYWdlIE9uZSBQdWJsaWMgUmVsYXRpb25zPGJyPgoJCSsrMSA2NTAtNTY1LTk4MDAtNzUyPGJyPgoJCTxhIGhyZWY9Im1haWx0bzpjaGFudGFsQHBhZ2VvbmVwci5jb20iPmNoYW50YWxAcGFnZW9uZXByLmNvbTwvYT48YnI+CgkJPGJyPgoJPC9kaXY+CjwvZGl2PgoKCjw/IAoJJGh0bWwgPSBvYl9nZXRfY2xlYW4oKTsKCSMgR2VuZXJhdGUgdGhlIHdlYiBwYWdlCgkkQXBwLT5nZW5lcmF0ZVBhZ2UoJHRoZW1lLCAkTWVudSwgJE5hdiwgJHBhZ2VBdXRob3IsICRwYWdlS2V5d29yZHMsICRwYWdlVGl0bGUsICRodG1sKTsKPz4KCg==