PD9waHAgIAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCXJlcXVpcmVfb25jZSgkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddIC4gIi9lY2xpcHNlLm9yZy1jb21tb24vc3lzdGVtL2FwcC5jbGFzcy5waHAiKTsJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbmF2LmNsYXNzLnBocCIpOyAJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbWVudS5jbGFzcy5waHAiKTsgCSRBcHAgCT0gbmV3IEFwcCgpOwkkTmF2CT0gbmV3IE5hdigpOwkkTWVudSAJPSBuZXcgTWVudSgpOwkJaW5jbHVkZSgiX3Byb2plY3RDb21tb24ucGhwIik7ICAgICMgQWxsIG9uIHRoZSBzYW1lIGxpbmUgdG8gdW5jbHV0dGVyIHRoZSB1c2VyJ3MgZGVza3RvcCcKCgojCiMgQmVnaW46IHBhZ2Utc3BlY2lmaWMgc2V0dGluZ3MuICBDaGFuZ2UgdGhlc2UuCiRwYWdlVGl0bGUgCQk9ICJFY2xpcHNlIHByZXNlbnRhIHN1IHRyZW4gZGUgbGFuemFtaWVudG8gYW51YWwiOwokcGFnZUtleXdvcmRzCT0gImVjbGlwc2UsIGVtYmVkZGVkLCBFU0MsIG1vYmlsZSI7CiRwYWdlQXV0aG9yCQk9ICJJYW4gU2tlcnJldHQiOwoKIyBBZGQgcGFnZS1zcGVjaWZpYyBOYXYgYmFycyBoZXJlCiMgRm9ybWF0IGlzIExpbmsgdGV4dCwgbGluayBVUkwgKGNhbiBiZSBodHRwOi8vd3d3LnNvbWVvdGhlcnNpdGUuY29tLyksIHRhcmdldCAoX3NlbGYsIF9ibGFuaykKIyAkTmF2LT5hZGRDdXN0b21OYXYoIk15IExpbmsiLCAibXlwYWdlLnBocCIsICJfc2VsZiIpOwojICROYXYtPmFkZEN1c3RvbU5hdigiR29vZ2xlIiwgImh0dHA6Ly93d3cuZ29vZ2xlLmNvbS8iLCAiX2JsYW5rIik7CgojIEVuZDogcGFnZS1zcGVjaWZpYyBzZXR0aW5ncwojCgojIFBhc3RlIHlvdXIgSFRNTCBjb250ZW50IGJldHdlZW4gdGhlIEVPSFRNTCBtYXJrZXJzIQpvYl9zdGFydCgpOwo/PgoJCTxzdHlsZT4KCQkucGFkZGVkbGlzdCB7bWFyZ2luLWxlZnQ6MjBweDttYXJnaW4tdG9wOi0xMHB4O30KCQkucGFkZGVkbGlzdCBsaSB7cGFkZGluZy1ib3R0b206M3B4OyB9CgkJcCB7cGFkZGluZy1ib3R0b206MTBweDt9CgkJPC9zdHlsZT4KPGRpdiBpZD0id2lkZWNvbnRlbnQiPgoJPGRpdiBpZD0ibWlkY29sdW1ud2lkZSI+CgkJPGgyPlByZXNzIFJlbGVhc2U8L2gyPgoKCQk8Y2VudGVyPgoJCTxoMT48Pz0kcGFnZVRpdGxlPz48L2gxPgoJCTwvY2VudGVyPgoJCTxoMj5HYW55bWVkZSBSZWxlYXNlIGFiYXJjYSAyMyBlcXVpcG9zIGRlIHByb3llY3RvcyB5IDE4IG1pbGxvbmVzIGRlIGztbmVhcyBkZSBj82RpZ288L2gyPgoJCQoJCTxwPjxzdHJvbmc+T1RUQVdBLCBDYW5hZOEgLSBKdW5lIDI1LCAyMDA4ICAtIDwvc3Ryb25nPiAgICBMYSBFY2xpcHNlIEZvdW5kYXRpb24geSB0b2RhIGxhIGNvbXVuaWRhZCBFY2xpcHNlIHNlIGNvbXBsYWNlbiBhbCBhbnVuY2lhciBsYSBkaXNwb25pYmlsaWRhZCBkZSBHYW55bWVkZSBSZWxlYXNlLCBlbCB0cmVuIGRlIGxhbnphbWllbnRvIGFudWFsIGRlc2Fycm9sbGFkbyBwb3IgbGEgY29tdW5pZGFkIEVjbGlwc2UuIEdhbnltZWRlIFJlbGVhc2UgZXMgdW4gbGFuemFtaWVudG8gY29vcmRpbmFkbyBkZSAyMyBlcXVpcG9zIGRlIHByb3llY3RvcyBkZSBFY2xpcHNlIHkgcmVwcmVzZW50YSBt4XMgZGUgMTggbWlsbG9uZXMgbO1uZWFzIGRlIGPzZGlnby4gPC9wPgoJCTxwPkdhbnltZWRlIG9mcmVjZSBtZWpvcmFzIHkgZnVuY2lvbmVzIGNsYXZlcyBlbiBsYXMgc2lndWllbnRlcyDhcmVhczoKCQkJPHVsIGNsYXNzPSJwYWRkZWRsaXN0Ij4KCQkJCTxsaT5FcXVpbm94IHkgcHJveWVjdG9zIGRlIHRpZW1wbyBkZSBlamVjdWNp824gPC9saT4KCQkJCTxsaT5GdW5jaW9uZXMgZGUgbW9kZWxhZG8gPC9saT4KCQkJCTxsaT5IZXJyYW1pZW50YXMgZGVsIGRlc2Fycm9sbGFkb3IgPC9saT4KCQkJCTxsaT5Bc2lzdGVuY2lhIHBhcmEgU09BPC9saT4KCQkJPC91bD4KCQk8L3A+ICAKCQk8cD48c3Ryb25nPkRpc3BvbmliaWxpZGFkPC9zdHJvbmc+PGJyLz4KCQkJTG9zIHByb3llY3RvcyBlbiBHYW55bWVkZSBSZWxlYXNlIHlhIHNlIHB1ZWRlbiBkZXNjYXJnYXIuIFNlIGhhbiBjcmVhZG8gc2lldGUgcGFxdWV0ZXMgRWNsaXBzZSBwYXJhIGZhY2lsaXRhciBhIGxvcyBkZXNhcnJvbGxhZG9yZXMgbGEgZGVzY2FyZ2EgZGUgbfpsdGlwbGVzIHByb3llY3Rvcy4gVmlzaXRlIDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZ2FueW1lZGUiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZ2FueW1lZGU8L2E+IHBhcmEgbeFzIGluZm9ybWFjafNuLiAKCQk8L3A+CgkJCgkJPHA+PHN0cm9uZz5Db21lbnRhcmlvcyBhZGljaW9uYWxlczwvc3Ryb25nPjxici8+CgkJICJVbmEgdmV6IG3hcyBsYSBjb211bmlkYWQgRWNsaXBzZSBoYSBvZnJlY2lkbyBudWVzdHJvIHRyZW4gZGUgbGFuemFtaWVudG8gYW51YWwgeSBjb250aW76YSBvZnJlY2llbmRvIHVuIHNvZnR3YXJlIGlubm92YWRvciBkZSB1bmEgbWFyY2EgcHJldmlzaWJsZSIsIGRpam8gTWlrZSBNaWxpbmtvdmljaCwgZGlyZWN0b3IgZWplY3V0aXZvIGRlIGxhIEVjbGlwc2UgRm91bmRhdGlvbi4gIk51ZXZhcyBmdW5jaW9uZXMgY29tbyBlbCBzaXN0ZW1hIGRlIGFwcm92aXNpb25hbWllbnRvIEVxdWlub3ggcDIsIG51ZXZhcyBoZXJyYW1pZW50YXMgZGUgbW9kZWxhZG8geSBoZXJyYW1pZW50YXMgcXVlIGFzaXN0ZW4gYSBsb3MgZGVzYXJyb2xsYWRvcmVzIGRlIFNPQSBzZXLhbiBmdW5jaW9uZXMgcG9wdWxhcmVzIHBhcmEgbG9zIHVzdWFyaW9zIGRlIEVjbGlwc2UiLiA8YnIvPgoJCSA8YnIvPgoJCSBHYW55bWVkZSBSZWxlYXNlIHNlcuEgZWwgcHJpbmNpcGFsIHRlbWEgZGUgbGEgRWNsaXBzZSBTdW1taXQgRXVyb3BlICg8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2VzdW1taXQub3JnL3N1bW1pdGV1cm9wZTIwMDgvIj5odHRwOi8vd3d3LmVjbGlwc2VzdW1taXQub3JnL3N1bW1pdGV1cm9wZTIwMDgvPC9hPiksIHF1ZSBzZSBjZWxlYnJhcuEgZGVsIDE5IGFsIDIwIGRlIG5vdmllbWJyZSBkZSAyMDA4LCBlbiBMdWR3aWdzYnVyZywgQWxlbWFuaWEuCgkJPC9wPgoJCQoJCTxwPjxzdHJvbmc+QWNlcmNhIGRlIEVjbGlwc2UgRm91bmRhdGlvbjwvc3Ryb25nPjxiciAvPgoJCUluZm9ybWFjafNuIHNvYnJlIEVjbGlwc2UgZW4gPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy8iPnd3dy5lY2xpcHNlLm9yZzwvYT48L3A+CgkJPGJyIC8+CgkJPGNlbnRlcj4jICMgIzwvY2VudGVyPiAKCQk8YnIgLz5Ub2RvcyBsb3Mgbm9tYnJlcyBkZSBjb21wYfHtYXMgeSBwcm9kdWN0b3MgeSBtYXJjYXMgZGUgc2VydmljaW8gcHVlZGVuIHNlciBtYXJjYXMgY29tZXJjaWFsZXMgbyBtYXJjYXMgY29tZXJjaWFsZXMgeSByZWdpc3RyYWRhcyBkZSBzdXMgcmVzcGVjdGl2YXMgY29tcGHx7WFzLiAKCQkKCQk8cD48Yj5Db250YWN0byBkZSBwcmVuc2E6PC9iPjxicj4KCQlDaGFudGFsIFlhbmc8YnI+CgkJUGFnZSBPbmUgUHVibGljIFJlbGF0aW9uczxicj4KCQkrMS02NTAtNTY1LTk4MDAgeDc1Mi48YnI+CgkJPGEgaHJlZj0ibWFpbHRvOmNoYW50YWxAcGFnZW9uZXByLmNvbSI+Y2hhbnRhbEBwYWdlb25lcHIuY29tPC9hPjxicj4KCQk8YnI+Cgk8L2Rpdj4KPC9kaXY+CgoKPD8gCgkkaHRtbCA9IG9iX2dldF9jbGVhbigpOwoJIyBHZW5lcmF0ZSB0aGUgd2ViIHBhZ2UKCSRBcHAtPmdlbmVyYXRlUGFnZSgkdGhlbWUsICRNZW51LCAkTmF2LCAkcGFnZUF1dGhvciwgJHBhZ2VLZXl3b3JkcywgJHBhZ2VUaXRsZSwgJGh0bWwpOwo/PgoK